43 lines
2.0 KiB
Markdown
43 lines
2.0 KiB
Markdown
## Your Task
|
|
|
|
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-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": ""
|
|
} |