Commit Graph

427 Commits

Author SHA1 Message Date
gsxdsm
67d2222202 Harden dashboard worktree shutdown handling 2026-04-11 20:28:34 -07:00
gsxdsm
9b56460ac4 feat(FN-1449): complete agent UI field parity with Agent Companies
This change aligns agent editing surfaces across dashboard UI, API payloads,
and import/template flows so every first-class editable agent field is
round-trippable.

Backend changes:
- Add memory and bundleConfig fields to POST/PATCH /api/agents routes
- Fix agent-companies-parser to use first-class fields (title, icon, role,
  reportsTo, instructionsText) instead of metadata fallbacks
- Update import dry-run preview to show more manifest fields

UI changes:
- Enable identity field editing (name, title, icon, role, reportsTo) in
  AgentDetailView ConfigTab
- Add instruction bundle configuration (mode, entry file, files, external
  path) to ConfigTab
- Add memory field to NewAgentDialog
- Fix AI generation mapping to preserve systemPrompt as instructionsText
- Update AgentImportModal preview to show icon, reportsTo, and instructions

Test fixes:
- Update parser tests for new first-class field behavior
- Add MissionExecutionLoop mock for serve tests

Documentation:
- Add agent field parity matrix to docs/agents.md
- Create changeset for @gsxdsm/fusion
2026-04-11 19:02:32 -07:00
gsxdsm
18f242b2bc feat(FN-1420): add pluggable memory backend system
- Add FileMemoryBackend with atomic writes, persistence, and conflict resolution
- Add ReadOnlyMemoryBackend for read-only/external memory management
- Add memoryBackendType setting to select backend type (file or readonly)
- Add GET /api/memory/backend endpoint to query current backend status and capabilities
- Update AGENTS.md, README.md, and docs with architecture and settings guidance
- Add memory-backend.test.ts with comprehensive tests for all backends
- Add routes.test.ts coverage for /api/memory/backend endpoint
- Fix settings parity test to include new memoryBackendType key
2026-04-11 12:13:25 -07:00
gsxdsm
c8831f7b3b feat(FN-1553): reduce memory bloat with selective save behavior
- Update project memory instructions to encourage selective writes instead of unconditional appends
- Instruct agents to consolidate existing entries rather than add duplicates
- Add guidance to skip memory updates when no durable learnings were discovered
- Clarify what qualifies as durable learnings vs task-specific trivia
- Update user-facing memory documentation to reflect new selective behavior
- Add test coverage for selective memory write instructions
2026-04-11 00:38:42 -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
8c1fce0011 feat(FN-1426): update docs with new Prompts section in Settings modal 2026-04-10 22:38:52 -07:00
gsxdsm
39ffb4b456 feat(FN-1562): merge fusion/fn-1562 2026-04-10 21:22:59 -07:00
gsxdsm
f7322ab541 fix: improve merge verification and dashboard behavior 2026-04-10 18:30:23 -07:00
gsxdsm
775defd1eb feat(FN-1558): add dedicated Instructions tab in Agent Detail view
- Add InstructionsTab component for editing agent system instructions directly in the dashboard
- Include validation (character count, preview section) and reset to default functionality
- Add 82 regression tests covering Instructions tab editing flows
- Update agents.md documentation with Instructions tab usage guide
- Add changeset for @gsxdsm/fusion package
2026-04-10 13:30:37 -07:00
gsxdsm
d9acc10c49 feat(FN-1540): add lint as inline quality gate in task prompts
- Add ESLint configuration (eslint.config.mjs) for TypeScript/JavaScript linting
- Update executor prompts to include lint instruction before code submission
- Add lint check to triage prompt validation workflow
- Update agent prompts to emphasize lint compliance as quality requirement
- Add lint tool to agent toolset with file-level rule disabling capability
- Include lint in CI workflow with non-blocking status
- Update tests to verify lint-inclusive prompt behavior
- Add documentation for lint integration in contributing.md
- Add changeset for @gsxdsm/fusion minor release
2026-04-10 12:48:27 -07:00
gsxdsm
ed396fc6b6 feat(FN-1539): add deterministic merge verification runner
- Add verification runner that executes testCommand then buildCommand before merge completion
- Verification runs on all merge paths (AI resolve, auto-resolve, -X theirs)
- If verification fails, merge is aborted and task stays out of done
- Add comprehensive tests for merger verification logic
- Fix routine-store test variable reference bug (created.id vs routine.id)
- Add changeset for @gsxdsm/fusion patch release
2026-04-10 12:20:56 -07:00
gsxdsm
05bb51fe21 feat(FN-1464): merge fusion/fn-1464 2026-04-10 12:07:01 -07:00
gsxdsm
153bf9aab4 feat(FN-1463): fix settings tab highlight alignment on mobile
- Fix settings modal tab alignment on mobile by switching .settings-nav-item to flexbox
- Add align-items: center to .settings-sidebar for icon+label vertical alignment
- Add justify-content: center and gap: 4px to .settings-nav-item
- Remove deprecated text-align: center from .settings-nav-item
- Add regression tests for new CSS properties in settings-mobile tests
2026-04-10 10:38:29 -07:00
gsxdsm
e04c1d7e58 feat(FN-1547): verify and lock Kimi usage endpoint configuration with regression tests
- Verify underscore endpoint (/v1/coding_plan/usage) as primary (Codexbar-validated)
- Add hyphen endpoint (/v1/coding-plan/usage) as legacy fallback
- Short-circuit 401/403 errors immediately without fallback attempts
- Fallback to alternate endpoint on 404, return sanitized url.not_found error on final 404
- Add regression tests for all error scenarios
2026-04-10 10:36:42 -07:00
gsxdsm
f5a36596f5 fix(FN-1537): stabilize CI workflows and fix version tests
- Update GitHub Actions workflows to use Node.js 24 (actions/setup-node@v5)
- Add private packages to .changeset/config.json ignore array
- Fix version string tests to read dynamically from package.json
- Add FN-1537 documentation to .fusion/memory.md
2026-04-10 09:42:51 -07:00
gsxdsm
bb679d5aa1 feat(FN-1532): add performance indexes for dashboard boot queries
- Add composite indexes for dashboard boot query paths
- Optimize taskList queries with (column, updatedAt) and (column, status, updatedAt) indexes
- Optimize activityLog queries with (timestamp DESC, taskId) index
- Add idempotent CREATE INDEX IF NOT EXISTS pattern for migrations
- Document index patterns in memory.md for future schema changes
- Update schema version assertions in db.test.ts and task-documents.test.ts
- Add changeset for dashboard load performance improvement
2026-04-10 07:26:13 -07:00
gsxdsm
a3d70e5190 feat(FN-1528): sanitize Kimi 404 url.not_found errors in usage screen
- Add sanitization for Kimi API 404 url.not_found error messages in usage.ts
- Replace technical error codes with user-friendly messages to avoid leaking internal API details
- Add regression test covering error sanitization with mock usage data
2026-04-10 02:57:32 -07:00
gsxdsm
dfaf768601 feat(FN-1430): add worktree execution boundaries to prevent out-of-scope modifications
- Add worktree-aware path boundaries in agent factory to prevent cross-task contamination
- Sync core agent prompts with worktree boundary guidance for consistent enforcement
- Add boundary guidance to executor prompts so agents understand their scope
- Fix TypeScript types for worktree boundary wrapping
- Add comprehensive tests for boundary wrapping behavior
- Create changeset for @gsxdsm/fusion (minor)
2026-04-09 23:59:45 -07:00
gsxdsm
1d42066f86 feat(FN-1491): add centralized agent health status utility
- Create agentHealth.tsx utility with consistent health status logic
- Update AgentDetailView, AgentListModal, and AgentsView to use centralized utility
- Add comprehensive tests for health status edge cases
- Update agents.md documentation with health status reference
- Add changeset for @gsxdsm/fusion patch release
2026-04-09 22:58:47 -07:00
gsxdsm
094db24992 fix(engine): recover stuck in-review merges 2026-04-09 22:30:41 -07:00
gsxdsm
b93c418356 fix: recover tasks stuck in review after pause 2026-04-09 22:14:44 -07:00
gsxdsm
0d2a989f07 feat(FN-1496): harden semaphore lane-vs-utility boundary
- Add explicit boundary comments to serve.ts and dashboard.ts clarifying semaphore lane usage
- Add regression tests for semaphore lane-vs-utility boundary in serve.test.ts and dashboard.test.ts
- Add changeset for @gsxdsm/fusion patch release
2026-04-09 21:52:07 -07:00
gsxdsm
5883dffc74 feat(FN-1484): fix agent picker stale cache on project switch
- Clear agent cache when projectId changes in QuickEntryBox and InlineCreateCard
- Add regression tests for agent picker cache invalidation behavior
- Add changeset for @gsxdsm/fusion patch release
2026-04-09 21:39:09 -07:00
gsxdsm
b7005001d2 feat(FN-1474): add Kimi endpoint fallback for 404 url.not_found 2026-04-09 21:36:53 -07:00
gsxdsm
b738019ddb feat(FN-1500): suppress per-tool triage stdout spam
- Add tool-specific toolOutput handler in triage agent to filter per-tool output
- Add test coverage for tool output suppression behavior
- Suppress console spam from read_file, Read, glob, Grep tools during triage runs
- Update memory documentation with Vitest expect.any(Number) pitfall
2026-04-09 21:28:30 -07:00
gsxdsm
51a57045e1 feat(FN-1503): refine Kimi logo with official crescent moon brand mark
- Update ProviderIcon with Kimi's official crescent moon brand mark
- Add comprehensive tests for ProviderIcon component with Kimi logo variants
- Include changeset for @gsxdsm/fusion package
2026-04-09 21:28:00 -07:00
gsxdsm
375f431f69 feat(FN-1468): wire plugin backend into dashboard and serve startup
- Add plugin backend wiring to fn dashboard startup
- Add plugin backend wiring to fn serve (headless node) startup
- Document plugin wiring pattern in project memory
- Add comprehensive tests for plugin initialization in dashboard and serve commands
- Include changeset for @gsxdsm/fusion package
2026-04-09 21:22:46 -07:00
gsxdsm
402b1db123 fix(FN-1475): replace Kimi logo with correct Moonshot AI brand mark
- Update ProviderIcon.tsx to use Moonshot AI logo instead of Kimi branding
- Fix logo display in UsageIndicator component
- Add ProviderIcon unit tests covering all provider icons
- Add UsageIndicator tests for provider icon rendering
- Add CustomModelDropdown integration tests for model selection flow
2026-04-09 21:08:16 -07:00
gsxdsm
3ab16f6ad4 feat(FN-1477): add memory pruning to daily insight extraction
- Add pruneStaleMemoryEntities() function to memory-insights.ts
- Integrate memory pruning into dailyInsightExtraction() workflow
- Add maxMemoryAgeDays setting (default: 30 days) for configurable pruning threshold
- Include pruned count in daily insight report summary
- Add comprehensive unit tests for memory pruning logic
- Update docs: architecture, memory-plugin-contract, settings-reference, contributing
2026-04-09 21:07:48 -07:00
gsxdsm
7bd98d888c feat(FN-1429): enforce always-green test-suite instructions for executor agents
- Add explicit always-green test suite instructions to executor agent prompts
- Update executor to enforce test-suite validation before task completion
- Add tests for agent prompt generation and executor behavior
- Ensure test failures block merge-ready state rather than allowing broken builds
2026-04-09 19:33:44 -07:00
gsxdsm
db0d5c8dc9 feat(FN-1133): add plugin hot-reload support
- Add PluginLoader hot-load/unload with watch mode, auto-recovery, and staged loading
- Add PluginRunner reactive integration with executor dynamic tools registration
- Add dashboard reload endpoint (POST /api/plugins/reload) and PluginManager UI
- Add comprehensive tests for plugin-hot-reload (core) and plugin-runner (engine)
- Update plugin authoring docs and add memory notes
- Add changeset for @gsxdsm/fusion minor release
2026-04-09 19:15:53 -07:00
gsxdsm
daabb51e71 feat(FN-1399): add background memory summarization after task completion
- Add MemoryInsights class in @fusion/core for AI-powered memory audit generation
- Add post-run hook to CronRunner for triggering memory summarization after scheduled tasks
- Wire memory background processing in both dashboard and serve commands
- Add memoryAuditEnabled and memoryAuditSchedule settings for configurable automation
- Fix startup ordering: sync automation before cronRunner.start() to prevent race conditions
- Add comprehensive tests for memory-insights and dashboard/serve integration
- Update contributing.md and settings-reference.md with documentation
2026-04-09 16:14:44 -07:00
gsxdsm
8f50526158 fix(FN-1339): move executor status bar above mobile nav bar 2026-04-09 15:49:42 -07:00
gsxdsm
7ab96cc876 feat(FN-1381): add Send Back dropdown for in-progress tasks
- Add Send Back dropdown to TaskCard showing for in-progress tasks with available target columns
- Thread onMoveTask prop through Column component to BoardView
- Terminate agent sessions when tasks move away from in-progress column
- Add executor tests for move-away session termination
- Add TaskCard send-back UI tests with dropdown visibility and interaction verification
2026-04-09 13:00:37 -07:00
gsxdsm
3ea53f1aa2 feat(FN-1229): add node mesh CLI commands for node and mesh management
- Add fn node list command to list all registered nodes with status and URL
- Add fn node show command to display detailed node information including system metrics
- Add fn node health-check command to trigger and verify node health status
- Add fn node remove command to unregister nodes from the mesh
- Add fn mesh status command to show mesh topology with peer connections
- Add comprehensive tests for all node and mesh CLI commands
- Update bin.ts to wire up new node and mesh subcommands
- Update memory with CLI mock pattern for testing
2026-04-09 12:54:16 -07:00
gsxdsm
07e193b0a0 feat(FN-1228): add Node Dashboard UI with mesh topology and routes tests 2026-04-09 12:34:03 -07:00
gsxdsm
ac07be790b feat(FN-1348): export HeartbeatMonitor and HeartbeatTriggerScheduler from @fusion/engine 2026-04-09 09:42:21 -07:00
gsxdsm
f6b2a742c5 feat(FN-1213): add 8 new color themes to dashboard
- Add 8 new theme IDs to COLOR_THEMES in core types
- Add CSS blocks with color swatches for all 8 new themes
- Update ThemeSelector to display new theme options
- Register themes in index.html validThemes array
- Add comprehensive tests for new theme support
- Include changeset for @gsxdsm/fusion package
2026-04-09 09:17:50 -07:00
gsxdsm
a5b1e1fb8d feat(FN-1345): add soul and instructionsText to agent presets
- Add soul and instructionsText fields to all 20 built-in agent presets
- Enable soul-based agent visualization and instructions preview in NewAgentDialog
- Add comprehensive tests for preset soul and instructionsText rendering flow
- Include changeset for @gsxdsm/fusion minor release
2026-04-09 08:47:54 -07:00
gsxdsm
f2829c7634 fix(FN-1290): recover orphaned stuck tasks 2026-04-08 20:22:58 -07:00
gsxdsm
47a035fde1 feat(FN-1286): add ErrorBoundary component with page-level, modal, and root-level wrapping
- Create ErrorBoundary and ModalErrorBoundary components with recovery actions (retry, reload)
- Add error boundary CSS styles with fallback UI styling
- Wrap main dashboard pages (Board, List, Settings, Agents) with PageErrorBoundary in App.tsx
- Wrap all key modals (task detail, planning, subtask breakdown, mission) with ModalErrorBoundary in AppModals.tsx
- Wrap entire App with RootErrorBoundary in main.tsx as final safety net
- Add 11 comprehensive ErrorBoundary tests covering all rendering and error scenarios
2026-04-08 20:04:23 -07:00
gsxdsm
7e8a99a9ce fix(FN-1235): restore terminal text input interaction
- Remove the xterm pointer-events override from dashboard styles to allow terminal text input focus and typing
- Add a terminal input CSS contract test to guard against regressions in xterm helper element interactivity
- Add a patch changeset for @gsxdsm/fusion documenting the terminal text input fix
2026-04-08 19:19:49 -07:00
gsxdsm
b2f0df5455 feat(FN-1219): add mission observability and autopilot dashboard UX
- Add mission observability types and API helpers, and forward mission events through SSE with mission filtering support
- Expand MissionManager with health indicators, activity/event log views, improved autopilot controls, and activity auto-scroll behavior
- Refine mission detail mobile controls and styling updates for responsive observability surfaces
- Add regression coverage for MissionManager behavior/mobile CSS and SSE mission filtering
- Include a changeset documenting the mission dashboard observability update
2026-04-08 18:08:06 -07:00
gsxdsm
719cf901aa feat(FN-1320): re-engage autopilot when resuming missions
- Re-engage MissionAutopilot when a paused mission is resumed with autopilot enabled
- Wire mission autopilot into dashboard route setup so resume flows can trigger watcher start
- Extend mission e2e tests to cover autopilot mock shape and resume re-engagement behavior
- Add a patch changeset documenting the mission resume autopilot fix
2026-04-08 16:29:46 -07:00
gsxdsm
f60c06be79 feat(FN-1298): add stop-agent-run flow across engine and dashboard
- Add heartbeat stopRun support in the engine and wire it into the dashboard server lifecycle
- Add an agent run stop API route and client helper with route-level test coverage
- Add stop controls in AgentDetailView and AgentRunHistory with updated UI tests
- Add a changeset for @gsxdsm/fusion documenting the new stop run feature
2026-04-08 16:17:34 -07:00
gsxdsm
d66300c794 feat(FN-1236): migrate GitHub PR workflows to gh authentication
- Require gh-authenticated paths for task pr-create and dashboard PR routes
- Switch dashboard command and extension GitHub tools to use the gh auth client instead of token-based auth
- Update CLI and dashboard tests to cover gh-only createPr and import behavior
- Refresh README guidance and add a changeset removing the GitHub token requirement for PR flows
2026-04-08 15:40:39 -07:00
gsxdsm
c1918c6819 feat(FN-1318): rename CLI binary artifacts from kb to fn
- Update CLI build and runtime paths to emit and reference fn-named binaries across default and cross-target builds
- Adjust Bun binary bootstrap stubs and native patch temp/symlink prefixes to use fn naming consistently
- Update CI, release, and test-release workflows to validate and collect fn-prefixed artifacts
- Align CLI build and package config tests with fn binary expectations and add a patch changeset for @gsxdsm/fusion
2026-04-08 14:47:30 -07:00
gsxdsm
9ad0b8be24 feat(FN-1216): rename extension tools to fn_* across CLI and docs
- Rename all pi extension tool registrations from kb_* to fn_* across task, mission, and agent tool families
- Update extension and skill-sync tests plus Fusion skill docs/workflows to assert and document the new fn_* tool names
- Align product-identity strings across core, dashboard, and CLI references, including GitHub import examples, User-Agent headers, and terminal TERM_PROGRAM
- Add a @gsxdsm/fusion minor changeset describing the extension tool-prefix rename
2026-04-08 14:26:30 -07:00
gsxdsm
b0b3ca7e4b fix(FN-1300): capture agent run output in heartbeat and step sessions
- Wire AgentLogger into heartbeat runs, including tool/text callbacks and stdout excerpts on run records
- Persist heartbeat context taskId snapshots earlier and ensure logger flushes on success and failure paths
- Pass TaskStore into StepSessionExecutor and flush per-attempt agent logs in finally cleanup
- Expand heartbeat and step-session tests to verify log persistence and flush behavior, and add a patch changeset for @gsxdsm/fusion
2026-04-08 12:46:24 -07:00
gsxdsm
156d49f70b fix(FN-1287): standardize dashboard API error responses
- Add shared ApiError class and response helpers for consistent error shape
- Migrate routes and mission-routes handlers to use standardized API errors
- Update server error middleware, rate limiter, and node metrics error handling to use shared helpers
- Expand dashboard tests with ApiError coverage and standardized response assertions
- Add a changeset documenting the @gsxdsm/fusion patch for API error shape standardization
2026-04-08 12:37:47 -07:00