Commit Graph

128 Commits

Author SHA1 Message Date
gsxdsm
81b662b526 feat(FN-1703): merge fusion/fn-1703 2026-04-14 11:28:52 -07:00
gsxdsm
4e5067f68d feat(FN-1698): merge fusion/fn-1698 2026-04-13 16:05:12 -07:00
gsxdsm
9292681234 feat(FN-1649): remove Kimi from usage indicator flow
- Remove Kimi provider from usage tracking module
- Clean up unused Kimi-related code in usage.ts (225 lines removed)
- Remove Kimi-specific tests from usage.test.ts (686 lines removed)
- Add tests for usage routes (routes.test.ts)
- Add new usage API routes for usage data endpoints
- Fix planning resume state mismatch in PlanningModeModal
- Add PlanningModeModal tests for state consistency
2026-04-12 16:20:51 -07:00
gsxdsm
8f0bcf7f00 feat(FN-1465): merge fusion/fn-1465 2026-04-12 07:00:49 -07:00
gsxdsm
e48e034754 feat(FN-1416): merge fusion/fn-1416 2026-04-11 08:31:32 -07:00
gsxdsm
7be8c17279 feat(FN-1490): merge fusion/fn-1490 2026-04-10 21:22:50 -07:00
gsxdsm
e710963d4a feat(FN-1411): implement plugin management API routes with project scoping
- Add GET /api/plugins and GET /api/plugins/:id for listing and retrieving plugins
- Add POST /api/plugins with mode discriminator (register/install) for plugin registration and installation
- Add POST /api/plugins/:id/enable and /disable for plugin lifecycle management
- Add PATCH /api/plugins/:id/settings for updating plugin configuration
- Add DELETE /api/plugins/:id for plugin uninstallation
- All endpoints support projectId scoping via getScopedStore() for multi-project support
- Add comprehensive test suite covering all plugin routes with project context mocking
- Document plugin API endpoints in dashboard README
2026-04-10 12:34:13 -07:00
gsxdsm
4161eee6e7 feat(FN-1534): fix theme-data.css URL resolution and link reuse
- Fix URL resolution in theme-data.css so it loads correctly from index.html
- Reuse theme data link element across theme updates instead of recreating it
- Update useTheme hook to properly manage theme link lifecycle
- Add comprehensive tests for useTheme hook URL handling
- Update theming documentation with URL resolution details
2026-04-10 08:53:22 -07:00
gsxdsm
0f154496d4 feat(FN-1405): add run-audit and timeline API endpoints with typed client
- Add run-audit routes in routes.ts for starting/canceling/stream/querying agent run audits
- Add timeline routes for streaming agent run timeline events
- Create typed API client wrappers in api.ts for frontend consumption
- Add comprehensive route-level verification tests for run-audit and timeline endpoints
- Fix TypeScript errors in run-audit routes
- Document run-audit endpoints in README
2026-04-10 07:36:22 -07:00
gsxdsm
d53cb83f02 feat(FN-1529): add failing regression tests for search query propagation
Tests added:
- api-node.test.ts: q parameter forwarding in fetchRemoteNodeTasks
- useRemoteNodeData.test.ts: searchQuery propagation and refetch on change
- App.test.tsx: searchQuery passed to useRemoteNodeData in remote mode

All tests fail as expected because:
- fetchRemoteNodeTasks doesn't accept searchQuery parameter
- useRemoteNodeData doesn't forward searchQuery
- App.tsx doesn't pass searchQuery to useRemoteNodeData
2026-04-10 02:44:43 -07:00
gsxdsm
db14d9e077 feat(FN-1409): extract color-theme CSS to separate theme-data.css
- Extract all color-theme CSS variable blocks from styles.css into a dedicated theme-data.css file
- Add dynamic loading of theme-data.css for non-default color themes via useTheme hook
- Preload theme-data.css for the default theme in index.html to avoid flash
- Update status-colors-theme tests for dynamic theme loading behavior
- Update memory and README with theme-data.css file location
2026-04-10 00:07:35 -07:00
gsxdsm
6c69820141 feat(FN-1428): remove separate Commits tab for done tasks
- Update README to reflect merged Changes tab replacing Commits tab
- Remove CommitsTab component and related imports from TaskDetailModal
- Remove commit-related modal state from useModalManager
- Update TaskDetailModal tests to remove Commits tab assertions
2026-04-09 15:10:20 -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
gsxdsm
d3c5f35f3d feat(FN-1179): improve dashboard core modal mobile behavior
- Update core modal CSS for mobile breakpoints across task detail, new task, settings, and git manager flows
- Align spacing, sizing, and responsive layout rules to keep modal interactions usable on small screens
- Add core-modals-mobile tests to verify mobile-specific CSS behavior and regression coverage
- Document the modal mobile adaptations in the dashboard README for maintainability
2026-04-08 12:59:39 -07:00
gsxdsm
4eef067baa feat(FN-1141): improve dashboard mobile adaptations
- Extend mobile CSS for SettingsModal, AgentsView, ExecutorStatusBar, ActiveAgentsPanel, toast placement, and background task popovers
- Rename BackgroundTasksIndicator list/item class hooks to align with the updated responsive styling contract
- Add focused component tests covering settings, agents, and utility mobile adaptations plus key CSS media-rule assertions
- Document mobile component adaptation behavior and testing guidance in the dashboard README
2026-04-08 08:48:21 -07:00
gsxdsm
8e61566ad1 refactor(FN-1240): remove dashboard Capacitor coupling in favor of @fusion/mobile
- Remove legacy dashboard Capacitor config, scripts, and package dependencies now managed by @fusion/mobile
- Rewrite network, splash-screen, and status-bar plugin managers to use guarded global Capacitor plugin adapters without direct @capacitor imports
- Update plugin tests to stub Capacitor globals and drop obsolete capacitor config test coverage
- Simplify dashboard mobile README guidance and add a @gsxdsm/fusion patch changeset documenting the migration
2026-04-08 08:10:17 -07:00
gsxdsm
9b3e8c61db feat(FN-1139): improve mobile board touch experience
- Add mobile board overrides for smooth horizontal snap scrolling, hidden scrollbars, and fixed 280px centered columns
- Update task card mobile styles to keep key actions visible and enforce 44px touch targets for primary controls
- Adapt inline create UI for narrow columns with 16px input text, wrapped controls, and constrained dependency dropdown sizing
- Add board-mobile tests covering CSS mobile rules plus touch tap-vs-scroll behavior for TaskCard and InlineCreateCard
- Document the mobile board interaction model and touch target conventions in the dashboard README
2026-04-08 06:47:59 -07:00
gsxdsm
586d9b33b1 feat(FN-1137): improve mobile dropdown and file browser interactions
- Add viewport-aware positioning/clamping for Quick Scripts and Quick Entry dropdown menus
- Implement long-press context menu behavior in FileBrowser with iOS momentum scrolling support
- Expand dashboard CSS and component logic to stabilize mobile overlay behavior and remove unused inline WebKit style
- Add focused tests for FileBrowser, QuickScriptsDropdown, and mobile dropdown positioning plus README notes
2026-04-08 05:59:12 -07:00
gsxdsm
757942bd18 feat(FN-1108): add mobile bottom navigation to dashboard
- Export viewport utilities and add a new MobileNavBar component for core mobile navigation actions
- Integrate the bottom nav into App layout and simplify Header rendering when mobile navigation is active
- Add comprehensive mobile bottom-nav styling and spacing updates in the shared dashboard stylesheet
- Add component and CSS regression tests for mobile nav behavior, including escape-key interaction coverage
- Document the mobile bottom navigation UX and behavior in the dashboard README
2026-04-08 04:20:31 -07:00
gsxdsm
d7f49c0dbe feat(FN-1107): establish dashboard mobile CSS foundation
- Add mobile breakpoint tokens and a reusable .touch-target utility with 44px minimum hit area
- Harden mobile styles with global 16px text-entry sizing, safe-area inset padding, and overflow guards for wide content
- Keep Capacitor viewport constraints in index.html and document the shared mobile CSS conventions in the dashboard README
- Add mobile CSS foundation coverage and update input font-size tests to validate the new global selectors
2026-04-08 01:46:07 -07:00
gsxdsm
4f7ba06e18 feat(FN-1116): add Capacitor plugin managers for dashboard
- Add shared plugin types and manager modules for splash screen, status bar, and network handling
- Export plugin initialization from the dashboard entrypoint and configure Capacitor splash/status-bar defaults
- Add unit tests covering plugin initialization and each manager's behavior across supported scenarios
- Document the plugin manager architecture and add required Capacitor plugin dependencies
2026-04-08 00:01:09 -07:00
gsxdsm
1b3296d91f feat(FN-1093): add mobile build, PWA, and live reload workflow
- Optimize dashboard Vite output for mobile and include vite/client types in app typecheck
- Add PWA support with manifest, service worker, icons, and client registration hooks
- Add a mobile workspace package with Capacitor config and live-reload scripts for local development
- Add a dedicated GitHub Actions mobile pipeline and update mobile workflow documentation
- Add dashboard tests for build output, mobile scripts, and PWA asset coverage
2026-04-07 23:25:34 -07:00
gsxdsm
8a61f908fc feat(FN-1090): add Capacitor mobile setup for dashboard
- Add Capacitor dependencies and dashboard scripts for sync, open, run, and mobile preparation
- Add a typed dashboard capacitor.config.ts with dist/client webDir and FUSION_BACKEND_URL server override
- Add Vitest coverage for Capacitor config shape, app identity, webDir, cleartext mode, and env URL behavior
- Ignore generated iOS/Android platform directories and document the end-to-end mobile workflow in the dashboard README
2026-04-07 18:52:07 -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
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
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
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
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
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
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
f0cd1ca9e3 feat(FN-890): tokenized executor footer state backgrounds and accents
- Replace hardcoded hex colors in executor status bar CSS with CSS custom properties for state backgrounds and accents
- Add tests covering theme-aware CSS variable overrides for all executor states (idle, running, failed, etc.)
- Document the executor status bar theming in the dashboard README
2026-04-04 16:39:55 -07:00
gsxdsm
9b3ff76554 feat(FN-887): widen model menu on mobile viewports
- Widen quick-entry Models menu to fill viewport on mobile (≤640px) with side padding
- Keep menu viewport-clamped to prevent horizontal crowding on small screens
- Update dashboard README with mobile model menu documentation
2026-04-04 16:31:30 -07:00
gsxdsm
b5750f3311 fix(FN-880): prevent horizontal scroll in model dropdown
- Add overflow-x: hidden to dropdown container to prevent unwanted horizontal scrollbar
- Add min-width: 0 to flex children for proper text truncation
- Add tests for CustomModelDropdown overflow behavior
- Document the CSS fix in dashboard README
2026-04-04 16:21:53 -07:00
gsxdsm
3d1cfda517 feat(FN-884): update TaskDetailModal tests for Logs tab and Commits tab structure
- Update tab navigation tests to reflect Logs subview model and conditional tab assertions
- Fix tab nomenclature in step progress tests (Agent → Logs)
- Update TaskDetails docs to reflect Commits tab and Logs subview structure
- Update README references for dashboard and root
2026-04-04 14:59:23 -07:00
gsxdsm
fb5b97e134 feat(FN-812): add first-run model onboarding modal and API key provider support
- Add ModelOnboardingModal component with provider selection, API key input, and model verification flow
- Add API key authentication support to SettingsModal with clear-key functionality
- Trigger onboarding from App.tsx when modelOnboardingComplete setting is false
- Add comprehensive tests for ModelOnboardingModal and SettingsModal authentication
- Document model onboarding flow and API key auth in AGENTS.md and README
- Add CSS styles for onboarding modal, provider cards, and auth section
2026-04-04 14:44:06 -07:00
gsxdsm
039633ab9e feat(FN-822): add visible stuck indicators on board and list with unified detection
- Unify stuck-task derivation using project settings (taskStuckTimeoutMs) instead of hardcoded values
- Thread taskStuckTimeoutMs through Board, Column, WorktreeGroup, and TaskCard components
- Add visual stuck indicator with pulsing animation on in-progress task cards
- Resolve merge conflicts with isSearchActive prop from main (both props coexist)
- Add taskStuck utility unit tests and update README with stuck indicator docs
2026-04-04 11:31:22 -07:00
gsxdsm
10e86d63f7 feat(FN-881): add bounded bootstrap timeouts and xterm init watchdog
- Add bounded bootstrap timeouts with stale-result guards to useTerminalSessions hook
- Implement xterm init watchdog with distinct recovery path for terminal initialization failures
- Refactor TerminalModal component with improved error handling and timeout recovery
- Add comprehensive test suites for useTerminalSessions hook and TerminalModal component
- Update dashboard README with watchdog documentation
2026-04-04 10:48:23 -07:00
gsxdsm
3ab2af1e6a refactor(FN-874): align TaskDetailModal tests and docs with unified Logs tab
- Rewrite TaskDetailModal tests to reflect the unified Logs tab (agent log + activity log merged)
- Update test assertions to match new tab structure and component behavior
- Update README to describe the unified Logs tab layout
2026-04-04 10:03:50 -07:00
gsxdsm
f882c5aed9 feat(FN-877): add dedicated changed-files list item styling with button reset and theme variables
- Add CSS styles for changed-files list items with button reset, layout, hover/focus states, and theme-aware colors
- Add regression tests for ChangedFilesModal structure and styling (file type indicators, click-to-open, checkbox behavior)
- Update dashboard README with notes on changed-files list styling conventions
2026-04-04 08:27:57 -07:00
gsxdsm
e75b0ce5a7 fix(FN-873): replace hardcoded error color with theme-aware CSS variable in ActivityFeed
- Replace var(--error) with var(--color-error) in ActivityFeed TYPE_CONFIG for consistency with theme system
- Add unit tests for theme-aware color variables in TYPE_CONFIG
- Add integration test verifying ActivityFeed renders error colors correctly
- Document theme-aware styling note in dashboard README Activity Log section
2026-04-04 08:11:43 -07:00
gsxdsm
bc774566c0 feat(FN-866): add theme-aware status styling for changed files and refactor stuck-task detector
- Add theme-aware CSS classes for changed-file status badges (added, modified, deleted, renamed)
- Update ChangedFilesModal, CommitDiffTab, and TaskChangesTab to use theme-aware status classes
- Add comprehensive tests for ChangedFilesModal and TaskChangesTab status styling
- Refactor stuck-task-detector to extract StuckTaskConfig and simplify detection logic
- Clean up 370+ lines of redundant test code in stuck-task-detector tests
- Update dashboard README with theme-aware styling notes
- Pass throughChangedFiles option in executor for better diff handling
2026-04-04 07:53:40 -07:00
gsxdsm
158002c6d6 feat(FN-871): implement deterministic fuzzy matching for model filter
- Rewrite filterModels utility with deterministic fuzzy matching (no probabilistic ranking)
- Extract model filtering logic from TaskDetailModal into dedicated modelFilter.ts utility
- Add comprehensive regression test suite for fuzzy matching edge cases
- Remove inline model filter tests from TaskDetailModal test file
- Clean up unused CSS styles related to old model filter UI
- Document fuzzy model search behavior in dashboard README
2026-04-04 07:36:07 -07:00
gsxdsm
6c3f540e0e fix(FN-868): add terminal bootstrap error handling with retry and improve workflow step manager
- Add bootstrap error state and retry logic to useTerminalSessions hook to prevent indefinite 'Starting terminal' hang
- Add error/retry UI states in TerminalModal component with CSS styling
- Add tests for useTerminalSessions bootstrap error and retry behavior
- Refactor WorkflowStepManager with template support and improved UX
- Extract CSS from inline styles to stylesheet for terminal and workflow components
- Document terminal startup error handling and non-hanging guarantee in dashboard README
2026-04-04 07:11:40 -07:00
gsxdsm
4f80480a44 feat(FN-867): add task-scoped diff base via baseCommitSha
- Introduce baseCommitSha on sessions for task-scoped file diffs independent of shared worktrees
- Add /api/sessions/:id/files and /api/sessions/:id/file-diffs routes using baseCommitSha
- Update TerminalModal to consume task-scoped file list and diff endpoints
- Add regression tests for shared worktree scenario (multiple tasks in same worktree)
- Expand route tests for file diffs and session files with edge cases
- Clean up stale TerminalModal test helpers and simplify diff display styles
- Update README and route documentation for task-scoped diffing
2026-04-04 06:43:45 -07:00
gsxdsm
dd4f0994ae feat(FN-864): add delete action for idle and terminated agents
- Expose delete action on idle and terminated agents in AgentsView and AgentListModal
- Update AgentDetailView to support delete with confirmation
- Update agent-related documentation in README.md and dashboard README
- Add/update tests for AgentDetailView, AgentListModal, and AgentsView delete behavior
- Remove outdated TaskDetailModal test
2026-04-04 06:14:35 -07:00
gsxdsm
904dfcbd9a feat(FN-863): tokenize create-row input and select styling in Agents View
- Add tokenized input styling to AgentListModal create-row with themed placeholder and chip-like tokens
- Add custom select dropdown styling to AgentsView with color-matched appearance
- Add comprehensive tests for both AgentListModal and AgentsView token/select behavior
- Update Agents View README with tokenized input/select styling documentation
2026-04-04 06:01:35 -07:00
gsxdsm
911b7bd0c7 feat(FN-858): add click-to-diff in Remotes tab commit lists
- Add clickable commit rows in GitManagerModal Remotes tab that open inline diff view
- Add diff viewer with syntax highlighting and file-level stats
- Add CSS styles for diff view, commit detail, and click-to-diff interactions
- Add comprehensive tests for click-to-diff behavior in Remotes tab
- Clean up unused types and store methods (diffFile, getCommitDiff, DiffOptions)
- Update dashboard README with inline commit diff feature documentation
2026-04-04 05:50:59 -07:00
gsxdsm
0f02334ed9 refactor(FN-851): remove expand control from TaskCard component
- Remove expand/collapse toggle and related state from TaskCard component
- Delete expand-related CSS styles from styles.css
- Remove expand control tests from TaskCard test suite
- Clean up unused expand-related props and handlers
2026-04-04 05:37:51 -07:00
gsxdsm
226ad37cfa feat(FN-849): normalize agent UI theme consistency and simplify workflow step API
- Fix AgentListModal create-row and control styling to use token-based design tokens
- Normalize AgentDetailView theme consistency with shared token-based styling
- Simplify WorkflowStepManager by removing server-side CRUD, using local state only
- Remove unused store methods and types (workflowStep CRUD) from core package
- Remove server-side workflow step API routes and their tests
- Update dashboard README with shared token-based styling notes
- Add tests for AgentDetailView and extend AgentListModal tests
2026-04-04 05:33:23 -07:00