- When a slice is activated and has autoAdvance enabled, automatically triage all features in that slice
- Add auto-triage logic to mission-store activateSlice method
- Add comprehensive tests for auto-triage behavior covering edge cases
- Fix module import paths across mission-related files (mission.ts, extension.ts, mission-integration.test.ts, mission-routes.ts, scheduler.ts)
- Add 5 new color theme constants (ocean, forest, sunset, lavender, midnight) to types and index.html
- Add complete CSS theme definitions with color swatches for all 5 themes in styles.css
- Add 5 new theme options to the ThemeSelector component dropdown
- Add comprehensive tests covering all new theme options in ThemeSelector
- No breaking changes; all existing themes remain unchanged
- Add scanOrphanedBranches utility to worktree-pool for detecting fusion/* branches with no matching task
- Add cleanupOrphanedBranches to SelfHealingManager with dry-run support and task re-registration
- Wire branch cleanup into deleteTask and archiveTask so branches are removed when tasks are deleted or archived
- Add comprehensive tests for scanning, cleanup, and integration with delete/archive flows
- Add mission store methods for pausing, stopping, and resuming missions with proper state transitions
- Implement feature triage flow that evaluates and classifies mission features
- Add scheduler blocked-task check to prevent scheduling when dependencies are unmet
- Create dashboard mission management UI with pause/stop/resume controls
- Add mission API routes for triage, pause, stop, and resume operations
- Add e2e tests for mission routes and unit tests for mission store and scheduler
- Add terminated→idle as a valid state transition in AGENT_VALID_TRANSITIONS
- Add resetAgent() method that clears lastError, taskId, and ends heartbeat runs
- Clear lastError automatically when transitioning away from terminated state
- Remove inline heartbeat lifecycle from updateAgentState (moved to resetAgent)
- Add comprehensive tests for state transitions, error clearing, and resetAgent behavior
- Remove blanket block on terminated→any state transitions in agent-store
- Add active and running as valid transitions from terminated state in types
- Update tests to verify terminated→active and terminated→running succeed
- Add tests for invalid terminated transitions (idle, paused) still throwing
- Add phase field to workflow step definitions (pre-merge vs post-merge) with persistence and API
- Execute pre-merge steps in executor before merge; post-merge steps in merger after successful merge
- Pre-merge failures block merge and keep task in in-review; post-merge failures are logged only
- Expose phase controls and phase-aware results in the dashboard UI
- Add changeset for the published @gsxdsm/fusion package
- Add memoryEnabled boolean setting to core types and default settings
- Add Memory section toggle to SettingsModal dashboard UI
- Integrate memoryEnabled check in executor and triage engine prompts
- Add tests for settings UI, executor prompt behavior, and triage prompt behavior
- Update SettingsModal section count test for the new Memory section
Introduces ai_sessions table (schema v9), AiSessionStore, and background
session support for mission interviews, planning, and subtask breakdown.
Adds BackgroundTasksIndicator component, SSE-based progress streaming,
and dashboard API routes for session management.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add MemoryInsightsEngine class for extracting insights from task memory
- Implement pattern, metric, trend, anomaly, recommendation, and summary extractors
- Add insight extraction settings fields (enabled, maxInsights, types, schedule) to ProjectSettings
- Export MemoryInsightsEngine and related types from @fusion/core
- Add comprehensive test suite covering all extractor types and edge cases (538 lines)
- Add getFusionDir() method to TaskStore for resolving agent database path
- Update in-process-runtime to use getFusionDir() instead of hardcoded path
- Update dashboard routes AgentStore initialization to use getFusionDir()
- Add changeset for published package patch bump
- Fix resolveBaseBranch to use stored branch name and consistent fusion/ prefix
for both explicit deps and blockedBy paths (was using kb/ for blockedBy)
- Add main branch checkout verification in merger before squash merge to prevent
feature code from landing on wrong branch lineage
- Align all branch prefix references from stale kb/ to fusion/ across executor,
merger, store, and routes
- Fix executor test OOM by mocking merger fully, adding fake timers to retry
tests, and switching vitest pool to vmThreads
- Update all test assertions to use fusion/ branch prefix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add defaultOn boolean to WorkflowStep type and store persistence
- Auto-apply default-on workflow steps when creating tasks
- Refactor AgentDetailView and AgentListModal components for cleaner rendering
- Add CSS styles for agent detail and list modal improvements
- Update TaskCard to display workflow step status badges
- Add comprehensive tests for defaultOn store logic and TaskCard behavior
- Add executionMode field to WorkflowStep type with 'agent' | 'api' options and validation
- Extend TaskStore CRUD with execution mode support and validation for prompt/description
- Add API validation layer in dashboard routes for workflow step create/update/delete
- Enhance WorkflowStepManager component with inline editing, validation feedback, and improved UX
- Add comprehensive tests for store CRUD validation and API route validation
- Clean up dashboard styles by removing unused CSS rules and dead test assertions
- Extend WorkflowStep type with optional modelProvider, modelId, validatorModelProvider, validatorModelId fields
- Add API endpoints (PATCH /api/workflow-steps/:id) to update model overrides on workflow steps
- Update executor to use per-step model overrides when running workflow step agents
- Add AgentDetailView support for displaying workflow step model configuration
- Add store and executor tests for new model override behavior
- Add new theme IDs (nord, dracula, gruvbox, tokyo-night) to core types and ThemeSelector component
- Add CSS custom properties for all four themes covering background, text, accent, border, and surface colors
- Add theme validation sync, bootstrap logic, and unit tests for ThemeSelector and useTheme hook
- Update GitManagerModal to support new theme-aware styling
- Update README theme system documentation with expanded theme list
- Add changeset for published package
- Clarify in dashboard README that agent log entries are never truncated
- Add maxLength safeguards in store (getAgentLog), routes, useAgentLogs, and useMultiAgentLogs hooks
- Add tests for store, AgentLogViewer component, useAgentLogs hook, useMultiAgentLogs hook, and dashboard routes
- All tests verify that log text and detail fields are preserved in full without per-entry truncation
- Add modelOnboardingComplete field and auth status endpoint to dashboard API
- Support both OAuth and API-key-backed providers in /auth/status route
- Remove mission-interview module and related unused code (dashboard, engine, CLI)
- Remove sync-openrouter-models changeset (no longer needed)
- Add comprehensive tests for onboarding persistence and auth status
- Fix TypeScript type narrowing for oauth/api_key provider union type
- Switch settings export filename prefix from 'kb' to 'fusion' (e.g. fusion-settings-*.json)
- Switch backup filename prefix from 'kb' to 'fusion' with legacy-safe parsing for existing kb-* backups
- Remove unused ntfy deep-link code and dashboard routing for /project/:id
- Remove dead notifier tests and App test assertions for removed features
- Clean up dashboard command and bin.ts unused variables
- Add changeset for the published package rename
- 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
- Update mission route ID validation to accept generated ID format (mission-types.ts, mission-routes.ts)
- Add MissionManager component tests for generated ID handling
- Add mission E2E tests covering ID generation and validation flows
- Update TaskDetailModal to work with new mission ID format
- Update documentation (README, dashboard README) with generated ID examples
- Change MIN_DESCRIPTION_LENGTH threshold from 140 to 200 in ai-summarize.ts
- Update shouldAutoSummarize logic and tests for new 200-char threshold
- Update UI copy in SettingsModal and API/routes references
- Update store tests to reflect the new threshold value
- Remove obsolete dashboard activity-log mobile layout test files and unused CSS
- Add changeset for patch bump
The ntfyDashboardHost field was incorrectly removed in 3eeac0a0 as part of
an unrelated FN-672 commit. This restores the setting to GlobalSettings (moved
from ProjectSettings where it was misplaced), re-adds the UI field and deep
link handling, and adds schema protection so unknown keys in settings.json
survive code-level schema changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add state to tasks: persisted in DB, gates scheduler pickup to prevent immediate retry of transient failures
- Introduce shared recovery-policy module with bounded exponential backoff (1s → 60s, max 5 attempts)
- Wire recovery policy into executor, scheduler, and triage so all agents respect the same retry cadence
- Persist retry state (attempt count, next eligible time) in task metadata via store and DB schema
- Add DB migration for new retry columns and update schema tests
- Update README with recovery policy documentation
- Refactor dashboard Header component and styles, consolidate header tests
- Fix session-files route tests to align with updated route signatures
- Derive readable refinement titles from source task title or first line of description instead of raw task ID
- Fall back to task ID only when both title and description are empty/whitespace
- Collapse internal whitespace in description-derived labels for clean output
- Update PROMPT.md heading to match the new readable refinement title
- Add comprehensive tests for title precedence, whitespace handling, and edge cases
- Document refinement naming behavior in README
- Add changeset for @gsxdsm/fusion patch release
- Stop merging steeringComments into comments array in rowToTask to prevent duplication
- Add regression tests verifying comments and steeringComments remain separate
- Add changeset for the comments deduplication fix
- Fix SSE event relay to properly broadcast task store events to dashboard clients
- Use named heartbeat events instead of SSE comments for reliable keep-alive
- Add missing event emission in core task store for state changes
- Add comprehensive tests for SSE pipeline, event emission, and UI hooks
- Remove broken useTerminal hook and AgentLogViewer tests, fix flaky test suites
- Fix addSteeringComment to skip auto-refinement and write directly to steeringComments array
- Update formatCommentForInjection to accept SteeringComment type instead of raw string
- Export SteeringComment type from @fusion/core for executor usage
- Add tests verifying steering comments are persisted to task store
- Fix executor import to use exported SteeringComment type
- Add 'branch' field to Task and ArchivedTaskEntry types with DB migration
- Executor stores branch name on task after worktree assignment
- Merger reads branch from task metadata instead of relying on worktree state
- Implement non-destructive conflict recovery in prepareForTask with reset/clean
- Add tests for branch storage, merger branch reading, and worktree recovery
- Add step synchronization when loading task from database
- Sync steps array from PROMPT.md file to keep task metadata in sync
- Add test coverage for getTask step sync behavior
- Remove terminal session functionality (useTerminalSessions hook and tests)
- Clean up unused terminal-related components and CSS
- Implemented multi-tab support in TerminalModal component
- Each tab maintains independent WebSocket connection and xterm instance
- Tab management: create, switch, close tabs with keyboard shortcuts (Ctrl+Tab)
- Added Plus button to create new tabs
- Added close button on tabs (except last remaining tab)
- Updated keyboard shortcuts text in status bar
- Connection status indicator per tab
- Per-tab scrollback buffers preserved when switching tabs
- Auto-cleanup of all sessions when modal closes
- Added comprehensive tests for multi-tab functionality
- Fix TaskStore regressions from multi-project and mission integration
- Sync fresh schema with task persistence (missionId, baseCommitSha columns)
- Align backward compatibility with .fusion projects (kb.db naming)
- Add project overview and selector styles for dashboard
- Cover exact-name project resolution in tests
- Use Nerd Font for terminal integration
- Restore SetupWizardModal from main branch
- Add project selector component with search and dropdown UI
- Add Task Changes tab styles for viewing diffs in task detail
- Implement QuickEntryBox disclosure pattern with collapsible controls panel
- Move Usage and Activity Log buttons to mobile overflow menu
- Add disclosure preference persistence via localStorage
- Complete legacy comment migration for unified comments system
- Update QuickEntryBox tests for disclosure behavior
fix: update scheduler filesystem path from .kb to .fusion for task validation
style: clean up TaskDetailModal styling with reusable CSS classes
test: add comprehensive tests for file-service operations with mocked filesystem
- Store missionId alongside sliceId when MissionStore links a feature to a task
- Clear both linkage fields together when features are unlinked from tasks
- Preserve mission linkage fields through TaskStore reads, writes, and updates
- Expand mission and task store coverage for mission linkage persistence and cleanup
- Add deeper MissionStore integration tests for hierarchy integrity, rollups, reorders, and task link cleanup
- Extend mission API end-to-end coverage for feature patching, validation, and cascade scenarios
- Fix TaskStore task upsert placeholders to preserve mission slice linking fields after merge resolution
- Tidy mission CLI help text and include the published package changeset for the missions launch