Commit Graph

571 Commits

Author SHA1 Message Date
gsxdsm
2fbb22ee10 feat(FN-1775): merge fusion/fn-1775 2026-04-14 21:15:56 -07:00
Fusion
b7fb074551 fix(FN-1704): use approved mobile breakpoint value (640px instead of 600px)
- Change @media query breakpoint from 600px to 640px for .onboarding-resume-card
- 640px is an approved breakpoint value per mobile CSS guidelines
- Fixes mobile-css test failure that was blocking the build
2026-04-14 18:51:01 -07:00
gsxdsm
568c6ddd17 feat(FN-1852): merge fusion/fn-1852 2026-04-14 18:46:00 -07:00
gsxdsm
0a4f054207 feat(FN-1704): add dashboard resume entry point for onboarding
- Add model-onboarding-state.ts module for persisting onboarding step state
- Create OnboardingResumeCard component with resume functionality
- Wire resume card into App.tsx (visible when onboarding is resumable and modal is closed)
- Add unit tests for state helpers and resume card
- Add integration tests for App.tsx resume card behavior
- Update documentation with resume banner behavior
- Fix missing contextVersionAtStart property declaration in useBadgeWebSocket.ts
2026-04-14 14:16:32 -07:00
gsxdsm
831477e6ea feat(FN-1727): add regression tests for saturated-slot scenarios
- Add core test for title summarization behavior under saturated task lane conditions
- Add engine test for heartbeat execution when task lanes are saturated
- Fix experimentalFeatures test to correctly expect merge semantics (not replacement)
- Ensure tests validate task selection and execution under concurrency limits
2026-04-14 11:38:14 -07:00
gsxdsm
81b662b526 feat(FN-1703): merge fusion/fn-1703 2026-04-14 11:28:52 -07:00
gsxdsm
9e19ee1aa0 feat(FN-1697): merge fusion/fn-1697 2026-04-14 10:58:51 -07:00
gsxdsm
d12f8d6de7 feat(FN-1688): merge fusion/fn-1688 2026-04-14 10:43:51 -07:00
gsxdsm
0dffdec04c feat(FN-1660): merge fusion/fn-1660 2026-04-14 10:13:53 -07:00
gsxdsm
6e8bf267a7 feat(FN-1655): merge fusion/fn-1655 2026-04-14 09:59:00 -07:00
gsxdsm
6e0b30f4dd feat(FN-1651): merge fusion/fn-1651 2026-04-14 09:43:50 -07:00
gsxdsm
687d594b3c feat(FN-1648): merge fusion/fn-1648 2026-04-14 09:28:57 -07:00
gsxdsm
07b8030400 feat(FN-1639): merge fusion/fn-1639 2026-04-14 08:43:59 -07:00
gsxdsm
5eaf7374af feat(FN-1638): add plugin manager UI redesign and clear triage status on todo
- Restructure PluginManager detail view with card-based layout
- Add mobile responsive styles with adaptive grid
- Add desktop CSS with card-based grid design
- Clear triage status when task moves to todo
- Add changeset for plugin settings design
2026-04-14 07:51:33 -07:00
gsxdsm
cc88b2be1c feat(FN-1695): polish Settings Authentication Panel UX
- Reorder authentication providers: authenticated shown first, then alphabetically sorted
- Upgrade auth section to grouped/card-style hierarchy with section labels
- Update auth status badges to show '✓ Active' and '✗ Not connected'
- Add 'Authenticated' and 'Available' group labels in auth section
- Improve visual prominence of authenticated providers with subtle green accent
- Add section hint when no providers are authenticated
- Update CSS for new card-based layout with mobile-responsive styles
- Add tests for provider ordering behavior
2026-04-13 20:35:18 -07:00
gsxdsm
827c0370c3 feat(FN-1665): merge fusion/fn-1665 2026-04-13 20:22:10 -07:00
gsxdsm
27e7a4389d feat(FN-1631): merge fusion/fn-1631 2026-04-13 18:58:26 -07:00
gsxdsm
1712866ae8 feat(FN-1706): merge fusion/fn-1706 2026-04-13 16:35:06 -07:00
gsxdsm
a230322068 feat(FN-1451): merge fusion/fn-1451 2026-04-13 15:29:27 -07:00
gsxdsm
f46803d985 fix(triage): enforce per-project maxConcurrent limit on triage
The triage processor was only checking the global semaphore, not the
per-project maxConcurrent setting. Now it counts all active agents
(in-progress + specifying) and respects Math.min(perProjectAvailable,
semaphoreAvailable) before starting new triage tasks. This matches the
scheduler's concurrency enforcement and prevents triage from consuming
all available slots on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 15:18:32 -07:00
gsxdsm
2486f2fb07 fix(lint): resolve pre-existing lint errors and merge conflicts
- Remove unused imports/vars from routes.ts (VALID_TRANSITIONS, AUTOMATION_PRESETS, ChatStore, FileListResponse, etc.)
- Prefix unused destructured error vars with _ convention
- Fix prefer-const for summary variable
- Add _ ignore pattern to eslint.config.mjs
- Include test files in tsconfig.app.json to fix @testing-library/jest-dom types
- Resolve GitManagerModal.test.tsx merge conflict (take fn-1626 expectLatestCallStartsWith style)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 10:31:15 -07:00
gsxdsm
54ce431161 fix mobile task action menu positioning 2026-04-13 10:04:14 -07:00
gsxdsm
65c15c56b6 feat(FN-1624): add delete button to TaskCard for triage column
- Add delete button component to TaskCard for tasks in the triage column
- Thread onDeleteTask prop through App → Board → Column → TaskCard
- Add CSS styles for delete button with hover/active states
- Add comprehensive tests for delete button visibility and click handling
- Hide delete button for non-triage columns (todo, in-progress, etc.)
2026-04-13 00:21:25 -07:00
gsxdsm
55478b42b0 feat(FN-1622): merge fusion/fn-1622 2026-04-12 23:26:46 -07:00
gsxdsm
6ab4a899e6 feat(FN-1608): extend textarea width fix to InlineCreateCard with regression tests
- Apply textarea width fix from QuickEntryBox to InlineCreateCard in styles.css
- Add regression tests for InlineCreateCard textarea width
- Add regression tests for QuickEntryBox textarea width
- Ensure consistent textarea styling across board and list creation surfaces
2026-04-12 22:21:53 -07:00
gsxdsm
91c167d856 fix(FN-1606): constrain task detail dropdown menus to viewport on mobile
- Add mobile CSS rules for .detail-actions-menu and .detail-move-menu dropdowns
- Position dropdowns above action bar with bottom: calc(100% + 4px)
- Constrain max-height to calc(100dvh - 120px) for viewport fit
- Enable overflow scrolling with -webkit-overflow-scrolling: touch
- Fix test assertion to match multi-selector CSS format
2026-04-12 21:57:00 -07:00
gsxdsm
f810774f6c feat(FN-1604): merge fusion/fn-1604 2026-04-12 19:46:06 -07:00
gsxdsm
cd73ecbf84 feat(FN-1601): merge fusion/fn-1601 2026-04-12 19:01:06 -07:00
gsxdsm
717124fc9e feat(FN-1493): add directory browsing UX to plugin install flow
- Add DirectoryPicker component for browsing filesystem to select plugin source
- Add dist-folder and package-root install-source resolution in backend
- Wire frontend installPlugin to mode-discriminated endpoint (/plugins/install-local)
- Add comprehensive regression tests for browse-driven plugin install workflow
- Update PluginManager UI with directory picker integration and CSS styles
2026-04-12 18:10:39 -07:00
gsxdsm
e4853c01f0 feat(FN-1656): complete Step 1 — implement canonical node-project counting rules 2026-04-12 17:36:18 -07:00
gsxdsm
1203fe4d24 feat(FN-1596): increase width of quick-add task text entry box
- Add CSS rule to override padding-right for QuickEntryBox textarea
- The .description-with-refine textarea rule was adding 70px padding that wasn't needed in QuickEntryBox (refine button is in controls panel)
- Add regression tests for textarea width contract
- Add mockDesktopViewport helper for viewport-specific tests
- Keep max-width: 800px constraint in list view (design decision)
2026-04-12 17:31:51 -07:00
gsxdsm
ca0a20fc30 fix: fix companies.sh catalog browsing and import, constrain mission interview options height
- Handle { items: [...] } response format from companies.sh API
- Parse installs field as both string and number
- Accept owner/repo shorthand in addition to full GitHub URLs
- Replace broken Web Streams pipeTo with Node stream/promises.pipeline
- Add max-height with scroll to planning-options to prevent overflow

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-04-12 17:07:12 -07:00
gsxdsm
ef4bcb0264 feat(FN-1652): add compose action from Agents tab with deterministic state behavior
- Add compose button to Agents tab for composing messages to agents
- Compose pre-fills recipient when agent is selected, shows dropdown otherwise
- After send, user stays on Agents tab and selected agent is preserved
- Add 4 regression tests for new compose contract
- Add CSS for mailbox-agents-header layout
2026-04-12 16:34:56 -07:00
gsxdsm
73e51b2033 fix: make running count slash and total same size in status bar
Apply consistent font-family, font-weight, and line-height to count,
separator, and max elements.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-04-12 16:21:26 -07:00
gsxdsm
e9a17c9554 fix: align running count label with numbers in executor status bar
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-04-12 16:18:30 -07:00
gsxdsm
f154f688cf fix: prevent planning mode dialog from overflowing viewport
Remove min-height: 300px from .planning-loading and add overflow: hidden
to .planning-initial so the modal stays within 80vh bounds.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-04-12 16:11:46 -07:00
gsxdsm
01b57927b9 fix: improve mission interview UX — banner, dismiss, modal height, multiple choice, resume prompt
- Hide session notification banner on mission/planning screens
- Fix dismissed banner persisting across remounts with module-level Set
- Fix mission interview modal buttons cut off (overflow: hidden)
- Default mission interview questions to multiple choice with options
- Add resume prompt for pending mission interviews in MissionManager

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-04-12 16:01:40 -07:00
gsxdsm
1b9421561a feat(FN-1450): Add companies.sh catalog browse mode for agent import
- Add backend API routes for companies.sh catalog with pagination and search
- Wire frontend API client with browse mode endpoints (search, list agents)
- Build Agent Import modal with tabbed interface (URL input + browse mode)
- Add browse mode styling with search results grid and agent cards
- Include UI and route test coverage for browse flow
- Update in-UI help text with browse mode usage instructions
2026-04-12 15:20:57 -07:00
gsxdsm
18b78886d0 feat(FN-1271): add Documents tab to task detail modal
- Add task document API routes for listing, viewing, and downloading task files
- Create TaskDocumentsTab component with file browser UI
- Integrate Documents tab into TaskDetailModal alongside existing tabs
- Add frontend API functions for task document operations
- Add CSS styles for document list, file icons, and download actions
- Add comprehensive route tests for task document endpoints
2026-04-12 13:20:37 -07:00
gsxdsm
231c984a27 feat(FN-1594): merge fusion/fn-1594 2026-04-12 12:33:05 -07:00
gsxdsm
29bb15e0ee feat(FN-1593): merge fusion/fn-1593 2026-04-12 10:55:53 -07:00
gsxdsm
8f0bcf7f00 feat(FN-1465): merge fusion/fn-1465 2026-04-12 07:00:49 -07:00
gsxdsm
bab269dada feat(FN-1586): update ChatView with model selector
- Add model selector to ChatView component for AI model selection
- Update ChatView tests to cover model selector functionality
- Add styles for model selector in chat interface
2026-04-11 20:48:48 -07:00
gsxdsm
03d72f06b1 feat(FN-1545): fix mobile More sheet safe-area padding
- Fix More sheet content padding on iOS devices with notched screens
- Add CSS regression tests for safe-area-inset-* rules in mobile nav bar
- Ensure consistent padding for content area across different device safe areas
2026-04-11 11:00:52 -07:00
gsxdsm
84ae3e0163 feat(FN-1501): enhance workflow step output rendering
- Add expanded view modal for workflow step output with full-screen display
- Add markdown/plain text toggle for output rendering in WorkflowResultsTab
- Add output rendering CSS styles with markdown and code block styling
- Update workflow steps documentation with output rendering features
- Add comprehensive tests for WorkflowResultsTab component (259 tests)
2026-04-11 09:39:32 -07:00
gsxdsm
05a310dc07 feat(FN-1495): merge fusion/fn-1495 2026-04-11 09:01:29 -07:00
gsxdsm
302394b5f5 feat(FN-1489): reorganize Task Detail modal footer with split menus
- Add SplitMenu component for reusable dropdown menus in modal footers
- Update TaskDetailModal footer to use LeftMenu (Plan, Subtask, Models) and RightMenu (Save, Close)
- Add comprehensive tests for dropdown menu behavior in modal footers
- Update QuickEntryBox and NewTaskModal tests to match new menu patterns
- Add testing patterns for modal dropdown menus to project memory
2026-04-11 06:51:20 -07:00
gsxdsm
afa2e153ee 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
7be8c17279 feat(FN-1490): merge fusion/fn-1490 2026-04-10 21:22:50 -07:00
gsxdsm
c56e44bff8 feat(FN-1480): merge fusion/fn-1480 2026-04-10 18:09:00 -07:00