Commit Graph

1647 Commits

Author SHA1 Message Date
gsxdsm
0304df348f feat(FN-1228): enhance MeshTopology with peer awareness and status legend
- Export MeshTopologyProps interface for external use
- Add peer awareness lines between remote nodes for mesh visualization
- Implement dynamic SVG sizing based on number of remote nodes
- Add status color legend showing online/offline/connecting/error states
- Improve CSS variable handling with fallback values
- Use transform-based positioning for cleaner SVG structure
2026-04-09 12:41:50 -07:00
gsxdsm
d8619ae298 docs(FN-1228): add Node Dashboard documentation to AGENTS.md 2026-04-09 12:37:18 -07:00
gsxdsm
590e8af63b docs(FN-1379): add UX improvement audit report 2026-04-09 12:37:05 -07:00
gsxdsm
2e3c94f4de feat(FN-1228): add Node Dashboard UI with mesh topology and routes tests 2026-04-09 12:34:03 -07:00
gsxdsm
a16568a75a fix(FN-1187): integration fixes for mission health and type updates
- Add /missions/health endpoint handling to MissionManager test mocks
- Add listMissionsWithSummaries to mission-e2e test mock
- Add planState to Slice type and mock factories
- Add stuckKillCount to retry task test assertions
- Update log message for stuck-killed retry
2026-04-09 12:21:51 -07:00
gsxdsm
e2f20dc2be feat(FN-1228): complete Step 5 — MeshTopology component
- Added MeshTopology.tsx with SVG visualization
- Nodes arranged in circle with local node at center
- Color-coded by status
- Added CSS for mesh topology styles
2026-04-09 12:08:02 -07:00
gsxdsm
2410f77b00 feat(FN-1373): add mission feature reconciliation on startup
- Add reconcileAllMissionFeatures() method to sync task status with mission features
- Refresh selected mission detail when feature:updated SSE event fires
- Add unit tests for reconcileAllMissionFeatures and SSE handler
- Fix async getTask call in reconcileAllMissionFeatures (keep await)
2026-04-09 12:06:10 -07:00
gsxdsm
fb061d7275 fix(FN-1228): Update tests to match spec requirements
- DELETE /api/nodes/:id now returns 204 No Content
- GET /api/nodes/:id/metrics returns systemMetrics from node
- Added test for GET /api/mesh/state endpoint
2026-04-09 11:55:17 -07:00
gsxdsm
ea8d32d4bf feat(FN-1228): complete Step 1 — Backend API Routes modifications
- Modified POST /api/nodes to make type optional (defaults to 'remote')
- Changed DELETE /api/nodes/:id to return 204 No Content
- Updated GET /api/nodes/:id/metrics to return SystemMetrics from node.systemMetrics
- Added GET /api/mesh/state route for full mesh topology state
2026-04-09 11:51:03 -07:00
gsxdsm
9320530603 feat(FN-1373): add tests for reconcileAllMissionFeatures and feature:updated SSE handler 2026-04-09 11:34:56 -07:00
gsxdsm
26ff7eb900 feat(FN-1186): add Performance tab to agent detail with ratings
- Add agent rating API routes (GET/PATCH /api/agents/:id/ratings)
- Add API helper functions for fetching and updating agent ratings
- Add Performance tab UI to AgentDetailView with star rating display
- Add CSS styling for the Performance tab and star rating components
- Add comprehensive route tests for agent ratings endpoints
2026-04-09 11:33:40 -07:00
gsxdsm
889b7fc37c feat(FN-1373): refresh selected mission detail on feature:updated SSE event 2026-04-09 11:30:58 -07:00
gsxdsm
b81076081d feat(FN-1373): add reconcileAllMissionFeatures() for startup reconciliation 2026-04-09 11:28:56 -07:00
gsxdsm
f0aa63bd73 fix(FN-1371): replace placeholder MiniMax and Z.ai logos with real brand icons
- Replace placeholder SVG content for MiniMax provider icon with authentic MiniMax branding
- Replace placeholder SVG content for Z.ai provider icon with authentic Z.ai branding
- Update ProviderIcon tests to reflect the new icon implementations
2026-04-09 11:24:27 -07:00
gsxdsm
27991efdfd fix(FN-1371): replace placeholder MiniMax and Z.ai logos with real brand icons 2026-04-09 11:23:33 -07:00
gsxdsm
c1e0df2fef feat(FN-1183): add agent reflections tab to dashboard
- Add API routes for agent reflections (GET, POST, DELETE)
- Create AgentReflectionsTab component with reflection list and form
- Integrate reflections tab into AgentDetailView
- Add CSS styles for the reflections tab UI
- Write tests for API routes and component
2026-04-09 11:15:57 -07:00
gsxdsm
d7500cd9d6 refactor(FN-1370): merge execution settings into scheduling section
- Remove separate Execution section from settings sidebar
- Move step execution settings (runStepsInNewSessions, maxParallelSteps) into Scheduling section
- Consolidate related runtime behavior settings for better UX
- Update tests to navigate to Scheduling section instead of Execution
2026-04-09 11:08:50 -07:00
gsxdsm
fd412447e5 feat(FN-1359): add ChatStore for session and message management
- Add chat system type definitions (ChatSession, ChatMessage, ChatMessageRole)
- Add SQLite schema migration for chat_sessions and chat_messages tables
- Implement ChatStore with full CRUD operations for sessions and messages
- Export ChatStore and types from @fusion/core public API
- Add comprehensive test suite for ChatStore with session/message operations
- Update schema version expectations in existing tests
2026-04-09 10:58:21 -07:00
gsxdsm
b388dd95df feat(FN-1351): create useActivityLog hook with agent:log subscriptions 2026-04-09 10:31:25 -07:00
gsxdsm
efae996285 feat(FN-1351): create useTasks hook with TaskStore event subscriptions 2026-04-09 10:30:41 -07:00
gsxdsm
effd3d8423 fix(FN-1348): fix test mocks for HeartbeatMonitor wiring in dashboard
- Update dashboard command tests to properly mock HeartbeatMonitor dependencies
- Ensure test suite passes with correct wiring expectations
2026-04-09 10:20:39 -07:00
gsxdsm
697814d9e0 feat(FN-1260): add full-text search for tasks and comments
- 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
2026-04-09 10:17:02 -07:00
gsxdsm
8268639c86 fix(FN-1349): add tests for resume/start button on terminated agents 2026-04-09 10:15:48 -07:00
gsxdsm
8acc369ebf fix(FN-1349): add resume/start button for terminated agents in AgentListModal 2026-04-09 10:12:58 -07:00
gsxdsm
092b5347a7 fix(FN-1349): add resume/start button for terminated agents in AgentDetailView 2026-04-09 10:12:07 -07:00
gsxdsm
6fab5de25f feat(FN-1323): unify list and board agent-active styling
- Apply consistent agent-active state styling across ListView and BoardView
- Add .agent-active CSS class to unify visual indicator styling
- Update ListView component to use unified active state classes
- Add ListView test coverage for agent-active state rendering
2026-04-09 10:10:25 -07:00
gsxdsm
82bc3a4848 fix: sync semaphore concurrency limit on every settings change
The cachedMaxConcurrent variable driving the AgentSemaphore was only
updated during unpause transitions and merge retry timers. Changing
maxConcurrent in the dashboard had no effect on the semaphore until one
of those events fired, causing fewer tasks to run than configured.

Also adds HeartbeatMonitor and HeartbeatTriggerScheduler wiring to both
serve and dashboard commands, with tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:56:32 -07:00
gsxdsm
f915d10c59 feat(FN-1348): export HeartbeatMonitor and HeartbeatTriggerScheduler from @fusion/engine 2026-04-09 09:42:21 -07:00
gsxdsm
13b11b0566 fix(FN-1321): align view toggle button size with header icon buttons
- Update view toggle button dimensions to match header icon buttons
- Ensure consistent visual sizing in the dashboard header area
2026-04-09 09:40:56 -07:00
gsxdsm
34a6c42686 feat(FN-1316): add mobile responsive styles and tests for ProjectOverview
- Add mobile responsive CSS rules for ProjectOverview component
- Add mobile breakpoint styles for card layouts and navigation elements
- Add ProjectOverview mobile structure tests for responsive behavior
- Add ProjectCard mobile visibility tests
2026-04-09 09:33:31 -07:00
gsxdsm
4587a077a7 feat(FN-1214): add ember color theme
- Add ember theme to COLOR_THEMES array in types.ts
- Add ember theme CSS variables in styles.css
- Add ember theme swatch preview in ThemeSelector component
- Add ember to validThemes validation in index.html
- Add ThemeSelector tests for ember theme
2026-04-09 09:28:52 -07:00
gsxdsm
7fac407583 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
c839613036 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
6bc1e799d9 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
10811aecd0 feat(FN-1311): complete Step 3 — reduce InlineCreateCard touch targets in mobile media block 2026-04-09 08:52:58 -07:00
gsxdsm
925c66308f 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
71914d3e30 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
561a135355 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
1ab5fbcb00 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
7a60e03282 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
0e219f48b9 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
724455c5e1 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
4ccaecf8ac 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
f13af44150 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
2711df9a76 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
9c5dc07166 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
325776b036 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
f2e64fea7d 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
237fe861e0 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
f9608b41b1 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