Commit Graph

2380 Commits

Author SHA1 Message Date
Fusion
76123c9538 fix(FN-2048): prevent stale SSE reconnects after channel teardown
- Add a closed flag to sse-bus channel state so teardown permanently disables reconnect scheduling
- Guard useTasks onReconnect callbacks against stale effect instances when toggling views
- Add regression tests for sse-bus and useTasks to ensure closed/unmounted channels do not reconnect
- Document the leak root cause and closed-flag pattern in .fusion/memory.md
2026-04-18 02:53:49 -07:00
Fusion
17fcbfe6c8 feat(FN-1975): stream chat session updates through SSE
- Emit chat:session:updated from ChatStore when message deletion mutates a session and cover deleteMessage false returns
- Pass ChatStore into SSE setup and forward chat session update events to connected clients
- Update useChat to consume SSE updates in real time with safer EnrichedChatSession typing
- Add core and dashboard tests for chat-store emissions, SSE forwarding, route wiring, and hook behavior
2026-04-18 00:44:27 -07:00
Fusion
ddbb60e297 fix(FN-2045): keep quick chat open when selecting model override
- Add regression coverage for QuickChatFAB to ensure model dropdown selection does not dismiss the chat panel
- Verify selected model override is preserved and sent to createChatSession with provider and model id
- Add a patch changeset for @gsxdsm/fusion documenting the quick chat model-selection dismissal fix
2026-04-18 00:27:26 -07:00
Fusion
a486b5c15c feat(FN-2044): propagate model favorites through QuickChatFAB
- Extend QuickChatFAB props with favorite providers/models and favorite toggle callbacks
- Forward favorite state and handlers to the model override CustomModelDropdown
- Wire App.tsx favorite provider/model state and toggle handlers into QuickChatFAB
- Add QuickChatFAB tests for pinned favorite models, provider favorites, and toggle callback behavior
2026-04-18 00:22:05 -07:00
Fusion
5bc2ffb9dc feat(FN-2046): add accessible delete button to chat session items
- Add an inline delete button to each chat session item with an aria-label and Trash icon
- Prevent session selection when delete is clicked by stopping event propagation and opening the confirmation dialog
- Style the delete control to appear on hover/focus and remain visible on mobile for touch accessibility
- Add ChatView tests covering render behavior, confirmation flow, selection guard, delete action, and CSS visibility rules
2026-04-18 00:02:09 -07:00
Fusion
ea83c4892f fix(FN-2043): prevent quick chat from closing on model dropdown clicks
- Update QuickChatFAB outside-click handling to ignore events from the portaled model combobox dropdown
- Add a regression test that verifies clicks inside the model dropdown portal keep the quick chat panel open
- Keep outside body clicks closing behavior intact with test coverage for the control path
- Add a patch changeset for @gsxdsm/fusion describing the quick chat model dropdown dismiss fix
2026-04-17 23:51:17 -07:00
Fusion
6386cf22a6 feat(FN-2042): move Nodes and Schedules to desktop overflow menu
- Add a desktop overflow trigger/menu in Header with outside-click and Escape-key dismissal
- Move Nodes and Automation actions from inline desktop icons into overflow menu items
- Update Header tests to open the desktop overflow and verify visibility and click handlers for both actions
- Add themed desktop overflow menu styles in styles.css using existing spacing, border, radius, and shadow tokens
2026-04-17 23:39:40 -07:00
gsxdsm
bcc0b8eb01 feat: auto-revive in-review tasks with failed pre-merge workflow steps
Adds a SelfHealingManager scan that finds tasks parked in in-review with
a failed pre-merge workflow step and no active session, and sends them
back through the existing sendTaskBackForFix flow (PROMPT.md injection,
step reset, todo → in-progress). Bounded by a new maxPostReviewFixes
setting (default 1) and a per-task postReviewFixCount so a persistently-
failing verifier cannot ping-pong a task indefinitely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 23:28:32 -07:00
Fusion
ef222e5ea3 fix(FN-2039): align mail composer styling with theme tokens
- Update .btn-secondary and mailbox badge/error styles to use shared design tokens instead of hardcoded colors
- Refine message composer select/textarea styles with tokenized spacing, radii, typography, and focus-visible ring behavior
- Add mobile-specific composer overrides for textarea height, footer wrapping/button targets, and field label stacking
- Add a patch changeset for @gsxdsm/fusion documenting the mail compose styling fix
2026-04-17 23:00:13 -07:00
Fusion
05adbcb1d1 fix(FN-2038): style automation count summary in schedule modal
- Add a new .scheduling-summary rule for the scheduled tasks modal
- Use token-based gap, padding, and typography to fix missing count spacing
- Align summary content with inline-flex and add a bottom border divider
2026-04-17 22:39:20 -07:00
Fusion
7b9a50fe32 fix(FN-2036): wire agent reflections runtime and UI dependencies
- Add a reusable .btn-secondary style (including light-theme hover/focus states) for reflections tab actions
- Initialize ReflectionStore in reflection API routes before reading or writing reflections
- Create AgentStore and ReflectionStore during in-process runtime startup and wire AgentReflectionService into TaskExecutor
- Reuse the initialized AgentStore for HeartbeatMonitor and trigger scheduler setup with non-fatal guards
2026-04-17 22:29:16 -07:00
Fusion
3629dea3c2 feat(FN-2035): introduce PiExtensionsManager for settings UI parity
- Create a dedicated PiExtensionsManager component mirroring PluginManager interaction patterns
- Replace inline Pi extensions rendering in SettingsModal with the new manager component
- Add PiExtensionsManager styling in styles.css to match existing plugin manager layout and states
- Add component test coverage for PiExtensionsManager and update SettingsModal mocks/assertions
- Add a changeset for the pi-extensions UI parity release
2026-04-17 21:54:44 -07:00
Fusion
82200506a9 fix(FN-2026): prevent horizontal scroll in pi extension settings
- Add word wrapping to settings helper text so long values do not force horizontal overflow
- Hide horizontal overflow in the settings content pane while preserving vertical scrolling
- Keep the existing settings layout and animations unchanged
2026-04-17 21:22:23 -07:00
Fusion
f071fdcdfb feat(FN-2025): move secondary header views into overflow menu
- Add view-toggle overflow state and refs in Header with Escape and outside-click close behavior
- Replace inline Skills/Roadmaps/Insights buttons with a More views trigger and dropdown menu actions
- Style the view-toggle overflow menu and items for positioning, hover, and active states
- Update Header, tablet header controls, and App integration tests to validate overflow interactions and active view behavior
2026-04-17 20:57:26 -07:00
Fusion
e4f43a8b43 fix(FN-2040): prevent false unresponsive agent states
- Apply a default 30s heartbeat interval when scheduler config is missing or invalid
- Dynamically register and update heartbeat triggers from AgentStore create/update events
- Register all non-disabled agents at startup and guard listener cleanup when stopping runtime
- Treat non-periodic agents as healthy in dashboard health checks to avoid stale-time false alarms
- Expand engine and dashboard tests and add a patch changeset for @gsxdsm/fusion
2026-04-17 20:40:06 -07:00
Fusion
0a89068ef0 fix(FN-2041): reduce Quick Chat FAB desktop edge margin
- Change QuickChatFAB desktop drag clamp margin from 48px to 8px while keeping the 4px mobile margin
- Update QuickChatFAB drag boundary tests and descriptions to assert the new 8px desktop behavior
- Add a patch changeset for @gsxdsm/fusion documenting the FAB edge margin reduction
2026-04-17 20:31:53 -07:00
Fusion
a0cf637c66 fix(FN-2022): correct insights status badge classes and mobile wrapping
- Fix status badge class interpolation in InsightsView so status-specific modifiers render correctly
- Add regression tests that assert generated and confirmed statuses map to the right badge classes
- Improve mobile insights layout by allowing action/meta rows to wrap and preventing title overflow
- Increase mobile icon button touch targets in insight item actions
2026-04-17 20:16:23 -07:00
Fusion
c6377a91d4 fix(FN-2021): raise model selector dropdown above quick chat panel
- Increase the model selector dropdown z-index in dashboard styles from 1000 to 1010
- Ensure the selector menu layers above the quick chat panel so options remain visible and clickable
2026-04-17 19:54:49 -07:00
Fusion
13855cf11a fix(FN-2019): raise mobile toast position above bottom actions
- Update mobile .toast-container bottom offset to include nav, executor footer, standalone gap, safe area, and spacing tokens
- Keep toast notifications visible above bottom action buttons on mobile layouts
- Align utility-mobile CSS expectation with the new token-based calc expression
2026-04-17 19:44:37 -07:00
Fusion
a19175cb59 fix(FN-2010): increase quick chat panel height on mobile
- Remove the redundant mobile .quick-chat-panel override block that duplicated panel sizing rules
- Increase .quick-chat-panel--mobile height to min(520px, calc(100dvh - 120px)) for more chat space on small screens
- Preserve existing bottom offset behavior tied to footer, nav, and safe-area insets
2026-04-17 19:34:45 -07:00
Fusion
f6cc5aeaf0 feat(FN-2009): show waiting and thinking states during chat streaming
- Render streaming assistant bubbles in ChatView and QuickChatFAB as soon as streaming starts
- Show "Connecting…" before text arrives and switch to "Thinking…" when thinking output is present
- Render streaming thinking content in a collapsible details block in QuickChatFAB to match ChatView behavior
- Add muted italic waiting-state styles for chat and quick chat message content
- Add ChatView streaming state tests for waiting and thinking pre-text scenarios
2026-04-17 19:23:40 -07:00
Fusion
695d0fd858 feat(FN-2033): gate agents view navigation behind feature flag
- Wire App.tsx to read experimentalFeatures.agentsView, hide agents view when disabled, and redirect agents taskView back to board
- Add showAgentsTab prop to Header and MobileNavBar and conditionally render agents navigation controls only when enabled
- Update App, Header, and MobileNavBar tests to cover enabled/disabled agents tab behavior and active-state interactions
- Adjust mobile and tablet regression tests to pass showAgentsTab where agents controls are expected
2026-04-17 19:17:24 -07:00
Fusion
fc106f6e6e feat(FN-2002): add markdown preview modes to agent content tabs
- Add edit/preview toggles for Instructions, Soul, and Memory tabs in AgentDetailView
- Render markdown previews with ReactMarkdown and remark-gfm, including empty-state placeholders
- Hide save actions during preview mode and reset preview state when agent content changes
- Add CSS for preview toolbars and panes, plus comprehensive AgentDetailView tests for tab preview behavior
2026-04-17 18:55:12 -07:00
Fusion
8711c10922 feat(FN-2027): gate Insights and Roadmaps views behind experimental flags
- Add insightsEnabled and roadmapEnabled state in useAppSettings derived from project experimentalFeatures.
- Pass experimental feature visibility into Header and MobileNavBar and hide Insights/Roadmaps navigation controls unless enabled.
- Redirect users back to Board when a disabled Insights or Roadmaps view is active after settings load.
- Update Settings modal to always show labeled Insights and Roadmaps feature toggles alongside any custom experimental flags.
- Expand App, Header, MobileNavBar, and SettingsModal tests to cover gated rendering and behavior.
2026-04-17 18:47:40 -07:00
Fusion
77f384ca66 feat(FN-2032): gate Header nodes button by nodesView flag
- Add optional showNodesButton prop to Header while keeping default behavior backward compatible
- Hide desktop and mobile overflow Nodes actions when showNodesButton is false
- Wire App.tsx to experimentalFeatures.nodesView, guard node toggle handling, and auto-close the overlay when disabled
- Add Header tests for desktop/mobile visibility and click behavior across showNodesButton states
2026-04-17 18:03:46 -07:00
Fusion
3538a5c99d fix(FN-1991): prevent horizontal scrolling in mobile pi settings
- Add horizontal overflow clipping to the mobile settings content container
- Wrap long helper text in settings form-group small elements to avoid viewport overflow
- Preserve vertical scrolling behavior for settings sections on small screens
2026-04-17 17:55:33 -07:00
Fusion
cfb5228855 feat(FN-1990): promote quick fields in new task modal
- Add TaskForm renderBelowPrimary and hideDependencies props to support injected primary-section content
- Build NewTaskModal quick-fields for dependency selection and agent assignment above the More options panel
- Style quick-fields and mobile modal spacing with design tokens, including full-width triggers and 36px touch targets
- Expand modal and form tests to cover slot rendering, dependency hiding behavior, quick-fields visibility, and mobile CSS rules
2026-04-17 17:44:53 -07:00
Fusion
a9275f9bdb fix(FN-1988): improve dashboard mobile view ergonomics
- Add AgentsView mobile overrides for content padding and wrapped control/title layouts
- Add comprehensive NodesView mobile CSS for header/action wrapping, compact stats grid, and section spacing
- Refine InsightsView mobile touch targets and count typography for action controls
- Add mobile CSS regression tests that assert AgentsView and NodesView rules inside max-width 768px media blocks
2026-04-17 17:21:00 -07:00
Fusion
81d2cbeb56 fix(FN-1987): move skills search to top and improve catalog fallback
- Move the shared skills search input to the top of SkillsView so it applies to discovered skills and catalog results
- Add client-side discovered skills filtering by name/path with a dedicated filtered-empty-state message
- Extend skills adapter fallback logic to use unauthenticated catalog search when authenticated requests return 400, 401, or 403
- Add dashboard component and adapter tests covering discovered filtering behavior and authenticated-endpoint fallback scenarios
2026-04-17 17:06:09 -07:00
Fusion
c6f3b8c074 feat(FN-2031): gate skills view behind experimental feature flag
- Read experimentalFeatures from app settings and derive skillsView enablement
- Hide Skills view toggles in Header and MobileNavBar unless showSkillsTab is enabled
- Prevent direct navigation to skills view by redirecting disabled sessions back to board
- Update Header and MobileNavBar tests to cover enabled, disabled, and default-hidden skills tab behavior
2026-04-17 16:59:09 -07:00
Fusion
0678a5cdf6 feat(FN-2028): reorder settings sections by scope group
- Reorder SETTINGS_SECTIONS to present Account, Global, then Project groups in the sidebar
- Move Project Models into the Project group to match its project-scoped behavior
- Update SettingsModal inline documentation to clarify section grouping and scope ownership
2026-04-17 16:51:33 -07:00
Fusion
0750e69f63 fix(FN-1985): expand agent import skills list on mobile
- Add a mobile max-height rule for .agent-import-skill-list using dynamic viewport units.
- Allow the skills picker to fill available screen space without overflowing the agent import modal.
2026-04-17 16:45:07 -07:00
Fusion
7b38fa623d feat(FN-1978): rename schedule actions to Automation and polish mobile layout
- Rename Schedules/Scheduled Tasks labels to Automation in header and mobile navigation actions
- Update desktop, tablet, and mobile header tests to assert the new Automation wording and behavior
- Improve mobile schedule and routine modal spacing with token-based padding/margin updates for cards, forms, and empty states
- Refresh the UX audit report to reference the Automation label in the header control inventory
2026-04-17 16:36:15 -07:00
Fusion
cdcaf027e4 fix(FN-1969): remove redundant mobile margin on milestone ideas button
- Remove the mobile-specific margin override from .roadmap-suggestion-expand-btn in dashboard styles.
- Rely on existing container spacing so the generate milestone ideas action aligns consistently on small screens.
2026-04-17 15:47:59 -07:00
gsxdsm
0a8d58e63b feat(FN-1967): merge fusion/fn-1967 2026-04-17 15:40:02 -07:00
Fusion
da2d9fbcf1 fix(FN-2011): keep chat input responsive during streaming
- Make useChat and useQuickChat sendMessage synchronous and update consumers to call it without awaiting
- Allow ChatView and QuickChatFAB inputs to remain editable while responses stream
- Keep quick chat send disabled during active streaming to prevent concurrent sends
- Add hook and component tests for synchronous sendMessage and non-blocking input behavior
2026-04-17 15:38:32 -07:00
Fusion
d8f3cb065a fix(FN-2020): prevent duplicate retry toasts
- Remove the pre-retry info toast from TaskDetailModal retry handling
- Keep a single completion toast with updated success copy: "Retried {taskId}"
- Add regression tests to assert exactly one toast is shown on retry success
- Add regression tests to assert exactly one toast is shown on retry failure
2026-04-17 15:31:59 -07:00
gsxdsm
a054db8859 feat(FN-2018): merge fusion/fn-2018 2026-04-17 15:25:02 -07:00
gsxdsm
c5181c6e32 feat(FN-2012): merge fusion/fn-2012 2026-04-17 15:24:46 -07:00
gsxdsm
6fbf2871e9 feat(FN-1956): merge fusion/fn-1956 2026-04-17 15:24:37 -07:00
Fusion
0433ce5dd8 fix(FN-2024): gate task SSE subscriptions by active view
- Add an sseEnabled option to useTasks and skip SSE subscription setup when disabled
- Compute taskSseEnabled in App based on board/list views and pass it through to useTasks
- Migrate useRemoteNodeEvents from raw EventSource management to shared subscribeSse bus usage
- Update App, useTasks, and useRemoteNodeEvents tests to cover SSE gating and bus-based event wiring
2026-04-17 15:21:15 -07:00
Fusion
8d6ad619e8 feat(FN-2023): merge fusion/fn-2023 2026-04-17 15:16:21 -07:00
gsxdsm
dde182286a feat(FN-1573): merge fusion/fn-1573 2026-04-17 15:10:24 -07:00
Fusion
0132328128 feat(FN-2006): split quick chat flows into agent and model modes
- Add explicit agent/model mode toggles to QuickChatFAB and NewChatDialog
- Update session target logic so model mode starts chats with the KB agent while agent mode uses selected agents
- Clear opposite selections when switching modes and adjust placeholders/disabled states to match active mode
- Expand ChatView and QuickChatFAB tests to cover toggle visibility, mode switching, and session payload behavior
- Add useQuickChat coverage to verify agent-only switchSession calls omit model parameters
2026-04-17 15:02:54 -07:00
gsxdsm
24c4c008ad feat(FN-2008): merge fusion/fn-2008 2026-04-17 14:55:28 -07:00
gsxdsm
f17f666df1 feat(FN-2015): merge fusion/fn-2015 2026-04-17 14:40:39 -07:00
Fusion
20f47ad93f test(FN-2016): stabilize PlanningModeModal favorites persistence tests
- Move model favorites persistence coverage into the main PlanningModeModal describe block so shared mocks and fixtures are in scope
- Replace skipped placeholder cases with user-interaction tests for adding and removing provider/model favorites via the combobox portal
- Assert updateGlobalSettings payloads for favorite toggles and verify rollback behavior when settings persistence fails
- Remove duplicate API import and delete the broken out-of-scope favorites describe block
2026-04-17 14:39:19 -07:00
Fusion
96aeb67a4f feat(FN-2014): merge fusion/fn-2014 2026-04-17 14:31:43 -07:00
gsxdsm
ac9b0fcd9d feat(FN-2007): merge fusion/fn-2007 2026-04-17 14:25:18 -07:00
Fusion
08e45b14bb perf(FN-2005): add getSettingsByScopeFast() to avoid listWorkflowSteps() 2026-04-17 14:24:32 -07:00