June 17, 2025
We now have a pomodoro timer widget!!! This timer fills in the last corner of the screen, and transforms Liveboard from a simple whiteboard, into a full productivity powerhouse! It plays a gentle chime when it finishes, so you'll know that it's break time, even if you switch screen!
You can now pin sticky notes, so they stay on top of other sticky notes, and stay in the right place! You can also give them titles, to better organise them!!! I've overhauled the sticky note edit mechanism to handle this better, so that clicks on the title enter Title Editing mode and clicks on the main body edit Body Text Editing Mode. They also work in dark mode!
Okay this is a super long devlog, cause there was a while i couldn't post any cause of SoM downtime :(
Basically I've added sticky notes! These notes have full markdown support, are resizeable and can be dragged around :D. They also have a little trash can to delete them. They're rendered as DOM Elements on top of the canvas, but move with the canvas, and clip if they go off the screen. Also did a bit of work to make it less laggy, but it still gets a bit jittery when moving the canvas, if there are a ton of sticky notes on it
Another short devlog, cause I found another bug :( Basically the undo/redo logic was completely broken, because it didn't handle the textboxes correctly. So now I've fixed up the undo buffer and stuff to make sure that all scenarios (such as editing textboxes in strange orders) can be handled by it :D I also released a new patch release on GitHub.
Pretty short devlog - basically I just found a couple bugs and fixed them. The first was that the eraser icon was offset from the cursor in some cases, due to a mismatch between world and screen coordinates. The second was text jumped a bit after you finished editing it. It still does a little now, but its much better.
This devlog was mostly just fixing stuff :)
I fixed up a few UI issues with dark mode and text/menu contrast, built and packaged the app for all target OSs (and fixed up some issues in the build pipeline while i did this). Then I edited the README to reflect the updates, and wrote up the release docs :D
We now have dark mode!!! This makes liveboard feel so much more like a part of your desktop for users of dark mode (like myself :D). Because dark mode makes black ink hard to see, as well as flipping the background and toolbars, it also changes all black shapes, drawings, and text, into white, so they have good contrast. And so it doesn't hurt your eyes, the dot grid also changes colour, to avoid too much contrast with the black background :)
I've added a few new features in this devlog :D. Firstly, I made some QoL improvements, including ctrl (or cmd) z and y mappings for undo and redo, to make it feel more obvious and natural to use. I also added mappings for each tool, (p=pen, e=eraser, s=shape, t=text) to allow keyboard users to navigate the toolbar. Now in terms of actual features, I added an autosave mechanism, which means that every time the app (or computer) is restarted, the canvas will reload with whatever it had before. To prevent this from becoming annoying, the eraser button now opens a menu where you can change the size of the eraser, or clear the whole canvas. Also fixed some css so that everything looks more unified, and some csp so that my fonts actually load :D
This is gonna be a really long devlog this time, due to SoM downtime lol
In terms of features, I've added text options, including font size and colour. I also enabled editing of existing textboxes, as well as making undo and redo work for text. As well as this, I did a bunch of work to make text editing work better, and not mess up cursor alignment :D To make the colours and font sizes work I also overhauled the text rendering system.
As well as features, I tidied up the code, touched up the README, did a bunch of testing, and refactored some of the code, in order to make it more stable ready for release and shipping soon. I also spent some time building and packaging the app, and uploading it to Github releases.
I've now improved the text implentation :D! It no longer has the ugly input box, and I did a ton of work under the hood to allow it to overflow off the screen, without trying to scroll the entire screen. It also has improvements of the drag functionality - it has a more robust method of calculating the movement to ensure the ink remains aligned with the cursor when drawing.
Fairly big chunk of work here - I've added full shape and also text support. I still need to fix up the styling, cause text looks kinda ugly rn, but the structure and underlying work is there :D. I've fully implemented shapes, with a few choices and colours. They preview as you draw them, and you can hold Shift to make ellipses and rectangles snap to be circles and squares.
Super long devlog this time... In terms of features, I've added undo and redo features, which work with a buffer to ensure both erasing and drawing can be undone. I also fixed up a couple bugs, including some issues with touch control and panning. But the majority of the time was spent using electron, electron-builder, and Github Actions to make it package into a native app (I used GH actions for crossplatform builds, and to save my laptop from crashing every 5 mins...) . I also spent some time making it appear like a background. Unfortunately, due to security policies set in place by computer manufactures it can be minimised with windows key + D, or by three finger swiping, so I added a tray icon, where you can show it, show the desktop, and close it.
I've revised the toolbar UI, so that it actually looks good now! I've also added a second sub-toolbar for the pen tool, so that you can select colour and thickness. The backgrounds of the toolbar are now 'glassy', as is the current UI trend, so they will diffuse whatever you draw behind them.
I've completely overhauled the UI, so that it looks more 'modern' than the previous one. I've moved to icons for the tools, because they leave it feeling less cluttered. I've also added a stroke eraser :D. The other thing I added is a dot grid background, which dynamically adjusts how many are shown depending on the zoom, to avoid the screen feeling cluttered, whilst remaining anchored to the same point.
Minor touchups, and fixes. Also built and published to GitHub pages, and merged my code changes in a pull request. The commit history is below :)
I've added a global leaderboard :D
Now you can see how you score against other players!!! It uses a FastAPI/PostrgreSQL backend hosted on Nest, so it takes a few seconds to load the leaderboard. You can add yourself by choosing a username, and then your score will be perpetually updated on the backend. The leaderboard will show the top 100 people.
Added some SFX! Each time you click a keyboard key sound effect is played. There are 23 different key sound effects I've included, and each time you click a random one is played. This makes it sound more realistic, like if you were actually typing.
I spent this time mostly tidying up the code and removing some bugs, as well as adding some safeguards, etc. I also added a couple final effects, and cleaned up some redundant sections in the code. Github Copilot assisted with code review, but didn't make any major changes.
I've done a lot of work in this update! I've implemented both CRT and 'Hacker' backgrounds, as well as the custom cursors, and some click effects!! The CRT background uses the same shader as the achievement display, and the hacker background scrolls random lines of 'code' along the background. The cursors are fairly self explantory, and the click effects include sparks (particles) which fly off each time you click, and bubbles, where each time you click you add a bubble which rises to the top.
I've now added matrix rain! This incredibly iconic green raining text, from The Matrix, really adds to the coding vibe of the game, making it an ideal upgrade for users. It has been implemented using a fairly rudimentary system, avoiding the use of shaders to maximise compatibility.
I've now begun implementing some of the background upgrades. The one shown below is the binary snow - 0s and 1s fall like snow across the screen. They are created using particle emitters, which took some time to properly tune in, but now make a nice effect.
In this update, i've begun adding UI support for cosmetic upgrades. There are four types you can get - backgrounds, cursors, click effects and sound effects - and you can get them using a new currency, which are gained from achievements. Next up is actually implementing the upgrades!
In this update I've focused on polishing the project, balancing upgrades and removing bugs. It is now published on Github Pages (https://madavidcoder.github.io/CodeClicker), and the upgrades have been rebalanced, along with a number of other bug fixes.
I've now added upgrades! These upgrades can be acquired with 'lines' (gained by clicking), and include increasing lines per click and also auto-coders. Auto-coders give 'lines' passively without the user having to click, allowing for idle progress.
So far, I've implemented all the structure and framework for the game. I've also added achievements which display on a super cool CRT screen at the bottom.
Implementing the CRT screen and getting the shader to make the scanlines work was definitely the most time-consuming part of making this.
A fun web-based clicker game, where you click to write 'code'!
This was widely regarded as a great move by everyone.