Commit Graph

5201 Commits

Author SHA1 Message Date
gsxdsm
63d5cdbce4 fix(FN-765): harden dashboard startup probe and document Bun standalone limitation
- Harden dashboard startup probe to handle exit race condition in build-exe tests
- Add STANDALONE.md documenting Bun's lack of node:sqlite support in standalone builds
- Refactor build-exe tests with improved wait/retry logic for process lifecycle
- Reduce flakiness in standalone executable integration tests
2026-04-02 22:41:42 -07:00
gsxdsm
ca7c2ca0ec fix(FN-766): load pi extension providers for engine 2026-04-02 22:18:47 -07:00
gsxdsm
fb9827b700 fix(FN-745): improve fallback model recovery 2026-04-02 21:50:41 -07:00
gsxdsm
70ef237bc9 feat(FN-752): wire up model favorites across dashboard components
- Add favorite model selection to QuickEntryBox and InlineCreateCard components
- Wire up model favorites in TaskForm and TaskDetailModal
- Add model favorites management UI to SettingsModal
- Add tests for favorites in InlineCreateCard, QuickEntryBox, TaskForm, ListView, and SettingsModal
- Remove unused CommitDiffTab component and related tests
2026-04-02 20:26:35 -07:00
gsxdsm
536d2402e3 feat(FN-751): add Commits tab with diff viewer to TaskDetailModal
- Create CommitDiffTab component with commit list and inline diff display
- Integrate Commits tab into TaskDetailModal with conditional visibility
- Add comprehensive tests for CommitDiffTab rendering, selection, and diff display
- Add TaskDetailModal tests for tab visibility based on task PR info
- Remove stale changeset and unused store test code
2026-04-02 20:22:11 -07:00
gsxdsm
b32a597448 fix(FN-743): prevent duplicate comments from steeringComments merge in rowToTask
- Stop merging steeringComments into comments array in rowToTask to prevent duplication
- Add regression tests verifying comments and steeringComments remain separate
- Add changeset for the comments deduplication fix
2026-04-02 20:17:01 -07:00
gsxdsm
5db5528b4c fix(FN-745): fall back to CLI when Claude token refresh fails
- Replace hard error returns with fetchClaudeUsageViaCli() fallback when token refresh fails
- Cover three failure paths: refresh failure, no refresh token, exhausted retry attempts
- Add comprehensive tests for all token expiry and refresh fallback scenarios
2026-04-02 20:05:49 -07:00
gsxdsm
c82b997402 feat(FN-742): add describeModel helper and log model in agent creation sites
- Add describeModel() helper in pi.ts to format provider/model info for logging
- Log resolved model details in executor, reviewer, and triage agent creation
- Update executor and reviewer to call describeModel before session start
- Add unit tests for describeModel covering all input combinations
- Fix test mocks to account for new describeModel dependency
2026-04-02 19:52:35 -07:00
gsxdsm
f72924c7ab feat(FN-734): extract reusable TaskForm component and integrate into modals
- Extract shared TaskForm component from NewTaskModal with all form fields and validation logic
- Integrate TaskForm into NewTaskModal, replacing duplicated form code
- Integrate TaskForm into TaskDetailModal edit mode for consistent editing experience
- Add comprehensive tests for TaskForm, Header, and updated modal components
- Clean up removed/obsolete tests and fix SSE, settings, and comment components
2026-04-02 19:40:21 -07:00
gsxdsm
5c6a574b35 fix(FN-732): fix dashboard real-time updates and SSE pipeline
- Fix SSE event relay to properly broadcast task store events to dashboard clients
- Use named heartbeat events instead of SSE comments for reliable keep-alive
- Add missing event emission in core task store for state changes
- Add comprehensive tests for SSE pipeline, event emission, and UI hooks
- Remove broken useTerminal hook and AgentLogViewer tests, fix flaky test suites
2026-04-02 19:34:35 -07:00
gsxdsm
18e558f1d5 fix(FN-737): prevent horizontal scrolling in agent log panel
- Add overflow-x: hidden and word-break constraints to AgentLogViewer
- Apply overflow-hidden to pre/code blocks and ANSI span containers
- Add unit tests verifying overflow constraint styles on log elements
2026-04-02 19:33:12 -07:00
gsxdsm
cd72ab867a refactor(FN-727): replace inline model dropdown with ModelSelectionModal
- Replace inline model dropdown in InlineCreateCard with modal-based ModelSelectionModal
- Add model selection button to Header and SettingsModal for unified access
- Add comment threading support in TaskComments component
- Remove unused useTerminal hook and usage tracking module
- Update tests for modal-based model selection and new components
2026-04-02 19:18:46 -07:00
gsxdsm
b9e0888432 feat(FN-735): remove comment mode toggle and unify to steering comments
- Remove useSteeringComments toggle from SettingsModal and task comment UI
- Unify TaskComments to always use the steering comment path
- Add Help button in Header linking to documentation
- Update SettingsModal and TaskComments tests for unified comment behavior
- Clean up obsolete dual-mode comment tests
2026-04-02 19:17:45 -07:00
gsxdsm
78492c617c feat(FN-731): consolidate model settings into single Models section
- Merge separate Model and Model Presets sections into unified Models section in SettingsModal
- Add Models settings button to Header for quick access
- Remove unused useTerminal hook and usage tracking code
- Update SettingsModal and Header tests for consolidated UI
- Simplify usage.ts by removing dead export and test coverage
2026-04-02 19:17:25 -07:00
gsxdsm
b83803ba58 feat(FN-733): remove redundant Manage Agents button from header
- Remove Manage Agents button from Header component (accessible via sidebar)
- Remove associated onClick handler and prop threading from App.tsx
- Remove Header test cases for the deleted button
- Remove unused useTerminal hook and its tests
2026-04-02 19:16:28 -07:00
gsxdsm
76913c24bc fix(FN-730): add missing ping handler in useTerminal WebSocket hook
- Add ping/pong heartbeat handler to useTerminal WebSocket hook
- Add tests for WebSocket heartbeat ping/pong behavior
- Remove unused usage tracking module and its tests
- Simplify usage.ts by removing dead code
2026-04-02 19:12:24 -07:00
gsxdsm
52c12f6b23 fix(FN-728): fix token refresh endpoint, content-type, and client_id
- Fix refresh token request to use correct endpoint URL
- Set proper content-type header for token refresh requests
- Include client_id in refresh token payload
- Add tests verifying correct endpoint, content-type, and client_id in refresh flow
2026-04-02 19:11:07 -07:00
gsxdsm
66f75b74d8 fix(FN-725): sync isExpanded and isDisclosureExpanded states in QuickEntryBox
- Fix state desync between isExpanded and isDisclosureExpanded in QuickEntryBox component
- Ensure both states update together to prevent UI inconsistencies
- Add regression tests for state synchronization scenarios
- Add 72 lines of new test coverage in QuickEntryBox.test.tsx
2026-04-02 19:04:28 -07:00
gsxdsm
0bcbc22dfe fix(FN-724): implement OAuth token refresh for expired Claude tokens
- Add token expiry detection with 60-second buffer before API calls
- Implement refresh_token grant flow against Anthropic OAuth endpoint
- Cache refreshed access tokens in-memory only (never written to disk)
- Retry token refresh on 401/403 responses before failing
- Add comprehensive tests for token refresh, expiry, and error scenarios
2026-04-02 18:54:44 -07:00
gsxdsm
4f45ed836f feat(FN-721): default QuickEntryBox to collapsed state
- Change QuickEntryBox initial state from expanded to collapsed
- Remove unused clearTasks/refreshTasks exports from useTasks hook
- Update QuickEntryBox tests for collapsed-by-default behavior
- Remove obsolete useTasks clearTasks/refreshTasks tests
2026-04-02 18:48:41 -07:00
gsxdsm
7fc187d9e6 feat(FN-723): add optimistic state insertion for createTask and duplicateTask
- Insert new tasks at correct sorted position in useTasks cache immediately on create/duplicate
- Compute insertIndex based on columnMovedAt/createdAt sorting to maintain board order
- Add comprehensive tests for optimistic insertion ordering in useTasks hook
- Cover edge cases: empty columns, single-item columns, and multi-item sorted columns
2026-04-02 18:47:38 -07:00
gsxdsm
f9363513c6 fix(FN-714): increase Claude provider timeout to 75s and improve error diagnostics
- Increase Claude fetch timeout from 10s to 75s to accommodate retries and CLI fallback
- Include response body snippet in HTTP error messages for better debugging
- Improve Claude CLI timeout error message with actionable guidance
- Export withTimeout and CLAUDE_FETCH_TIMEOUT_MS for testability
- Add comprehensive tests for withTimeout, timeout constant, and error diagnostics
2026-04-02 18:40:24 -07:00
gsxdsm
d063d3433c test(FN-712): add regression test for modal overlay 'open' class visibility
- Add ScriptsModal test verifying overlay gets 'open' class when modal is shown
- Ensures modal visibility state is correctly reflected in DOM class list
2026-04-02 18:37:08 -07:00
gsxdsm
0509dc4e90 fix(FN-711): add missing 'open' class to modal overlays
- Add 'open' class to modal overlays in AgentListModal, MissionManager, ScriptsModal, and WorkflowStepManager
- Add Header component tests for overflow menu callbacks and modal visibility
2026-04-02 18:34:48 -07:00
gsxdsm
371ec764b8 fix(FN-000): harden project migration runtime 2026-04-02 17:55:25 -07:00
gsxdsm
1f8465342c fix(FN-000): scope dashboard project flows 2026-04-02 17:51:04 -07:00
gsxdsm
86f8653b8f fix(FN-710): fix addSteeringComment to persist comments and correct type usage
- Fix addSteeringComment to skip auto-refinement and write directly to steeringComments array
- Update formatCommentForInjection to accept SteeringComment type instead of raw string
- Export SteeringComment type from @fusion/core for executor usage
- Add tests verifying steering comments are persisted to task store
- Fix executor import to use exported SteeringComment type
2026-04-02 14:17:19 -07:00
gsxdsm
321feb0b8d feat(FN-709): store branch name on tasks for reliable merge recovery
- Add 'branch' field to Task and ArchivedTaskEntry types with DB migration
- Executor stores branch name on task after worktree assignment
- Merger reads branch from task metadata instead of relying on worktree state
- Implement non-destructive conflict recovery in prepareForTask with reset/clean
- Add tests for branch storage, merger branch reading, and worktree recovery
2026-04-02 14:08:31 -07:00
gsxdsm
932a45a862 style(FN-698): audit and clean up dashboard styles and engine code
- Systematic component review of Header, PrSection, TaskComments, and MergeDetails
- Design token audit replacing hardcoded colors/spacing with CSS variables
- Inline style audit migrating inline styles to stylesheet classes
- Remove dead code: rate-limit-retry module and unused test files
- Consolidate and reorganize styles.css with improved token usage
2026-04-02 14:04:46 -07:00
gsxdsm
96fea75510 feat(FN-707): hide project selector on mobile and add to overflow menu
- Hide ProjectSelector on mobile via hidden className and CSS media query
- Add project selector as menu item in mobile overflow menu
- Add CSS safety net (max-width: 767px) to ensure selector stays hidden
- Add comprehensive tests for mobile project selector visibility behavior
2026-04-02 13:53:00 -07:00
gsxdsm
c1ff739a87 fix(FN-706): add branch conflict recovery and pool fallthrough in executor
- Add branch conflict recovery to worktree-pool prepareForTask when checkout fails
- Add fallthrough in executor to create fresh worktree when pool preparation fails
- Add tests for branch conflict recovery in worktree-pool
- Add tests for executor fallthrough on pool preparation failure
2026-04-02 13:48:08 -07:00
gsxdsm
281fd206ba feat(FN-705): add rate-limit retry with exponential backoff for AI agents
- Add rate-limit retry utility with exponential backoff, jitter, and configurable limits
- Integrate retry logic into executor, triage, and merger agent sessions
- Export retryOnRateLimit from engine package index
- Remove unused DirectoryPicker component, stale CSS, and dead dashboard routes
- Update SetupWizardModal and usage tests to reflect cleanup
2026-04-02 13:39:04 -07:00
gsxdsm
cba40636da fix(FN-708): remove unused multi-project UI code and usage-limit references
- Remove DirectoryPicker component and its tests (unused multi-project UI)
- Simplify SetupWizardModal by removing directory picker integration
- Remove unused multi-project API endpoints, SSE handlers, and route definitions
- Clean up usage-limit detector and related engine references (executor, scheduler, triage)
- Fix 6 merge conflicts in usage.test.ts and update tests for simplified usage tracking
2026-04-02 13:31:43 -07:00
gsxdsm
6b0ee4969f feat(FN-694): add DirectoryPicker component and redesign SetupWizardModal
- Add browse-directory API endpoint and client for native folder selection
- Create DirectoryPicker component with manual input, browse button, and validation
- Redesign SetupWizardModal to use DirectoryPicker for project path selection
- Add comprehensive tests for DirectoryPicker and SetupWizardModal
- Remove bundled fusion skill and related extension/sync code from CLI package
2026-04-02 13:30:08 -07:00
gsxdsm
e6dc02354b fix(FN-703): fix overly broad usage limit pattern and add transient error retry
- Narrow 'insufficient' usage-limit regex to require quota/credit/balance/fund context
- Add transient error detection in executor and triage to retry instead of failing
- Improve scheduler pause/resume logging with actionable messages and resume confirmation
- Add SSE active connection counter for observability
- Add duplicate usage-limit pause suppression logging
2026-04-02 13:29:48 -07:00
gsxdsm
07d7c13ef0 feat(KB-328): bundle Fusion skill with CLI package for agent interoperability
- Add bundled Fusion skill at packages/cli/skill/fusion/ with SKILL.md and reference docs
- Include workflow guides for task lifecycle, specifications, dashboard CLI, and task management
- Add reference docs for CLI commands, extension tools, capabilities, best practices, and patterns
- Add postinstall script to sync skill into ~/.pi/agent/skills/fusion on install
- Add skill-sync test coverage and changeset for minor version bump
2026-04-02 13:26:08 -07:00
gsxdsm
356d0ab543 feat(FN-701): add Missions to mobile overflow menu
- Add Missions link to mobile header overflow menu in Header.tsx
- Remove deprecated task_update tool from pi extension
- Remove task_update tool tests from extension test suite
- Remove stale add-task-update-tool changeset
- Fix usage.ts formatting for consistency
2026-04-02 13:24:42 -07:00
gsxdsm
92071e4c45 fix(FN-704): increase Claude CLI timeout to 60 seconds
- Increase Claude CLI usage fetch timeout from 30s to 60s
- Improve timeout error message with actionable context
2026-04-02 13:24:22 -07:00
gsxdsm
06ffd8e35e feat(FN-702): add kb_task_update tool to pi extension
- Add kb_task_update tool enabling AI agents to update task title, size, and column
- Add extension tests for the new kb_task_update tool
- Clean up unused CSS styles, dead test code, and stale route handlers
- Include changeset for the new tool addition
2026-04-02 13:22:05 -07:00
gsxdsm
2052f93294 fix(FN-700): remove duplicate mobile overflow menu buttons and clean up dead code
- Remove duplicate Terminal and Schedules buttons from mobile overflow menu in Header
- Remove unused CSS styles for mobile overflow menu items
- Clean up dead/duplicate route handler code in routes.ts
- Simplify TaskCard script button rendering logic
- Add tests for mobile Scripts button visibility in Header
2026-04-02 13:21:46 -07:00
gsxdsm
b2044f9d82 feat(FN-699): auto-expand steps for re-triaged tasks with existing progress
- Auto-expand step list on TaskCard when triage tasks have done/skipped steps
- Update existing triage test to use pending steps for fresh task scenario
- Add tests for re-triaged tasks with completed and skipped steps
2026-04-02 13:20:22 -07:00
gsxdsm
dcf18c32ee fix(FN-696): compute task counts from task store in health endpoint
- Compute live activeTaskCount, inFlightAgentCount, and totalTasksCompleted from the task store when the requested project matches the current dashboard
- Fall through to cached central DB health data for remote projects
- Add project existence check before health lookup, returning proper 404s
- Remove unused CSS styles (20 lines deleted from styles.css)
2026-04-02 13:19:24 -07:00
gsxdsm
e7470147a7 feat(FN-697): style the Back to All Projects header button
- Add hover/active states with smooth color transitions
- Style icon and text elements for visual consistency
- Add subtle background and border-radius on hover
2026-04-02 13:18:50 -07:00
gsxdsm
a0fb5c40f4 test(FN-695): add assertion for updateProject call in addProject test 2026-04-02 10:45:51 -07:00
gsxdsm
4feaf8b43c feat(FN-684): complete Step 8 — add Executor Status Bar documentation 2026-04-02 10:45:33 -07:00
gsxdsm
e979111a28 fix(FN-695): transition project status from initializing to active in addProject() 2026-04-02 10:45:28 -07:00
gsxdsm
2bc07fb977 feat(FN-684): complete Step 6 — integrate ExecutorStatusBar into App 2026-04-02 10:44:15 -07:00
gsxdsm
bafd9499ca feat(FN-684): complete Step 5 — add /api/executor/stats endpoint 2026-04-02 10:43:47 -07:00
gsxdsm
7e4cd09c86 feat(FN-684): complete Step 4 — add executor status bar CSS styles 2026-04-02 10:43:26 -07:00
gsxdsm
7fd8144c62 feat(FN-684): complete Step 3 — create ExecutorStatusBar component with tests 2026-04-02 10:42:57 -07:00