Changeset 0.17.3 (#78)
This commit is contained in:
@@ -61,12 +61,15 @@ v0.16.0 User Groups v0.17.0 Persona-KB Binding
|
||||
┌───────┴──────────────┐
|
||||
│ │
|
||||
v0.17.1 SQLite Backend ✅ v0.17.2 CodeMirror 6 ✅
|
||||
v0.17.3 Notes Graph + Wikilinks
|
||||
(dual DB) (editor bundle, chat
|
||||
│ input, ext editor)
|
||||
└───────┬──────────────┘
|
||||
│
|
||||
v0.18.0 Memory (user + persona scopes, review pipeline)
|
||||
│
|
||||
v0.18.1 Side Panel Architecture (independent panels, dual-view)
|
||||
│
|
||||
v0.19.0 Projects / Workspaces + Notifications
|
||||
│
|
||||
v0.20.0 @mention Routing + Multi-model
|
||||
@@ -337,6 +340,57 @@ Depends on: nothing (frontend-only). Prerequisite for: extension surfaces
|
||||
|
||||
---
|
||||
|
||||
## v0.17.3 — Notes Graph + Wikilinks
|
||||
|
||||
Knowledge graph and bi-directional linking for the notes system. Transforms
|
||||
notes from flat documents into an interconnected knowledge base with
|
||||
Obsidian-style `[[wikilinks]]`, backlinks, graph visualization, and
|
||||
transclusion.
|
||||
|
||||
Depends on: CodeMirror 6 (v0.17.2), Notes CRUD (v0.13.x). See
|
||||
[DESIGN-0.17.3.md](DESIGN-0.17.3.md) for full spec.
|
||||
|
||||
**Backend: Note Links**
|
||||
- [x] `note_links` table (Postgres + SQLite migrations)
|
||||
- [x] `NoteLinkStore` interface + both implementations
|
||||
- [x] `ExtractWikilinks()` regex parser + tests
|
||||
- [x] Link extraction on note create/update
|
||||
- [x] Dangling link resolution on note create
|
||||
- [x] `notes.source_message_id` column for chat-to-note provenance
|
||||
|
||||
**API Endpoints**
|
||||
- [x] `GET /notes/:id/backlinks` — notes linking to this note
|
||||
- [x] `GET /notes/search-titles?q=` — lightweight fuzzy search for autocomplete
|
||||
- [x] `GET /notes/graph` — full graph topology (nodes + edges + unresolved)
|
||||
|
||||
**CM6 Note Editor**
|
||||
- [x] `note-editor.mjs` factory: markdown live preview (heading sizes, blockquotes, code blocks)
|
||||
- [x] `wikilink.mjs` CM6 extension: parse, decorate as clickable chips, autocomplete on `[[`
|
||||
- [x] Textarea → CM6 swap in `notes.js` with graceful fallback
|
||||
- [x] `noteEditorTheme` in `theme.mjs`
|
||||
|
||||
**Graph Visualization**
|
||||
- [x] Canvas-based force-directed graph (~200 lines, no d3 dependency)
|
||||
- [x] O(n²) Coulomb repulsion + Hooke spring + center gravity
|
||||
- [x] Pan, zoom (0.15–4.0x), drag nodes, hover highlight, click to open
|
||||
- [x] Node sizing by link_count, folder-based coloring
|
||||
- [x] Ghost nodes for unresolved `[[links]]` with toggle
|
||||
- [x] Energy-based pause (stop rAF below KE threshold)
|
||||
- [x] ResizeObserver for responsive canvas
|
||||
|
||||
**Note-from-Selection + Daily Notes**
|
||||
- [x] "Note" button in message action bar
|
||||
- [x] Selection-aware capture (`window.getSelection()` within message)
|
||||
- [x] Provenance tracking (`source_channel_id` + `source_message_id`)
|
||||
- [x] "Today" button → find-or-create daily note in `/daily/`
|
||||
|
||||
**Read Mode**
|
||||
- [x] `[[link]]` rendered as clickable wikilink chips
|
||||
- [x] `![[embed]]` transclusion with async content fetch, recursion guard
|
||||
- [x] Backlinks panel (collapsible, with count badge)
|
||||
|
||||
---
|
||||
|
||||
## v0.18.0 — Memory (User + Persona Scopes)
|
||||
|
||||
Long-term memory across conversations, with scope-aware isolation.
|
||||
@@ -398,6 +452,37 @@ Depends on: compaction (v0.15.0), knowledge bases (v0.14.0), persona-KB binding
|
||||
|
||||
---
|
||||
|
||||
## v0.18.1 — Side Panel Architecture
|
||||
|
||||
Refactor the side panel system so Notes, HTML/code previews, and future
|
||||
panels (knowledge base browser, search results) operate independently
|
||||
rather than sharing a single slot. Currently, opening Notes hides the
|
||||
preview panel and vice versa — this is confusing when reviewing AI-
|
||||
generated HTML/documents while also managing notes.
|
||||
|
||||
Depends on: Notes graph + wikilinks (v0.17.3). Prerequisite for: live
|
||||
collaboration (v0.23.0) where multiple panels need simultaneous visibility.
|
||||
|
||||
**Panel System**
|
||||
- [ ] Panel registry: named panels with independent open/close state
|
||||
- [ ] Dual-view mode: two panels side-by-side (configurable split ratio)
|
||||
- [ ] Tab-persistent state: each panel remembers scroll position, open note, etc.
|
||||
- [ ] Panel priority: when space is tight (mobile), most-recently-opened wins
|
||||
- [ ] Keyboard shortcut: Ctrl/Cmd+\ cycles panels, Ctrl/Cmd+Shift+\ toggles dual
|
||||
|
||||
**Preview Panel**
|
||||
- [ ] Dedicated preview panel (independent of Notes)
|
||||
- [ ] HTML/document preview with iframe sandbox
|
||||
- [ ] Code output preview (extension-rendered blocks)
|
||||
- [ ] Live-updating during streaming responses
|
||||
|
||||
**Mobile**
|
||||
- [ ] Swipe navigation between panels
|
||||
- [ ] Bottom sheet mode for secondary panel
|
||||
- [ ] Graceful collapse to single-panel on narrow viewports
|
||||
|
||||
---
|
||||
|
||||
## v0.19.0 — Projects / Workspaces + Notifications
|
||||
|
||||
Organizational containers that group related conversations, KBs, and
|
||||
|
||||
Reference in New Issue
Block a user