Commit Graph

1566 Commits

Author SHA1 Message Date
gsxdsm
f6b2a742c5 feat(FN-1213): add 8 new color themes to dashboard
- Add 8 new theme IDs to COLOR_THEMES in core types
- Add CSS blocks with color swatches for all 8 new themes
- Update ThemeSelector to display new theme options
- Register themes in index.html validThemes array
- Add comprehensive tests for new theme support
- Include changeset for @gsxdsm/fusion package
2026-04-09 09:17:50 -07:00
gsxdsm
ba7290641f feat(FN-1311): improve mobile touch targets and reduce column header min-height
- Remove column-header min-height from mobile media block for tighter layout
- Reduce TaskCard touch targets in mobile view for better mobile UX
- Update board-mobile tests to reflect new mobile styling behavior
2026-04-09 09:10:26 -07:00
gsxdsm
e4abbc6efa feat(FN-1350): add FusionContext provider and project detection for TUI
- Create FusionProvider component that initializes TaskStore and provides it via React context
- Add useFusion() hook for accessing TaskStore and project path from any child component
- Implement detectProjectDir() utility that walks up directory tree looking for .fusion/fusion.db
- Update package entry point with context exports and demo app
- Add @fusion/core as dependency to TUI package
- Add comprehensive tests for FusionProvider, useFusion hook, and detectProjectDir
- Add API documentation to README with usage examples
2026-04-09 08:58:34 -07:00
gsxdsm
3f281833fd feat(FN-1311): complete Step 3 — reduce InlineCreateCard touch targets in mobile media block 2026-04-09 08:52:58 -07:00
gsxdsm
a5b1e1fb8d feat(FN-1345): add soul and instructionsText to agent presets
- Add soul and instructionsText fields to all 20 built-in agent presets
- Enable soul-based agent visualization and instructions preview in NewAgentDialog
- Add comprehensive tests for preset soul and instructionsText rendering flow
- Include changeset for @gsxdsm/fusion minor release
2026-04-09 08:47:54 -07:00
gsxdsm
5844f873fc feat(FN-1344): add MiniMax and Z.ai provider logos to usage dialog
- Add MiniMax provider icon with distinct blue gradient design
- Add Z.ai provider icon with geometric dot pattern
- Integrate new icons into UsageIndicator component
- Add comprehensive tests for ProviderIcon rendering
2026-04-09 08:43:49 -07:00
gsxdsm
4d1a14f49e fix: use null instead of undefined to clear worktree/branch in executor updateTask calls
The store's updateTask treats `undefined` as "no change" and `null` as
"clear field". Six places in executor.ts passed `undefined` when intending
to clear worktree/branch, leaving stale references that caused tasks to
get stuck in in-progress with no active session after stuck-kills, pauses,
and transient error retries.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:43:14 -07:00
gsxdsm
a0606884cb fix: recover orphaned in-progress tasks even when worktree exists on disk
Previously, recoverOrphanedExecutions() skipped tasks whose worktree
directory still existed, assuming an active session. After engine crashes
where resumeOrphaned() failed, these tasks were stuck forever. Now uses
a tiered grace period: 60s for missing worktrees, 5min for existing ones
to avoid racing with startup recovery.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:21:14 -07:00
gsxdsm
93eec2a882 fix(FN-1310): remove mobile 44px touch target enforcement from FileBrowser
- Remove min-height/min-width 44px enforcement from FileBrowser styles.css that was overriding native sizing
- Update FileBrowser test to match the actual CSS without mobile touch target rules
- Update memory log with the change rationale
2026-04-09 07:07:49 -07:00
gsxdsm
749b0da81b test(FN-1309): add missing tests for create mode rows and expand button
- Add tests verifying create mode renders action rows correctly
- Add test for expand button toggle behavior in TaskForm
- Cover agent picker, dependencies, and model selection rows in create mode
2026-04-09 06:31:56 -07:00
gsxdsm
1ab5b5f90b fix(FN-1308): reduce column count badge height and restore archive button size on mobile
- Reduce column count badge height by removing min-height override on mobile
- Add explicit compact sizing for column-header icon buttons (archive, etc.)
- Ensure consistent 28px sizing for tappable elements on mobile viewports
2026-04-09 06:09:18 -07:00
gsxdsm
e05c4376a4 fix(FN-1307): fix invisible close button on mobile file browser modal
- Add overflow: hidden and text-overflow: ellipsis to mobile modal header to prevent title from overlapping close button
- Add min-width: 0 and flex-shrink: 1 to header title for proper flex truncation
- Add CSS rules for FileBrowserModal breadcrumb and filename truncation on narrow screens
- Add tests for mobile close button visibility and CSS text truncation behavior
2026-04-09 06:01:07 -07:00
gsxdsm
345e0954a2 fix(FN-1306): improve PlanningModeModal layout for mobile screens
- Move model selector from sticky footer into scrollable content area
- Slim the footer to only contain the Start Planning button
- Add .planning-model-select-group CSS for proper flexbox layout
- Center footer button and model-select row for better mobile UX
- Remove inline styles from model selector, use CSS classes instead
2026-04-09 05:37:57 -07:00
gsxdsm
ed632615cc feat(FN-1305): add scripts submenu to MobileNavBar
- Add expandable scripts submenu inside the More sheet on MobileNavBar
- Include script status indicators, run/stop buttons, and navigation
- Add CSS styles for submenu animation, hover states, and mobile touch targets
- Add comprehensive tests for submenu toggle, script actions, and edge cases
2026-04-09 05:22:17 -07:00
gsxdsm
e170073dcf fix(FN-1304): reduce mobile button heights from 44px to 36px
- Reduce mobile media query button heights from 44px to 36px across all dashboard components
- Update mobile CSS tests (nav bar, board, modals, mission planning) to expect 36px touch targets
- Add CSS testing patterns to project memory for consistent test guidelines
2026-04-09 04:59:44 -07:00
gsxdsm
7a9148d25d perf: speed up tests with parallel execution and fix type errors
- 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
2026-04-08 23:53:14 -07:00
gsxdsm
719ee27164 fix(FN-1337): remove autoFocus from agent name field in NewAgentDialog
- Remove autoFocus attribute from agent name input to prevent unexpected focus behavior
- Make name field non-blocking so preset flow is not interrupted by focus steal
- Add comprehensive tests for NewAgentDialog covering preset flow and name field behavior
2026-04-08 22:56:48 -07:00
gsxdsm
ef8522f0a8 fix(FN-1340): reposition settings icon to right of stop button in header
- Move settings icon placement from its previous position to directly right of the stop button in the Header component
- Update Header component layout to reflect the new icon ordering
- Update Header tests to match the new element ordering
2026-04-08 22:51:53 -07:00
gsxdsm
ac9f652b9d fix(FN-1302): theme GitHub import issue list with proper dark/light mode support
- Replace hardcoded colors with CSS custom properties (theme tokens) across GitHub import components
- Add accent-color to radio buttons using --in-progress token
- Add explicit light theme overrides via [data-theme="light"] selectors for tabs, toolbar, issues list, preview, labels, and state panels
- Style filter input with theme-aware border, background, focus ring, and placeholder colors
- Fix form-error background to use color-mix instead of hardcoded rgba
2026-04-08 22:40:44 -07:00
gsxdsm
48ece0a265 feat(FN-1328): enable optimistic task detail modal opening
- Update useModalManager to accept Task objects for immediate modal display before full detail loads
- Refactor TaskDetailModal to render with basic Task data and load TaskDetail asynchronously
- Update TaskCard click handlers to open modal immediately with optimistic data
- Update ListView click handler for same optimistic opening behavior
- Update AppModals types to support Task | TaskDetail union
- Add CSS for modal loading/skeleton states
- Add comprehensive tests for TaskDetailModal and useModalManager optimistic flow
- Simplify TaskCard and ListView tests to reflect new optimistic opening pattern
2026-04-08 22:21:24 -07:00
gsxdsm
6250cf4efb fix(FN-1256): auto-recover tasks with all steps done but no task_done call
When context overflow or compaction causes an agent to lose awareness of
the task_done tool, the executor now checks if all steps are complete
before failing — treating it as an implicit task_done. Also adds
self-healing recovery for tasks that already slipped through as
misclassified failures in in-review.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 22:12:53 -07:00
gsxdsm
f478876ee8 fix(FN-1296): reduce done-card mobile touch targets to prevent vertical stretching
- Reduce min-height and padding on done column cards for mobile breakpoints
- Update board-mobile test expectations to match new compact sizing
- Prevents excessive vertical stretching of completed task cards on small screens
2026-04-08 22:04:57 -07:00
gsxdsm
bbc3d6236f feat(FN-1322): add missions tab to mobile nav bar
- Add dedicated Missions tab button to MobileNavBar between Agents and More
- Remove Missions entry from the More sheet (no longer needed as overflow)
- Remove unused onOpenMissions prop from MobileNavBarProps and App.tsx
- Update MobileNavBar tests for five-tab layout and missions tab behavior
- Update mobile feature access regression test to reflect missions in tab bar
2026-04-08 21:57:00 -07:00
gsxdsm
93bfd8a9c0 fix(FN-1295): prevent mobile search bar from overlapping logo
- Replace fixed width constraints with flexible left/right positioning using CSS variables
- Remove hardcoded width/min-width/max-width that caused overflow on narrow screens
- Set left edge to var(--space-md) and right edge to 120px to avoid logo collision
2026-04-08 21:52:53 -07:00
gsxdsm
75ec1874a5 feat(FN-1303): redesign mobile nav with 4-tab structure
- Split board and list into separate bottom nav tab buttons for direct access
- Move activity from bottom nav into a more/action sheet for cleaner layout
- Add usage and search icons to the mobile header
- Remove unused mobile nav CSS for old view-toggle and badge patterns
- Update mobile nav tests to cover the new 4-tab structure
2026-04-08 21:42:31 -07:00
gsxdsm
50a1b2cba3 feat(FN-1293): add --accent override to all 34 color theme variants
- Add --accent CSS custom property override to all 34 dark and 34 light color theme variants in styles.css
- Ensure accent color is consistently applied across every theme
- Add regression tests validating --accent per color theme for both light and dark modes
2026-04-08 21:25:59 -07:00
gsxdsm
50e572b472 feat(FN-1292): consolidate InlineCreateCard controls into single row
- Refactor InlineCreateCard to display all action buttons (Plan, Subtask, Deps, Agent, Browser Verify, Preset, Models, Save) in one consolidated footer row
- Remove the separate inline-create-description-actions CSS class and associated styles
- Update InlineCreateCard tests to reflect the new consolidated control layout
- Update AGENTS.md documentation for InlineCreateCard controls description
- Update memory file with implementation notes
2026-04-08 20:48:08 -07:00
gsxdsm
f2829c7634 fix(FN-1290): recover orphaned stuck tasks 2026-04-08 20:22:58 -07:00
gsxdsm
a9bbb25fd0 feat(FN-1291): add board/list toggle sub-buttons to MobileNavBar
- Add board and list view toggle sub-buttons to MobileNavBar component
- Add CSS styles for toggle sub-buttons with active/hover states
- Update MobileNavBar tests to cover new toggle sub-buttons
- Update mobile feature access regression tests for new nav items
2026-04-08 20:17:07 -07:00
gsxdsm
47a035fde1 feat(FN-1286): add ErrorBoundary component with page-level, modal, and root-level wrapping
- Create ErrorBoundary and ModalErrorBoundary components with recovery actions (retry, reload)
- Add error boundary CSS styles with fallback UI styling
- Wrap main dashboard pages (Board, List, Settings, Agents) with PageErrorBoundary in App.tsx
- Wrap all key modals (task detail, planning, subtask breakdown, mission) with ModalErrorBoundary in AppModals.tsx
- Wrap entire App with RootErrorBoundary in main.tsx as final safety net
- Add 11 comprehensive ErrorBoundary tests covering all rendering and error scenarios
2026-04-08 20:04:23 -07:00
gsxdsm
2842088216 feat(FN-1238): add dashboard loading screen with animated loader component
- 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
2026-04-08 19:38:45 -07:00
gsxdsm
7e8a99a9ce fix(FN-1235): restore terminal text input interaction
- Remove the xterm pointer-events override from dashboard styles to allow terminal text input focus and typing
- Add a terminal input CSS contract test to guard against regressions in xterm helper element interactivity
- Add a patch changeset for @gsxdsm/fusion documenting the terminal text input fix
2026-04-08 19:19:49 -07:00
gsxdsm
9240c1b10d feat(FN-1233): theme remaining dashboard checkboxes
- Add todo accent-color styling to markdown-rendered checkbox inputs
- Apply consistent checkbox theming in list view header and row checkbox controls
- Theme workflow form and mission checkbox inputs to match dashboard color tokens
- Update mission toggle checkbox input to use the same todo accent color
2026-04-08 19:09:16 -07:00
gsxdsm
d92237c5a1 feat(FN-1230): inline quick entry advanced controls
- Remove the quick-entry actions dropdown and expose Deps, Attach, Models, Agent, and Save controls directly in the expanded panel
- Simplify overlay state handling by dropping actions-menu logic and tightening Escape dismissal order for model/dependency popovers
- Update QuickEntryBox and ListView tests to assert the new inline controls and revised keyboard behavior
- Clean up quick-entry CSS by deleting actions-dropdown styles and adjusting expanded control layout/alignment
- Refresh AGENTS.md quick-entry documentation to match the inline control UX
2026-04-08 19:00:54 -07:00
gsxdsm
a05cfd4b55 feat(FN-1255): add comment-aware heartbeat wakes and blocked-state dedup
- Add BlockedStateSnapshot typing/export and AgentStore persistence APIs for last blocked heartbeat state
- Deduplicate blocked-task heartbeat comments using blockedBy + context hash, and clear blocked snapshots when tasks are no longer blocked
- Thread triggeringCommentIds/triggeringCommentType through heartbeat execution, wake context, scheduler assignment triggers, and runtime wiring
- Trigger immediate heartbeat runs from task/steering comment routes for assigned immediate-response agents, with validation for comment wake fields on /api/agents/:id/runs
- Expand core, engine, and dashboard tests to cover blocked dedup logic, comment-triggered wakes, validation, and skip scenarios
2026-04-08 18:38:06 -07:00
gsxdsm
8b538988eb test(FN-1156): add AI session lifecycle and reconnect coverage
- Add ai-session-store unit tests for upsert/get round-trips, active filtering, stale recovery, cleanup, thinking debounce, and update/delete events
- Add persistence and resume-history integration tests for planning, subtask, and mission interview sessions across SQLite reload and cancellation flows
- Add reconnect and cross-tab lock tests covering SSE Last-Event-ID replay, keep-alive ping touches, optimistic lock conflicts, stale lock expiry, and lock release on tab close
- Expand useBackgroundSessions hook tests for SSE-driven updates/deletes, project-scoped fetch/stream behavior, counts, dismiss, and refresh state handling
2026-04-08 18:13:36 -07:00
gsxdsm
b2f0df5455 feat(FN-1219): add mission observability and autopilot dashboard UX
- Add mission observability types and API helpers, and forward mission events through SSE with mission filtering support
- Expand MissionManager with health indicators, activity/event log views, improved autopilot controls, and activity auto-scroll behavior
- Refine mission detail mobile controls and styling updates for responsive observability surfaces
- Add regression coverage for MissionManager behavior/mobile CSS and SSE mission filtering
- Include a changeset documenting the mission dashboard observability update
2026-04-08 18:08:06 -07:00
gsxdsm
61117c8a2b feat(FN-1254): add inbox-lite task selection for heartbeat agents
- Add InboxTask typing and TaskStore.selectNextTaskForAgent() with priority ordering, dependency checks, paused filtering, and FIFO selection
- Wire heartbeat execution to auto-select and assign inbox work when no task is set, with optional checkout attempts and graceful conflict fallback
- Add POST /api/agents/:id/inbox to expose next-task selection details (task, priority, reason) and return task:null when no work is available
- Expand core, engine, and dashboard tests to cover selection priorities, heartbeat precedence/metadata, checkout-conflict handling, and route behavior with type-safe mocks
2026-04-08 17:57:16 -07:00
gsxdsm
86e3869f75 feat(FN-1155): add AI session cleanup scheduling and API controls
- Enhance AiSessionStore cleanup logic to handle stale generating/awaiting_input sessions and remove expired records consistently
- Add a dedicated API route to trigger AI session cleanup and return cleanup results
- Wire scheduled server-side cleanup startup/shutdown behavior using configurable interval and TTL settings
- Expand dashboard tests to cover cleanup logic, route behavior, and cleanup endpoint scenarios
2026-04-08 17:26:34 -07:00
gsxdsm
2911fe7d44 feat(FN-1253): implement task checkout leasing end-to-end
- Add checkout lease types and conflict error exports, plus DB schema v20 migration for checkedOutBy/checkedOutAt
- Persist checkout lease fields in TaskStore and add AgentStore checkout/release/force-release/get-holder operations
- Add dashboard checkout API routes for acquire/release/force-release/status with explicit 409 conflict and 403 holder enforcement
- Enforce checkout ownership in heartbeat execution with graceful checkout_conflict exits when another agent holds the lease
- Expand core and dashboard test coverage for schema, store behavior, API routes, and leasing workflows, and document leasing behavior in AGENTS.md
2026-04-08 17:01:44 -07:00
gsxdsm
e5dc8373b9 feat(FN-1154): sync AI session state across browser tabs
- Add a shared AiSessionSync store with BroadcastChannel + storage fallback, ownership locks, heartbeats, and stale-tab detection
- Merge cross-tab session snapshots into useBackgroundSessions with timestamp guards and rebroadcast SSE updates to peers
- Update background session UI and planning/mission/subtask modals to show active-tab lock status and only allow takeover when ownership is stale
- Add hook tests covering sync store messaging/fallback behavior and background session cross-tab merge flows
2026-04-08 16:48:35 -07:00
gsxdsm
b17d4c9b73 feat(FN-1215): refresh settings branding and scope banner theming
- Update Settings modal copy from fn to Fusion for shared/project messaging
- Adjust worktree naming example to use uppercase task IDs (FN-042)
- Make scope banner colors theme-aware using info/success CSS variables with color-mix
- Update desktop and mobile Settings modal tests for the new Fusion scope text
2026-04-08 16:37:13 -07:00
gsxdsm
719cf901aa feat(FN-1320): re-engage autopilot when resuming missions
- Re-engage MissionAutopilot when a paused mission is resumed with autopilot enabled
- Wire mission autopilot into dashboard route setup so resume flows can trigger watcher start
- Extend mission e2e tests to cover autopilot mock shape and resume re-engagement behavior
- Add a patch changeset documenting the mission resume autopilot fix
2026-04-08 16:29:46 -07:00
gsxdsm
e044cfbed7 feat(FN-1211): add collapsible advanced options to task form
- Split TaskForm into a primary section and a collapsible "More options" block for dependencies, models, workflow steps, and attachments
- Auto-expand advanced options when non-default values exist and reset dependency dropdown state when the section is collapsed
- Restyle modal form hierarchy, description actions, and advanced option container for clearer visual grouping across desktop and responsive layouts
- Update NewTaskModal and TaskForm tests to open and assert advanced fields through the new More options toggle
2026-04-08 16:23:08 -07:00
gsxdsm
f60c06be79 feat(FN-1298): add stop-agent-run flow across engine and dashboard
- Add heartbeat stopRun support in the engine and wire it into the dashboard server lifecycle
- Add an agent run stop API route and client helper with route-level test coverage
- Add stop controls in AgentDetailView and AgentRunHistory with updated UI tests
- Add a changeset for @gsxdsm/fusion documenting the new stop run feature
2026-04-08 16:17:34 -07:00
gsxdsm
02148d79b6 feat(FN-1153): add cross-tab locks for AI planning sessions
- Bump SQLite schema to v19 with ai_sessions lock columns and lock index, and align migration coverage in core DB tests
- Extend AiSessionStore with acquire/release/force lock APIs, stale lock cleanup, and lock metadata in ai_session update summaries
- Enforce lock checks on planning, subtask, and mission interview mutation routes with 409 conflict responses while keeping stream reads unaffected
- Add frontend tab identity + useSessionLock hook and wire Planning, Subtask, and Mission modals to pass tabId, show lock overlay, and support Take Control
- Expand dashboard route/e2e and modal tests to validate lock enforcement, lock handoff, and lock-aware session reentry behavior
2026-04-08 16:14:32 -07:00
gsxdsm
55e8b6fd94 feat(FN-1209): add quick entry image attachment flow
- Return the created task from board quick create and propagate the onQuickCreate return type through board/list components
- Add pending image handling in QuickEntryBox with paste support, hidden file input, and an Attach action in the menu
- Render removable pending image previews, include image count in the actions badge, and clean up object URLs on reset/unmount
- Upload pending images after task creation with error toasts for failed uploads, and extend tests for attachment and quick-create behavior
2026-04-08 16:03:46 -07:00
gsxdsm
8aa77c8b77 refactor(FN-1288): consolidate GitHub remote parsing in @fusion/core
- Replace dashboard calls to local getCurrentGitHubRepo helpers with getCurrentRepo from @fusion/core
- Update engine scheduler PR-monitor startup paths to use shared core repo resolution
- Remove duplicated remote parsing implementations from dashboard and engine packages
- Mark gap analysis finding 6.3 as resolved after centralizing parsing logic
2026-04-08 15:53:38 -07:00
gsxdsm
0304a3df20 fix(FN-1207): improve mobile header search behavior
- Replace delayed focus effect with native autoFocus on the mobile search input
- Constrain expanded mobile search positioning and width to prevent overflow on small viewports
- Add Header tests covering mobile search auto-focus and expanded container rendering
2026-04-08 15:41:18 -07:00
gsxdsm
d66300c794 feat(FN-1236): migrate GitHub PR workflows to gh authentication
- Require gh-authenticated paths for task pr-create and dashboard PR routes
- Switch dashboard command and extension GitHub tools to use the gh auth client instead of token-based auth
- Update CLI and dashboard tests to cover gh-only createPr and import behavior
- Refresh README guidance and add a changeset removing the GitHub token requirement for PR flows
2026-04-08 15:40:39 -07:00