Commit Graph

2352 Commits

Author SHA1 Message Date
gsxdsm
fc23e522a7 feat(FN-1232): add remote node mesh dashboard integration
- Add core proxy API infrastructure (api-node.ts) with remote node communication
- Create NodeContext for centralized node state management
- Implement useNodeProxy hook for node operations (metrics, events, health)
- Implement useRemoteNodeData hook with 10-second polling for live metrics
- Implement useRemoteNodeEvents hook for real-time SSE event subscription
- Add NodeStatusIndicator component with animated status indicators
- Add comprehensive tests for all new hooks and components
- Update dashboard styles for node status visualization
2026-04-09 13:01:19 -07:00
gsxdsm
7ab96cc876 feat(FN-1381): add Send Back dropdown for in-progress tasks
- Add Send Back dropdown to TaskCard showing for in-progress tasks with available target columns
- Thread onMoveTask prop through Column component to BoardView
- Terminate agent sessions when tasks move away from in-progress column
- Add executor tests for move-away session termination
- Add TaskCard send-back UI tests with dropdown visibility and interaction verification
2026-04-09 13:00:37 -07:00
gsxdsm
3ea53f1aa2 feat(FN-1229): add node mesh CLI commands for node and mesh management
- Add fn node list command to list all registered nodes with status and URL
- Add fn node show command to display detailed node information including system metrics
- Add fn node health-check command to trigger and verify node health status
- Add fn node remove command to unregister nodes from the mesh
- Add fn mesh status command to show mesh topology with peer connections
- Add comprehensive tests for all node and mesh CLI commands
- Update bin.ts to wire up new node and mesh subcommands
- Update memory with CLI mock pattern for testing
2026-04-09 12:54:16 -07:00
gsxdsm
3ef12726d1 feat(FN-1375): add null-as-delete pattern for settings with Reset button
- Send null instead of undefined when clearing token cap to explicitly delete setting
- Handle null values as delete operations in updateSettings (for clearing keys)
- Add Reset button in Settings modal to clear token cap with one click
- Update placeholder and help text for token cap input
- Fix TypeScript cast error for config.settings
2026-04-09 12:43:38 -07:00
gsxdsm
d0cb2e7faf docs(FN-1379): add UX improvement audit report
- Add comprehensive UX audit report covering accessibility, visual design, interaction quality, and user feedback
- Update project memory with key UX findings and improvement recommendations
2026-04-09 12:42:41 -07:00
gsxdsm
3e403f8816 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
10f26b4fd8 docs(FN-1228): add Node Dashboard documentation to AGENTS.md 2026-04-09 12:37:18 -07:00
gsxdsm
d3cd02fd34 docs(FN-1379): add UX improvement audit report 2026-04-09 12:37:05 -07:00
gsxdsm
07e193b0a0 feat(FN-1228): add Node Dashboard UI with mesh topology and routes tests 2026-04-09 12:34:03 -07:00
gsxdsm
ced3ad3be6 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
850939d268 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
6328c18c9c 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
27dce00c17 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
5e38eace77 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
97c6edd105 feat(FN-1373): add tests for reconcileAllMissionFeatures and feature:updated SSE handler 2026-04-09 11:34:56 -07:00
gsxdsm
4fc2dde663 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
c9e2c3a213 feat(FN-1373): refresh selected mission detail on feature:updated SSE event 2026-04-09 11:30:58 -07:00
gsxdsm
7d1a16ffcd feat(FN-1373): add reconcileAllMissionFeatures() for startup reconciliation 2026-04-09 11:28:56 -07:00
gsxdsm
bd9612291e 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
88c0db6aac fix(FN-1371): replace placeholder MiniMax and Z.ai logos with real brand icons 2026-04-09 11:23:33 -07:00
gsxdsm
ddc574bdd7 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
f0619ed678 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
81a98c3acf 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
88396b2d05 feat(FN-1351): create useActivityLog hook with agent:log subscriptions 2026-04-09 10:31:25 -07:00
gsxdsm
977a99cee4 feat(FN-1351): create useTasks hook with TaskStore event subscriptions 2026-04-09 10:30:41 -07:00
gsxdsm
d4b1e8fdb1 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
dcbad95fd6 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
6232b38937 fix(FN-1349): add tests for resume/start button on terminated agents 2026-04-09 10:15:48 -07:00
gsxdsm
de0ffbaa7e fix(FN-1349): add resume/start button for terminated agents in AgentListModal 2026-04-09 10:12:58 -07:00
gsxdsm
e14dc3664f fix(FN-1349): add resume/start button for terminated agents in AgentDetailView 2026-04-09 10:12:07 -07:00
gsxdsm
8a6b4b8c94 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
1c6c3d1700 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
ac07be790b feat(FN-1348): export HeartbeatMonitor and HeartbeatTriggerScheduler from @fusion/engine 2026-04-09 09:42:21 -07:00
gsxdsm
32798c0e88 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
33b80d1d35 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
914e80add3 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
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