docs: create roadmap (5 phases)
This commit is contained in:
@@ -77,26 +77,26 @@ Which phases cover which requirements. Updated during roadmap creation.
|
||||
|
||||
| Requirement | Phase | Status |
|
||||
|-------------|-------|--------|
|
||||
| CHAT-01 | — | Pending |
|
||||
| CHAT-02 | — | Pending |
|
||||
| CONV-01 | — | Pending |
|
||||
| CONV-02 | — | Pending |
|
||||
| CONV-03 | — | Pending |
|
||||
| CONV-04 | — | Pending |
|
||||
| DISP-01 | — | Pending |
|
||||
| DISP-02 | — | Pending |
|
||||
| DISP-03 | — | Pending |
|
||||
| UI-01 | — | Pending |
|
||||
| UI-02 | — | Pending |
|
||||
| UI-03 | — | Pending |
|
||||
| CODE-01 | — | Pending |
|
||||
| CODE-02 | — | Pending |
|
||||
| CHAT-01 | Phase 3 | Pending |
|
||||
| CHAT-02 | Phase 3 | Pending |
|
||||
| CONV-01 | Phase 2 | Pending |
|
||||
| CONV-02 | Phase 2 | Pending |
|
||||
| CONV-03 | Phase 2 | Pending |
|
||||
| CONV-04 | Phase 2 | Pending |
|
||||
| DISP-01 | Phase 4 | Pending |
|
||||
| DISP-02 | Phase 4 | Pending |
|
||||
| DISP-03 | Phase 4 | Pending |
|
||||
| UI-01 | Phase 5 | Pending |
|
||||
| UI-02 | Phase 5 | Pending |
|
||||
| UI-03 | Phase 5 | Pending |
|
||||
| CODE-01 | Phase 1 | Pending |
|
||||
| CODE-02 | Phase 1 | Pending |
|
||||
|
||||
**Coverage:**
|
||||
- v1 requirements: 14 total
|
||||
- Mapped to phases: 0
|
||||
- Unmapped: 14 ⚠️
|
||||
- Mapped to phases: 14
|
||||
- Unmapped: 0 ✓
|
||||
|
||||
---
|
||||
*Requirements defined: 2026-03-27*
|
||||
*Last updated: 2026-03-27 after initial definition*
|
||||
*Last updated: 2026-03-27 after roadmap creation — all 14 requirements mapped*
|
||||
|
||||
91
.planning/ROADMAP.md
Normal file
91
.planning/ROADMAP.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Roadmap: Chat Agent WebApp
|
||||
|
||||
## Overview
|
||||
|
||||
Five phases take this project from an empty solution to a complete personal AI chat application. Each phase introduces one Blazor concept and delivers something verifiable. The dependency chain is strict: the WASM/API architecture must exist before storage, storage before conversations, conversations before AI, AI before display polish, and display before UI completeness. Streaming is deferred to v2. The result is a working, well-understood chat interface where every line of code is intentional and explained.
|
||||
|
||||
## Phases
|
||||
|
||||
**Phase Numbering:**
|
||||
- Integer phases (1, 2, 3): Planned milestone work
|
||||
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
|
||||
|
||||
Decimal phases appear between their surrounding integers in numeric order.
|
||||
|
||||
- [ ] **Phase 1: Architecture Foundation** - Two-project solution scaffold with WASM/API split and shared models; establishes the tutorial commenting convention
|
||||
- [ ] **Phase 2: Conversation Storage** - JSON file persistence and full conversation CRUD via repository pattern and Minimal API endpoints
|
||||
- [ ] **Phase 3: Basic AI Chat** - End-to-end chat loop (send message → OpenAI → display response) without streaming
|
||||
- [ ] **Phase 4: Message Display** - Markdown rendering, syntax-highlighted code blocks, and copy-to-clipboard
|
||||
- [ ] **Phase 5: UI Polish** - Sidebar layout, chat input area, and responsive design across screen sizes
|
||||
|
||||
## Phase Details
|
||||
|
||||
### Phase 1: Architecture Foundation
|
||||
**Goal**: The solution structure is locked in and the critical boundaries (no API key in WASM, no file I/O in WASM, no direct OpenAI calls from WASM) are architecturally enforced before any feature code is written
|
||||
**Depends on**: Nothing (first phase)
|
||||
**Requirements**: CODE-01, CODE-02
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. Running `dotnet run` on both projects starts WASM client and API server without errors
|
||||
2. A test HTTP request from the WASM client reaches the API server and returns a response (CORS working)
|
||||
3. The shared models library is referenced by both projects with no duplication of DTOs
|
||||
4. Running `dotnet publish` on the WASM project completes with no IL trim warnings
|
||||
5. Every file introduced contains inline comments explaining the Blazor concept it demonstrates
|
||||
**Plans**: TBD
|
||||
**UI hint**: yes
|
||||
|
||||
### Phase 2: Conversation Storage
|
||||
**Goal**: Users can create, switch between, and delete conversations that persist to disk and survive app restarts — with no AI integration yet
|
||||
**Depends on**: Phase 1
|
||||
**Requirements**: CONV-01, CONV-02, CONV-03, CONV-04
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. User can create a new conversation and see it appear in the conversation list
|
||||
2. User can click a conversation in the list and switch to it (conversation content loads)
|
||||
3. User can delete a conversation and see it removed from the list
|
||||
4. After closing and reopening the browser, all conversations and their messages are still present
|
||||
**Plans**: TBD
|
||||
|
||||
### Phase 3: Basic AI Chat
|
||||
**Goal**: Users can send a message and receive an AI response in the active conversation, with the full request/response cycle working end-to-end
|
||||
**Depends on**: Phase 2
|
||||
**Requirements**: CHAT-01, CHAT-02
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. User can type a message, press send, and see their message appear in the chat area
|
||||
2. User receives an AI response from OpenAI GPT displayed in the chat area
|
||||
3. The conversation history is preserved across the full exchange and saved to disk
|
||||
4. The OpenAI API key is never present in any WASM project file or browser network request
|
||||
**Plans**: TBD
|
||||
|
||||
### Phase 4: Message Display
|
||||
**Goal**: AI responses render as readable, formatted content — not raw markdown strings — with syntax-highlighted code and one-click copy
|
||||
**Depends on**: Phase 3
|
||||
**Requirements**: DISP-01, DISP-02, DISP-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. An AI response containing markdown (headings, lists, bold, links) renders as formatted HTML in the chat area
|
||||
2. Code blocks in AI responses display with syntax highlighting appropriate to the language
|
||||
3. User can click a copy button on any message and the text is copied to the clipboard
|
||||
**Plans**: TBD
|
||||
**UI hint**: yes
|
||||
|
||||
### Phase 5: UI Polish
|
||||
**Goal**: The app has a complete, usable layout — sidebar with conversation list, chat input area, and a responsive design that works across screen sizes
|
||||
**Depends on**: Phase 4
|
||||
**Requirements**: UI-01, UI-02, UI-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. App displays a sidebar on the left with the conversation list and a main chat area on the right
|
||||
2. The chat area has a text input field and a send button visible at the bottom of the screen
|
||||
3. The layout reflows gracefully on a narrow viewport (mobile-width browser window) without horizontal scrolling or clipped content
|
||||
**Plans**: TBD
|
||||
**UI hint**: yes
|
||||
|
||||
## Progress
|
||||
|
||||
**Execution Order:**
|
||||
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5
|
||||
|
||||
| Phase | Plans Complete | Status | Completed |
|
||||
|-------|----------------|--------|-----------|
|
||||
| 1. Architecture Foundation | 0/TBD | Not started | - |
|
||||
| 2. Conversation Storage | 0/TBD | Not started | - |
|
||||
| 3. Basic AI Chat | 0/TBD | Not started | - |
|
||||
| 4. Message Display | 0/TBD | Not started | - |
|
||||
| 5. UI Polish | 0/TBD | Not started | - |
|
||||
62
.planning/STATE.md
Normal file
62
.planning/STATE.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Project State
|
||||
|
||||
## Project Reference
|
||||
|
||||
See: .planning/PROJECT.md (updated 2026-03-27)
|
||||
|
||||
**Core value:** A working, well-understood AI chat interface — every line of code is intentional and explained
|
||||
**Current focus:** Phase 1 — Architecture Foundation
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 1 of 5 (Architecture Foundation)
|
||||
Plan: 0 of TBD in current phase
|
||||
Status: Ready to plan
|
||||
Last activity: 2026-03-27 — Roadmap created; all 14 v1 requirements mapped to 5 phases
|
||||
|
||||
Progress: [░░░░░░░░░░] 0%
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
**Velocity:**
|
||||
- Total plans completed: 0
|
||||
- Average duration: —
|
||||
- Total execution time: 0 hours
|
||||
|
||||
**By Phase:**
|
||||
|
||||
| Phase | Plans | Total | Avg/Plan |
|
||||
|-------|-------|-------|----------|
|
||||
| - | - | - | - |
|
||||
|
||||
**Recent Trend:**
|
||||
- Last 5 plans: —
|
||||
- Trend: —
|
||||
|
||||
*Updated after each plan completion*
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
### Decisions
|
||||
|
||||
Decisions are logged in PROJECT.md Key Decisions table.
|
||||
Recent decisions affecting current work:
|
||||
|
||||
- [Init]: Streaming (STRM-01/02/03) deferred to v2 — user chose non-streaming for v1
|
||||
- [Init]: Tutorial convention established in Phase 1 — CODE-01/02 anchor there, applied cross-phase
|
||||
- [Init]: Phase order follows strict dependency chain: scaffold → storage → AI → display → UI polish
|
||||
|
||||
### Pending Todos
|
||||
|
||||
None yet.
|
||||
|
||||
### Blockers/Concerns
|
||||
|
||||
- [Research flag] Phase 4: Verify `Markdown.ColorCode` WASM compatibility before implementing (community-reported, not officially confirmed)
|
||||
- [Research flag] Phase 4: Confirm Markdig `DisableHtml()` decision — accepted XSS risk for single-user tool; document explicitly in code
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-03-27
|
||||
Stopped at: Roadmap created, STATE.md initialized — ready to plan Phase 1
|
||||
Resume file: None
|
||||
Reference in New Issue
Block a user