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:
@@ -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 | - |
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
121
.planning/phases/17-initiative-dashboard/17-03-SUMMARY.md
Normal file
121
.planning/phases/17-initiative-dashboard/17-03-SUMMARY.md
Normal 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*
|
||||||
Reference in New Issue
Block a user