Feat v0.4.3 backlinks wikilinks
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 21s
CI/CD / test-frontend (pull_request) Successful in 22s
CI/CD / test-go-pg (pull_request) Successful in 2m34s
CI/CD / test-sqlite (pull_request) Successful in 3m3s
CI/CD / build-and-deploy (pull_request) Successful in 1m21s
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 21s
CI/CD / test-frontend (pull_request) Successful in 22s
CI/CD / test-go-pg (pull_request) Successful in 2m34s
CI/CD / test-sqlite (pull_request) Successful in 3m3s
CI/CD / build-and-deploy (pull_request) Successful in 1m21s
Obsidian-style [[wikilinks]] for the notes surface. New ext_notes_links table (source_id, target_id, link_text) with bidirectional indexes. Backend: _extract_wikilinks() parses [[...]] via split (no regex in Starlark). _sync_links() on create/update resolves titles to note IDs. Cascade delete cleans both directions. GET /links/:id and GET /backlinks/:id endpoints. Frontend: wikilinks render as clickable links in preview — blue for resolved, red for unresolved. Clicking resolved navigates; clicking unresolved creates the note and re-saves source to resolve the link. BacklinksPanel shows incoming links below editor with click navigation. Notes package 0.3.0 → 0.4.0. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
18
ROADMAP.md
18
ROADMAP.md
@@ -1,6 +1,6 @@
|
||||
# Switchboard Core — Roadmap
|
||||
|
||||
## Current: v0.4.2 — Tags + Search
|
||||
## Current: v0.4.3 — Backlinks + Wikilinks
|
||||
|
||||
Fork of chat-switchboard, gutted to a pure extension platform. All AI/chat
|
||||
features removed from the kernel. What remains is the minimum viable
|
||||
@@ -267,11 +267,19 @@ Zero platform special-casing. Proves the full extension stack E2E.
|
||||
| Drag-and-drop | ✅ | `NoteCard` is draggable. `FolderNode`, "All Notes", and "Unfiled" are drop targets. Uses existing move-note API. |
|
||||
| Folder context menu | ✅ | Replaced `prompt()` hack with proper right-click popup menu: Add subfolder, Rename, Delete. Positioned at click coordinates, dismissed on outside click. |
|
||||
|
||||
### v0.4.3 — Backlinks + Wikilinks (planned)
|
||||
### v0.4.3 — Backlinks + Wikilinks (complete)
|
||||
|
||||
- `note_links` table (source, target, link_text)
|
||||
- `[[wikilink]]` extraction on save
|
||||
- Backlinks panel, clickable links in preview
|
||||
| Step | Status | Description |
|
||||
|------|--------|-------------|
|
||||
| Links table | ✅ | `ext_notes_links` — source_id, target_id, link_text. Indexed on both source_id and target_id for bidirectional lookup. |
|
||||
| Wikilink extraction | ✅ | `_extract_wikilinks()` parses `[[...]]` using `split("[[")` + `find("]]")` (no regex/while in Starlark). Deduplicates by lowercase. |
|
||||
| Link sync on save | ✅ | `_sync_links()` called from `_create_note` and `_update_note`. Delete-all + reinsert pattern (matches tags). Resolves titles to note IDs (case-insensitive). Unresolved links stored with `target_id=""`. |
|
||||
| Cascade delete | ✅ | Hard-deleting a note removes both outgoing links (source_id) and incoming backlinks (target_id). |
|
||||
| Link endpoints | ✅ | `GET /links/:note_id` (outgoing) and `GET /backlinks/:note_id` (incoming, enriched with source titles). |
|
||||
| Wikilink preview | ✅ | `[[Note Title]]` rendered as clickable accent-colored links in markdown preview. Unresolved links styled in danger/red. |
|
||||
| Wikilink navigation | ✅ | Clicking a resolved wikilink navigates to the target note. Clicking an unresolved (red) link creates the note, navigates to it, and re-saves the source so the link resolves. |
|
||||
| Backlinks panel | ✅ | Collapsible panel below editor showing all notes linking to current note. Click to navigate. Hidden when empty. |
|
||||
| Stats update | ✅ | `/stats` includes `links` count. Notes package version bumped to 0.4.0. |
|
||||
|
||||
### v0.4.4 — Rich Editor + Import/Export (planned)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user