feat(FN-2577): merge fusion/fn-2577 (auto-resolved)

- feat(FN-2577): complete Step 5 — update TodoView architecture docs
- test(FN-2577): address TodoView review feedback
- test(FN-2577): complete Step 3 — add TodoView component coverage
- feat(FN-2577): complete Step 2 — build TodoView component
- fix(FN-2577): correct TodoView heading token font size
- feat(FN-2577): complete Step 1 — create TodoView CSS
- fix(FN-2578): align TodoView placeholder addToast typing
- feat(FN-2578): complete Step 4 — route and preload TodoView
- feat(FN-2578): complete Step 3 — wire todos nav entries
- feat(FN-2578): complete Step 2 — add todos to view state types
- feat(FN-2578): complete Step 1 — add useTodoLists hook and tests
- test(FN-2576): complete Step 4 — add todo route coverage
- feat(FN-2576): complete Step 3 — add todo client API functions
- feat(FN-2576): complete Step 2 — register todo router
- feat(FN-2576): complete Step 1 — add todo routes module
This commit is contained in:
Fusion
2026-04-26 15:12:32 -07:00
committed by gsxdsm
parent 19c75e0b39
commit 48401f321f
5 changed files with 1160 additions and 18 deletions

View File

@@ -454,7 +454,7 @@ Key server capabilities:
- Root composition: `packages/dashboard/app/App.tsx`
- Core board components: `Board.tsx`, `Column.tsx`, `TaskCard.tsx`, `TaskDetailModal.tsx`
- Chat system UI: `ChatView.tsx`, `QuickChatFAB.tsx`
- Planning/roadmap/insight UI: `MissionManager.tsx`, `RoadmapsView.tsx`, `InsightsView.tsx`, `DocumentsView.tsx`
- Planning/roadmap/insight UI: `MissionManager.tsx`, `RoadmapsView.tsx`, `TodoView.tsx`, `InsightsView.tsx`, `DocumentsView.tsx`
- Dev server UI: `DevServerView.tsx` (controls + status/log panel + embedded preview with iframe fallback messaging)
### CSS Architecture
@@ -471,10 +471,10 @@ The dashboard's CSS is split between a consolidated global stylesheet and modula
- Component-specific CSS rules live in the component's `.css` file, not in the root stylesheet
**Lazy-loaded views** (bundle size optimization):
The following 13 views are lazy-loaded via `React.lazy()` with `<Suspense fallback={null}>`:
- `AgentsView`, `RoadmapsView`, `NodesView`, `ChatView`, `MemoryView`
The following 14 views are lazy-loaded via `React.lazy()` with `<Suspense fallback={null}>`:
- `AgentsView`, `RoadmapsView`, `TodoView`, `NodesView`, `ChatView`, `MemoryView`
- `DevServerView`, `InsightsView`, `DocumentsView`, `SkillsView`
- `SetupWizardModal`, `PluginManager`, `PiExtensionsManager`, `AgentDetailView`
- `SetupWizardModal`, `PluginManager`, `PiExtensionsManager`, `AgentDetailView
A `prefetchLazyViews()` function runs once on mount via `requestIdleCallback` to warm chunks. Do not make these views eager — bundle size is carefully managed.