- Create 22-04-SUMMARY.md - Update STATE.md with plan completion, metrics, decisions - Update ROADMAP.md plan progress (5/6 summaries) - Mark requirements INPUT-05, INPUT-06 complete
10 KiB
10 KiB
Requirements: v1.3 Web Chat Interface
Milestone: v1.3 Status: Queued Source PRD: ~/Downloads/nexus-v1.3-prd-web-chat.md Depends on: v1.2 (Skill Aggregator + Generalist Agent) Total v1 requirements: 65
Categories
Chat Core (14)
- CHAT-01 — Real-time streaming responses: tokens appear as they are generated, not after completion
- CHAT-02 — Markdown rendering in messages: code blocks with syntax highlighting, tables, lists, headings, links, images
- CHAT-03 — Code blocks have a one-click copy button and a language label
- CHAT-04 — Multiple concurrent conversations: sidebar shows the full conversation list
- CHAT-05 — Conversation titles: auto-generated from the first message, manually editable by the user
- CHAT-06 — Delete, archive, and pin conversations
- CHAT-07 — Full-text search across all conversations
- CHAT-08 — Agent selector: switch which agent you are talking to mid-conversation or per-conversation
- CHAT-09 — System message indicator: when the Brainstormer hands off to PM, or PM delegates to Engineer, the handoff is visible in chat
- CHAT-10 — Message editing: edit a previous message and regenerate the response
- CHAT-11 — Response regeneration: retry button on any assistant message
- CHAT-12 — Stop generation: cancel button available while a response is streaming
- CHAT-13 — Message reactions / bookmarks: mark important messages for later reference
- CHAT-14 — Conversation branching: editing a mid-conversation message creates a branch; both branches are preserved
Input (7)
- INPUT-01 — Multi-line text input with auto-resize: grows with content up to a max height before scrolling
- INPUT-02 — File/image upload via drag-and-drop or button with inline preview before sending
- INPUT-03 — Paste image from clipboard directly into the chat input
- INPUT-04 — Voice input via Whisper (when local AI is enabled): record button with transcription preview before sending
- INPUT-05 — Slash commands:
/brainstorm,/ask-pm,/ask-engineer,/task,/search - INPUT-06 —
@mentionagents: type@engineerto route a message to a specific agent - INPUT-07 — Keyboard shortcuts: Enter to send, Shift+Enter for newline, Cmd+K for search, Escape to cancel
Agent Integration (7)
- AGENT-01 — Default agent is the Brainstormer (Generalist with a Superpowers-style system prompt, or a dedicated 4th Brainstormer agent)
- AGENT-02 — Brainstormer follows a structured questioning flow: asks clarifying questions, produces a spec template, and hands off to PM
- AGENT-03 — PM agent can receive specs from chat and create Nexus tasks/issues from them
- AGENT-04 — Agent responses show which agent is speaking with avatar and name
- AGENT-05 — Handoff indicators visible in chat: "Brainstormer → PM: Here's the spec for approval"
- AGENT-06 — Task creation from chat: user or agent can say "create a task for this" and it becomes a Nexus issue
- AGENT-07 — Status updates from agents appear in chat: "Engineer completed task X" notification in the relevant conversation
History & Persistence (6)
- HIST-01 — All conversations persisted in libSQL
- HIST-02 — Conversation list in sidebar: sorted by most recent, searchable, filterable by agent
- HIST-03 — Infinite scroll in the conversation list sidebar
- HIST-04 — Conversation export: download as Markdown or JSON
- HIST-05 — Cross-device sync: conversations accessible from any device on the network via the Nexus server API
- HIST-06 — Chat history survives server restarts: no in-memory-only state
PWA & Mobile (8)
- PWA-01 — Service worker for offline capability: cached UI loads instantly, queues messages until back online
- PWA-02 — Web App Manifest: installable on iOS, Android, macOS, and Windows as a standalone app
- PWA-03 — Responsive layout: adapts to phone, tablet, and desktop screen sizes
- PWA-04 — Mobile-optimized input: large touch targets, sticky input bar at bottom, keyboard-aware resize
- PWA-05 — Pull-to-refresh on the mobile conversation list
- PWA-06 — Push notifications (where supported): agent mentions, task completions, handoff requests
- PWA-07 — App icon and splash screen with Nexus branding, theme-aware
- PWA-08 — "Add to Home Screen" prompt on first mobile visit
Theme Integration (3)
- THEME-01 — Chat interface respects the Nexus theme system (Catppuccin Mocha, Tokyo Night, Catppuccin Latte)
- THEME-02 — Code blocks use theme-appropriate syntax highlighting colors
- THEME-03 — Agent avatars/colors are visually distinguishable in all three themes
Performance (5)
- PERF-01 — Initial load under 2 seconds on broadband, under 5 seconds on 3G
- PERF-02 — Streaming response latency under 100ms from server to UI
- PERF-03 — Conversations with 1,000+ messages scroll smoothly via a virtualized list
- PERF-04 — Full-text search returns results in under 500ms across 10,000+ messages
- PERF-05 — PWA cached load under 1 second
File System (13)
- FILE-01 — Local file storage directory structure under
<nexus-root>/files/with subdirectories:projects/<slug>/assets/,projects/<slug>/docs/,projects/<slug>/generated/,projects/<slug>/placeholders/,chat/<conversation-id>/, andexports/ - FILE-02 — libSQL
filestable tracking all file metadata: id, filename, original_filename, mime_type, size_bytes, storage_path, git_hash, checksum, dual-scope fields (project_id, conversation_id, message_id, agent_id, workspace_id, task_id), source, category, placeholder fields, and lifecycle timestamps - FILE-03 — libSQL
file_referencestable enabling a single file to be referenced from multiple conversations without duplication - FILE-04 — Dual scoping: a file uploaded during a project-linked conversation lives in
files/projects/<slug>/but is also referenced by the chat message; a file in a general chat (no project context) lives infiles/chat/<conversation-id>/ - FILE-05 — File upload from chat input via drag-and-drop or button; file is stored on disk and its metadata is written to libSQL
- FILE-06 — Inline file preview in chat: images render inline, PDFs show a first-page preview, code files show a syntax-highlighted preview
- FILE-07 — One-click file download from chat for any attached or generated file
- FILE-08 — Agent-generated files (code output, specs, presentations) stored in
files/projects/<slug>/generated/, linked to the originating task and conversation in libSQL - FILE-09 — Git integration:
files/is a git repository; every file operation (upload, generate, replace, delete) creates a commit with a descriptive message - FILE-10 — Version history: user can view the git log for any file and see its change history
- FILE-11 — Placeholder asset tracking: Nexus auto-maintains a
PLACEHOLDERS.mdmanifest in each project directory; when a placeholder is replaced by a final asset, the manifest and DB are updated with the replacement chain - FILE-12 — File scope promotion: a chat-scoped file can be promoted to a project scope; a project file can be referenced in any chat conversation
- FILE-13 — Cross-device file access: files are served via the Nexus server API so a file uploaded on one device is accessible on any other device on the network
Out of Scope (v1.4+)
The following are explicitly deferred:
- Voice call / audio conversation mode
- Video sharing / screen recording in chat
- Collaborative chat (multiple human users in one conversation)
- End-to-end encryption
- Chat API for third-party integrations
- Custom chat themes beyond the Nexus theme system
- Chat-based agent configuration / settings changes
- Telegram bridge (Telegram messages appearing in web chat and vice versa)
Traceability
| Requirement | Phase | Status |
|---|---|---|
| CHAT-01 | Phase 22 | Complete |
| CHAT-02 | Phase 21 | Complete |
| CHAT-03 | Phase 21 | Complete |
| CHAT-04 | Phase 21 | Complete |
| CHAT-05 | Phase 21 | Complete |
| CHAT-06 | Phase 21 | Complete |
| CHAT-07 | Phase 24 | Pending |
| CHAT-08 | Phase 22 | Complete |
| CHAT-09 | Phase 23 | Pending |
| CHAT-10 | Phase 22 | Complete |
| CHAT-11 | Phase 22 | Complete |
| CHAT-12 | Phase 22 | Complete |
| CHAT-13 | Phase 24 | Pending |
| CHAT-14 | Phase 24 | Pending |
| INPUT-01 | Phase 21 | Complete |
| INPUT-02 | Phase 25 | Pending |
| INPUT-03 | Phase 25 | Pending |
| INPUT-04 | Phase 25 | Pending |
| INPUT-05 | Phase 22 | Complete |
| INPUT-06 | Phase 22 | Complete |
| INPUT-07 | Phase 21 | Complete |
| AGENT-01 | Phase 23 | Pending |
| AGENT-02 | Phase 23 | Pending |
| AGENT-03 | Phase 23 | Pending |
| AGENT-04 | Phase 22 | Complete |
| AGENT-05 | Phase 23 | Pending |
| AGENT-06 | Phase 23 | Pending |
| AGENT-07 | Phase 23 | Pending |
| HIST-01 | Phase 21 | Complete |
| HIST-02 | Phase 21 | Complete |
| HIST-03 | Phase 21 | Complete |
| HIST-04 | Phase 24 | Pending |
| HIST-05 | Phase 21 | Complete |
| HIST-06 | Phase 21 | Complete |
| PWA-01 | Phase 26 | Pending |
| PWA-02 | Phase 26 | Pending |
| PWA-03 | Phase 26 | Pending |
| PWA-04 | Phase 26 | Pending |
| PWA-05 | Phase 26 | Pending |
| PWA-06 | Phase 26 | Pending |
| PWA-07 | Phase 26 | Pending |
| PWA-08 | Phase 26 | Pending |
| THEME-01 | Phase 21 | Complete |
| THEME-02 | Phase 21 | Complete |
| THEME-03 | Phase 22 | Complete |
| PERF-01 | Phase 26 | Pending |
| PERF-02 | Phase 22 | Complete |
| PERF-03 | Phase 22 | Pending |
| PERF-04 | Phase 24 | Pending |
| PERF-05 | Phase 26 | Pending |
| FILE-01 | Phase 25 | Pending |
| FILE-02 | Phase 25 | Pending |
| FILE-03 | Phase 25 | Pending |
| FILE-04 | Phase 25 | Pending |
| FILE-05 | Phase 25 | Pending |
| FILE-06 | Phase 25 | Pending |
| FILE-07 | Phase 25 | Pending |
| FILE-08 | Phase 25 | Pending |
| FILE-09 | Phase 25 | Pending |
| FILE-10 | Phase 25 | Pending |
| FILE-11 | Phase 25 | Pending |
| FILE-12 | Phase 25 | Pending |
| FILE-13 | Phase 25 | Pending |