Changeset 0.11.0 (#62)

This commit is contained in:
2026-02-25 13:29:15 +00:00
parent d2ec55b16d
commit c9d8e9457e
56 changed files with 5664 additions and 91 deletions

View File

@@ -15,35 +15,29 @@ No compatibility guarantees before 1.0.
Features have real dependencies. This ordering respects them.
```
v0.9.x Stability + Quick UX Wins
v0.9.x Stability + Quick UX Wins
v0.9.3 Content Visibility & Block Controls
v0.9.3 Content Visibility & Block Controls
v0.9.4 API Key Encryption + Vault
v0.9.4 API Key Encryption + Vault
v0.10.0 Model Roles (utility + embedding) + Usage Tracking
v0.10.0 Model Roles (utility + embedding)
+ Usage Tracking
v0.10.2 Summarize & Continue (first utility role consumer)
v0.10.2 Summarize & Continue
v0.10.3 Frontend Refactor (no features, code health)
v0.10.3 Frontend Refactor
v0.10.4 Model Type Pipeline + Role Fixes
v0.10.4 Model Type Pipeline + Role Fixes
v0.10.5 UI Primitives + Extension Surfaces
v0.10.5 UI Primitives + Extension Surfaces
v0.11.0 Extension Foundation (browser tier) ✅
┌───────┴──────────────┐
│ │
v0.11.0 Extension v0.12.0 File Handling
Foundation + Vision
(browser tier) │
│ │
├── Custom renderers ├── Doc gen outputs
├── Image gen tool ├── KB documents
├── STT/TTS │
│ │
├───────────────────────┤
│ │
v0.13.0 Web Search + Tools Expansion
v0.12.0 File Handling v0.13.0 Web Search
+ Vision + Tools Expansion
v0.14.0 Knowledge Bases (embedding role + file storage + pgvector)
@@ -525,35 +519,58 @@ the `ctx.*` extension API surface in v0.11.0 with no rewrite needed.
---
## v0.11.0 — Extension Foundation (Browser Tier)
## v0.11.0 — Extension Foundation (Browser Tier)
The platform play. See [EXTENSIONS.md](EXTENSIONS.md) for full spec.
**Core Loader** (EXTENSIONS.md §4, §7)
- [ ] `extensions.js` — loader, registry, scoped context (~200 lines)
- [ ] `Extensions.register()` API with permission enforcement
- [ ] Manifest format parser and validator
- [ ] `extensions` + `extension_user_settings` tables
- [ ] Admin endpoints: install, uninstall, enable/disable
- [ ] Asset serving: `/api/v1/extensions/:id/assets/*path`
- [ ] Extension settings UI in Settings modal
- [x] `extensions.js` — loader, registry, scoped context, renderer pipeline (~400 lines)
- [x] `Extensions.register()` API with permission-aware scoped contexts
- [x] Manifest format: `_script` inline or `entry` file, permissions, settings schema
- [x] `extensions` + `extension_user_settings` tables (migration 006)
- [x] Admin endpoints: CRUD, enable/disable, asset serving
- [x] `/api/v1/extensions/:id/assets/*path` — public (no auth, `<script>` tag compatible)
- [x] Auto-seeder: scans `extensions/builtin/*/` on startup, upserts manifests
- [x] Admin Extensions tab with Edit button (view/modify manifest + script inline)
**Browser Tool Bridge** (EXTENSIONS.md §5)
- [ ] `ctx.tools.handle()` API for browser tool registration
- [ ] Tool schema collection: merge built-in + extension tools
- [ ] `tool.call.*` / `tool.result.*` WebSocket routing
- [ ] 30-second timeout with LLM error recovery
- [ ] Tool execution via EventBus `WaitFor` pattern
- [x] `ctx.tools.handle()` API for browser tool registration
- [x] Tool schema collection: merge server + extension tools in completions
- [x] `tool.call.*` / `tool.result.*` WebSocket routing via EventBus hub
- [x] 30-second timeout with error recovery
- [x] `Events.waitFor()` pattern for request/response tool calls
**Custom Renderer API** (EXTENSIONS.md Appendix A)
- [ ] `ctx.renderers.register()`pattern + render function
- [ ] Renderer pipeline in message display (after markdown, before DOM insert)
- [ ] First-party renderers: collapsible code, HTML preview, mermaid, LaTeX
(migrate core v0.9.2 implementations to extension format)
- [x] `ctx.renderers.register()`block, post, and inline types with pattern/match
- [x] Renderer pipeline: block renderers intercept code fences, post renderers process DOM
- [x] Case-insensitive language matching (LLMs capitalize fence tags)
- [x] Nested ```` ```markdown ```` fence unwrapping (LLMs wrap responses in markdown fences)
- [x] Extension-owned styles via `_injectStyles()` / `destroy()` lifecycle
**First Extensions**
- [ ] Image generation tool (browser or sidecar, uses generation model role)
- [ ] STT/TTS (browser extension, Web Speech API — personal use case)
**Server Tools** (auto-registered via `init()`)
- [x] `datetime` — current date/time/timezone/day/unix/ISO-week (models hallucinate dates)
- [x] `calculator` — recursive-descent evaluator: arithmetic, 17 functions, constants
**Built-in Browser Extensions** (6 total, self-contained with own CSS)
- [x] **Mermaid** — block + post renderer, SVG diagrams, dark mode, local vendor + CDN fallback
- [x] **KaTeX** — block renderer (` ```latex/math/tex ```) + post renderer (inline `$...$` / `$$...$$`)
- [x] **CSV Table** — block renderer, RFC 4180 parser, sortable columns, numeric-aware sorting
- [x] **Diff Viewer** — block renderer, red/green syntax highlighting, stats badge
- [x] **JS Sandbox** — browser tool (`js_eval`), sandboxed iframe, 10s timeout, console capture
- [x] **Regex Tester** — browser tool (`regex_test`), multi-input matching, named groups
**Bugfixes**
- [x] WebSocket token field mismatch (`tokens.access``tokens.accessToken`)
- [x] Extension asset 401 (moved asset route to public group — `<script>` tags can't send auth headers)
- [x] `runExtensionPostRender is not defined` (stale SW cache, added `typeof` guard)
- [x] Extension init order (moved `loadAll()`/`initAll()` before `loadChats()`)
- [x] K8s Ingress WebSocket routing (`pathType: Exact``Prefix` for Traefik longest-prefix-wins)
- [x] Notes missing post-render call (mermaid/KaTeX wouldn't render in note view)
**Diagnostics**
- [x] Test 5: Browser extensions (loaded count, active/inactive, renderers, tool handlers)
- [x] Test 6: Service Worker cache (registration, scope, state, cache names, entry counts)
- [x] Purge Cache button in Debug Log modal (deletes all SW caches, unregisters workers)
---
@@ -579,7 +596,7 @@ File input into chat — table stakes for serious use.
## v0.13.0 — Web Search + Tools Expansion
Built-in tools that use the tool framework shipped in v0.7.x.
Built-in tools that extend the tool framework shipped in v0.11.0.
- [ ] `web_search` tool: search provider abstraction (SearXNG, Brave, DuckDuckGo)
- [ ] `url_fetch` tool: retrieve and extract content from URLs
@@ -773,6 +790,11 @@ Depends on: workflow engine (v0.21.0).
Items that are real but don't yet have a version assignment. Pull left
based on need.
**Extension System — Additional Extensions**
- Image generation tool (browser or sidecar, provider-agnostic)
- STT/TTS (browser extension, Web Speech API — personal use case)
- Code execution sandbox (server-side, container isolation)
**Extension System — Server Tiers**
- Starlark runtime integration (Tier 1 — server sandbox)
- Sidecar HTTP tool protocol (Tier 2 — container isolation)