Introduction#
Hello everyone,
How are you? Welcome to my blog. In this post, I will talk about Futtun’s progress update, from Monday 2 March 2026 to today, Sunday 08 March 2026.
It has been another slow week in terms of visible progress. Social commitments have kept me busy, and what time I could dedicate to the project, went into getting IndexedDB schema changes to work.
Recap of development on the audit log#
It is paused until I solve applying IndexedDB schema changes. I was testing the new feature on my local machine by using a private browser window, thus a clean IndexedDB database in that window. But, to release the audit log, I need to apply these changes to pre-existing databases. You will hear more about it in the next section.
Work continues on applying IndexedDB schema changes#
In my previous update, I explained the problem, and I will do so again here.
IndexedDB is a NoSQL database that lives in the browser, available on 95%+ of browsers (https://caniuse.com/?search=indexeddb). It uses a “versioned schema approach”. Meaning, whenever the shape of what Futtun saves in it changes (new object, add/remove properties on pre-existing objects), I need to increment IndexedDB’s version number for this change to apply in your browser.
The event where this happens is onupgradeevent, and the resources online I have seen suggest using a switch statement to keep track of which version needs what. E.g.:
let request = indexedDB.open("databaseNameHere", 3);
request.onupgradeneeded = (event) => {
switch(event.newVersion)
case 1:
// Handle database initialisation
case 2:
// Handle first set of changes
case 3:
// Handle latest set of changes
}The problem with using a switch statement like the one above is that it will only work for people already on version 2 of the database. If a new user visits Futtun (or an old user cleans their browser’s data), their newVersion is indeed 3, but the database structure changes from 1 and 2 never ran, so the database is in a broken state.
I have a solution to run all the database changes between event.oldVersion and event.newVersion for onupgradeneeded, but it is still a work in progress. Once I am confident it works, I will write a separate blog post about it.
Dependency upgrades#
With Futtun being an Internet facing application, I will now need to keep on top of upgrading its dependencies for as long as I will keep Futtun available.
Conclusion#
Thank you for your time, and I hope to see you again soon. Bye bye.