feat: the web build keeps its files in OPFS

The browser's notebooks, replicas and settings move from IndexedDB to
the origin's private file system. A storage worker owns OPFS's
synchronous handles, which only workers get, and writes the byte ranges
each burst changed in place: notebook::fs now tracks what was written
since the host last asked, so a commit writes its appended revision and
the header rather than the whole section, and SQLite its pages. The app
itself stays on the main thread, where the shared code's synchronous
dialogs work. IndexedDB's files, and the first web build's sections,
move over once.

Assisted-by: claude-opus-5.5
a37218b17fclover caruso committed on 10/2/2026, 2:43:20 AMparent563a667
5 files changedLine totals unavailable