- 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
- CodeMirror 6 editor with Obsidian/Typora-style live preview: block
markup revealed per line, inline markup revealed per element
- Fenced code highlighting via Shiki (github-dark, JS regex engine) in a
Web Worker, languages loaded on demand
- Lezer syntax tree to HTML renderer for share pages, checked against
the CommonMark 0.31.2 spec (640/652; 12 known parser deviations)
- Use markdownLanguage directly to avoid bundling lang-html/css/js