To have persistent sessions and files, we need to be able to write file changes to local storage in the browser.
As of today, we have two solutions:
An implementation already exists for IndexedDB: https://github.com/humphd/v86/tree/filer-9p-lastknowngood
The demo: https://humphd.github.io/browser-shell/
The 9p filesystem is mounted under /mnt
in this case.
The difficulty we'll have is that we have 9p mounted as /
in our case (all files are statically served), so I think we'll have to make a custom implementation where we will check if the file is available in IndexedDB, and if it's not we will fallback to the statically served file.
So we'll have a hosted layer (the current implementation), with a cached layer in-between.
Links about the 9p protocol: