From cb8238baf7855982df2986f0fd7425753806507b Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Sun, 29 Mar 2026 12:07:06 +0000 Subject: [PATCH] Update version, changelog, and roadmap for v0.4.1 Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ ROADMAP.md | 17 +++++++++++------ VERSION | 2 +- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e4bb0b..28375f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,40 @@ All notable changes to Switchboard Core are documented here. +## v0.4.1 — Folders + Navigation Tree + +### Added + +- **Folders table** (`ext_notes_folders`): name, parent_id, creator_id, + sort_order. Indexed on parent_id and creator_id. Nested hierarchy via + parent_id foreign key (empty string = root). +- **Folder CRUD API**: 5 new Starlark handlers — list, create, update, delete + folders plus a dedicated move-note endpoint (`POST /notes/move`). +- **Navigation tree**: `FolderTree` + `FolderNode` Preact components in the + sidebar. Flat API response built into a nested tree client-side via `useMemo`. + Expand/collapse toggles, depth-based indentation, inline rename via + right-click context menu. +- **Folder filtering**: Clicking a folder filters notes by `folder_id` query + param. "All Notes" clears the filter. "Unfiled" shows notes with empty + folder_id (client-side filter). +- **Editor folder select**: Dropdown in the editor header moves notes between + folders. Shows nested hierarchy with `└` prefix indentation. +- **Folder-aware note creation**: New notes inherit the active folder's ID. +- **Delete cascade**: Deleting a folder orphans its notes (moves to Unfiled) + and reparents child folders to the deleted folder's parent. +- **Updated stats**: `/stats` response now includes `unfiled` and `folders` + counts. + +### Data model + +| Table | Columns | +|-------|---------| +| `ext_notes_folders` | name, parent_id, creator_id, sort_order | + +### Notes package version + +Bumped from 0.1.0 → 0.2.0. 12 API routes (7 existing + 5 new). + ## v0.4.0 — Notes Surface ### Added diff --git a/ROADMAP.md b/ROADMAP.md index abba0df..c00ba26 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # Switchboard Core — Roadmap -## Current: v0.4.0 — Notes Surface +## Current: v0.4.1 — Folders + Navigation Tree Fork of chat-switchboard, gutted to a pure extension platform. All AI/chat features removed from the kernel. What remains is the minimum viable @@ -242,18 +242,23 @@ Zero platform special-casing. Proves the full extension stack E2E. | Search | ✅ | Client-side LIKE search over title/body. Search bar in sidebar. | | Pin/archive | ✅ | Pin notes to top, soft-delete via archive, hard delete with `?hard=1`. | -### v0.4.1 — Folders + Navigation Tree (planned) +### v0.4.1 — Folders + Navigation Tree (complete) -- `folders` table (name, parent_id, sort_order) -- Folder CRUD API (4 routes) + note move -- Collapsible folder tree in sidebar -- Breadcrumb trail in editor +| Step | Status | Description | +|------|--------|-------------| +| Folders table | ✅ | `ext_notes_folders` — name, parent_id, creator_id, sort_order. Indexed on parent_id and creator_id. | +| Folder CRUD API | ✅ | 5 Starlark handlers: list, create, update, delete folders + `POST /notes/move`. Delete cascade orphans notes and reparents child folders. | +| Folder tree UI | ✅ | `FolderTree` + `FolderNode` components. Flat-to-tree builder, expand/collapse, depth indentation, inline rename via context menu. | +| Folder filtering | ✅ | Click folder → filter notes. "All Notes" / "Unfiled" virtual views. New notes inherit active folder. | +| Editor folder select | ✅ | Dropdown with nested hierarchy (`└` prefix). Moves notes between folders via move-note API. | +| Updated stats | ✅ | Stats include `unfiled` and `folders` counts. | ### v0.4.2 — Tags + Search (planned) - `note_tags` table (note_id, tag) - Tag management inline with note save - Tag filter in sidebar, tag pills on cards +- Drag-and-drop note-to-folder moves ### v0.4.3 — Backlinks + Wikilinks (planned) diff --git a/VERSION b/VERSION index 1d0ba9e..267577d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.0 +0.4.1