- Add search query propagation so remote nodes receive and use query filters
- Update api-node.ts to accept and forward search query parameters
- Add useRemoteNodeData query key dependency for proper re-fetching on filter changes
- Add api-node.test.ts with tests for search query propagation
- Add comprehensive tests for App component including remote data filtering
- Document search query propagation pitfall in .fusion/memory.md
- Add NodeProvider and useNodeContext to App shell for centralized node state
- Add node selector dropdown and status indicator to Header component
- Wire remote node data and event hooks into task-facing views
- Update App.test.tsx mocks for new node context providers
- Add project memory learnings for node context wiring patterns
- Update dashboard guide documentation for node selection
- Add Authentication section to Settings sidebar with globe icon
- Update SettingsModal to display Authentication link in sidebar
- Add corresponding tests for Authentication section visibility
- Update mobile settings tests to reflect new sidebar structure
- Add FTS5 virtual table with v21 database migration for task search
- Add searchTasks() method to TaskStore with FTS5 query support
- Add q= search parameter to GET /api/tasks route for server-side search
- Update useTasks hook and frontend API to support searchQuery prop
- Update Board.tsx and App.tsx to pass searchQuery through component hierarchy
- Add comprehensive tests for FTS5 index and searchTasks functionality
- Add isolate: true to vitest configs for safe parallel test execution
- Simplify engine test script from 7 sequential runs to single parallel run
- Fix TypeScript type errors in Column, Board, WorktreeGroup, and App components
- Fix board-mobile test to match current TaskCard tap behavior
- Relax App deep-link test to handle React Strict Mode behavior
- Create DashboardLoader component with pulsing Fusion logo and progress bar animation
- Add CSS keyframe animations for smooth loading states
- Gate initial App render with loader until dashboard data is ready
- Add comprehensive tests for DashboardLoader component and App loading behavior
- Update existing App tests to account for loader wrapper
- Extend dashboard task view state and nav controls to include a persistent missions view toggle
- Render MissionManager inline in App project content and route mission/session navigation into the missions view
- Remove modal-based mission wiring from AppModals and useModalManager now that missions are no longer a modal
- Add inline MissionManager styling and update App/Header/tablet tests for the new missions navigation behavior
- Wrap dashboard auth storage with API-key provider helpers derived from model registry providers
- Normalize provider display names and bridge set/clear/has API-key operations to AuthStorage credentials
- Expand route and onboarding tests for mixed OAuth/API-key states and API-key-authenticated setup paths
- Stabilize assignment-trigger heartbeat timing test by replacing fixed delays with waitFor assertions
- Hydrate useTheme from global settings while seeding initial state from localStorage cache to prevent flash
- Add write-through theme persistence so setter updates local cache immediately and asynchronously saves via updateGlobalSettings
- Clarify Settings modal save behavior for intentional idempotent global theme writes
- Expand useTheme and App tests to cover backend hydration, fallback handling, and new global settings fetch expectations
- Add a project storage utility with scoped key helpers and key inventories for global vs project state
- Scope dashboard/task view, list preferences, quick-entry drafts, agent/tree state, terminal tabs, usage view, and modal draft persistence to projectId
- Reload persisted UI state when project context changes so per-project settings and drafts do not leak across projects
- Update and expand dashboard tests, including new projectStorage coverage and scoped persistence regression fixes
- Harden TerminalModal bootstrap to handle invalid/expired sessions on first open
- Add WebSocket reconnection logic for terminal sessions that become invalid mid-stream
- Create useTerminal hook with robust session lifecycle management
- Create useTerminalSessions hook for multi-session terminal coordination
- Add comprehensive tests for TerminalModal, useTerminal, and useTerminalSessions
- Document terminal first-open reliability behavior in dashboard README
- Add ModelOnboardingModal component with provider selection, API key input, and model verification flow
- Add API key authentication support to SettingsModal with clear-key functionality
- Trigger onboarding from App.tsx when modelOnboardingComplete setting is false
- Add comprehensive tests for ModelOnboardingModal and SettingsModal authentication
- Document model onboarding flow and API key auth in AGENTS.md and README
- Add CSS styles for onboarding modal, provider cards, and auth section
- Replace viewport-height CSS with percentage-based fill to prevent mobile footer overlap
- Add regression tests for mobile footer-safe layout in dashboard-footer-mobile-layout.test.ts
- Add App.test.tsx coverage for viewport height behavior
- Document mobile layout fix in README
- Thread real project context (projectName, projectId) into ntfy notification deep links
- Dashboard deep-link URL now honors project context with /project/:name/task/:id pattern
- Update App.tsx routing to handle project-scoped deep link navigation
- Add project info to NtfyNotifier types and wire through notification payload
- Add changeset for published @gsxdsm/fusion package
- Add tests for notifier project context and dashboard routing
- Route saved script launches from App.tsx directly into TerminalModal, removing the ScriptRunDialog component entirely
- Add openGeneration handling and initialCommand support to TerminalModal for reliable script execution
- Add openGeneration to initialCommand effect dependencies to prevent stale closures
- Remove 114 lines of now-unused styles.css rules related to ScriptRunDialog
- Update tests: replace ScriptRunDialog tests with TerminalModal execution tests, update App routing tests
- Update README to document terminal-based script launch behavior
- Close the Scripts modal immediately before making the async script-run API call, preventing the modal from interfering with the terminal handoff
- Add regression tests covering script-to-terminal handoff behavior (modal close timing, API call sequencing, error handling)
- Document the script-run modal handoff behavior in the dashboard README
- Add CSS rules for executor status bar footer with safe-area padding
- Update App.tsx and AgentsView.tsx layout to accommodate footer space
- Add regression tests for footer-safe project layout (App.test.tsx)
- Add unit tests for ExecutorStatusBar component
- Document footer-safe dashboard layout behavior in README
- Add ScriptRunDialog component with xterm.js terminal emulation and real-time streaming
- Align saved-script launches with backend contract (POST /api/scripts/:id/run)
- Wire dialog into App.tsx with open/close state management
- Add comprehensive styles for dialog overlay, terminal area, and action buttons
- Add unit tests for ScriptRunDialog and App integration
- Document ScriptRunDialog usage in dashboard README
- Wire favorite model state into QuickEntryBox with star toggle and dropdown integration
- Add favorite model selector to Board and Column quick-add components
- Pass favorite models through ListView and App context to entry surfaces
- Add regression tests for QuickEntryBox, Board, Column, and ListView favorite behavior
- Update dashboard README to document quick-add favorite model support
- Remove unused recovery-policy module and dead code from executor/triage/scheduler
- Clean up unused types from core and simplify store methods
- Add projectId parameter to NtfyNotifier constructor and sendMessage method
- Include projectId in notification deep links for multi-project context
- Add unit tests for deep link URL construction with projectId in App.tsx
- Add unit tests verifying project ID handling in notifier
- Add a shared settings section scope helper so the modal consistently resolves the active section
- Prevent the authentication auto-open flow from leaking into later general settings sessions
- Add regression coverage for reopening the settings modal after authentication and general entry points
- resync dashboard tasks after stream reconnects and when the tab becomes visible again
- add regression coverage for stale board recovery and usage-fetch edge cases
- replace direct Claude usage API calls with the CLI-based usage command
- document the dashboard resync safeguards and include a published package changeset
- Add the agents view toggle to the dashboard header and App view state
- Preserve multi-project dashboard behavior while resolving App merge conflicts
- Merge Header and App tests for agents view, search visibility, and deep-link handling
- Keep scripts, changed-files modal, and project overview integrations working together
- Add ntfyDashboardHost setting to GlobalSettings for dashboard URL\n- Generate deep links in ntfy notifications with Click header\n- Handle ?task= query param in dashboard for direct task navigation\n- Add hostname configuration UI in Settings modal\n- Add comprehensive tests for deep link generation and handling
- Rename @kb/core, @kb/dashboard, @kb/engine to @fusion/* namespace
- Update all import statements across 143+ files to use new package names
- Update workspace dependencies and root package.json references
- Fix bundler configurations (tsup, vite) for new package names
- Update test files and fix typecheck issues
- Add changeset file documenting the package rename
- Replace inline QuickEntryBox with NewTaskModal trigger in list view
- Wire ListView to open NewTaskModal via onCreateTask prop
- Remove standalone task creation logic from QuickEntryBox
- Update App component to pass modal handlers to ListView
- Simplify QuickEntryBox to pure quick-entry without inline creation
- Update tests to verify unified modal-based creation flow
- Extend task creation types, store persistence, and API payloads to accept executor and validator model overrides
- Add inline model selection to the dashboard create card with default normalization, retryable model loading, and focus-safe interactions
- Wire the list-view create flow through InlineCreateCard and style the dropdown to stay usable within the viewport on mobile and desktop
- Add store, route, app, list-view, and inline-create tests covering override submission, partial selections, and inline creation behavior
- Document the new creation-time model selection flow and include a published package changeset
- Add PlanningModeModal component with interactive task planning UI
- Implement backend planning API with /api/planning endpoints
- Add PlanningSession class for managing planning state
- Integrate planning mode into dashboard with header button
- Add comprehensive tests for planning components and API routes
- Include AI agent structure for future planning automation
- Update README with Planning Mode documentation
- Add section expansion state management with localStorage persistence
- Update section headers with chevron toggle controls
- Implement conditional task row rendering based on section state
- Add Expand All / Collapse All toolbar controls
- Add CSS styles for chevron rotation animation and section headers
- Add comprehensive tests for collapsible section behavior
- Update DEFAULT_SETTINGS in core types to set autoMerge: true
- Update initial state defaults in App and SettingsModal components
- Update test fixtures in App, Board, and SettingsModal tests
- Update kb-board skill docs to reflect new default
- Add minor changeset for the default change
- Update Header pause button titles to 'Pause scheduling' / 'Resume scheduling'
- Update Header unit tests to assert new title strings
- Update App integration tests for engine pause flows to use new titles
- Add enginePaused field to Settings type with soft-pause semantics (drain queue, don't kill agents)
- Gate scheduler, triage, auto-merge, and periodic merge retry on enginePaused
- Add Pause and Stop buttons to dashboard Header replacing single toggle
- Wire enginePaused state through App with optimistic toggle and unpause resume logic
- Add tests for scheduler, triage, dashboard CLI, Header, and App covering pause behavior
- Add globalPause setting to core Settings type with default false
- Guard scheduler, triage, and auto-merge queue to skip work when globalPause is active
- Add pause/play toggle button in dashboard Header with optimistic UI and rollback on failure
- Add tests for scheduler, triage, Header, and App global pause behavior
- Include minor changeset for the new feature
- Add initialSection prop to SettingsModal to allow opening to a specific tab
- Export SectionId type from SettingsModal for use by parent components
- Check auth status on App mount and auto-open Settings to Authentication tab when all providers are unauthenticated
- Reset initialSection on modal close so subsequent manual opens default to General
- Add comprehensive tests for auto-open behavior and initialSection prop