Feat v0.6.5 renderer pipeline (#40)
All checks were successful
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-frontend (push) Successful in 6s
CI/CD / test-go-pg (push) Successful in 2m48s
CI/CD / test-sqlite (push) Successful in 2m52s
CI/CD / build-and-deploy (push) Successful in 1m20s

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #40.
This commit is contained in:
2026-03-31 16:37:33 +00:00
committed by xcaliber
parent 36d6158940
commit 81c28a50bf
33 changed files with 2089 additions and 1974 deletions

View File

@@ -2,6 +2,62 @@
All notable changes to Switchboard Core are documented here.
## v0.6.5 — Renderer Pipeline + Docs Rewrite
Lifts block rendering to a kernel SDK primitive so all surfaces share one
markdown pipeline. Rewrites docs for external audience. Adds CONTRIBUTING
guide and extension tutorial.
### Added
- **`sw.renderers` SDK module**: Kernel-level renderer registry. Extensions
register block renderers (fenced code blocks) and post renderers (DOM
post-processing) once; all surfaces consume via `sw.markdown`.
- **`sw.markdown` SDK module**: Unified markdown rendering via `marked` v16
(vendored). Lazy-loads `marked` + DOMPurify. Custom code hook delegates
fenced blocks to `sw.renderers`. Wikilink tokenizer (`[[Page Name]]`)
built in for all surfaces.
- **Browser extension script loader**: Server injects `<script>` tags for
enabled browser-tier extensions into all pages. Extensions register via
`sw:ready` event.
- **Chat markdown support**: Messages with `content_type: 'markdown'` render
via `sw.markdown`. Existing `text` messages stay plain (no behavior change).
- **Mermaid architecture diagrams**: Six diagrams in `docs/ARCHITECTURE.md`:
system overview, request flow, extension lifecycle, realtime events,
settings cascade, cluster topology.
- **`CONTRIBUTING.md`**: Development setup, project structure, test commands,
code conventions.
- **`docs/TUTORIAL-FIRST-EXTENSION.md`**: Step-by-step guide to building and
installing a browser extension.
- **`docs/DESIGN-WORKFLOWS.md`**: Clean workflow system design document.
- **13 new renderers tests** (`src/js/__tests__/renderers.test.js`).
### Changed
- **Notes surface**: Hand-rolled markdown renderer replaced with
`sw.markdown.renderSync()`. Post-renderers (mermaid, katex, etc.) now
execute on preview. ~90 lines deleted.
- **Docs surface**: Hand-rolled markdown renderer replaced with
`sw.markdown.renderSync()`. ~160 lines deleted.
- **4 renderer extensions** (mermaid, katex, csv-table, diff-viewer):
Rewritten from dead `Extensions.register()` pattern to IIFE +
`sw.renderers.register()` via `sw:ready` event. All rendering logic
preserved.
- **Surface alias routes removed**: Six `/api/v1/admin/surfaces/*` backward
compat routes deleted from `main.go`. SDK and ICD runner migrated to
canonical `/api/v1/admin/packages/*` endpoints.
- **Docs rewritten for external audience**: All references to fork history,
internal codenames, and pre-fork version numbers removed from docs,
CHANGELOG, and ROADMAP.
### Removed
- `docs/DESIGN-WORKFLOW-REDESIGN-0.2.6.md` — replaced by `DESIGN-WORKFLOWS.md`.
- Hand-rolled markdown renderers in Notes and Docs surfaces.
- Six `/admin/surfaces/*` API alias routes.
---
## v0.6.4 — Admin Health/Metrics Tab + Cluster Merge
Structural consolidation: cluster dashboard merges into Admin as a Health tab.
@@ -48,7 +104,7 @@ Comprehensive metrics endpoint for runtime, DB, cluster, and extension stats.
## v0.6.3 — Dead Code Sweep + Registry Fix
Pre-fork hardening: fix broken registry install, add registry settings UI,
Hardening: fix broken registry install, add registry settings UI,
clean up dead code, narrow default bundle.
### Fixed
@@ -74,10 +130,10 @@ clean up dead code, narrow default bundle.
unused vendor copies with zero production imports. Removed cache entries
from `sw.js`.
- **`dev.html`**: 676-line standalone dev gallery, not referenced by anything.
- **Pre-fork version comments**: Stripped all chat-switchboard version
annotations across ~140 files — standalone comments, inline suffixes,
section headers, and config field docs. Reworded to describe features
rather than reference pre-fork version numbers.
- **Stale version comments**: Stripped legacy version annotations across
~140 files — standalone comments, inline suffixes, section headers, and
config field docs. Reworded to describe features rather than reference
obsolete internal version numbers.
### Changed
@@ -1040,8 +1096,8 @@ Indexes on `folder_id`, `creator_id`, `pinned`, `updated_at`.
- **Dead `history_mode` in stage UI**: Removed history mode selector and state
from StageForm. Backend column retained for v0.3.x schema migration.
- **Dead ICD tests**: Removed assertions for `/teams/:teamId/personas`,
`/teams/:teamId/providers`, and `/teams/:teamId/models` — endpoints were
removed in Phase 0 fork.
`/teams/:teamId/providers`, and `/teams/:teamId/models` — endpoints no
longer exist in the kernel.
- **Stale `chat_only` stage mode**: Frontend `STAGE_MODES` updated from
`['chat_only', 'form_only', 'form_chat', 'review']` to
`['form_only', 'form_chat', 'review', 'custom']` matching the backend
@@ -1135,13 +1191,13 @@ Indexes on `folder_id`, `creator_id`, `pinned`, `updated_at`.
(v0.2.7 admin, v0.2.8 user, v0.2.9 team-admin pass 1).
- Updated bus doc examples and test labels from `chat.*` to `workflow.*`.
- Renamed `channel-` prefixed test paths to `test-` in storage tests.
- Updated doc comments throughout to remove references to gutted surfaces.
- Updated doc comments throughout to reflect current surface architecture.
### Removed
- **~500 lines of dead CSS**: Orphaned classes for gutted chat, channel,
project, notes, editor-chat, sidebar, and router-picker features from
`layout.css` and `surfaces.css`.
- **~500 lines of dead CSS**: Orphaned classes for removed legacy UI
components (chat, channel, project, notes, editor-chat, sidebar,
router-picker) from `layout.css` and `surfaces.css`.
- **Dead Go types**: `Grant` struct (persona-era), `CompositeModelKey` func,
comment-only stubs for NoteGraph, ProjectChannel, etc.
- **Dead event code**: `chat.typing.*` / `channel.typing.*` condition in WS
@@ -1177,7 +1233,7 @@ Indexes on `folder_id`, `creator_id`, `pinned`, `updated_at`.
### Changed
- **UserMenu**: Surface list now driven entirely by the `/api/v1/surfaces`
API. Removed hardcoded Chat, Notes, Projects links (gutted in Phase 0).
API. Removed hardcoded surface links; menu is now fully dynamic.
Core surfaces (Admin, Settings, Team Admin, Workflow) filtered from the
API list and handled as dedicated menu items with RBAC gating.
- **Tasks surface**: Replaced custom `.tasks-header` with `sw.shell.Topbar`.
@@ -1328,7 +1384,8 @@ Indexes on `folder_id`, `creator_id`, `pinned`, `updated_at`.
## [v0.1.0] — 2026-03-26
Forked from chat-switchboard v0.38.5. Gutted to a pure extension platform.
Initial release. Pure extension platform — kernel provides auth, RBAC,
storage, and the Starlark sandbox. Everything else is a package.
### Removed
@@ -1364,7 +1421,7 @@ Forked from chat-switchboard v0.38.5. Gutted to a pure extension platform.
### Changed
- Module renamed: `chat-switchboard` `switchboard-core`
- Go module: `switchboard-core`
- VERSION: `0.1.0`
- Default DB name: `switchboard_core`
- Fresh migrations: 9 files × 2 dialects (postgres + sqlite), 27 tables