Commit Graph

2400 Commits

Author SHA1 Message Date
Fusion
7a230cfd3d feat(FN-2049): expand memory view with multi-file editing and retrieval controls
- Extend useMemoryData with multi-file memory documents, settings state, and retrieval test helpers
- Upgrade MemoryView working memory tab to manage multiple files with file switching and editor actions
- Add configuration controls for dreams mode and auto-summarize behavior in memory settings
- Integrate qmd retrieval testing in the engines tab and surface retrieval results in dedicated cards
- Add styles for memory settings panels and retrieval result cards to match dashboard UI patterns
2026-04-18 15:07:39 -07:00
Fusion
f14dec5770 fix(FN-2013): flush buffered SSE events at stream end
- Remove the trailing-newline guard when flushing pending SSE buffer data in streamChatResponse
- Re-enable the regression test covering final done events without a trailing blank line
- Add parser coverage for chunk-split events, newline-terminated streams, and incomplete trailing fragments
- Add a patch changeset for @gsxdsm/fusion documenting the SSE final-buffer flush fix
2026-04-18 14:55:20 -07:00
Fusion
72f3d04d09 feat(FN-1980): add project markdown files to Documents view
- Add backend Markdown scanner and /project-files/md endpoint with directory exclusions, depth/size limits, and search filtering
- Extend dashboard API and useDocuments hook to fetch task documents and project markdown files in parallel with resilient partial-failure handling
- Update Documents view with a collapsible Project Files section, inline metadata previews, and on-demand file content expansion from workspace API
- Add and refresh hook and file-service tests to cover markdown scanning, query propagation, project scoping, and fetch error behavior
- Add token-based styles for project file cards and responsive mobile adjustments in the documents panel
2026-04-18 14:32:42 -07:00
Fusion
1851469575 feat(FN-1986): improve skills content loading and mobile detail UX
- Normalize GET /api/skills/:id/content handling by decoding encoded IDs and returning consistent invalid-id and not-found responses
- Update readSkillContent to use stat-based file vs directory detection, read SKILL.md robustly, and list non-SKILL.md entries
- Refine SkillsView interactions to ignore toggle clicks, support explicit retry of failed content fetches, and show a SKILL.md fallback placeholder
- Add/adjust dashboard route, component, and mobile CSS tests to cover content route behavior, retry flow, and touch-friendly detail panel styles
2026-04-18 14:09:47 -07:00
Fusion
44caaa45d9 fix(FN-2055): harden node test utilities and import resolution
- Convert seed-sample-nodes into a test-only helper and remove direct execution against the real central database
- Replace private-looking host examples with RFC 5737 test-net addresses in node connection docs and ConnectNodeModal expectations
- Add Vitest aliases for @fusion/core and @fusion/engine to stabilize cross-package test imports
- Load AgentReflectionService via local engine source path in in-process runtime to avoid alias resolution failures
2026-04-18 12:21:14 -07:00
Fusion
de674b1844 refactor(FN-2056): replace agent preset emojis with symbol glyphs
- Replace emoji role icons in AgentListModal, AgentsView, and NewAgentDialog with consistent geometric symbols
- Update agent preset catalog icons, including reviewer and template agent presets, to professional symbol-based glyphs
- Change the default unknown-role icon fallback from a robot emoji to a neutral symbol
- Update NewAgentDialog and agent-presets tests to assert symbol icons and broaden icon validation beyond emoji ranges
2026-04-18 12:14:43 -07:00
Fusion
36cec38c14 fix(FN-2054): harden agent loop stuck-detection and self-healing
- Add defensive cleanup for in-memory task tracking when tasks move state or agents pause
- Improve stuck-detection and self-healing flow to reduce leaked state and missed recovery paths
- Add logging around previously swallowed errors and tighten executor cleanup behavior
- Expand restart and self-healing reliability tests to cover regression scenarios
2026-04-18 12:11:00 -07:00
gsxdsm
89b5a722dc feat(FN-2052): merge fusion/fn-2052 2026-04-18 10:43:23 -07:00
Fusion
fad2c68ba2 fix(FN-2053): enforce mission status consistency from feature state
- Recompute slice status when adding a feature so stale "complete" slices cascade back to milestone and mission statuses
- Require checkMissionCompletion to verify every feature is done before marking a mission complete
- Add mission-wide status-chain recomputation when stale complete slices or milestones are detected during reconciliation
- Expand core and engine tests to cover addFeature downgrades, stale complete states, and feature-level completion checks
2026-04-18 10:41:34 -07:00
gsxdsm
7575ae46bf feat(FN-2051): merge fusion/fn-2051 2026-04-18 10:28:16 -07:00
Fusion
9ff05e1e7f feat(FN-2050): gate memory view behind experimental feature flag
- Add memoryView to KNOWN_EXPERIMENTAL_FEATURES and derive memoryEnabled in useAppSettings
- Gate Memory view rendering and board fallback in App based on memoryEnabled
- Hide Memory actions in Header overflow and MobileNav more sheet unless experimentalFeatures.memoryView is enabled
- Extend App, Header, and MobileNav tests to cover memoryView enabled/disabled behavior
2026-04-18 10:26:45 -07:00
Fusion
0ffcc5e251 feat(FN-1971): Step 1 - Add streaming variant of generateFeatureSuggestions
- Extract generateFeatureSuggestionsCore() that accepts onText/onThinking callbacks
- Refactor generateFeatureSuggestions() to use core with no-op callbacks
- Add generateFeatureSuggestionsStream() that uses core with SSE callbacks
- Add SseCallbacks interface for streaming output types
2026-04-18 10:24:59 -07:00
Fusion
b612d0abb5 docs(FN-1964): document dashboard package review findings
- Add a comprehensive findings report for the packages/dashboard review scope
- Summarize 22 issues by severity and focus area, including one critical API error-handling gap
- Document concrete file/line references and code snippets across API routes, SSE, hooks, accessibility, and styling
- Include actionable recommendations for each finding to guide follow-up fixes
2026-04-18 09:48:18 -07:00
Fusion
00f5e8fd95 feat(FN-1957): add inbox/outbox sub-tabs to agent mailbox views
- Split agent mailbox responses into inbox and outbox arrays while keeping messages as an inbox alias
- Add Inbox/Outbox sub-tabs in MailboxView and MailboxModal with unread badge and agent-switch reset behavior
- Render tab-specific empty states and sent-message metadata in the outbox list
- Add dashboard styles and mobile overrides for agent mailbox sub-tabs
- Expand MailboxModal and MailboxView tests to cover sub-tab visibility, switching, reset, and unread badge behavior
2026-04-18 09:30:03 -07:00
Fusion
8fa3b50e72 feat(FN-1947): add file mention search and chat autocomplete
- Add file search API wiring in dashboard client/server with route coverage for /api/files/search
- Introduce useFileMention hook and FileMentionPopup component, integrated into ChatView and QuickChatFAB
- Resolve @file references in chat messages so referenced file content is included in AI context
- Add styling, mobile responsiveness, and focused tests for popup UI, hook behavior, chat resolution, and file services
2026-04-18 07:36:57 -07:00
Fusion
3d272b0d29 feat(FN-1944): add Pi settings package management flow
- Add dashboard backend routes for Pi settings management with comprehensive route tests
- Add API client functions and tests for fetching and updating Pi settings endpoints
- Replace PiExtensionsManager with package management UI and add supporting dashboard styles
- Rewrite and fix PiExtensionsManager tests and include a changeset for @gsxdsm/fusion
2026-04-18 06:31:41 -07:00
Fusion
e7ece19c0d feat(FN-1933): show masked API key hints in auth settings
- Add optional keyHint field to the auth provider client interface
- Return masked API key hints from /api/auth/status for API-key providers
- Render key hints in both Settings and onboarding provider cards when authenticated
- Add auth-key-hint styling using existing dashboard design tokens
2026-04-18 05:24:10 -07:00
Fusion
d48e16c404 feat(FN-1910): add detailed QMD memory management workflow
- Add a new Memory view with Working, Insights, and Engines tabs for editing, extraction, audit visibility, and backend status
- Introduce useMemoryData and API client wrappers for insights read/write, extraction triggers, audit reports, and quick memory stats
- Implement dashboard memory routes for /memory/insights, /memory/extract, /memory/audit, and /memory/stats including AI-powered extraction orchestration
- Wire the Memory view into desktop and mobile navigation and persist it in task view state
- Add comprehensive route, API wrapper, and hook tests covering happy paths and validation/error handling
2026-04-18 05:11:57 -07:00
Fusion
e1c744752b feat(FN-1913): add skill content viewer to SkillsView
- Add /api/skills/:id/content support in dashboard API routes and client exports for skill content types
- Extend the skills adapter with readSkillContent() to read SKILL.md and list supplementary files while handling invalid and missing skills
- Update SkillsView with expandable skill detail panels, lazy content loading, and loading/error/empty states without interfering with enable toggles
- Add comprehensive SkillsView, mobile CSS, and skills-adapter tests covering interaction flows and content parsing
2026-04-18 04:18:26 -07:00
Fusion
53babb3524 feat(FN-1850): aggregate projects across connected nodes
- Add /api/projects/across-nodes to merge local projects with online remote node project lists
- Expose fetchProjectsAcrossNodes and ProjectInfoWithSource, and switch useProjects to consume cross-node data
- Update ProjectOverview and ProjectCard with node badges, node count stats, and a node filter dropdown plus responsive styles
- Add server and dashboard test coverage for cross-node aggregation, filtering, and hook behavior changes
- Include a changeset for @gsxdsm/fusion minor release and preserve stale-channel SSE reconnect guards during merge
2026-04-18 03:08:00 -07:00
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