Skip to main content

Weekly Futtun Updates 10

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.