Store multiple documents in IndexedDB with a document list

Documents now live in an IndexedDB library instead of a single
localStorage slot: each has its own ?doc=<id> URL, a title (editable in
the toolbar, used for export file names) and appears in Datei ›
Dokumente (open, rename, duplicate, delete). New/sample/import create
new documents instead of replacing the open one. Tabs stay in step via
BroadcastChannel. The old localStorage document is migrated once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-28 19:48:49 +02:00
co-authored by Claude Opus 5.5
parent 8e974cc870
commit 873cd50eac
10 changed files with 867 additions and 56 deletions
+11
View File
@@ -19,6 +19,7 @@
"@vue/eslint-config-typescript": "^14.1.3",
"eslint": "^9.15.0",
"eslint-plugin-vue": "^9.31.0",
"fake-indexeddb": "^6.2.5",
"jsdom": "^25.0.1",
"prettier": "^3.3.3",
"typescript": "~5.6.3",
@@ -2885,6 +2886,16 @@
"node": ">=12.0.0"
}
},
"node_modules/fake-indexeddb": {
"version": "6.2.5",
"resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-6.2.5.tgz",
"integrity": "sha512-CGnyrvbhPlWYMngksqrSSUT1BAVP49dZocrHuK0SvtR0D5TMs5wP0o3j7jexDJW01KSadjBp1M/71o/KR3nD1w==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=18"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",