v0.6.5: Renderer pipeline, docs rewrite, architecture diagrams
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m43s
CI/CD / test-sqlite (pull_request) Successful in 2m51s
CI/CD / build-and-deploy (pull_request) Successful in 1m13s

Lift block rendering to kernel SDK primitives (sw.renderers + sw.markdown)
so all surfaces share one markdown pipeline. Rewrite docs for external
audience — remove all fork history references. Add Mermaid architecture
diagrams, CONTRIBUTING guide, and extension tutorial.

- sw.renderers SDK module: kernel-level renderer registry
- sw.markdown SDK module: unified marked v16 + DOMPurify pipeline
- Browser extension script loader for renderer injection
- Notes + Docs surfaces migrated to sw.markdown.renderSync()
- 4 renderer extensions rewritten to IIFE + sw.renderers.register()
- 6 Mermaid diagrams in ARCHITECTURE.md
- CONTRIBUTING.md + TUTORIAL-FIRST-EXTENSION.md
- DESIGN-WORKFLOWS.md replaces fork-era design doc
- Surface alias routes removed from main.go
- ICD/SDK runners migrated to /admin/packages/ endpoints
- 13 new renderer tests
- Docs, CHANGELOG, ROADMAP cleaned of fork references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 15:26:44 +00:00
parent 36d6158940
commit 2adaabe5fa
32 changed files with 1769 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