2.0 KiB
Your Task
- Read the full app PRD at
prd-main.md(in the same directory as this file) - Read the PRD at
prd.json(in the same directory as this file) - Read the progress log at
progress.txt(check Codebase Patterns section first) - DO YOUR JOB
- Update the PRD to set
passes: truefor the completed story - 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-017", "title": "Fluid Curtain pull-down animation", "description": "As a user, I want to pull down from the top of any view to slide the app panel off-screen and reveal the AI chat layer beneath.", "acceptanceCriteria": [ "framer-motion useMotionValue + useSpring (stiffness: 300, damping: 30) controls a 'y' CSS transform on the main app panel wrapper", "Trigger 1: wheel event listener at document level — when the current route's scroll position is at 0 and deltaY < 0 (overscroll up), animate panel y from 0 to viewport height", "Trigger 2: Cmd/Ctrl+K keyboard shortcut toggles curtain open (y = viewport height) and closed (y = 0)", "AI chat view is rendered as a fixed full-screen layer behind the sliding panel and becomes fully visible when panel slides down", "App panel remains mounted during animation (no unmount/remount, no state loss)", "Returning from chat: wheel event with deltaY > 0 at chat-bottom OR Cmd/Ctrl+K slides panel back to y = 0", "Right-edge vertical 'keep scrolling for AI' label with chevron-down is visible in every section (non-interactive, visual hint only)", "Typecheck passes", "Verify in browser using dev-browser skill" ], "priority": 17, "passes": false, "notes": "" }