Changeset 0.7.0 (#37)
This commit is contained in:
40
ROADMAP.md
40
ROADMAP.md
@@ -10,7 +10,7 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
|
||||
---
|
||||
|
||||
## Current State: v0.6.2
|
||||
## Current State: v0.7.0
|
||||
|
||||
### ✅ Done
|
||||
|
||||
@@ -40,6 +40,8 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
- [x] Provider capability system (known models, heuristic detection, resolution chain)
|
||||
- [x] Dynamic max_tokens resolution
|
||||
- [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)
|
||||
|
||||
**Frontend (Vanilla JS)**
|
||||
- [x] Professional splash page (split-panel hero + tabbed auth)
|
||||
@@ -58,6 +60,14 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
- [x] Debug modal (console intercept, network log, state inspector)
|
||||
- [x] EventBus client with exponential backoff + max retries
|
||||
- [x] Export (Markdown, JSON, Text)
|
||||
- [x] Model selector with preset grouping (⚡ Presets optgroup)
|
||||
- [x] Admin Presets tab (create, toggle, delete global presets)
|
||||
- [x] Preset-aware completion flow (preset_id sent to backend)
|
||||
- [x] Custom dropdown for model selector (full CSS control, dark theme)
|
||||
- [x] Admin edit buttons for providers and presets (inline form reuse)
|
||||
- [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")
|
||||
|
||||
**CI/CD (Gitea Actions)**
|
||||
- [x] Three-env pipeline (dev/test/prod)
|
||||
@@ -76,20 +86,20 @@ minor = add features (deprecate, don't remove), patch = fix something.
|
||||
|
||||
---
|
||||
|
||||
## 0.7.0 — Custom Models / Presets
|
||||
## ~~0.7.0 — Custom Models / Presets~~ ✅
|
||||
|
||||
Named wrappers around base models with bundled configuration. Admins create
|
||||
org-wide presets, users create personal ones (if user providers are enabled).
|
||||
|
||||
- [ ] `model_presets` table: name, base_model_id, system_prompt, temperature,
|
||||
- [x] `model_presets` table: name, base_model_id, system_prompt, temperature,
|
||||
max_tokens, tools_enabled (jsonb), created_by, scope (global/team/personal),
|
||||
team_id (nullable, for future team scoping), is_shared
|
||||
- [ ] Permission gating: personal presets require user_providers_enabled
|
||||
- [ ] Admin preset management UI (create, edit, delete org-wide presets)
|
||||
- [ ] User preset management UI in Settings (personal presets)
|
||||
- [ ] Presets appear as first-class entries in model selector
|
||||
- [x] Permission gating: personal presets require user_providers_enabled
|
||||
- [x] Admin preset management UI (create, edit, delete org-wide presets)
|
||||
- [x] User preset management UI in Settings (personal presets)
|
||||
- [x] Presets appear as first-class entries in model selector
|
||||
("Code Reviewer (GPT-4o)", "Research Assistant (Claude Opus)")
|
||||
- [ ] Completion handler unwraps preset → base model + config overrides
|
||||
- [x] Completion handler unwraps preset → base model + config overrides
|
||||
|
||||
## 0.7.x — Branding + Polish
|
||||
|
||||
@@ -101,6 +111,16 @@ White-label support and UX improvements that exploit existing infrastructure.
|
||||
- [ ] Splash page reads branding config on load, falls back to Switchboard defaults
|
||||
- [ ] 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)
|
||||
|
||||
**Message Editing + Forking**
|
||||
- [ ] Edit message → creates sibling (uses existing parent_id tree)
|
||||
- [ ] Regenerate → creates sibling model response
|
||||
@@ -109,7 +129,9 @@ White-label support and UX improvements that exploit existing infrastructure.
|
||||
|
||||
**UX Polish**
|
||||
- [ ] Chat search / filter in sidebar
|
||||
- [ ] UI preferences (theme toggle, font size — stored in user settings)
|
||||
- [x] UI preferences: font size + UI scale (Appearance tab, localStorage)
|
||||
- [x] Mobile responsive: hamburger menu, sidebar overlay, auto-collapse
|
||||
- [x] Model name in message headers (preset name or model ID, not "Assistant")
|
||||
- [ ] Keyboard shortcuts (Ctrl+K command palette)
|
||||
- [ ] PWA manifest + offline shell + install prompt
|
||||
|
||||
|
||||
Reference in New Issue
Block a user