1.8 KiB
1.8 KiB
Plan 18-03 Summary
Result: COMPLETE
Tasks: 2/2 completed Duration: ~3 min
What was built
DecisionList component
- Collapsible list of key decisions in a Card with "Key Decisions" header
- Each decision individually expandable with ChevronDown/ChevronRight indicators
- Internal state tracks expanded indices via
Set<number> - Show more/less button when decisions exceed
maxVisible(default 3) - Empty state placeholder: "No decisions recorded"
- File:
packages/web/src/components/DecisionList.tsx
TaskDetailModal component
- Controlled Dialog (open when
task !== null) following CreateInitiativeDialog pattern - Metadata grid: Status (StatusBadge), Priority, Phase, Type, Agent
- Description section with fallback to "No description"
- Dependencies section listing dependency names with status badges
- Blocks section listing dependent names with status badges
- Queue Task button: enabled only when status is 'pending' and all dependencies completed
- Stop Task button: enabled only when status is 'in_progress'
- SerializedTask interface for tRPC Date-to-string wire format
- File:
packages/web/src/components/TaskDetailModal.tsx
Decisions
- 18-03: SerializedTask type mirrors SerializedInitiative pattern (Date fields become string over JSON)
- 18-03: Both components are purely presentational with callback props (no tRPC calls inside)
Commits
3baba49: feat(18-03): create DecisionList component for initiative detail5b17b7a: feat(18-03): create TaskDetailModal component for initiative detail
Verification
npx tsc --noEmit -p packages/web/tsconfig.app.jsonpassesnpx vite buildin packages/web succeeds- Both components export correctly
- Dialog follows controlled pattern matching CreateInitiativeDialog