## Your Task US-020 1. Read the full app PRD at `prd-main.md` (in the same directory as this file) 2. Read the PRD at `prd.json` (in the same directory as this file) 3. Read the progress log at `progress.txt` (check Codebase Patterns section first) 4. **DO YOUR JOB** 5. Update the PRD to set `passes: true` for the completed story 6. Append your progress to `progress.txt` ## Progress Report Format APPEND to progress.txt (never replace, always append): ``` ## [Date/Time] - [Story ID] - What was implemented - Files changed - **Learnings for future iterations:** - Patterns discovered (e.g., "this codebase uses X for Y") - Gotchas encountered (e.g., "don't forget to update Z when changing W") - Useful context (e.g., "the evaluation panel is in component X") --- ``` ## USER REQUEST { "id": "US-020", "title": "Context-scoped AI chat UI", "description": "As a user, I want the AI chat (revealed by the Fluid Curtain) to display a context header, support message input, and stream AI responses.", "acceptanceCriteria": [ "Chat panel shows a context header using shadcn/ui Badge (variant=outline): 'Chatting about: [Project Name]' when opened from a project detail view, or 'Global workspace' when opened from other sections", "Chat input box uses shadcn/ui Textarea: white background, border #d4d4d4, shadow-lg, min-height 109px, placeholder 'Ask me anything...'; Send uses shadcn/ui Button (black bg, Send Lucide icon + 'Send' label) anchored bottom-right", "User messages appear as right-aligned message bubbles using shadcn/ui Card; AI responses as left-aligned Cards", "Streaming: AI response tokens appended to the current AI bubble as they arrive from ai.chat", "A loading spinner or pulsing indicator (shadcn/ui Skeleton) shown while waiting for first token", "If ai.chat returns { error }, display the error message in a shadcn/ui Card with destructive border styling", "Chat history is session-only — cleared when the curtain closes or the app restarts", "Install shadcn/ui components via 'npx shadcn@latest add textarea' before implementing (card, badge, button, skeleton already installed)", "Typecheck passes", "Verify in browser using dev-browser skill" ], "priority": 20, "passes": false, "notes": "" }