- Add CodeMirror 6 with oneDark theme and markdown language support
- Bundle via esbuild into public/vendor/ (built on deploy, not committed)
- Add codemirror-entry.mjs as bundle entry point
- Fix SPA fallback to only serve index.html for /, not all paths
- Fix mime type handling by mutating mime-types registry
- Add Write/Preview tabs; preview renders on tab switch only
- Multi-cursor via Shift+Alt+Up/Down; Alt+Click adds cursor
- gitignore package-lock.json and public/vendor/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New /api/render-markdown proxy to Gitea (configured via config.yaml)
- lib/config.mjs loads config.yaml with yaml-js
- Edit/Preview tabs on the body field in the task dialog
- Title and body rendered as markdown inline in the task list
- Gitea markup+chroma CSS extracted and vendored to public/gitea-markup.css
- Markdown cached in memory per text string
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Node.js + Express 5 backend with flat NDJSON key-value store (borrowed from
electronics-inventory). Sequential integer IDs per namespace. Vanilla JS SPA
with filters for status, priority, and tags.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>