docs(18-03): create summary and update state for DecisionList/TaskDetailModal plan
This commit is contained in:
@@ -10,18 +10,18 @@ See: .planning/PROJECT.md (updated 2026-02-04)
|
|||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: 18 of 21 (Initiative Detail)
|
Phase: 18 of 21 (Initiative Detail)
|
||||||
Plan: 2 of 4 in current phase
|
Plan: 3 of 4 in current phase
|
||||||
Status: In progress
|
Status: In progress
|
||||||
Last activity: 2026-02-04 - Completed 18-02-PLAN.md
|
Last activity: 2026-02-04 - Completed 18-03-PLAN.md
|
||||||
|
|
||||||
Progress: █████████░ 97%
|
Progress: █████████░ 97%
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
**Velocity:**
|
**Velocity:**
|
||||||
- Total plans completed: 67
|
- Total plans completed: 68
|
||||||
- Average duration: 3 min
|
- Average duration: 3 min
|
||||||
- Total execution time: 188 min
|
- Total execution time: 191 min
|
||||||
|
|
||||||
**By Phase (v1.0):**
|
**By Phase (v1.0):**
|
||||||
|
|
||||||
@@ -206,6 +206,8 @@ Recent decisions affecting current work:
|
|||||||
- 18-02: SerializedTask type defined in TaskRow (same Date-to-string serialization pattern as SerializedInitiative)
|
- 18-02: SerializedTask type defined in TaskRow (same Date-to-string serialization pattern as SerializedInitiative)
|
||||||
- 18-02: Phase hierarchy flattened — Plan layer hidden per decision 15-02, tasks rendered directly under phase
|
- 18-02: Phase hierarchy flattened — Plan layer hidden per decision 15-02, tasks rendered directly under phase
|
||||||
- 18-02: Underscore prefix for unused type prop in DependencyIndicator (_type) to satisfy noUnusedParameters
|
- 18-02: Underscore prefix for unused type prop in DependencyIndicator (_type) to satisfy noUnusedParameters
|
||||||
|
- 18-03: SerializedTask type mirrors SerializedInitiative pattern (Date fields become string over JSON)
|
||||||
|
- 18-03: Both DecisionList and TaskDetailModal are purely presentational with callback props (no tRPC calls inside)
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -228,5 +230,5 @@ None.
|
|||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-02-04
|
Last session: 2026-02-04
|
||||||
Stopped at: Completed 18-02-PLAN.md
|
Stopped at: Completed 18-03-PLAN.md
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|||||||
44
.planning/phases/18-initiative-detail/18-03-SUMMARY.md
Normal file
44
.planning/phases/18-initiative-detail/18-03-SUMMARY.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# 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 detail
|
||||||
|
- `5b17b7a`: feat(18-03): create TaskDetailModal component for initiative detail
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- [x] `npx tsc --noEmit -p packages/web/tsconfig.app.json` passes
|
||||||
|
- [x] `npx vite build` in packages/web succeeds
|
||||||
|
- [x] Both components export correctly
|
||||||
|
- [x] Dialog follows controlled pattern matching CreateInitiativeDialog
|
||||||
Reference in New Issue
Block a user