This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/ROADMAP.md
2026-02-19 15:03:20 +00:00

181 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🗺️ Chat Switchboard — Roadmap
**See also:**
- [ARCHITECTURE.md](ARCHITECTURE.md) — Core services design (Notes, KBs, Tasks, Channels, Embeddings)
- [EXTENSIONS.md](EXTENSIONS.md) — Extension system spec (Browser/Starlark/Sidecar tiers, tools, surfaces)
## Current State: v0.5.4
### ✅ Done
**Backend (Go)**
- [x] PostgreSQL schema + auto-migrations (go:embed, startup)
- [x] JWT auth with refresh token rotation
- [x] Chat CRUD + message persistence
- [x] Streaming completion proxy (OpenAI + Anthropic + Venice + OpenRouter)
- [x] Per-user + global API config management
- [x] Admin endpoints (users, providers, models, settings, stats)
- [x] Rate limiting, error middleware, request logging
- [x] Health check endpoint (includes schema_version)
- [x] EventBus with WebSocket hub
- [x] Provider capability system (known models, heuristic detection, resolution chain)
- [x] Dynamic max_tokens resolution (no more hardcoded 4096)
- [x] User + admin provider model listing with capabilities
**Frontend (Vanilla JS)**
- [x] Collapsible sidebar with time-grouped chat history
- [x] User menu flyout (Settings, Admin, Debug, Sign Out)
- [x] Model selector with capability badges (output, context, tools, vision, thinking)
- [x] Client-side known model table with backend overlay
- [x] Streaming SSE display with smart scroll
- [x] Full markdown rendering (marked.js + DOMPurify)
- [x] Thinking block display (`<think>`/`<thinking>` tags)
- [x] Settings modal (profile, chat prefs, provider management)
- [x] Admin modal (users, providers, models with cap badges, settings, stats)
- [x] Debug modal (console intercept, network log, state inspector)
- [x] EventBus client with exponential backoff + max retries
- [x] Export (Markdown, JSON, Text)
- [x] Vendor libs with CDN fallback (SCIF-safe)
- [x] 3-stage Dockerfile (Go build → vendor download → nginx)
**CI/CD (Gitea Actions)**
- [x] Three-env pipeline (dev/test/prod)
- [x] Dev: upgrade test → schema validate → wipe → fresh install test
- [x] Backend auto-migrates on startup (no CI migration step)
- [x] Shared PG safety (_dev suffix guard on wipe)
- [x] Post-deploy schema verification via /api/v1/health
**Architecture Design (v0.5.4)**
- [x] ARCHITECTURE.md: core services spec (13 sections)
- [x] EXTENSIONS.md: three-tier extension system spec
- [x] Terminology: Roles, Teams, Channels, Message Tree, etc.
- [x] "Everything is a channel" — chat is a channel with type:'direct'
- [x] Conversation forking (message tree via parent_id)
- [x] Auth strategy (builtin/mTLS/OIDC)
- [x] Classification banners (CSS custom props)
### Implementation Phasing
**See ARCHITECTURE.md §10 for the authoritative implementation sequence.**
Phases 18, from channel foundation through RBAC.
---
## Phase 1: Real-Time Foundation
### 1.1 WebSocket Hub
**Priority:** HIGH — blocks Channels, typing indicators, live updates
- [ ] WebSocket upgrade endpoint (`/ws`)
- [ ] Connection manager (register, unregister, broadcast)
- [ ] Room-based pub/sub (per-chat, per-channel, global)
- [ ] JWT auth on WebSocket handshake
- [ ] Heartbeat / ping-pong keepalive
- [ ] Reconnection handling (frontend)
- [ ] Message types: `chat.message`, `chat.typing`, `user.presence`, `system.notify`
### 1.2 Live Chat Updates
- [ ] New messages pushed via WebSocket (not just SSE streaming)
- [ ] Typing indicators
- [ ] Chat list updates when other sessions create/delete chats
- [ ] Online user presence
---
## Phase 2: Channels
### 2.1 Backend
- [ ] Channel model (name, description, type: public/private/DM, creator)
- [ ] Membership model (user_id, channel_id, role: owner/member)
- [ ] Channel messages (extends message model with channel_id)
- [ ] CRUD endpoints: `/api/v1/channels`, `/api/v1/channels/:id/messages`
- [ ] @mention parsing — users and AI models
- [ ] AI response triggered by @model-name mentions
- [ ] WebSocket broadcast per channel room
### 2.2 Frontend
- [ ] Channels section in sidebar (below chats, collapsible)
- [ ] Channel creation modal (name, description, public/private)
- [ ] Member management (invite, remove, role change)
- [ ] Message display with user avatars and @mention highlighting
- [ ] AI responses inline with user messages
- [ ] Unread count badges
---
## Phase 3: Plugin System
### 3.1 Architecture (see discussion below)
- [ ] Plugin manifest format (`plugin.json`)
- [ ] Plugin lifecycle (install, enable, disable, uninstall)
- [ ] Plugin storage (per-plugin isolated DB namespace or key-value)
- [ ] Hook system (pre-completion, post-completion, on-message, on-channel-message)
- [ ] Admin UI for plugin management (install, configure, enable/disable)
- [ ] Plugin API (what plugins can access: messages, user context, settings)
### 3.2 Built-in Plugin: Web Search
- [ ] Tool-use integration in completion flow
- [ ] Search provider abstraction (DuckDuckGo, SearXNG, Brave)
- [ ] Results injected into context
### 3.3 Built-in Plugin: Token Counter
- [ ] Per-message token estimation
- [ ] Per-chat cost tracking
- [ ] Provider-specific pricing data
---
## Phase 4: Notes & Knowledge Base
### 4.1 Notes
- [ ] Note model (title, content, folder, tags)
- [ ] CRUD endpoints
- [ ] Folder organization
- [ ] Full-text search (PostgreSQL `tsvector`)
- [ ] Markdown editor in frontend
- [ ] Link notes to chats
### 4.2 RAG (Retrieval Augmented Generation)
- [ ] Document upload (PDF, DOCX, TXT, MD)
- [ ] Chunking strategies (recursive, semantic)
- [ ] Embedding generation (OpenAI, local models)
- [ ] pgvector storage and similarity search
- [ ] Context injection in completion flow
- [ ] Per-KB toggle in chat settings
---
## Phase 5: Polish
- [ ] Chat search / filter in sidebar
- [ ] Message editing
- [ ] Chat folders / pinning
- [ ] Bulk chat operations
- [ ] Keyboard shortcuts (Ctrl+K command palette)
- [ ] PWA manifest + offline shell
- [ ] Performance: lazy load chat history, virtual scroll for long chats
---
## Future
- Desktop app (Tauri)
- Smart model routing (cost/quality/latency auto-selection)
- Workflow builder (visual DAG for chaining models + tools)
- Plugin marketplace
- SSO/SAML
- Audit logging
- Multi-tenant SaaS mode
---
## Plugin / Extension Architecture
**Moved to dedicated documents:**
- [EXTENSIONS.md](EXTENSIONS.md) — Full extension system spec with three tiers
(Browser JS, Starlark sandbox, Sidecar containers), manifest format,
browser tool bridge, surface/mode system, and implementation roadmap.
- [ARCHITECTURE.md](ARCHITECTURE.md) — Core backend services that extensions
build on: Notes, Knowledge Bases, Tasks, Channels, Embeddings, and
Folders/Projects. Includes data models, sequencing, and admin controls.