Commit Graph

70 Commits

Author SHA1 Message Date
gsxdsm
75a957c127 feat(engine): add background project engine reconciliation + global concurrency setting
- ProjectEngineManager.startReconciliation() polls for newly registered
  projects every 30s and starts their engines without requiring UI access
- Expose global concurrency limit in dashboard settings
- Fix SettingsModal test cleanup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 18:03:39 -07:00
gsxdsm
fa5af13df2 feat(FN-1663): merge fusion/fn-1663 2026-04-13 15:51:05 -07:00
gsxdsm
70f2af665a feat(FN-1680): merge fusion/fn-1680 2026-04-13 15:29:41 -07:00
gsxdsm
04703958c7 fix(tests): add globalConcurrency mocks to SettingsModal test files
Both SettingsModal test files were missing mocks for fetchGlobalConcurrency
and updateGlobalConcurrency, causing the component to throw on mount.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 14:59:08 -07:00
gsxdsm
415f636056 feat(FN-1604): merge fusion/fn-1604 2026-04-12 19:46:06 -07:00
gsxdsm
e06bb6525e feat(FN-1647): merge fusion/fn-1647 2026-04-12 18:21:24 -07:00
gsxdsm
94996e204d feat(FN-1594): merge fusion/fn-1594 2026-04-12 12:33:05 -07:00
gsxdsm
2019b71e6b fix(FN-1488): add showQuickChatFAB setting to control Quick Chat FAB visibility
- Add showQuickChatFAB boolean setting to ProjectSettings type
- Add useAppSettings hook function for accessing the setting
- Wire QuickChatFAB visibility in App.tsx based on setting
- Hide QuickChatFAB in MobileNavBar when setting is false
- Add Settings UI toggle for the new setting
- Add CSS for hiding QuickChatFAB on mobile when disabled
- Add comprehensive tests for all affected components
- Fix QuickChatFAB onOpenChange test to use controlled mode
- Update settings reference documentation
2026-04-11 00:18:22 -07:00
gsxdsm
80869dba88 feat(FN-1413): merge fusion/fn-1413 2026-04-10 23:20:39 -07:00
gsxdsm
997dd01eca feat(FN-1426): add tests for prompt override edit/reset/save behavior 2026-04-10 22:33:29 -07:00
gsxdsm
35cdc97686 feat(FN-1426): add Prompts section to Settings modal with per-prompt editor UI 2026-04-10 22:27:41 -07:00
gsxdsm
fd8208d2f5 fix(FN-1567): fix plugin loader type and ntfy events test
- Fix ConstructorParameters type in plugin loader
- Update ntfy events test to expect awaiting-user-review event
2026-04-10 21:52:58 -07:00
gsxdsm
020549d5cc feat(FN-1562): merge fusion/fn-1562 2026-04-10 21:22:59 -07:00
gsxdsm
ffa0edc7b2 fix(FN-1446): improve test reliability and git command TTY handling
- Fix QuickEntryBox focus restoration after task creation with proper submission state tracking
- Improve QuickEntryBox tests by using explicit promise resolution and proper afterEach cleanup with act() wrappers
- Fix TaskCard tests to use proper act() wrappers for async operations
- Add stdio: 'pipe' to all git execSync calls to prevent TTY interaction issues in CI environments
- Add test log suppression for noisy subagent and pi-claude-cli output in vitest setup
2026-04-10 19:49:05 -07:00
gsxdsm
b3f057a281 fix: improve merge verification and dashboard behavior 2026-04-10 18:30:23 -07:00
gsxdsm
60b9f8614c feat(FN-1442): replace emoji scope icons with theme-aware Lucide icons
- Replace emoji icons (🌐, 📁) with Lucide Globe and Folder icons in Settings sidebar scope indicators
- Icons now automatically adapt to light/dark theme colors for better visual consistency
- Update SettingsModal tests to validate Lucide icon rendering
- Add mobile-specific tests for settings scope indicators
2026-04-10 09:19:16 -07:00
gsxdsm
71782efa9c feat(FN-1441): correct Models settings scope to mixed and update renderScopeBanner
- Correct Models section scope from project to mixed since it contains both global settings (provider/model) and project overrides
- Update renderScopeBanner to support mixed scope type with globe+folder icon
- Add scope-banner-mixed CSS class for consistent styling of mixed-scope banners
- Update SettingsModal tests to cover mixed scope behavior
2026-04-10 08:52:31 -07:00
gsxdsm
9c32153879 feat(FN-1440): promote Authentication in Settings sidebar with globe icon
- Add Authentication section to Settings sidebar with globe icon
- Update SettingsModal to display Authentication link in sidebar
- Add corresponding tests for Authentication section visibility
- Update mobile settings tests to reflect new sidebar structure
2026-04-09 19:16:22 -07:00
gsxdsm
f0578bdfa5 feat(FN-1390): replace sidebar emoji scope markers with Lucide icons
- Replace 🌐/📁 emoji in SettingsModal sidebar with Globe/FileText Lucide icons
- Update SettingsModal tests to expect icon-based scope markers instead of emoji
- Use consistent iconography for visual hierarchy between global and project settings
2026-04-09 13:40:59 -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
d70cef1939 feat(FN-1215): refresh settings branding and scope banner theming
- Update Settings modal copy from fn to Fusion for shared/project messaging
- Adjust worktree naming example to use uppercase task IDs (FN-042)
- Make scope banner colors theme-aware using info/success CSS variables with color-mix
- Update desktop and mobile Settings modal tests for the new Fusion scope text
2026-04-08 16:37:13 -07:00
gsxdsm
e38e8fb6b1 feat(FN-1127): add awaiting-approval ntfy notifications
- Extend ntfy event types and default ntfyEvents to include awaiting-approval
- Send high-priority "Plan needs approval" notifications for awaiting-approval task updates with deep-link support
- Add Notifications settings checkbox handling for awaiting-approval event selection in Settings modal
- Expand notifier and settings modal tests for awaiting-approval defaults, toggles, filtering, and deduplication
- Update AGENTS.md ntfy documentation and sample config to include the new event
2026-04-08 02:00:39 -07:00
gsxdsm
a119798dc9 feat(FN-1041): add step session executor and execution settings UI
- Implement StepSessionExecutor class with parallel wave scheduling, conflict detection, and retry logic
- Define interfaces and utility types for step session execution (StepSession, StepSessionConfig, StepResult)
- Add Execution settings section to the dashboard SettingsModal for configuring step session behavior
- Add comprehensive tests for StepSessionExecutor (1225 lines) and SettingsModal Execution section
- Add changeset for @gsxdsm/fusion package
2026-04-06 21:34:19 -07:00
gsxdsm
cd719b45ef fix(FN-1029): fix flaky test failures and keyboard event forwarding
- Add onKeyDown handler to CustomModelDropdown portal container for keyboard event forwarding
- Wrap SettingsModal empty state assertions in waitFor for async test stability
- Extract rate limiter state for proper test isolation in routes tests
- Add reconcileProjectStatuses to CentralCore mock for consistent test setup
- Improve /api/ai/summarize-title rate limiting with per-test isolation
2026-04-05 23:44:48 -07:00
gsxdsm
9a6592e299 chore: update stuck task handling and dashboard tweaks 2026-04-05 21:36:18 -07:00
gsxdsm
a5567ad45c feat(FN-925): add memoryEnabled setting with UI toggle and engine integration
- Add memoryEnabled boolean setting to core types and default settings
- Add Memory section toggle to SettingsModal dashboard UI
- Integrate memoryEnabled check in executor and triage engine prompts
- Add tests for settings UI, executor prompt behavior, and triage prompt behavior
- Update SettingsModal section count test for the new Memory section
2026-04-04 15:06:57 -07:00
gsxdsm
611bfe46e8 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
df756828fc feat: sync OpenRouter models on dashboard startup and add mission interview module
- Add openrouterModelSync setting to eagerly fetch OpenRouter model catalog at
  dashboard startup so the model picker shows all available models
- Add toggle in Settings → Models to disable the sync
- Add mission-interview session management module for AI-guided mission specs
- Include tests for the sync opt-out behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 00:39:17 -07:00
gsxdsm
e5760fa4fe feat(FN-800): auto-generate model preset IDs and remove manual ID editing
- Add slugify and generatePresetId utilities with collision handling for unique preset IDs
- Remove manual ID input field from preset editor UI in SettingsModal
- Auto-generate preset IDs server-side from name on creation
- Simplify Header tests by removing ID-related test cases
- Deduplicate tablet header controls tests by importing from shared Header tests
- Remove unused CSS rules for removed ID input field
- Update reviewer to pass through preset ID generation logic
2026-04-03 18:33:23 -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
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
1f8465342c fix(FN-000): scope dashboard project flows 2026-04-02 17:51:04 -07:00
gsxdsm
b47a33aec9 feat(FN-690): add event toggles to Settings modal 2026-04-02 10:35:12 -07:00
gsxdsm
d45a8191d5 test(FN-673): update SettingsModal tests for section split 2026-04-02 09:19:51 -07:00
gsxdsm
c671beae96 feat(KB-503): add multi-project CLI support with project subcommands
- Add project subcommands: list, add, remove, show, set-default, detect
- Add --project flag support for all task commands
- Create project-context.ts utilities for project resolution
- Add defaultProjectId to GlobalSettings type
- Implement project auto-detection from cwd
- Update CLI argument parsing for global --project flag
- Add multi-project CLI documentation to AGENTS.md
2026-04-01 07:02:15 -07:00
gsxdsm
54767f60eb feat(KB-648): enable parallel test execution and optimize test performance
- Optimize backup tests using fake timers instead of real timeouts

- Enable parallel file execution in core, engine, CLI, and dashboard packages

- Add inline test helpers to reduce dependencies in dashboard routes tests

- Update executor tests with exact command matching and improved assertions

- Update AGENTS.md with test optimization patterns (fake timers, unique temp dirs)
2026-04-01 06:54:50 -07:00
gsxdsm
1840f17ebf feat(KB-503): add multi-project CLI support
- Add project context utilities for multi-project operations

- Add project subcommands (list, add, remove, set-default, detect)

- Update CLI argument parsing with --project flag support

- Add multi-project documentation and changeset
2026-03-31 23:28:43 -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
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
b77abd1c4b feat(KB-612): convert stuck task timeout from milliseconds to minutes
- Convert stuck task timeout input from milliseconds to minutes for better UX\n- Add changeset documenting the UX improvement\n- Update SettingsModal with minutes-to-ms conversion logic\n- Fix nav item count test to include Backups section\n- Update timeout tests for minutes input format
2026-03-31 17:34:11 -07:00
gsxdsm
88a638104d fix(KB-610): fix race condition in allocateId and ensure config row exists
- Fix race condition in allocateId and ensure config row exists for reliable settings save
- Add comprehensive settings save tests in store.test.ts and SettingsModal.test.tsx
- Add changeset documenting the settings save fix
- Remove backup functionality from core and CLI (backup.ts, backup.test.ts, backup command)
- Update AGENTS.md to remove obsolete backup documentation
2026-03-31 15:47:12 -07:00
gsxdsm
fc0411713c feat(KB-330): rename internal packages from @kb/* to @fusion/*
- Rename @kb/core, @kb/dashboard, @kb/engine to @fusion/* namespace
- Update all import statements across 143+ files to use new package names
- Update workspace dependencies and root package.json references
- Fix bundler configurations (tsup, vite) for new package names
- Update test files and fix typecheck issues
- Add changeset file documenting the package rename
2026-03-31 13:33:44 -07:00
gsxdsm
8ad031c73a fix(KB-309): add missing notification settings to form state
- Add ntfyEnabled and ntfyTopic to initial form state in SettingsModal
- Add comprehensive tests for notification settings persistence
- Ensure notification values are properly initialized from settings
2026-03-31 11:00:59 -07:00
gsxdsm
49198e4d56 fix(KB-241): use form values for ntfy test notifications
- Update frontend API client to accept config parameter for testNtfyNotification
- Modify SettingsModal to pass current form values when testing notifications
- Update SettingsModal test to expect config object in API call
- Add changeset documenting the test notification fix
2026-03-31 05:31:52 -07:00
gsxdsm
dac4705761 feat(KB-185): add global/project settings hierarchy with scope-aware UI
- Add GlobalSettingsStore with file-based storage in ~/.pi/kb/settings.json
- Implement two-tier hierarchy: global (user prefs) and project (.kb/config.json)
- Update TaskStore to merge settings with project overriding global
- Add API endpoints: GET/PUT /api/settings/global and GET /api/settings/scopes
- Add scope indicators (🌐 global, 📁 project) to settings modal sidebar
- Implement scope-aware save: only save active scope, reject global-only fields
- Add frontend API functions for global settings operations
- Add tests for GlobalSettingsStore, settings routes, and SettingsModal scopes
- Create changeset for the new settings hierarchy feature
- Update AGENTS.md with settings hierarchy documentation
2026-03-31 03:12:33 -07:00
gsxdsm
dfe5601622 feat(KB-184): add model presets for task creation
- Add model preset types and settings fields with API validation
- Create model preset utility helpers for size-based auto-selection
- Add settings UI for managing model presets (create, edit, delete)
- Integrate preset selection into NewTaskModal with custom override option
- Add inline preset selection to InlineCreateCard component
- Persist modelPresetId in task store and preserve through archive/unarchive
- Add changeset and update AGENTS.md with feature documentation
2026-03-31 02:04:45 -07:00
gsxdsm
7373b40c1b feat(KB-223): add taskStuckTimeoutMs field to SettingsModal
- Add taskStuckTimeoutMs input field to SettingsModal UI

- Add comprehensive tests for the new setting field
2026-03-30 18:25:24 -07:00
gsxdsm
62b86c2894 feat(KB-101): add ntfy notification test button in settings
- Add /api/settings/test-ntfy endpoint for sending test notifications
- Add test notification button to SettingsModal when ntfy is enabled
- Display success/error feedback after test notification attempt
- Add comprehensive tests for test notification flow
- Include changeset for patch release
2026-03-30 16:54:01 -07:00
gsxdsm
79e6657db9 feat(KB-183): replace native select with CustomModelDropdown in SettingsModal
- Replace native <select> with CustomModelDropdown for model selection
- Remove legacy option filtering and selection logic from SettingsModal
- Update SettingsModal tests to work with new dropdown component
- Add comprehensive test coverage for CustomModelDropdown interactions
2026-03-30 12:16:59 -07:00