Commit Graph

795 Commits

Author SHA1 Message Date
gsxdsm
c6f4d3b51d feat(FN-1157): switch planning size controls to dropdowns
- Replace Summary view suggested size buttons with a select dropdown and keep loading-state disabling
- Replace Breakdown view subtask size button groups with per-subtask size dropdowns
- Add PlanningModeModal tests for summary and breakdown size dropdown rendering and change handling
- Expand API test mocks used by planning breakdown flows to support the new coverage
2026-04-07 23:00:04 -07:00
gsxdsm
9a332c4b61 fix(FN-1135): retry xterm imports when MIME errors occur
- Add retryDynamicImport helper in TerminalModal with targeted retry detection for MIME type and dynamic import fetch failures
- Retry xterm module imports with backoff delays (500ms, 1500ms, 3000ms) and preserve original error reporting when retries are exhausted
- Add TerminalModal tests covering successful retry recovery, exhausted retry fallback to init error UI, and no-retry behavior for non-retryable failures
- Add a changeset patch for @gsxdsm/fusion describing the terminal initialization fix
2026-04-07 22:50:17 -07:00
gsxdsm
69bb0290aa feat(FN-1125): add browser verification template coverage
- Map the workflow template icon key "globe" to the Globe icon in WorkflowStepManager
- Expand WorkflowStepManager tests to cover Browser Verification template rendering, icon display, and add-from-template behavior
- Update AGENTS.md workflow template documentation to include the new Browser Verification template and description
2026-04-07 22:49:28 -07:00
gsxdsm
a0cf687a81 feat(FN-1112): remove browser-verification special-case UI
- Remove the hardcoded Browser Verification checkbox from TaskForm and rely on configured workflow steps
- Remove the InlineCreateCard Browser toggle and stop injecting browser-verification into create payloads
- Align TaskForm and InlineCreateCard tests with template-only workflow-step selection behavior
- Delete obsolete NewTaskModal and TaskDetailModal assertions for browser-verification controls
2026-04-07 22:37:19 -07:00
gsxdsm
57ff16704a feat(FN-1100): enable inline workflow step editing in task workflow tab
- Add editable workflow step controls in WorkflowResultsTab, including selection, ordering, removal, and phase badges
- Load available enabled workflow steps (plus browser verification) for edit mode and preserve existing results visibility while editing
- Wire TaskDetailModal to manage optimistic workflow step updates, persist enabledWorkflowSteps, and surface success/error toasts
- Expand WorkflowResultsTab tests to cover edit toggle behavior, API loading, selection changes, reordering/removal, and mixed results+edit rendering
2026-04-07 22:29:48 -07:00
gsxdsm
1982362fb5 feat(FN-1106): preserve planning sessions when closing modal
- Stop canceling active planning sessions on modal close and keep server-side progress intact
- Remove progress-loss confirmation prompts and simplify close/escape/unload handling to just reset local UI state
- Ensure close flows always disconnect the SSE stream connection without clearing the backend session
- Rewrite PlanningModeModal close-behavior tests to verify no confirmation/cancel calls across initial, loading, question, summary, and overlay dismiss paths
2026-04-07 22:14:14 -07:00
gsxdsm
5b441ca86c fix(FN-1101): normalize browser verification checkbox state
- Detect browser verification selection from both template token and resolved workflow step IDs
- Normalize checkbox toggles by replacing resolved browser-verification step IDs with a single canonical token
- Preserve non-browser workflow step selections when checking or unchecking browser verification
- Add TaskForm tests for resolved-ID checked state, unchecked cleanup, and re-check normalization
- Add a patch changeset for @gsxdsm/fusion documenting the browser verification state fix
2026-04-07 22:13:37 -07:00
gsxdsm
af4691f17b feat(FN-1088): move quick entry advanced controls into actions menu
- Replace direct Deps/Models/Save controls with a single actions trigger in QuickEntryBox
- Add portaled actions dropdown behavior, including outside-click and Escape handling plus menu repositioning
- Add actions badge styling/count to reflect selected dependencies and model overrides
- Update QuickEntryBox/ListView tests and AGENTS.md docs to match the new actions-menu interaction flow
2026-04-07 19:20:59 -07:00
gsxdsm
e952dd5760 fix(FN-1097): sync model tab saves with modal task state
- Pass TaskDetailModal's onTaskUpdated callback into ModelSelectorTab
- Propagate server-returned task updates after model and thinking-level saves so edit mode uses fresh values
- Add regression tests for ModelSelectorTab update callbacks and TaskDetailModal model-sync flow
- Add a patch changeset for @gsxdsm/fusion covering the model edit sync fix
2026-04-07 19:13:51 -07:00
gsxdsm
66562a0b54 fix(FN-1082): harden mailbox modal mobile layout
- Add flex-column base layout for .mailbox-modal and make .mailbox-content grow/scroll correctly
- Introduce a dedicated <=768px mailbox mobile CSS section for header, tabs, detail view, and FAB spacing
- Add MailboxModal regression tests that assert required CSS rules and detail-view structural hooks
- Increase batch GitHub issue import route test timeout to 30s for slower retry paths in CI
2026-04-07 18:46:22 -07:00
gsxdsm
981c5d951c feat(FN-1065): add immediate message response mode for heartbeats
- Add MessageResponseMode and messageResponseMode runtime config to core agent heartbeat types and exports
- Extend MessageStore with an onMessageToAgent hook plus runtime hook updates for agent-directed messages
- Wire HeartbeatMonitor to wake agents on incoming messages when messageResponseMode is immediate and state is eligible
- Update AgentDetailView with a Message Response Mode setting, validation, and runtimeConfig persistence
- Expand core and engine tests to cover hook behavior, wake-on-message triggering, and start/stop hook lifecycle
2026-04-07 18:43:16 -07:00
gsxdsm
0f0ddc02fb feat(FN-1050): add per-agent custom instructions support
- Add instructionsPath and instructionsText fields to Agent type and AgentStore
- Create agent-instructions resolver module in engine with priority-based resolution
- Wire custom instructions into executor, triage, reviewer, and merger agents
- Add PATCH /agents/:id/instructions API endpoint with file and text support
- Add instructions editor UI to dashboard agent detail config tab
- Add comprehensive tests for instructions resolver and AgentStore integration
- Add changeset for published package bump
2026-04-07 15:17:08 -07:00
gsxdsm
f34c86345c feat(FN-1059): add manual heartbeat run trigger with execution details in agent UI
- Wire heartbeatMonitor into ServerOptions and pass through to API routes
- Add POST /api/agents/:id/runs route to trigger heartbeat execution with optional source/triggerDetail
- Update API client startAgentRun to accept optional source and triggerDetail parameters
- Add Run Heartbeat button to AgentsView and enhance AgentDetailView RunsTab with execution details and polling
- Add route handler tests for agent runs and UI static analysis tests
- Support run history display with status, duration, trigger type, and result details
2026-04-07 14:38:12 -07:00
gsxdsm
6b269f85c6 feat(FN-991): add per-task planning model override for triage and dashboard
- Add planningModelProvider/planningModelId fields to task model and API batch-update endpoint
- Wire triage engine to use per-task planning model override with settings hierarchy fallback
- Add planning model selector to TaskDetailModal Model tab
- Add comprehensive tests for triage engine planning model resolution and dashboard API/routes
2026-04-07 13:46:25 -07:00
gsxdsm
a549dbde81 feat(FN-1066): add descriptions to agent presets and display in UI
- Add description field to all 20 agent presets in NewAgentDialog
- Display preset descriptions below role badge in preset selection cards
- Use preset description as agent title when selecting a preset
- Add CSS styling for description text with 2-line clamp
- Add tests verifying descriptions render, are non-empty, and populate title field
2026-04-07 13:38:35 -07:00
gsxdsm
55f5dde24d feat(FN-1064): replace agent sidebar with dropdown select in MailboxModal
- Replace agent sidebar layout with a compact dropdown select component
- Refactor MailboxModal.tsx to use dropdown instead of sidebar navigation
- Remove unused sidebar CSS styles and add dropdown-specific styles
- Update tests to cover dropdown behavior and interaction patterns
2026-04-07 13:37:56 -07:00
gsxdsm
28bc4a3bfa feat(FN-1045): add clickable agent run history with inline log viewer
- Add backend API endpoint for time-range filtered agent log retrieval (GET /api/agents/:id/logs)
- Add fetchAgentRunLogs API function in dashboard client
- Make RunsTab run cards clickable with inline log viewer accordion
- Make AgentRunHistory run rows clickable to expand and view logs
- Enhance AgentDetailView with collapsible log sections and time-range filtering
- Add comprehensive tests for store, routes, and component click behavior
2026-04-07 12:55:05 -07:00
gsxdsm
880f29115c feat(FN-1044): add thinkingLevel and planning model support to task creation
- Add thinkingLevel field to createTask and updateTask in core store
- Accept thinkingLevel and planningModel fields in dashboard task routes
- Send thinkingLevel and planningModel in frontend API calls from task forms
- Add ThinkingLevel selector to ModelSelectorTab component with tests
- Wire up planning model and thinking level in QuickEntryBox, TaskForm, and NewTaskModal
- Add unit tests for store, routes, and ModelSelectorTab coverage
- Add changeset and update AGENTS.md documentation
2026-04-07 12:18:49 -07:00
gsxdsm
825ae1061b feat(FN-1049): add per-agent heartbeat configuration via runtimeConfig
- Define AgentHeartbeatConfig interface in core types (heartbeatIntervalMs, heartbeatTimeoutMs, maxConcurrentRuns)
- Update HeartbeatMonitor to resolve per-agent config from AgentStore with validated min/max clamping
- Wire AgentStore into HeartbeatMonitor via InProcessRuntime initialization
- Add heartbeat settings section to dashboard AgentDetailView ConfigTab
- Add PATCH /api/agents/:id endpoint accepting runtimeConfig updates
- Add comprehensive tests for per-agent heartbeat config resolution and validation
- Document per-agent heartbeat configuration in AGENTS.md
2026-04-07 11:50:17 -07:00
gsxdsm
39f4f4929f feat(FN-976): add companies.sh agent import for CLI and dashboard
- Add companies.sh type definitions and parser in @fusion/core with comprehensive tests
- Create CLI `kb agent-import` command to import agents from companies.sh
- Add POST /api/agents/import dashboard endpoint with dry-run support
- Build AgentImportModal component with search, preview, and batch import UI
- Add dashboard route tests for the agent import API endpoint
- Create changeset for @gsxdsm/fusion minor bump
2026-04-07 11:41:38 -07:00
gsxdsm
43b1f6e772 feat(FN-989): add inter-agent messaging system with mailbox UI and CLI commands
- Add Message types (Message, MessageThread, MessageRecipient) and exports to @fusion/core
- Create MessageStore with full CRUD: send, read, delete, inbox, threads, and search
- Add messages table migration (schema v12) with SQLite full-text search support
- Add REST API routes for messaging (CRUD, search, broadcast, unread count)
- Add frontend API client functions for all messaging endpoints
- Build MailboxModal and MessageComposer dashboard components with header integration
- Add CLI message commands (inbox, send, read, delete) with rich output formatting
- Add comprehensive test coverage for MessageStore, CLI commands, and UI components
- Update documentation (CLI STANDALONE.md, dashboard README) with messaging usage
2026-04-07 11:21:59 -07:00
gsxdsm
1c10f2f27b refactor(FN-1056): remove dead code and unused CSS
- Delete SetupWizard component and its test file (no longer used)
- Remove migration-stubs.ts (dead migration helper code)
- Strip unused CSS rules from dashboard styles.css
- Fix minor test assertion in activity-feed theme test
- Add changeset for patch release
2026-04-07 11:18:47 -07:00
gsxdsm
df0edc6064 fix(FN-1052): fix modal height overflow with calc-based max-height
- Replace fixed max-height on modal overlay with calc(100vh - 4rem) to prevent content from overflowing viewport
- Add regression tests for ChangesDiffModal height constraint behavior
- Ensures modals stay within visible area regardless of content size
2026-04-07 10:47:03 -07:00
gsxdsm
4097d9d250 feat(FN-1021): stabilize terminal first-open bootstrap and WebSocket recovery
- 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
2026-04-07 00:20:12 -07:00
gsxdsm
ab064ebc26 feat(FN-965): add per-task planning model override
- Add planningModelProvider and planningModelId fields to core Task type
- Update backend API validation to accept planning model fields on create/update
- Update frontend API client and TaskForm to handle planning model
- Add planning model selector row to ModelSelectorTab component
- Wire up planning model in TaskDetailModal edit mode with save support
- Update AGENTS.md with planning model override documentation
- Add comprehensive tests for ModelSelectorTab and API routes
- Bump schema version from 10 to 11
2026-04-06 22:55:25 -07:00
gsxdsm
1c232a17c4 fix(FN-1043): fix terminal mobile keyboard layout
- Defer fitAddon.fit() via requestAnimationFrame after CSS repaint to ensure container dimensions are settled
- Add overflow:hidden to keyboard-open CSS rule to prevent layout shift
- Add regression tests for xterm re-fit on mobile keyboard open/close
- Update terminal mobile keyboard documentation in README files
2026-04-06 21:35:46 -07:00
gsxdsm
75afc13d54 feat(FN-1041): add step session executor and execution settings UI
- Implement StepSessionExecutor class with parallel wave scheduling, conflict detection, and retry logic
- Define interfaces and utility types for step session execution (StepSession, StepSessionConfig, StepResult)
- Add Execution settings section to the dashboard SettingsModal for configuring step session behavior
- Add comprehensive tests for StepSessionExecutor (1225 lines) and SettingsModal Execution section
- Add changeset for @gsxdsm/fusion package
2026-04-06 21:34:19 -07:00
gsxdsm
343d9e4d32 feat(FN-1042): reduce horizontal margins in Changes tab
- Add negative margin CSS rule on .task-changes-tab to reclaim horizontal space from .detail-body padding
- Reduce file header padding from 10px to 6px for tighter layout
- Add test verifying root element has task-changes-tab class for margin scoping
- Add test verifying diff patches have no extraneous inline padding styles
2026-04-06 21:07:41 -07:00
gsxdsm
2e902a1ffe feat(FN-990): add task spec rebuild endpoint and UI
- Add POST /tasks/:id/spec/rebuild API endpoint to regenerate task specifications
- Add rebuildTaskSpec client function in dashboard API layer
- Add respecify button to task detail modal for triggering spec rebuilds
- Add comprehensive tests for the spec/rebuild endpoint covering success, error, and edge cases
2026-04-06 18:56:39 -07:00
gsxdsm
c18a92cee4 feat(FN-1035): replace hardcoded colors with theme-aware CSS variables in agent UI
- Replace hardcoded color values in AgentDetailView with --in-progress CSS variable
- Fix card size badges to use theme-aware CSS variables
- Replace hardcoded log entry colors with CSS variables in AgentLogViewer
- Remove duplicate CSS variable definitions from AgentListModal
- Update central styles.css with proper CSS variable declarations for agent UI
- Update AgentListModal tests to reflect removed duplicate CSS variables
2026-04-06 16:12:11 -07:00
gsxdsm
d490ea7038 feat(FN-1033): replace hardcoded colors with CSS custom properties in mission UI
- Add CSS custom properties for mission, slice, feature, and autopilot color tokens in styles.css
- Replace inline icon colors with CSS variables in MissionInterviewModal
- Replace hardcoded colors with CSS variables in MissionManager
- Add changeset for theme color tokens patch
2026-04-06 15:50:44 -07:00
gsxdsm
91672f3004 feat(FN-1032): replace hardcoded colors with CSS custom properties across dashboard components
- Add CSS custom properties and modifier classes for all status colors (open, closed, merged, draft, review, in-progress, etc.)
- Remove hardcoded hex colors from GitHubBadge, replace with CSS classes
- Remove hardcoded colors from PrSection, use CSS classes and Lucide icons
- Remove COLUMN_COLOR_MAP and inline styles from TaskCard, use CSS classes
- Add theme-safety regression tests ensuring components never use inline color styles
- Update existing GitHubBadge and TaskCard tests for class-based styling
2026-04-06 15:37:45 -07:00
gsxdsm
c6cae92efc refactor(FN-1034): replace hardcoded workflow step colors with CSS custom properties
- Define CSS custom properties for all workflow step colors in styles.css
- Replace inline styles in WorkflowStepManager.tsx with semantic CSS classes
- Replace hardcoded hex/rgba colors in workflow step manager section with var() references
- Improve maintainability and themeability of workflow step UI
2026-04-06 15:15:08 -07:00
gsxdsm
84ddb7cbd7 fix(FN-1031): replace var(--error) with var(--color-error) in project components
- Fix incorrect CSS token var(--error) → var(--color-error) in ProjectCard, ProjectHealthBadge, and ProjectSelector
- Add regression test suite (ProjectThemeTokens.test.tsx) covering all project components for correct token usage
- Ensures consistency with the design system's CSS custom property naming convention
2026-04-06 15:05:21 -07:00
gsxdsm
da6b9bbd98 feat(FN-984): add agent hierarchy tree view with parent-child relationships
- Add GET /agents/:id/children API endpoint to fetch child agents of a parent
- Create fetchAgentChildren API function with tests in dashboard client
- Implement useAgentHierarchy hook with recursive tree loading and expand/collapse
- Add tree view mode to AgentsView with hierarchical agent display
- Enhance AgentDetailView with parent info and expandable children section
- Add tree view CSS styles for connection lines and expand/collapse indicators
2026-04-06 13:53:14 -07:00
gsxdsm
dbb310ee67 feat(FN-982): add branch selection and commit viewing to Git Manager
- Add branch commit fetching API endpoint (GET /api/git/branches/:name/commits)
- Enhance BranchesPanel with selectable branches and commit diff viewer
- Add CSS styles for branch selection list and commit detail view
- Fix relativeDate utility to handle invalid/empty date strings gracefully
- Fix interview route ordering in mission-routes
- Add loading state for branch commit diff to prevent false error flash
- Add comprehensive tests for branch selection, commit viewing, and route handling
2026-04-06 13:10:28 -07:00
gsxdsm
8fa3401d82 feat(FN-1030): enhance workflow results tab with summary bar, collapsible output, and always-visible tab
- Make Workflow tab always visible in TaskDetailModal (not conditional on enabled steps)
- Add summary bar showing pass/fail/skip counts with color-coded badges
- Make workflow step output collapsible with expand/collapse toggle
- Add enhanced empty states for no steps configured, all skipped, and no results
- Add CSS styles for summary bar, collapsible output, and empty state variants
- Update TaskDetailModal tests to reflect always-visible Workflow tab
- Add comprehensive tests for WorkflowResultsTab new features
2026-04-06 03:40:40 -07:00
gsxdsm
76770e6e14 fix(FN-1028): add crypto.randomUUID fallback for schedule step ID generation
- Add fallback ID generation using Math.random when crypto.randomUUID is unavailable
- Update ScheduleStepsEditor component with robust step creation
- Add unit tests for fallback ID generation behavior
- Document fallback approach in Scheduled Tasks section of README
2026-04-06 00:09:21 -07:00
gsxdsm
2eae2834f4 feat(FN-1010): add mission start endpoint and UI button
- Add POST /api/missions/:missionId/start backend endpoint to start planning missions
- Add startMission() frontend API function in dashboard api.ts
- Add Start button in MissionManager component for planning missions
- Add integration tests for the startMission endpoint covering success, error, and edge cases
2026-04-06 00:08:39 -07:00
gsxdsm
1c76e25aa8 fix(FN-1024): fix done-task changes tab overcounting and add diff fallback
- Fix TaskChangesTab overcounting changes for done tasks by handling missing commit SHA gracefully
- Add /api/tasks/:id/diff endpoint with fallback for done tasks without merge commit info
- Add comprehensive tests for both TaskChangesTab component and diff route edge cases
- Document done-task Changes tab fallback behavior in README
2026-04-06 00:07:46 -07:00
gsxdsm
83688abecb fix(FN-1029): fix flaky test failures and keyboard event forwarding
- Add onKeyDown handler to CustomModelDropdown portal container for keyboard event forwarding
- Wrap SettingsModal empty state assertions in waitFor for async test stability
- Extract rate limiter state for proper test isolation in routes tests
- Add reconcileProjectStatuses to CentralCore mock for consistent test setup
- Improve /api/ai/summarize-title rate limiting with per-test isolation
2026-04-05 23:44:48 -07:00
gsxdsm
63388551d1 feat(FN-997): add startAgentRun API and auto-start heartbeat on agent activation
- Add startAgentRun() API function to start a heartbeat run for a given agent
- Auto-trigger startAgentRun when agent status transitions to active in AgentsView
- Add API tests for startAgentRun endpoint
- Add component tests for auto-start behavior on activation
2026-04-05 23:36:42 -07:00
gsxdsm
3cd8f8ed54 feat(FN-1025): harden mobile keyboard-open layout for terminal modal
- Add CSS rules to properly handle viewport height when mobile virtual keyboard is open
- Add regression tests for keyboard-open overlap detection
- Add TerminalModal test coverage for keyboard-related height contract
- Document mobile keyboard layout behavior in dashboard README
2026-04-05 23:26:59 -07:00
gsxdsm
2a3a320d19 feat(FN-980): add mission autopilot for autonomous slice progression
- Add MissionAutopilot class with state machine (inactive → watching → activating → completing)
- Add autopilot database schema: autopilotEnabled, autopilotState, lastAutopilotActivityAt columns
- Integrate autopilot with scheduler: handleTaskCompletion() triggers slice activation
- Add API routes: GET/PATCH /missions/:id/autopilot, POST start/stop endpoints
- Add autopilot toggle UI in MissionManager dashboard component
- Add retry logic with exponential backoff (up to 3 attempts) for slice activation
- Add background poll (60s) to detect stale autopilot missions
- Include changeset for @gsxdsm/fusion minor bump
2026-04-05 23:11:28 -07:00
gsxdsm
6a0ea822d2 feat(FN-1020): add scoped compact spacing for TaskChangesTab file rows
- Add task-changes-file-list--compact CSS modifier class with tighter padding, gaps, and stat margins
- Apply compact modifier to TaskChangesTab file list container
- Add regression tests verifying compact class is present on TaskChangesTab and absent on CommitDiffTab
- Document compact spacing treatment in dashboard README
2026-04-05 23:08:27 -07:00
gsxdsm
ec33691033 feat(FN-1019): reflow Changes-tab header stats and fix terminal scrollback
- Reflow Changes-tab header stats to a second line for better layout
- Add CSS styles for two-line header stats display
- Fix useTerminal hook to clear buffered scrollback after first subscriber replay
- Add tests for TaskChangesTab header stats rendering
- Update README description for Changes tab header
2026-04-05 22:58:28 -07:00
gsxdsm
904e4c8e00 feat(FN-1000): add token cap detection for agent task execution
- Add tokenCap to ProjectSettings with tokenCapEnabled flag, default 500K tokens
- Create TokenCapDetector class with usage tracking and cap enforcement
- Wire TokenCapDetector into executor agentWork() to auto-fail tasks exceeding cap
- Add token cap input fields to Settings Modal dashboard UI
- Add comprehensive unit tests for TokenCapDetector (174 lines)
2026-04-05 22:50:03 -07:00
gsxdsm
931093a4e2 feat(FN-1018): isolate header brand spacing with .header-brand container
- Wrap logo + title in a .header-brand div for independent flex layout
- Replace hard-coded gap/margin with gap utilities for consistent spacing
- Add .header-brand CSS class with align-items: center and gap
- Add unit test verifying brand container structure
- Document .header-brand lockup pattern in README
2026-04-05 22:29:03 -07:00
gsxdsm
6b7e57720b fix(FN-1026): normalize formatResetAt to use calendar-day boundaries
- Fix formatResetAt to compute day difference from calendar midnight boundaries instead of raw millisecond division
- Prevents off-by-one day counts that caused inconsistent formatting near 7-day boundary
- Add comprehensive unit tests for formatResetAt boundary conditions (7-day edge, today, beyond 7 days)
- Fix pre-existing scheduler test assertion to use expect.objectContaining for worktree/baseBranch fields
2026-04-05 21:59:42 -07:00
gsxdsm
b670d8b3e3 chore: update stuck task handling and dashboard tweaks 2026-04-05 21:36:18 -07:00