Version 17 of Todo2d
Description of why we focused on rendering grids for the 17th release of Todo2d
Today r17 of Todo2d was released which introduced a new feature mostly as a test to see if the new approach that was started with r16 will work. And good news! It does work beautifully. We now have grids!
The focus of Todo2d-r16 was to switch to a mostly HTML-first approach. The attention was to make it easier to develop so that we can leverage all the benefits HTML has (including accessibility features).
But this was a major departure of the way the application worked, both technically and development wise.
On a technical level we did everything with a HTMLCanvas, which gives us explicit control over individual pixels and only switched to HTML when we had clear advantages. This had a huge downside that we had to reinvent everything from how items should be outlined to what happens when the user moves the cursor. Continuing down that path would increase the complexity of the code since it would require inventing conventions that are common in HTML.
When we switched to HTML-first we could remove a lot of code, and we did with almost no compromise, only a single (undocumented, so not official) feature is still missing, but we will add that soon and promote it to an official documented feature.
However the true test was how much effort it would take to add a new feature. And thus we started working on a very simple feature but that would have normally involved a lot of complexity to get it to work.
Grids are not the most exciting thing. But grids will require redrawing the screen when the user moves the map or when the screen gets resized.We also want it to perform well so we wish to avoid render cycles.
Although the development started with a lot of concerns once development started, it was feature complete within a few hours.
So what’s next? Well, first on the list is a small change how selection works so that we can make a (now missing) undocumented feature official, then we have the “matrix background” and then we continue working on the task-inbox.