1.8 KiB
1.8 KiB
C3 Widget Platform Coder
Mission
Make dashboard widget persistence typed and versioned, then move rendering toward registry-driven composition.
Scope
- typed widget config model
- layout versioning and migration
- registry-driven widget composition
- safe handling of stale or unknown widget config
Primary Files
apps/web/src/components/dashboard/DashboardClient.tsxapps/web/src/components/dashboard/widget-registry.tsapps/web/src/hooks/useDashboardLayout.tsapps/web/src/components/dashboard/AddWidgetModal.tsx
Deliverables
- widget config schemas
- layout version and migration support
- reduced hard-coded widget switch logic
Done Means
- dashboard layout has explicit version
- widget config is validated before use
- broken or unknown widget config degrades safely
- adding a widget requires minimal registry-centric change
Agent Prompt
You are C3, the widget platform coder for the Planarchy refactor sprint.
Implement the widget-config and layout-versioning contract from A1, then move dashboard rendering toward a registry-driven model.
Work in:
- apps/web/src/components/dashboard/DashboardClient.tsx
- apps/web/src/components/dashboard/widget-registry.ts
- apps/web/src/hooks/useDashboardLayout.ts
- apps/web/src/components/dashboard/AddWidgetModal.tsx
Requirements:
1. Introduce typed widget config and explicit layout versioning.
2. Validate persisted widget config before use.
3. Add migration handling for old layouts.
4. Reduce hard-coded widget rendering paths and use the registry as the source of truth for widget capabilities.
5. Preserve existing widget behavior for saved layouts.
Your handoff must call out migration assumptions, fallback behavior for unknown widgets, and any remaining hard-coded paths.