Changeset 0.7.3 (#41)
This commit is contained in:
81
ROADMAP.md
81
ROADMAP.md
@@ -10,7 +10,7 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
|
||||
---
|
||||
|
||||
## Current State: v0.7.0
|
||||
## Current State: v0.7.3
|
||||
|
||||
### ✅ Done
|
||||
|
||||
@@ -42,6 +42,12 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
- [x] User + admin provider model listing with capabilities
|
||||
- [x] Model presets (named wrappers: global/personal scope, system prompt, temp, max_tokens)
|
||||
- [x] Preset unwrap in completion handler (transparent to provider)
|
||||
- [x] Tool framework: registry, type system, execution loop (tool→result→model)
|
||||
- [x] Note tools: note_create, note_search, note_update, note_list
|
||||
- [x] Notes API: CRUD, full-text search (tsvector), folder listing
|
||||
- [x] Provider tool calling: OpenAI + Anthropic function calling in request/response/stream
|
||||
- [x] Message tree: edit creates sibling, regenerate creates sibling, cursor tracking
|
||||
- [x] Avatar system: user + preset avatars, server-side resize to 128×128 PNG
|
||||
|
||||
**Frontend (Vanilla JS)**
|
||||
- [x] Professional splash page (split-panel hero + tabbed auth)
|
||||
@@ -68,6 +74,11 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
- [x] Appearance settings tab (UI scale, message font size)
|
||||
- [x] Mobile responsive layout (hamburger menu, sidebar overlay, dvh)
|
||||
- [x] Model/preset name in message headers (replaces generic "Assistant")
|
||||
- [x] Notes modal: list/detail views, folder sidebar, create/edit/delete, search
|
||||
- [x] Message editing + forking: inline edit, regen, branch navigation ‹ 1/2 ›
|
||||
- [x] Conversation path: active-path context assembly, cursor-aware
|
||||
- [x] White-label branding: volume mount, org name, logo, favicon, accent color, pills
|
||||
- [x] Avatar system: user profile upload, preset avatars, avatar in messages/sidebar/dropdown
|
||||
|
||||
**CI/CD (Gitea Actions)**
|
||||
- [x] Three-env pipeline (dev/test/prod)
|
||||
@@ -106,26 +117,24 @@ org-wide presets, users create personal ones (if user providers are enabled).
|
||||
White-label support and UX improvements that exploit existing infrastructure.
|
||||
|
||||
**Branding**
|
||||
- [ ] Admin branding settings in global_settings: org name, tagline, accent color
|
||||
- [ ] `/branding/` volume mount (K8s ConfigMap, optional) for favicon, logo
|
||||
- [ ] Splash page reads branding config on load, falls back to Switchboard defaults
|
||||
- [ ] CSS accent color override from branding settings
|
||||
- [x] Admin branding settings in global_settings: org name, tagline, accent color
|
||||
- [x] `/branding/` volume mount (K8s ConfigMap, optional) for favicon, logo
|
||||
- [x] Splash page reads branding config on load, falls back to Switchboard defaults
|
||||
- [x] CSS accent color override from branding settings
|
||||
|
||||
**Profile Pictures / Avatars**
|
||||
- [ ] `avatar` column on `users` table (base64 PNG, capped ~128x128, nullable)
|
||||
- [ ] `preset_avatar` column on `model_presets` (alongside existing `icon` emoji field)
|
||||
- [ ] Avatar upload in user Settings → Profile section (crop/resize client-side)
|
||||
- [ ] Admin preset form: optional avatar upload (or keep emoji-only)
|
||||
- [ ] `UI.avatar(msg)` helper: returns `<img>` if avatar set, emoji fallback otherwise
|
||||
- [ ] Replace hardcoded 👤/🤖 in `_messageHTML`, `streamResponse`, sidebar user area
|
||||
- [ ] Avatar displayed in message headers, chat list, user flyout
|
||||
- [ ] Storage: base64 in DB keeps backups self-contained (airgap-friendly)
|
||||
- [x] `avatar_url` column on `users` table (already existed, now wired)
|
||||
- [x] `avatar` column on `model_presets` (migration 015)
|
||||
- [x] Avatar upload in user Settings → Profile section (server-side resize to 128×128)
|
||||
- [x] Admin/user preset avatar upload endpoint
|
||||
- [x] `avatarHTML()` helper: returns `<img>` if avatar set, emoji fallback otherwise
|
||||
- [x] Avatar displayed in message headers, stream, typing indicator, sidebar user area
|
||||
|
||||
**Message Editing + Forking**
|
||||
- [ ] Edit message → creates sibling (uses existing parent_id tree)
|
||||
- [ ] Regenerate → creates sibling model response
|
||||
- [ ] Branch indicator at fork points (← 1/2 →)
|
||||
- [ ] Context assembly follows active path, not full channel history
|
||||
- [x] Edit message → creates sibling (uses existing parent_id tree)
|
||||
- [x] Regenerate → creates sibling model response
|
||||
- [x] Branch indicator at fork points (← 1/2 →)
|
||||
- [x] Context assembly follows active path, not full channel history
|
||||
|
||||
**UX Polish**
|
||||
- [ ] Chat search / filter in sidebar
|
||||
@@ -191,28 +200,28 @@ Required for enterprise and compliance. Cheap to build, expensive to retrofit.
|
||||
|
||||
---
|
||||
|
||||
## 0.9.0 — Tool Execution + Notes
|
||||
## ~~0.9.0 — Tool Execution + Notes~~ ✅ (pulled into 0.7.x)
|
||||
|
||||
The tool-calling infrastructure that everything downstream depends on.
|
||||
Pulled forward and shipped ahead of schedule. See TOOLS_IMPL.md and FORKING_IMPL.md.
|
||||
|
||||
**Tool Framework**
|
||||
- [ ] Tool calling pipeline in completion handler
|
||||
- [ ] Tool registry (built-in + future plugin tools)
|
||||
- [ ] Tool execution loop: model requests tool → backend executes → result fed back
|
||||
- [x] Tool calling pipeline in completion handler (OpenAI + Anthropic)
|
||||
- [x] Tool registry (built-in + future plugin tools)
|
||||
- [x] Tool execution loop: model requests tool → backend executes → result fed back
|
||||
- [ ] Tool permission model (which tools enabled per preset/channel)
|
||||
|
||||
**Notes**
|
||||
- [ ] `notes` table: title, content, folder_id, tags, team_id (nullable), created_by
|
||||
- [ ] Notes CRUD endpoints
|
||||
- [ ] `note_create`, `note_update`, `note_search`, `note_list` tools
|
||||
- [ ] Full-text search (PostgreSQL `tsvector`)
|
||||
- [ ] Markdown editor in frontend
|
||||
- [ ] Team-scoped notes (schema ready from 0.8.0)
|
||||
- [x] `notes` table: title, content, folder, tags, source_channel_id, full-text search
|
||||
- [x] Notes CRUD endpoints + search
|
||||
- [x] `note_create`, `note_update`, `note_search`, `note_list` tools
|
||||
- [x] Full-text search (PostgreSQL `tsvector` + `ts_rank` + `ts_headline`)
|
||||
- [x] Notes UI: modal with list/detail views, folder sidebar, Markdown editor
|
||||
- [ ] Team-scoped notes (awaits 0.8.0 teams)
|
||||
|
||||
**Conversation Forking UI**
|
||||
- [ ] Edit-and-resubmit creates siblings (tree structure from 0.6.0 schema)
|
||||
- [ ] Branch indicator ← 1/2 → at fork points
|
||||
- [ ] Context assembly follows active path
|
||||
- [x] Edit-and-resubmit creates siblings (tree structure)
|
||||
- [x] Branch indicator ← 1/2 → at fork points
|
||||
- [x] Context assembly follows active path
|
||||
|
||||
## 0.9.x — Context Management
|
||||
|
||||
@@ -228,7 +237,7 @@ Usability before compaction exists — long conversations shouldn't silently fai
|
||||
|
||||
## 0.10.0 — Web Search + URL Fetch
|
||||
|
||||
First real external tools, built on 0.9.0 framework.
|
||||
First external tools, using the tool framework shipped in 0.7.x.
|
||||
|
||||
- [ ] `web_search` tool: search provider abstraction (DuckDuckGo, SearXNG, Brave)
|
||||
- [ ] `url_fetch` tool: retrieve and extract content from URLs
|
||||
@@ -268,14 +277,14 @@ storage, metadata and search indexes live in PostgreSQL.
|
||||
- [ ] Paste-to-upload (clipboard image support)
|
||||
|
||||
*Note: media generation (image gen, video models) is a separate concern —
|
||||
those are tool-use actions that depend on the tool framework (0.9.0) and
|
||||
those are tool-use actions that depend on the tool framework and
|
||||
produce attachments as output. Tracked under Future.*
|
||||
|
||||
---
|
||||
|
||||
## 0.12.0 — @mention Routing + Multi-model
|
||||
|
||||
The channel schema exists from 0.6.0. This phase adds the routing logic.
|
||||
The channel schema already supports multiple models. This phase adds the routing logic.
|
||||
|
||||
- [ ] @mention parsing in messages (users and AI models)
|
||||
- [ ] Resolve mentions against `channel_models`
|
||||
@@ -292,7 +301,7 @@ The channel schema exists from 0.6.0. This phase adds the routing logic.
|
||||
- [ ] `knowledge_bases` table: name, description, team_id (nullable), created_by
|
||||
- [ ] KB document storage via 0.11.0 storage backend (same S3/PVC abstraction)
|
||||
- [ ] KB CRUD endpoints + admin UI
|
||||
- [ ] `kb_search` tool (built on 0.9.0 tool framework)
|
||||
- [ ] `kb_search` tool (uses existing tool framework)
|
||||
- [ ] Context injection in completion flow
|
||||
- [ ] Notes get embedded too (once pipeline exists)
|
||||
- [ ] Team admins manage team KBs (permission layer from 0.8.0)
|
||||
@@ -391,7 +400,7 @@ could pull left based on need.
|
||||
|
||||
## Extension / Plugin Architecture
|
||||
|
||||
**Deferred to post-1.0.** The tool execution framework (0.9.0) provides the
|
||||
**Deferred to post-1.0.** The tool execution framework (0.7.x) provides the
|
||||
internal hook points. A formal plugin API, manifest format, and marketplace
|
||||
are tracked in the dedicated design documents:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user