feat(web): add Vue workspace with file tree, tabs, autosave and live sync

- Login and first-run setup screens
- File tree with inline create/rename, context menu, drag-and-drop
  move and trash with undo; all operations update the UI first and roll
  back on failure
- Tabs keep a CodeMirror state each; edits autosave after 500 ms with
  If-Match revisions, unsent edits persist in IndexedDB, and conflicts
  or remote deletions surface as banners with explicit choices
- WebSocket events sync external edits, moves and deletions into open
  tabs; reconnects trigger a full resync
- Pasted or dropped images show instantly and upload to note.assets/
- Responsive layout with a swipe-in sidebar drawer on phones
- Switch to TypeScript 6: vue-tsc does not support TypeScript 7 yet
This commit is contained in:
eezd committed 2026-10-16 18:37:14 +08:00
1 parent c4d2bd4636
commit 02d904056c
28 files changed
+2231 -398

No files matched your search

+7 -4
View File
@@ -5,7 +5,7 @@
"scripts": {
"dev": "vite",
"build": "vite build",
"typecheck": "tsc --noEmit",
"typecheck": "vue-tsc --noEmit",
"test": "vitest run"
},
"dependencies": {
@@ -17,13 +17,16 @@
"@lezer/common": "^1.5.3",
"@lezer/highlight": "^1.2.5",
"@lezer/markdown": "^1.8.0",
"shiki": "^4.5.0"
"shiki": "^4.5.0",
"vue": "^3.5.44"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.10",
"commonmark-spec": "^0.31.2",
"happy-dom": "^21.0.3",
"typescript": "^7.0.2",
"typescript": "^6.0.3",
"vite": "^8.3.4",
"vitest": "^5.0.5"
"vitest": "^5.0.5",
"vue-tsc": "^3.3.13"
}
}