Changeset 0.11.0 (#62)
This commit is contained in:
102
ROADMAP.md
102
ROADMAP.md
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user