- Introduced a new `task_comments` table in the database schema. - Implemented task comments API endpoints for listing, creating, and deleting comments. - Enhanced the task detail dialog to display comments and allow users to add new comments. - Updated task row component to handle click events for viewing task details. - Added a theme provider to manage light/dark mode across the application. - Refactored Milkdown editor to use Crepe for improved markdown editing experience. - Updated global styles to accommodate new editor and theme changes. - Enhanced task filtering and sorting functionality in the tasks page.
1.9 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-018", "title": "GitHub Copilot SDK setup and keytar token storage", "description": "As a developer, I need the GitHub Copilot SDK initialized in the main process with secure OS keychain token storage so that AI features can authenticate.", "acceptanceCriteria": [ "keytar installed and imported in main process only (not renderer)", "ai.setToken tRPC mutation accepts { token: string } and stores it via keytar.setPassword('adiuva', 'copilot-token', token)", "ai.hasToken tRPC query returns a boolean indicating whether a token is stored", "On app start, main process reads the token from keychain and initializes the GitHub Copilot SDK client", "Settings dialog uses shadcn/ui Dialog (DialogTrigger as a SidebarMenuButton with Settings/gear icon in the sidebar footer); dialog content uses shadcn/ui Input for token paste + shadcn/ui Button to save via ai.setToken", "If no token is stored, AI-dependent features display a prompt using shadcn/ui Card with a shadcn/ui Button linking to the Settings dialog instead of throwing an error", "Typecheck passes" ], "priority": 18, "passes": false, "notes": "" }