Commit Graph

7871 Commits

Author SHA1 Message Date
gsxdsm
a4ac2283a8 feat(KB-655): change hide done tasks default to true
- Change hideDoneTasks default from false to true in ListView
- Done and archived tasks are now hidden by default in list view
- Update tests to reflect new default behavior and task ID consistency
2026-03-31 23:25:19 -07:00
gsxdsm
f0a68a4553 feat(KB-650): add refresh-on-open effect to usage modal
- Add refresh effect when usage modal opens to get latest usage data\n- Include changeset for usage modal refresh feature
2026-03-31 23:22:04 -07:00
gsxdsm
07e471db5c feat(KB-648): enable parallel test execution and optimize test performance
- Enable parallel file execution in vitest configs for core, engine, CLI, and dashboard packages
- Optimize backup tests with fake timers for faster, deterministic execution
- Fix SettingsModal temporal dead zone by moving declaration before useCallback
- Fix engine tests with missing git branch delete mock and correct branch names
- Fix git worktree list mock and mission store mock in CLI tests
- Add changeset documenting test optimization patterns
- Update AGENTS.md with test optimization best practices
2026-03-31 23:19:52 -07:00
gsxdsm
be373a396b feat(KB-654): add dynamic viewport height for mobile board layout
- Add 100dvh fallback after 100vh for proper mobile browser chrome handling
- Fixes board overflow issues on mobile Safari/Chrome where dynamic toolbars affect viewport
- Maintains backward compatibility with 100vh for older browsers
2026-03-31 23:19:42 -07:00
gsxdsm
4b39bf1f4c feat(KB-618): add multi-project support to dashboard
- Add project API methods and types (fetchProjects, registerProject, fetchProjectHealth, etc.)
- Add ProjectCard component with health metrics, status badges, and pause/resume actions
- Add server-side project management routes for multi-project orchestration
- Add ActivityFeed component with grouped entries and project badges
- Add SetupWizard component with 5-step project creation flow
- Fix TypeScript errors in server routes for listProjects and getGlobalConcurrencyState
2026-03-31 23:19:03 -07:00
gsxdsm
fa9b277c32 fix: prevent SQLite corruption by checkpointing WAL and closing DB on shutdown
The database was never properly closed on SIGINT/SIGTERM — WAL files were left
in a partially-written state causing "database disk image is malformed" errors.
Adds WAL checkpoint on close, synchronous=NORMAL pragma, SIGTERM handlers, and
a store.close() method that flushes all pending writes before exit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 23:15:30 -07:00
gsxdsm
fc37015f79 feat(FN-666): implement retry logic with exponential backoff for Claude usage API
- Add retry logic with exponential backoff to fetchClaudeUsage()

- Add unit tests for retry behavior with mocked fetch

- Add inline documentation explaining retry behavior

- Handle transient network failures and 5xx errors gracefully
2026-03-31 22:58:53 -07:00
gsxdsm
4ff25d800e feat(KB-617): add Changes tab to task detail modal for viewing file diffs
- Add baseCommitSha field to tasks for diff computation baseline
- Track modified files in executor and store in database
- Add /api/tasks/:id/diff endpoint to serve unified diffs
- Add getTaskDiff() API client function in dashboard
- Create TaskChangesTab component with file list and diff viewer
- Integrate Changes tab into TaskDetailModal with proper styling
- Add changeset for the new diff viewer feature
2026-03-31 22:58:38 -07:00
gsxdsm
24f68435f6 feat(KB-660): fix Git Manager modal rendering and responsive layout
- Fix Git Manager modal CSS layout and mobile responsive styles
- Add changeset for Git Manager modal fix
- Remove obsolete quick-entry-auto-expand changeset
- Clean up QuickEntryBox component styling
- Remove tests for removed auto-expand functionality
2026-03-31 22:58:07 -07:00
gsxdsm
9a805281d3 feat(KB-656): add autoExpand prop to QuickEntryBox and disable in list view
- Add autoExpand prop to QuickEntryBox component (defaults to true)
- Disable auto-expand in list view to reduce visual clutter
- Add tests for autoExpand={false} behavior
- Add changeset for the quick entry auto-expand change
- Fix duplicate variable in QuickEntryBox component
- Remove unused imports from useTasks hook
2026-03-31 22:55:40 -07:00
gsxdsm
7bb52a8985 feat(KB-658): reduce ID column width and improve test performance
- Reduce ID column width in list view for better space utilization
- Remove duplicate variable declaration in SettingsModal
- Resolve merge conflict in types.ts
- Speed up tests with increased file parallelism across packages
- Refactor backup tests to use fake timers for faster execution
- Clean up styles and test configurations
2026-03-31 22:55:06 -07:00
gsxdsm
d42ee113f8 feat(KB-648): optimize test execution speed across all packages
- Enable parallel file execution in core, engine, CLI, and dashboard packages via vitest.config.ts

- Optimize backup tests using fake timers instead of real setTimeout delays

- Add test optimization patterns to AGENTS.md documentation (fake timers, parallel execution)

- Add changeset documenting the test speed improvements

- Include test fixes for SettingsModal, engine tests, and git worktree mocks from KB-637
2026-03-31 22:52:55 -07:00
gsxdsm
3dec4b4497 feat(KB-662): add visibility change listener with debouncing to useTasks hook
- Add visibilitychange event listener to refresh tasks when tab becomes visible
- Implement 1-second debounce to prevent excessive fetch requests
- Add comprehensive tests for visibility change behavior and debouncing
- Gracefully handle fetch errors during visibility changes
2026-03-31 22:50:27 -07:00
gsxdsm
4633f77083 test(KB-662): add tests for visibility change listener with debouncing 2026-03-31 22:50:09 -07:00
gsxdsm
6e5e6ebcc9 feat(KB-503): Step 4 — add --project flag support to key task commands
- Import getStore from project-context.js
- Update runTaskCreate() to accept projectName parameter
- Update runTaskList() to accept projectName parameter
- Update runTaskShow() to accept projectName parameter
- Pattern established for remaining task commands (TODO)
2026-03-31 22:46:42 -07:00
gsxdsm
6adc9b3640 feat(KB-662): complete Step 1 — Add visibility change listener with debouncing 2026-03-31 22:46:38 -07:00
gsxdsm
6a3e6a2f3d feat(KB-655): change hideDoneTasks default to true
- Change default value of hideDoneTasks from false to true in ListView component

- Done tasks are now hidden by default when no localStorage preference exists

- Update ListView tests to account for new default behavior

- Add localStorage.clear() in test beforeEach hooks for clean state

- Add Show Done button clicks in tests that need to interact with done tasks
2026-03-31 22:46:25 -07:00
gsxdsm
1f9ca33702 feat(KB-503): complete Step 3 — CLI argument parsing updates
- Add project command imports to bin.ts
- Update HELP text with project subcommands and --project flag
- Add project subcommand routing (list, add, remove, show, set-default, detect)
- Parse --isolation and --force flags for project add/remove
- All project command tests passing (6/6)
2026-03-31 22:46:17 -07:00
gsxdsm
a69875a780 fix(KB-654): resolve board mobile overflow with dynamic viewport units
- Add 100dvh fallback for board height to handle mobile browser chrome
- Keep 100vh as fallback for older browsers
- Create patch changeset for @gsxdsm/fusion package
2026-03-31 22:46:11 -07:00
gsxdsm
10829e41d9 feat(KB-618): add multi-project dashboard support
- Add project API methods and types for multi-project support
- Add server-side project management routes for multi-project support
- Update test coverage for dashboard API and routes
2026-03-31 22:45:55 -07:00
gsxdsm
5afb4040dc Merge origin/main into main 2026-03-31 22:45:15 -07:00
gsxdsm
4a3fe64758 fix(KB-503): remove duplicate getDefaultProject function
- Import getDefaultProject from project-context.js instead of duplicating
- Remove local getDefaultProject implementation in project.ts
- All 6 tests still passing
2026-03-31 22:43:59 -07:00
gsxdsm
cc88db5d62 fix(KB-503): fix process.exit mock in project tests
- Add proper process.exit mock that throws error for testability
- All 6 project command tests now passing
2026-03-31 22:42:57 -07:00
gsxdsm
35c0a21d8b feat(KB-653): add board title truncation with tooltip
- Truncate long board titles to 140 characters with ellipsis in TaskCard\n- Add hover tooltip to display full title when truncated\n- Add comprehensive test cases for 140 character truncation edge cases\n- Include changeset for board title truncation fix
2026-03-31 22:42:09 -07:00
gsxdsm
2c62e1d90e feat(KB-652): add openai-codex provider alias
- Add 'openai-codex' provider alias mapped to OpenAI icon with green color (#10a37f)

- ProviderIcon component now recognizes openai-codex as valid provider

- Add comprehensive test coverage for openai-codex provider icon rendering

- Tests cover icon presence, accessibility label, color styling, and SVG fill attributes
2026-03-31 22:41:58 -07:00
gsxdsm
e80441e599 feat(KB-503): complete Step 2 — project subcommand implementation
- Create project.ts with all project commands: list, add, remove, show, set-default, detect
- Implement runProjectList() with default project highlighting
- Implement runProjectAdd() with validation for name, path, isolation mode
- Implement runProjectRemove() with confirmation prompt and --force flag
- Implement runProjectShow() with project details and health info
- Implement runProjectSetDefault() to set default project
- Implement runProjectDetect() to show project from CWD
- Add project.test.ts with basic function export tests
2026-03-31 22:41:44 -07:00
gsxdsm
15e451cd74 fix(KB-637): test fixes and code cleanup
- Fix executor test worktree recovery assertions to use exact command matching
- Fix routes.test.ts mission store mock and git worktree list mock
- Fix SettingsModal temporal dead zone by moving activeSectionScope declaration
- Remove incomplete project-context feature from CLI
- Clean up AGENTS.md and README documentation
2026-03-31 22:41:38 -07:00
gsxdsm
e3055f8d93 fix(KB-503): address code review feedback for Step 1
- Add optional globalDir parameter to resolveProject(), getDefaultProject(),
  setDefaultProject(), and clearDefaultProject() for test isolation
- Remove ESLint suppression by using void operator for intentionally unused var
- Update all tests to use isolated globalDir parameter
- Complete tests for default project resolution
2026-03-31 22:38:56 -07:00
gsxdsm
1ac6ebf2bd feat(KB-503): complete Step 1 — project context resolution utilities
- Add defaultProjectId field to GlobalSettings type
- Create project-context.ts with resolveProject(), detectProjectFromCwd()
- Implement getDefaultProject(), setDefaultProject(), clearDefaultProject()
- Add TaskStore caching with getStoreForProject() and clearStoreCache()
- Add formatProjectLine() for CLI display
- Create comprehensive tests (7 tests passing)

Project resolution order: --project flag → default project → CWD detection
2026-03-31 22:37:26 -07:00
gsxdsm
6307fea203 feat(KB-501): implement multi-project runtime architecture with HybridExecutor
- Add ProjectRuntime interface with InProcessRuntime and ChildProcessRuntime implementations
- Implement HybridExecutor for multi-project task orchestration
- Add IPC protocol for host-worker communication in child-process mode
- Implement health monitoring with automatic restart for child processes
- Add comprehensive tests for hybrid-executor and project-runtime
- Update AGENTS.md with multi-project runtime documentation
- Add changeset for hybrid-executor-runtime release
2026-03-31 20:17:25 -07:00
gsxdsm
7852d74872 chore(KB-337): add changeset for documentation update 2026-03-31 20:14:35 -07:00
gsxdsm
e905b21eb9 docs(KB-337): update packages/cli/README.md with fusion/ branch naming 2026-03-31 20:13:44 -07:00
gsxdsm
ea279ff2f4 docs(KB-337): update task ID example in worktreeNaming section kb-042 -> fn-042 2026-03-31 20:12:50 -07:00
gsxdsm
52a74036d5 feat(KB-616): add ProjectRuntime abstraction for task execution isolation
- Define ProjectRuntime interface with unified task execution contract\n- Implement IPC protocol for host-worker communication (messages, streaming, heartbeats)\n- Add InProcessRuntime for synchronous in-process task execution\n- Add ChildProcessRuntime with isolated worker processes for sandboxed execution\n- Implement ProjectManager to coordinate runtime selection and task lifecycle\n- Update engine exports to expose runtime APIs\n- Add comprehensive tests for all runtime implementations and IPC protocol
2026-03-31 20:12:28 -07:00
gsxdsm
adb4b3e196 docs(KB-337): update branch naming reference in AGENTS.md worktreeNaming section 2026-03-31 20:08:58 -07:00
gsxdsm
7ed886d6d7 docs(KB-337): update README.md, RELEASING.md and dashboard README with fusion branding 2026-03-31 20:07:24 -07:00
gsxdsm
3a2dae7909 docs(KB-337): update README.md with FN-XXX format and fusion/ branch naming 2026-03-31 20:06:35 -07:00
gsxdsm
a7922aac52 docs(KB-337): update AGENTS.md with new package names and conventions (complete) 2026-03-31 20:04:10 -07:00
gsxdsm
e9d058b369 feat(KB-625): add industrial color theme
- Add industrial to COLOR_THEMES array in types.ts
- Add industrial theme CSS definitions with dark grunge aesthetic
- Add industrial theme selector entry in ThemeSelector component
- Add industrial theme swatch styles for preview
2026-03-31 20:03:51 -07:00
gsxdsm
39ddfa2b25 docs(KB-337): update AGENTS.md with new package names and conventions 2026-03-31 20:03:21 -07:00
gsxdsm
31a7a7ceea feat(KB-337): execute KB-335 — rename environment variables KB_* to FUSION_* 2026-03-31 20:01:54 -07:00
gsxdsm
0c601387a2 fix(KB-647): add conflict recovery to worktree creation fallback
- Add conflict recovery to createFromExistingBranch fallback in executor\n- Add tests for worktree conflict recovery scenarios\n- Add changeset documenting the worktree recovery fix\n- Clean up removed central-core modules and AGENTS.md content\n- Update CLI command descriptions and extension tools
2026-03-31 20:01:35 -07:00
gsxdsm
57f34d1937 feat(KB-336): rename data directory from .kb to .fusion
- Rename data directory from .kb to .fusion across core, CLI, dashboard, and engine
- Update all path references in source files, tests, and CLI output
- Remove deprecated central-core infrastructure (central-core, central-db, central-integration)
- Remove obsolete test files (PlanningModeModal.test.tsx, ScheduleForm.test.tsx)
- Add changeset for the directory rename breaking change
2026-03-31 20:00:25 -07:00
gsxdsm
1937adc7be feat(KB-500): add central infrastructure for multi-project support
- Add CentralCore API for cross-project coordination (project registry, health tracking)
- Add CentralDatabase with SQLite storage for projects, activity log, and concurrency
- Export central infrastructure types: RegisteredProject, ProjectHealth, GlobalConcurrencyState
- Add central integration tests for multi-project workflows
- Update AGENTS.md with CentralCore usage documentation
2026-03-31 19:59:59 -07:00
gsxdsm
801f0d2b1c feat(KB-639): add dismiss warning for unsaved progress in PlanningModeModal
- Add hasProgress state to track unsaved changes in PlanningModeModal\n- Show confirmation dialog when dismissing modal with unsaved progress\n- Prevent accidental data loss when users close the planning modal\n- Add comprehensive tests for dismiss warning behavior
2026-03-31 19:58:25 -07:00
gsxdsm
139456a3c0 fix(KB-649): fix multi-step scheduled task editor step addition and validation
- Fix step addition flow in ScheduleStepsEditor component
- Add form validation for multi-step schedules in ScheduleForm
- Add integration tests for multi-step scheduled task flow
- Update related CLI and core tests for consistency
- Include changeset for the fix
2026-03-31 19:53:35 -07:00
gsxdsm
7ed75dbd18 fix(KB-646): reorder Header buttons to place Agents before Pause controls
- Move Workflow Steps, Agents, and Settings buttons before the pause button
- Maintain proper button order: workflow/agents/settings first, then pause/resume
- Keep mobile overflow menu behavior unchanged
- Fixes visual layout where agents button appeared after pause controls
2026-03-31 19:52:09 -07:00
gsxdsm
fce5e6c1e5 feat(KB-334): change default task prefix from KB to FN
- Change default taskPrefix from KB to FN and branch naming from kb/ to fusion/
- Update all test expectations and patterns for new naming convention
- Update settings UI placeholder text to reflect FN prefix
- Update dashboard, engine, and CLI components for fusion/ branch paths
- Add changeset documenting the breaking change for users
2026-03-31 19:50:15 -07:00
gsxdsm
e8e5b6c854 feat(KB-640): add role editing UI and restore KB task prefix
- Add inline role editing to AgentListModal with clickable role icons
- Add handleRoleChange and handleRoleKeyDown handlers for role updates
- Persist view toggle (board/list) with localStorage alongside role editing
- Restore task prefix from FN back to KB for generated task IDs
- Restore branch naming from fusion/ back to kb/ for task branches
- Update branch name references in executor, merger, scheduler, and CLI
- Add touch gesture detection support to TaskCard component
- Update worktree grouping labels to use KB prefix
2026-03-31 19:44:36 -07:00
gsxdsm
7f1a924a36 Fix broken build. 2026-03-31 19:42:07 -07:00