docs(17-03): complete interactive dialog and dropdown components plan

Tasks completed: 2/2
- CreateInitiativeDialog with shadcn primitives and tRPC mutation
- SpawnArchitectDropdown and ActionMenu with tRPC mutations

SUMMARY: .planning/phases/17-initiative-dashboard/17-03-SUMMARY.md
This commit is contained in:
Lukas May
2026-02-04 21:06:42 +01:00
parent f24d136742
commit ca3c05e7b8
3 changed files with 127 additions and 3 deletions

View File

@@ -273,7 +273,7 @@ Plans:
Plans: Plans:
- [x] 17-01: StatusBadge & ProgressBar Components - [x] 17-01: StatusBadge & ProgressBar Components
- [x] 17-02: InitiativeCard & InitiativeList Components - [x] 17-02: InitiativeCard & InitiativeList Components
- [ ] 17-03: TBD - [x] 17-03: Interactive Dialog & Dropdown Components
- [ ] 17-04: TBD - [ ] 17-04: TBD
#### Phase 18: Initiative Detail #### Phase 18: Initiative Detail
@@ -342,7 +342,7 @@ Phases execute in numeric order: 1 → 1.1 → 2 → 3 → 4 → 5 → 6 → 7
| 14. Parallel Phase Execution | v1.3 | 8/8 | Complete | 2026-02-02 | | 14. Parallel Phase Execution | v1.3 | 8/8 | Complete | 2026-02-02 |
| 15. Frontend Wireframes | v1.3 | 3/3 | Complete | 2026-02-02 | | 15. Frontend Wireframes | v1.3 | 3/3 | Complete | 2026-02-02 |
| 16. Frontend Scaffold | v2.0 | 5/5 | Complete | 2026-02-04 | | 16. Frontend Scaffold | v2.0 | 5/5 | Complete | 2026-02-04 |
| 17. Initiative Dashboard | v2.0 | 2/4 | In progress | - | | 17. Initiative Dashboard | v2.0 | 3/4 | In progress | - |
| 18. Initiative Detail | v2.0 | 0/? | Not started | - | | 18. Initiative Detail | v2.0 | 0/? | Not started | - |
| 19. Agent Inbox | v2.0 | 0/? | Not started | - | | 19. Agent Inbox | v2.0 | 0/? | Not started | - |
| 20. Real-time Subscriptions | v2.0 | 0/? | Not started | - | | 20. Real-time Subscriptions | v2.0 | 0/? | Not started | - |

View File

@@ -196,6 +196,9 @@ Recent decisions affecting current work:
- 17-01: Dashboard components live in packages/web/src/components/ (not ui/) - 17-01: Dashboard components live in packages/web/src/components/ (not ui/)
- 17-02: SerializedInitiative type for tRPC Date→string serialization (wire format differs from DB schema) - 17-02: SerializedInitiative type for tRPC Date→string serialization (wire format differs from DB schema)
- 17-02: Per-card phase stats fetch via trpc.listPhases (N+1 acceptable for v1) - 17-02: Per-card phase stats fetch via trpc.listPhases (N+1 acceptable for v1)
- 17-03: No deleteInitiative tRPC procedure; Delete menu item disabled as placeholder
- 17-03: Controlled dialog pattern: open/onOpenChange props with form reset via useEffect
- 17-03: shadcn CLI @/ dir bug workaround applied again (same as 16-04)
### Pending Todos ### Pending Todos
@@ -218,5 +221,5 @@ None.
## Session Continuity ## Session Continuity
Last session: 2026-02-04 Last session: 2026-02-04
Stopped at: Completed 17-02-PLAN.md Stopped at: Completed 17-03-PLAN.md
Resume file: None Resume file: None

View File

@@ -0,0 +1,121 @@
---
phase: 17-initiative-dashboard
plan: 03
subsystem: ui
tags: [react, shadcn, radix, trpc, dialog, dropdown-menu]
# Dependency graph
requires:
- phase: 17-01
provides: StatusBadge and ProgressBar components, shadcn ui primitives
- phase: 16-03
provides: tRPC client wiring
provides:
- CreateInitiativeDialog component with tRPC mutation
- SpawnArchitectDropdown component for discuss/breakdown modes
- ActionMenu component with archive action
- shadcn Dialog, Input, Label, Textarea UI primitives
affects: [17-04, 18-initiative-detail]
# Tech tracking
tech-stack:
added: ["@radix-ui/react-dialog", "@radix-ui/react-label"]
patterns: ["controlled dialog with form state reset on open", "tRPC mutation with query invalidation"]
key-files:
created:
- packages/web/src/components/CreateInitiativeDialog.tsx
- packages/web/src/components/SpawnArchitectDropdown.tsx
- packages/web/src/components/ActionMenu.tsx
- packages/web/src/components/ui/dialog.tsx
- packages/web/src/components/ui/input.tsx
- packages/web/src/components/ui/label.tsx
- packages/web/src/components/ui/textarea.tsx
modified:
- packages/web/package.json
key-decisions:
- "No deleteInitiative tRPC procedure exists; Delete menu item disabled as placeholder"
- "shadcn CLI creates files in literal @/ dir; moved to src/components/ui/ manually (same fix as 16-04)"
- "Textarea added for description field (not in plan but required for multiline input)"
patterns-established:
- "Controlled dialog pattern: open/onOpenChange props, form reset via useEffect on open"
- "Mutation success pattern: invalidate queries + close dialog/dropdown"
# Metrics
duration: 4min
completed: 2026-02-04
---
# Phase 17 Plan 03: Interactive Dialog and Dropdown Components Summary
**CreateInitiativeDialog, SpawnArchitectDropdown, and ActionMenu with tRPC mutations for initiative CRUD and architect agent spawning**
## Performance
- **Duration:** 4 min
- **Started:** 2026-02-04
- **Completed:** 2026-02-04
- **Tasks:** 2
- **Files modified:** 8
## Accomplishments
- CreateInitiativeDialog with controlled form, name validation, loading/error states, and query invalidation
- SpawnArchitectDropdown calling discuss and breakdown tRPC procedures with brief success feedback
- ActionMenu with archive action (browser confirm), disabled placeholders for edit/duplicate/delete
- Installed shadcn Dialog, Input, Label, Textarea UI primitives (moved from @/ literal dir)
## Task Commits
Each task was committed atomically:
1. **Task 1: CreateInitiativeDialog** - `e5acb9f` (feat)
2. **Task 2: SpawnArchitectDropdown & ActionMenu** - `f6caa5d` (feat)
## Files Created/Modified
- `packages/web/src/components/CreateInitiativeDialog.tsx` - Dialog form for creating initiatives via tRPC
- `packages/web/src/components/SpawnArchitectDropdown.tsx` - Dropdown for spawning architect in discuss/breakdown modes
- `packages/web/src/components/ActionMenu.tsx` - More actions dropdown with archive and disabled placeholders
- `packages/web/src/components/ui/dialog.tsx` - shadcn Dialog primitive
- `packages/web/src/components/ui/input.tsx` - shadcn Input primitive
- `packages/web/src/components/ui/label.tsx` - shadcn Label primitive
- `packages/web/src/components/ui/textarea.tsx` - shadcn Textarea primitive
- `packages/web/package.json` - Added @radix-ui/react-dialog, @radix-ui/react-label deps
## Decisions Made
- 17-03: No deleteInitiative tRPC procedure exists on router; Delete menu item is disabled placeholder
- 17-03: shadcn CLI @/ directory bug workaround: move files manually to src/components/ui/ (same as 16-04)
- 17-03: Added Textarea component (not explicitly in plan) for description field multiline input
## Deviations from Plan
### Auto-fixed Issues
**1. [Rule 3 - Blocking] Added Textarea shadcn component for description field**
- **Found during:** Task 1 (CreateInitiativeDialog)
- **Issue:** Plan specified "Description (optional textarea)" but only listed dialog/input/label for shadcn install
- **Fix:** Added textarea to the shadcn install command
- **Files modified:** packages/web/src/components/ui/textarea.tsx
- **Verification:** TypeScript compiles, textarea renders correctly
- **Committed in:** e5acb9f (Task 1 commit)
---
**Total deviations:** 1 auto-fixed (1 blocking)
**Impact on plan:** Textarea was implied by the plan's description field requirement. No scope creep.
## Issues Encountered
None
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
- Three interactive components ready for page integration in 17-04
- All mutations use tRPC with query invalidation on success
- Components follow controlled props pattern for parent integration
---
*Phase: 17-initiative-dashboard*
*Completed: 2026-02-04*