Fusion
cf87c3e3d9
feat(FN-3009): migrate remote settings to global scope
...
This merge migrates Fusion's settings architecture to a unified global scope (FN-3009), consolidating settings types, defaults, merge semantics, updater logic, and routing into a centralized system that aligns dashboard remote settings with global configuration. Secondary changes include adding the
Fusion-Task-Id: FN-3009
2026-04-30 20:10:52 -07:00
Fusion
892f6bde68
feat(FN-3027): add AgentLogViewer, NewAgentDialog improvements, and AgentDe
...
This merge adds research settings to the settings modal and dashboard (FN-2839, FN-3029), implements a dashboard font scale setting with persistence and documentation (FN-3027), refactors AgentDetailView with a new AgentLogViewer CSS module (FN-2839), and improves NewAgentDialog with custom model dr
Fusion-Task-Id: FN-3027
2026-04-30 19:42:05 -07:00
Fusion
10e0a31971
feat(FN-3031): merge fusion/fn-3031
...
This merge adds a new **Research Settings** section to the settings modal and dashboard (ResearchView), including a new schema, types, and resolver exported for dashboard alias builds, along with comprehensive tests and documentation updates. It also makes task review step fields editable in the Tas
Fusion-Task-Id: FN-3031
2026-04-30 19:22:42 -07:00
Fusion
135b0f0b16
feat(FN-3037): add focus-visible styling to AgentLogViewer log action butto
...
Adds `focus-visible` styling to action buttons in the AgentLogViewer component, improving keyboard accessibility for interactive button elements.
Fusion-Task-Id: FN-3037
2026-04-30 19:18:56 -07:00
Fusion
1b6ee247f7
feat(FN-2995): export research settings resolver for dashboard alias builds
...
Exports the research settings resolver from `@fusion/core` types to fix dashboard alias builds, ensuring the resolver is available when imported through the dashboard's module alias configuration.
Fusion-Task-Id: FN-2995
2026-04-30 18:48:59 -07:00
Fusion
718fd29251
feat(FN-3030): add heartbeat markdown viewer modal to AgentDetailView
...
Adds a heartbeat markdown viewer modal to the AgentDetailView (FN-3030) with styling, tests, and documentation for the feature, while also rendering multi-sample theme swatches in the ThemeSelector component (FN-3028).
Fusion-Task-Id: FN-3030
2026-04-30 18:28:01 -07:00
Fusion
48f2dd0de2
feat(FN-2976): detect and display external Tailscale funnel tunnels in remo
...
Merges external Tailscale funnel detection (FN-2976) — adds types, detection logic, status inclusion, kill flow, and a dedicated UI panel for funnel processes started outside Fusion — alongside custom AI providers API routes and a new settings UI section (FN-2965).
Fusion-Task-Id: FN-2976
2026-04-30 05:43:13 -07:00
Fusion
c5f35ab349
feat(FN-2994): merge fusion/fn-2994
...
Commits merged:
- fix(FN-2994): gate unavailable research workflow and humanize provider labels
- fix(FN-2994): polish research view form and history interactions
- feat(FN-2994): complete Step 5 — document research view architecture
- fix(FN-2994): align status-dot variant and hook/test conventions
- fix(FN-2994): address lint and typecheck issues
- test(FN-2994): cover research lifecycle actions and pending status
- fix(FN-2994): polish research actions and cited reader behavior
- feat(FN-2994): complete Step 3 — add lifecycle actions and task flows
- fix(FN-2994): ensure research enables header overflow gate
- feat(FN-2994): complete Step 2 — implement research view shell layout
- feat(FN-2994): complete Step 2 — gate research navigation and view
- feat(FN-2994): complete Step 1 — add research api surface and hook
Files changed:
docs/architecture.md | 7 +-
docs/dashboard-guide.md | 21 ++
packages/dashboard/app/App.tsx | 11 +-
packages/dashboard/app/api/legacy.ts | 143 ++++-----
packages/dashboard/app/components/Header.tsx | 29 +-
packages/dashboard/app/components/MobileNavBar.tsx | 22 +-
packages/dashboard/app/components/ResearchView.css | 247 +++++++++------
packages/dashboard/app/components/ResearchView.tsx | 347 ++++++++++++++-------
.../app/components/__tests__/ResearchView.test.tsx | 183 ++++++-----
.../app/hooks/__tests__/useResearch.test.ts | 66 ++++
packages/dashboard/app/hooks/useResearch.ts | 162 ++++++++++
packages/dashboard/app/research-types.ts | 43 +++
packages/dashboard/app/styles.css | 4 +
.../src/__tests__/research-routes.test.ts | 65 ++++
packages/dashboard/src/research-routes.ts | 195 ++++++++++--
15 files changed, 1111 insertions(+), 434 deletions(-)
Fusion-Task-Id: FN-2994
2026-04-30 03:43:21 -07:00
Fusion
b359cb8672
feat(FN-3022): merge fusion/fn-3022
...
Commits merged:
- feat(FN-3022): complete Step 4 — document mobile quick chat autofocus behavior
- test(FN-3022): complete Step 2 — cover mobile autofocus and delayed enable path
- feat(FN-3022): complete Step 1 — reliable mobile autofocus when composer becomes ready
Files changed:
docs/dashboard-guide.md | 1 +
packages/dashboard/app/components/QuickChatFAB.tsx | 42 +++++++++++++++---
.../app/components/__tests__/QuickChatFAB.test.tsx | 51 ++++++++++++++++++++++
3 files changed, 89 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-3022
2026-04-30 00:30:02 -07:00
Fusion
dc96d572cb
feat(FN-3021): merge fusion/fn-3021
...
Commits merged:
- test(FN-3021): complete Step 2 — assert quick-chat scoped mobile tool-call rules
- feat(FN-3021): complete Step 1 — scope mobile quick-chat tool-call row override
- feat(FN-3021): complete Step 4 — document compact mobile quick-chat tool-call summaries
- fix(FN-3021): complete Step 3 — restore dashboard typecheck in custom providers
- test(FN-3021): complete Step 2 — add mobile quick-chat tool-call regression coverage
- feat(FN-3021): complete Step 1 — keep quick-chat tool-call summary single-line on mobile
Files changed:
docs/dashboard-guide.md | 1 +
packages/dashboard/app/components/CustomProvidersSection.tsx | 1 +
packages/dashboard/app/components/QuickChatFAB.css | 1 +
3 files changed, 3 insertions(+)
Fusion-Task-Id: FN-3021
2026-04-30 00:26:07 -07:00
Fusion
42e8e462fc
feat(FN-3019): merge fusion/fn-3019
...
Commits merged:
- feat(FN-3019): complete Step 4 — document gridlock cooldown semantics
- fix(FN-3019): normalize legacy custom provider payloads for typecheck
- test(FN-3019): complete Step 2 — add gridlock cooldown regression coverage
- fix(FN-3019): repair notifier class structure after cooldown refactor
- feat(FN-3019): complete Step 1 — add gridlock notification cooldown
Files changed:
docs/architecture.md | 3 +-
docs/settings-reference.md | 4 +-
.../app/components/CustomProvidersSection.tsx | 25 ++++++----
.../engine/src/__tests__/gridlock-detector.test.ts | 5 +-
packages/engine/src/__tests__/notifier.test.ts | 47 ++++++++++++++++--
packages/engine/src/gridlock-detector.ts | 16 +++++--
packages/engine/src/notifier.ts | 55 ++++++++++++----------
packages/engine/src/project-engine.ts | 1 +
8 files changed, 109 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-3019
2026-04-30 00:20:51 -07:00
Fusion
493ca91d63
feat(FN-3020): merge fusion/fn-3020
...
Commits merged:
- test(FN-3020): complete Step 2 — lock quick-chat mobile tool-call scoping
- feat(FN-3020): complete Step 1 — scope quick-chat mobile tool-call row styles
- feat(FN-3020): complete Step 4 — document compact quick-chat tool-call rows
- fix(FN-3020): restore custom provider type compatibility for typecheck
- test(FN-3020): complete Step 2 — add quick-chat mobile tool-call regressions
- feat(FN-3020): complete Step 1 — keep compact tool-call rows single-line
Files changed:
docs/dashboard-guide.md | 1 +
.../quick-chat-tool-calls-mobile-layout.test.ts | 46 ++++++++++++++++++++++
.../app/components/CustomProvidersSection.tsx | 25 +++++++++++-
packages/dashboard/app/components/QuickChatFAB.css | 37 +++++++++++++----
packages/dashboard/app/components/QuickChatFAB.tsx | 7 ++--
.../app/components/__tests__/QuickChatFAB.test.tsx | 18 +++++++--
6 files changed, 119 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-3020
2026-04-30 00:10:42 -07:00
Fusion
18d97ca028
feat(FN-3007): merge fusion/fn-3007
...
Commits merged:
- feat(FN-3007): complete Step 4 — document system memory usage bar
- fix(FN-3007): restore custom provider mapper type compatibility
- test(FN-3007): complete Step 2 — cover memory bar semantics and severity
- feat(FN-3007): complete Step 1 — add semantic memory usage progressbar
- test(FN-3007): complete Step 2 — cover memory usage progress semantics
- feat(FN-3007): complete Step 1 — add system memory usage bar
Files changed:
docs/architecture.md | 2 +-
.../app/components/ModelOnboardingModal.tsx | 27 ++++++------
.../dashboard/app/components/SettingsModal.tsx | 27 ++++++------
.../dashboard/app/components/SystemStatsModal.css | 48 ++++++++++++++++++++++
.../dashboard/app/components/SystemStatsModal.tsx | 29 +++++++++++--
.../components/__tests__/SystemStatsModal.test.tsx | 33 +++++++++++++++
6 files changed, 133 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-3007
2026-04-29 23:54:29 -07:00
Fusion
7211363845
feat(FN-3003): merge fusion/fn-3003
...
- Unify notification service ownership across the engine: `Notifier` now operates on `ProjectEngine` rather than its own `Core` reference, resolving stale-closure issues during engine lifecycle
- Add regression tests in `notifier.test.ts` covering merge dedupe wiring and ownership initialization
- Expand `project-engine.test.ts` to cover ownership state transitions and `ProjectEngine`-notifier integration
- Fix TypeScript regressions in `ModelOnboardingModal.tsx` and `SettingsModal.tsx` introduced by custom provider types
- Document the notification ownership model in `docs/architecture.md`
Commits merged:
- feat(FN-3003): complete Step 4 — document notification ownership model
- fix(FN-3003): resolve dashboard custom provider typecheck regressions
- test(FN-3003): complete Step 2 — add merge dedupe wiring regressions
- feat(FN-3003): complete Step 1 — unify notification service ownership
Files changed:
docs/architecture.md | 2 +
.../app/components/ModelOnboardingModal.tsx | 13 +++++-
.../dashboard/app/components/SettingsModal.tsx | 17 +++++--
packages/engine/src/__tests__/notifier.test.ts | 33 ++++++++++++++
.../engine/src/__tests__/project-engine.test.ts | 53 +++++++++++++++++++---
packages/engine/src/notifier.ts | 3 +-
packages/engine/src/project-engine.ts | 12 +++--
7 files changed, 116 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-3003
2026-04-29 21:48:13 -07:00
Fusion
fec6cd82ec
feat(FN-2990): merge fusion/fn-2990
...
- Finalize the downstream porting plan in `docs/research/pi-autoresearch-analysis.md` with updated guidance and recommendations
Commits merged:
- docs(FN-2990): complete Step 6 — finalize downstream porting plan
Files changed:
docs/research/pi-autoresearch-analysis.md | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-2990
2026-04-29 20:58:34 -07:00
Fusion
56fd8712c5
feat(FN-2961): merge fusion/fn-2961
...
- Add documentation for custom provider settings in the settings reference (`docs/settings-reference.md`)
Commits merged:
- feat(FN-2961): complete Step 6 — document custom provider settings
Files changed:
docs/settings-reference.md | 1 +
1 file changed, 1 insertion(+)
Fusion-Task-Id: FN-2961
2026-04-29 20:41:41 -07:00
Fusion
9d3a4c7ca5
feat(FN-2987): merge fusion/fn-2987
...
- **Archived task read-only enforcement** — `packages/core/src/store.ts` adds guards that prevent log entries and documents from being written to archived tasks; `packages/engine/src/agent-tools.ts` surfaces meaningful errors instead of silent failures when tools are called on archived tasks
- **Type safety for archived guards** — resolved typecheck issues around the archived-task write guards in core
- **Tests for archived behavior** — added regression coverage in `packages/core/src/__tests__/store.test.ts` and `packages/core/src/__tests__/task-documents.test.ts`; also added `packages/engine/src/__tests__/agent-tools.test.ts` to cover archived-task error paths
- **Documentation** — updated `docs/task-management.md` to document the archived read-only behavior
- **Also merged** `fusion/fn-2959-2` (CustomProviderForm component, SettingsModal routing, custom provider API routes, and associated tests)
Commits merged:
- feat(FN-2987): complete Step 6 — document archived read-only behavior
- fix(FN-2987): complete Step 5 — resolve typecheck for archived guards
- test(FN-2987): complete Step 4 — add archived-task regression coverage
- feat(FN-2987): complete Step 3 — handle archived log tool errors
- feat(FN-2987): complete Step 2 — enforce archived document write guard
- feat(FN-2987): complete Step 1 — harden archived logEntry checks
- feat(FN-2959): merge fusion/fn-2959-2
Files changed:
.changeset/custom-openai-anthropic-providers.md | 5 +
docs/task-management.md | 4 +
packages/core/src/__tests__/store.test.ts | 38 +++
packages/core/src/__tests__/task-documents.test.ts | 32 +++
packages/core/src/store.ts | 34 ++-
packages/dashboard/app/api/legacy.ts | 41 ++++
.../app/components/CustomProviderForm.css | 45 ++++
.../app/components/CustomProviderForm.tsx | 203 ++++++++++++++++
.../app/components/ModelOnboardingModal.css | 14 ++
.../app/components/ModelOnboardingModal.tsx | 62 ++++-
.../dashboard/app/components/SettingsModal.css | 38 +++
.../dashboard/app/components/SettingsModal.tsx | 91 +++++++-
.../__tests__/CustomProviderForm.test.tsx | 60 +++++
.../__tests__/ModelOnboardingModal.test.tsx | 23 ++
.../components/__tests__/SettingsModal.test.tsx | 13 ++
.../__tests__/SettingsModalNodeRouting.test.tsx | 4 +
.../components/__tests__/settings-mobile.test.tsx | 4 +
packages/dashboard/src/auth-paths.ts | 4 +
packages/dashboard/src/routes.ts | 2 +
.../__tests__/custom-provider-routes.test.ts | 118 ++++++++++
.../src/routes/register-custom-provider-routes.ts | 254 +++++++++++++++++++++
.../src/__tests__/agent-document-tools.test.ts | 15 ++
packages/engine/src/__tests__/agent-tools.test.ts | 43 ++++
packages/engine/src/agent-tools.ts | 28 ++-
24 files changed, 1166 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-2987
2026-04-29 20:18:46 -07:00
Fusion
2fb18eac1f
feat(FN-2924): merge fusion/fn-2924
...
- Add task provenance display to TaskDetailModal, surfacing AI-generated merge commit summaries so users understand when and why tasks landed
- New `ai-summarize` module in core with structured commit summarization logic and tests
- Extend CLI `fn task show` with provenance output
- Refactor merger to produce cleaner merge commit messages with task context
- Update SettingsModal to expose AI summarization toggle (hidden behind feature flag)
- Adjust QuickChatFAB styling for theme compatibility
- Update scheduler and node-routing policy tests to match new behavior
- Add changeset for `@runfusion/fusion` minor release
Commits merged:
- feat(FN-2924): display task provenance in dashboard and cli
- feat(FN-2971): merge fusion/fn-2971
- feat(FN-2947): merge fusion/fn-2947
- feat(FN-2970): merge fusion/fn-2970
- feat(FN-2956): merge fusion/fn-2956
Files changed:
.changeset/add-ai-merge-commit-summary.md | 5 +
docs/cli-reference.md | 3 +-
docs/settings-reference.md | 3 +
packages/cli/src/commands/__tests__/task.test.ts | 44 ++++-
packages/cli/src/commands/task.ts | 55 +++++++
packages/core/src/__tests__/ai-summarize.test.ts | 64 ++++++++
packages/core/src/ai-summarize.ts | 114 +++++++++++++
packages/core/src/index.ts | 3 +
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 4 +
packages/dashboard/app/components/QuickChatFAB.css | 17 +-
packages/dashboard/app/components/QuickChatFAB.tsx | 2 +-
.../dashboard/app/components/SettingsModal.css | 11 +-
.../dashboard/app/components/SettingsModal.tsx | 22 ++-
.../dashboard/app/components/TaskDetailModal.css | 40 +++++
.../dashboard/app/components/TaskDetailModal.tsx | 82 +++++++++-
.../__tests__/SettingsModalNodeRouting.test.tsx | 12 +-
.../components/__tests__/TaskDetailModal.test.tsx | 81 ++++++++-
packages/engine/src/__tests__/merger.test.ts | 75 +++++++++
.../src/__tests__/node-routing-policy.test.ts | 25 ++-
.../src/__tests__/scheduler-node-routing.test.ts | 18 +-
packages/engine/src/merger.ts | 181 +++++++++------------
packages/engine/src/scheduler.ts | 8 +-
23 files changed, 723 insertions(+), 147 deletions(-)
Fusion-Task-Id: FN-2924
2026-04-29 18:01:59 -07:00
Fusion
5c82c3f34a
feat(FN-2947): merge fusion/fn-2947
...
- Add AI-powered merge commit summarization with toggle in Settings (`packages/core/src/ai-summarize.ts`, `packages/dashboard/app/components/SettingsModal.tsx`, `packages/engine/src/merger.ts`)
- Introduce `generateMergeCommitSummary` utility in `@fusion/core` that calls the configured model with a diff prompt; results appear in the commit log for merge commits
- Add `aiMergeSummaryEnabled` project setting and `useAiMergeSummaryEnabled` hook in dashboard
- Update `@runfusion/fusion` CLI extension to surface the new setting
- Add `POST /api/tasks/:id/workflow/pre-merge` and `POST /api/tasks/:id/planning-subtask` routes (`packages/dashboard/src/routes/`)
- Rework InsightsView with two-pane layout for better readability (`packages/dashboard/app/components/InsightsView.tsx`, `packages/dashboard/app/components/InsightsView.css`)
- Fix `task plan` command to surface errors when planning fails (`packages/cli/src/commands/task.ts`)
- Add tests for `ai-summarize`, `agent-heartbeat`, `agent-tools`, and dashboard API routes; refresh onboarding and agents-view mobile tests
- Minor CSS polish: reduce AgentsView panel hover gap, improve CommitDiffTab layout, add ScriptsModal styles
- Changelog and version bumps for `@runfusion/fusion` v0.9.1, CLI alias, and all workspace packages
Commits merged:
- feat(FN-2947): complete Step 7 — add changeset and docs deliverables
- fix(FN-2947): clean unused aiSummary path
- test(FN-2947): complete Step 5 — cover AI merge summary flow
- feat(FN-2947): complete Step 4 — add merge summary settings toggle
- feat(FN-2947): complete Step 3 — wire AI merge summaries into merger
- feat(FN-2947): complete Step 2 — add merge summary setting
- feat(FN-2947): complete Step 1 — add merge commit summarizer
- feat(FN-2970): merge fusion/fn-2970
- feat(FN-2956): merge fusion/fn-2956
- feat(FN-2923): merge fusion/fn-2923
- feat(FN-2945): merge fusion/fn-2945
- chore(release): v0.9.1
- fix(FN-XXX): improve git manager diff layout
- fix(dashboard): rework Insights view with two-pane layout
- fix(FN-XXX): keep experimental views off by default
Files changed:
.changeset/active-agents-no-stuck-connecting.md | 13 --
.changeset/active-agents-panel-hoist-heartbeat.md | 13 --
.changeset/add-ai-merge-commit-summary.md | 5 +
.changeset/fix-agent-heartbeat-terminal-links.md | 5 -
.changeset/show-planning-tasks-immediately.md | 5 -
CHANGELOG.md | 92 ++++++++++
docs/settings-reference.md | 3 +
package.json | 2 +-
packages/cli-alias/CHANGELOG.md | 15 ++
packages/cli-alias/package.json | 2 +-
packages/cli/CHANGELOG.md | 12 ++
packages/cli/package.json | 2 +-
packages/cli/src/__tests__/task-plan.test.ts | 1 +
packages/cli/src/commands/__tests__/task.test.ts | 15 +-
packages/cli/src/commands/task.ts | 15 +-
packages/cli/src/extension.ts | 9 +
packages/core/CHANGELOG.md | 7 +
packages/core/package.json | 2 +-
packages/core/src/__tests__/ai-summarize.test.ts | 64 +++++++
packages/core/src/ai-summarize.ts | 114 ++++++++++++
packages/core/src/index.ts | 3 +
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 4 +
packages/dashboard/CHANGELOG.md | 14 ++
packages/dashboard/app/App.tsx | 28 ++-
.../app/__tests__/agent-css-classes.test.ts | 3 +-
packages/dashboard/app/__tests__/api.test.ts | 13 ++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/AgentsView.css | 22 +--
.../dashboard/app/components/CommitDiffTab.tsx | 2 +-
.../dashboard/app/components/GitManagerModal.tsx | 71 ++++----
packages/dashboard/app/components/InsightsView.css | 200 ++++++++++++++++++---
packages/dashboard/app/components/InsightsView.tsx | 111 ++++++++----
.../app/components/ModelOnboardingModal.tsx | 5 +-
packages/dashboard/app/components/ScriptsModal.css | 89 +++++++++
.../dashboard/app/components/SettingsModal.css | 11 +-
.../dashboard/app/components/SettingsModal.tsx | 22 ++-
.../dashboard/app/components/TaskDetailModal.css | 5 +
packages/dashboard/app/components/TodoView.tsx | 2 +
.../app/components/__tests__/App.test.tsx | 33 ++++
.../app/components/__tests__/InsightsView.test.tsx | 25 ++-
.../__tests__/ModelOnboardingModal.test.tsx | 4 +-
.../app/components/__tests__/QuickChatFAB.test.tsx | 14 +-
.../__tests__/SettingsModalNodeRouting.test.tsx | 12 +-
.../app/components/__tests__/TodoView.test.tsx | 4 +-
.../__tests__/agents-view-mobile.test.tsx | 5 +-
.../components/__tests__/onboarding-flow.test.tsx | 2 +-
.../app/hooks/__tests__/useAppSettings.test.ts | 1 +
.../app/hooks/__tests__/useTaskHandlers.test.ts | 4 +-
packages/dashboard/app/hooks/useAppSettings.ts | 12 ++
packages/dashboard/app/hooks/useTaskHandlers.ts | 4 +-
packages/dashboard/package.json | 2 +-
packages/dashboard/src/__tests__/routes.test.ts | 14 ++
packages/dashboard/src/routes.ts | 4 +
.../dashboard/src/routes/register-git-github.ts | 12 ++
.../src/routes/register-planning-subtask-routes.ts | 3 +
.../src/routes/register-task-workflow-routes.ts | 7 +
packages/desktop/CHANGELOG.md | 7 +
packages/desktop/package.json | 2 +-
packages/engine/CHANGELOG.md | 11 ++
packages/engine/package.json | 2 +-
.../engine/src/__tests__/agent-heartbeat.test.ts | 10 ++
.../src/__tests__/agent-tools-delegation.test.ts | 2 +
packages/engine/src/__tests__/agent-tools.test.ts | 37 ++++
packages/engine/src/__tests__/cron-runner.test.ts | 4 +
packages/engine/src/__tests__/merger.test.ts | 75 ++++++++
.../src/__tests__/node-routing-policy.test.ts | 25 ++-
.../src/__tests__/pr-comment-handler.test.ts | 8 +
.../src/__tests__/scheduler-node-routing.test.ts | 18 +-
packages/engine/src/__tests__/triage.test.ts | 2 +
packages/engine/src/agent-heartbeat.ts | 13 +-
packages/engine/src/agent-tools.ts | 13 +-
packages/engine/src/cron-runner.ts | 7 +-
packages/engine/src/executor.ts | 2 +-
packages/engine/src/merger.ts | 181 ++++++++-----------
packages/engine/src/mission-execution-loop.ts | 8 +
packages/engine/src/pr-comment-handler.ts | 5 +
packages/engine/src/project-engine.ts | 8 +
packages/engine/src/routine-runner.ts | 4 +
packages/engine/src/scheduler.ts | 8 +-
packages/engine/src/triage.ts | 4 +
packages/mobile/CHANGELOG.md | 7 +
packages/mobile/package.json | 2 +-
packages/pi-claude-cli/CHANGELOG.md | 7 +
packages/pi-claude-cli/package.json | 2 +-
packages/plugin-sdk/CHANGELOG.md | 10 ++
packages/plugin-sdk/package.json | 2 +-
.../examples/fusion-plugin-auto-label/CHANGELOG.md | 8 +
.../examples/fusion-plugin-auto-label/package.json | 2 +-
.../examples/fusion-plugin-ci-status/CHANGELOG.md | 8 +
.../examples/fusion-plugin-ci-status/package.json | 2 +-
.../fusion-plugin-notification/CHANGELOG.md | 8 +
.../fusion-plugin-notification/package.json | 2 +-
.../fusion-plugin-settings-demo/CHANGELOG.md | 8 +
.../fusion-plugin-settings-demo/package.json | 2 +-
plugins/fusion-plugin-hermes-runtime/CHANGELOG.md | 8 +
plugins/fusion-plugin-hermes-runtime/package.json | 2 +-
.../fusion-plugin-openclaw-runtime/CHANGELOG.md | 8 +
.../fusion-plugin-openclaw-runtime/package.json | 2 +-
.../fusion-plugin-paperclip-runtime/CHANGELOG.md | 8 +
.../fusion-plugin-paperclip-runtime/package.json | 2 +-
101 files changed, 1388 insertions(+), 334 deletions(-)
Fusion-Task-Id: FN-2947
2026-04-29 17:38:25 -07:00
Fusion
01cf62b002
feat(FN-2920): improve remote tunnel setup and heartbeat scheduling
...
- Add cloudflared install/detection support in remote settings API, UI, and route tests
- Surface Cloudflare tunnel prerequisites in Settings modal with remote access docs updates
- Harden heartbeat runtime scheduling by avoiding stale timeout state and simplifying runtime timeout handling
- Expand CLI/core/dashboard/engine coverage for task lifecycle, agent health, and runtime heartbeat behavior
- Add changesets for heartbeat scheduling fixes and PR approval setting updates
Fusion-Task-Id: FN-2920
2026-04-29 13:49:35 -07:00
Fusion
fd4353f026
feat(FN-2950): merge fusion/fn-2950
...
- Updated routing policy documentation in `docs/architecture.md` and `docs/settings-reference.md`
- Revised docs reflect the latest routing configuration options and behavior
Commits merged:
- feat(FN-2950): complete Step 6 — update routing policy documentation
Files changed:
docs/architecture.md | 19 ++++++++++---------
docs/settings-reference.md | 2 +-
2 files changed, 11 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-2950
2026-04-29 12:17:18 -07:00
Fusion
d6e8915418
feat(FN-2869): merge fusion/fn-2869
...
- Add pluggable notification provider system with changeset and docs (`@runfusion/fusion` patch)
- Strengthen node routing and task diff visibility (FN-2840): merge-base resolution, routing guards, and unavailable-node policy tests in dashboard
- Overhaul `QuickChatFAB` component: redesigned FAB with modal, chat thread UI, CSS expansion (140 lines added), and comprehensive test coverage
- Rewrite `useQuickChat` hook: switch to polling-based state, expose dismiss/reset, improve retry and error handling
- Fix executor/merger concurrency races and reviewer pause TOCTOU in `packages/engine`
- Add `AgentSemaphore` defensive guards for invalid limits (NaN, Infinity)
- Expand `agent-runtime`, `agent-session-helpers`, `self-healing`, and `triage` engine modules
- Improve TUI: stack utilities/settings under stats in wide layout, add log entry copy feedback
- Add routing and file-diffs test coverage (`routes.test.ts`, `routes-file-diffs.test.ts`)
Commits merged:
- docs(FN-2869): complete Step 2 — document notification provider settings
- chore(FN-2869): add changeset for pluggable notification providers
- feat(FN-2849): merge fusion/fn-2849-2
- feat(tui): stack utilities/settings under stats in wide layout
- fix(engine): close executor/merger concurrency races and reviewer pause TOCTOU
- fix(dashboard): prefer merge-base over outdated baseCommitSha
- fix(tui): surface visible feedback when copying a log entry
- feat(FN-2840): strengthen node routing and task diff visibility
- feat(FN-2910): merge fusion/fn-2910
Files changed:
.changeset/pluggable-notification-providers.md | 4 +
docs/settings-reference.md | 17 +-
packages/cli/src/commands/dashboard-tui/app.tsx | 71 +++++--
.../cli/src/commands/dashboard-tui/controller.ts | 18 ++
packages/cli/src/commands/dashboard-tui/state.ts | 5 +
.../core/src/__tests__/node-override-guard.test.ts | 24 +++
packages/core/src/__tests__/store.test.ts | 27 +++
.../core/src/__tests__/task-node-override.test.ts | 25 +++
.../src/__tests__/unavailable-node-policy.test.ts | 42 ++++
packages/dashboard/app/api/legacy.ts | 3 +-
packages/dashboard/app/components/QuickChatFAB.css | 140 ++++++++++++-
packages/dashboard/app/components/QuickChatFAB.tsx | 226 ++++++++++++++++++++-
.../app/components/__tests__/QuickChatFAB.test.tsx | 133 +++++++++++-
.../app/hooks/__tests__/useQuickChat.test.ts | 12 +-
packages/dashboard/app/hooks/useQuickChat.ts | 149 ++++++++------
.../src/__tests__/routes-file-diffs.test.ts | 52 +++++
packages/dashboard/src/__tests__/routes.test.ts | 177 ++++++++++++++++
packages/dashboard/src/routes/resolve-diff-base.ts | 76 ++++---
.../engine/src/__tests__/project-engine.test.ts | 8 +-
packages/engine/src/agent-runtime.ts | 15 ++
packages/engine/src/agent-session-helpers.ts | 14 +-
packages/engine/src/concurrency.ts | 37 +++-
packages/engine/src/executor.ts | 183 ++++++++++++-----
packages/engine/src/pi.ts | 11 +
packages/engine/src/project-engine.ts | 47 ++++-
packages/engine/src/reviewer.ts | 95 +++++++--
packages/engine/src/self-healing.ts | 8 +
packages/engine/src/triage.ts | 10 +-
28 files changed, 1412 insertions(+), 217 deletions(-)
Fusion-Task-Id: FN-2869
2026-04-29 11:42:25 -07:00
Fusion
3458cfc70e
feat(FN-2734): merge fusion/fn-2734
...
- docs(FN-2734): complete Step 7 — cross-link routing docs
Fusion-Task-Id: FN-2734
2026-04-29 09:54:12 -07:00
Fusion
4ba05c52d8
feat(FN-2916): streamline Cloudflare quick tunnel settings UX
...
- Default Cloudflare remote access to Quick Tunnel mode in settings documentation
- Replace the Quick Tunnel checkbox with an Advanced (Named Tunnel) details disclosure in SettingsModal
- Auto-sync quick tunnel state from the details open/close state while preserving named tunnel field editing
- Update SettingsModal tests to cover the new advanced-toggle behavior and persisted quick tunnel payload
Fusion-Task-Id: FN-2916
2026-04-29 00:12:35 -07:00
gsxdsm
59aaea800b
feat(FN-2869): merge fusion/fn-2869
...
- docs(FN-2869): pluggable notification providers reference + architecture
- chore: changeset for pluggable notification providers
- ui(merge): clarify mergeConflictStrategy option labels — both "smart" and "prefer-main" run the full smart cascade; differ only in the final fallback (-X theirs vs -X ours)
- TaskDetailModal: keep Node Routing summary block removed
Conflicts in executor.ts, core/index.ts, and RoutingTab.* resolved by
keeping HEAD — fn-2869 branched from a stale main and was dragging in
older versions of files that have since been updated by sibling tasks
(including the FN-2887 rebase fix on executor.ts itself).
2026-04-28 15:14:18 -07:00
Fusion
fdeba4cf89
feat(FN-2727): add node routing controls to CLI and dashboard
...
- Add CLI support for task node routing with create --node, task set-node, and task clear-node commands
- Extend settings command validation/output for defaultNodeId and unavailableNodePolicy and document new keys
- Surface task routing details in CLI task show plus dashboard Routing tab status/binding reason indicators
- Enhance Settings modal node routing UX with selected-node health status and add/refresh tests and changeset
2026-04-28 14:25:56 -07:00
gsxdsm
54f4fd540e
feat(FN-2862): merge fusion/fn-2862
2026-04-28 14:25:55 -07:00
Fusion
35db935feb
feat(FN-2718): add unavailable node policy setting and validation
...
- Define and export unavailable node policy types in core settings interfaces
- Add project-level unavailable node policy default and runtime validation helper
- Add core unit coverage for unavailable node policy parsing and acceptance cases
- Guard Paperclip mint requests to include companyId only when available for type-safe payloads
- Document unavailable node policy in the settings reference
2026-04-27 22:40:08 -07:00
Fusion
9ab2beb0ae
docs(FN-2708): document OpenClaw gateway configuration settings
...
- Add an OpenClaw Gateway Configuration section to docs/settings-reference.md
- Document gatewayUrl, gatewayToken, and agentId settings with defaults and purpose
- Map each setting to OPENCLAW_* environment variable fallbacks and explain resolution priority
- Clarify these are plugin-level settings (not agent runtimeConfig fields) and add token security guidance
2026-04-27 10:03:26 -07:00
Fusion
5681378c79
feat(FN-2695): gate Todos view behind todoView experimental flag
...
- Add todoView to experimental feature settings and expose it in Settings modal and docs
- Derive todosEnabled in app settings hook with regression tests for enabled/disabled behavior
- Gate App routing so Todos only renders when the flag is enabled and redirects otherwise
- Hide Todos entries in header overflow and mobile navigation when the flag is off
2026-04-27 08:49:12 -07:00
Fusion
92b94594f3
feat(FN-2694): merge fusion/fn-2694
2026-04-27 08:45:49 -07:00
gsxdsm
c083acf2be
feat(FN-2693): merge fusion/fn-2693
2026-04-27 08:22:44 -07:00
Fusion
93274b8e18
feat(FN-2681): add Vitest kill controls in system stats
...
- Add dashboard API endpoint and server route to terminate Vitest worker processes safely
- Extend legacy API client with killVitestProcess support for frontend invocation
- Add SystemStatsModal UI controls and styling for triggering Vitest kill actions, including mobile width stability fixes
- Expand route and modal tests to cover new controls and behavior
- Add changeset and architecture docs updates for the new Vitest kill capability
2026-04-27 05:50:40 -07:00
Fusion
ae988d0ef7
feat(FN-2673): stream automation schedule events over SSE
...
- Wire AutomationStore into dashboard SSE setup for both default and project-scoped /api/events streams
- Emit schedule:created, schedule:updated, schedule:deleted, and schedule:run events to connected SSE clients
- Add SSE coverage for automation event subscription, relay payloads, cleanup on disconnect, and graceful behavior without automation store
- Add server events integration coverage for automationStore wiring and document automation schedule events in architecture docs
2026-04-27 03:21:59 -07:00
Fusion
04157d0ad3
feat(FN-2664): add dashboard updates check endpoint and settings flow
...
- Add GET /api/updates/check endpoint in dashboard server with coverage for success, failure, and disabled update scenarios
- Extend legacy dashboard API client with check-for-updates request support
- Add Settings modal update-check UI and styling for trigger, loading, and result states
- Expand Settings modal tests and document the updates check endpoint in architecture docs
2026-04-27 02:19:44 -07:00
Fusion
4330eef126
feat(FN-2662): enforce model override fallback hierarchy
...
- Fix triage planning model resolution to fall back through project/global planning settings and default overrides
- Fix reviewer model selection to honor validator-specific settings before default provider/model overrides
- Update merger model resolution to apply default override fallback and align shared task setting types/executor flow
- Add regression coverage for triage, reviewer, and merger fallback behavior and update settings hierarchy documentation
2026-04-27 02:02:01 -07:00
Fusion
e80850e7c9
feat(FN-2663): add cached update-check setting, APIs, and banner
...
- Add global updateCheckEnabled setting to core schema/types and wire dashboard command to cache update checks in the CLI
- Implement dashboard server update-check cache module plus REST routes for status and refresh behavior
- Add dashboard client hook, legacy API helpers, and UpdateAvailableBanner UI to show cached CLI update notices
- Cover update-check server routes, hook behavior, banner rendering, and route registration with focused tests
- Document update-check configuration and API behavior in architecture and settings reference docs
2026-04-27 01:40:07 -07:00
Fusion
2dbe9d8650
feat(FN-2658): enforce paused-agent guards in heartbeat flows
...
- Skip timer-triggered heartbeat ticks when the target agent is paused
- Add executeHeartbeat pause checks so paused agents do not start task work
- Expand agent-heartbeat tests to cover pause guards across scheduler and execution paths
- Document paused-agent heartbeat behavior in docs and add a patch changeset for @runfusion/fusion
2026-04-27 00:53:23 -07:00
gsxdsm
cf12664e5a
feat(FN-2644): merge fusion/fn-2644
2026-04-27 00:14:18 -07:00
gsxdsm
e2bc644fd5
feat(FN-2623): merge fusion/fn-2623
2026-04-26 18:11:09 -07:00
Fusion
48401f321f
feat(FN-2577): merge fusion/fn-2577 (auto-resolved)
...
- feat(FN-2577): complete Step 5 — update TodoView architecture docs
- test(FN-2577): address TodoView review feedback
- test(FN-2577): complete Step 3 — add TodoView component coverage
- feat(FN-2577): complete Step 2 — build TodoView component
- fix(FN-2577): correct TodoView heading token font size
- feat(FN-2577): complete Step 1 — create TodoView CSS
- fix(FN-2578): align TodoView placeholder addToast typing
- feat(FN-2578): complete Step 4 — route and preload TodoView
- feat(FN-2578): complete Step 3 — wire todos nav entries
- feat(FN-2578): complete Step 2 — add todos to view state types
- feat(FN-2578): complete Step 1 — add useTodoLists hook and tests
- test(FN-2576): complete Step 4 — add todo route coverage
- feat(FN-2576): complete Step 3 — add todo client API functions
- feat(FN-2576): complete Step 2 — register todo router
- feat(FN-2576): complete Step 1 — add todo routes module
2026-04-26 15:12:32 -07:00
Fusion
69aa1a550a
feat(FN-2605): merge fusion/fn-2605 (auto-resolved)
...
- test(FN-2605): complete Step 4 — align tests with planning labels
- docs(FN-2605): complete Step 3 — update demo and script terminology
- docs(FN-2605): complete Step 2 — update docs terminology
- docs(FN-2605): complete Step 1 — update README terminology
2026-04-26 12:34:02 -07:00
Fusion
52fe1289c1
feat(FN-2597): merge fusion/fn-2597 (auto-resolved)
...
- feat(FN-2597): complete Step 4 — add docs update and changeset
- test(FN-2597): complete Step 2 — align dashboard tests with reviewer labels
- feat(FN-2597): complete Step 1 — rename validator UI labels to reviewer
2026-04-26 12:25:10 -07:00
gsxdsm
e087f5ec5c
feat(FN-2586): merge fusion/fn-2586
2026-04-26 11:49:43 -07:00
Fusion
5ffa1eeba2
docs(FN-2524): add remote access operator runbook
...
- Add docs/remote-access.md as the canonical runbook for dashboard, TUI, and headless remote access operations
- Document provider prerequisites, lifecycle restore gates, and status/diagnostic semantics for remote tunnel management
- Add remote auth security guidance for tokenized URLs/QR payloads and include troubleshooting-oriented API flow references
- Cross-link the runbook from docs index and related architecture, CLI, dashboard, getting-started, and settings docs
2026-04-26 05:38:18 -07:00
Fusion
e5ed696922
feat(FN-2523): add safe restart restore lifecycle diagnostics
...
- Add ProjectEngine restore lifecycle core to perform safe restarts and surface detailed restore state transitions
- Expose restore diagnostics through remote-access status types and settings/memory route context, including legacy API mapping updates
- Add comprehensive regression coverage for restore lifecycle behavior in engine and dashboard headless remote-access tests
- Document the restore lifecycle contract in architecture/settings docs and include a patch changeset for @runfusion/fusion
2026-04-26 05:18:12 -07:00
Fusion
a4c219f89b
feat(FN-2521): add remote auth handoff endpoints and login URL flow
...
- Add remote auth token primitives plus login-url generation for short-lived phone auth handoff
- Expose public handoff API endpoint and wire remote auth handling into dashboard server routes
- Tighten remote access settings update typing to satisfy typecheck and preserve API isolation behavior
- Add comprehensive dashboard tests for remote-auth helpers, route behavior, and server integration
- Document the remote login-url and phone auth handoff contract in architecture docs
2026-04-26 04:38:33 -07:00
Fusion
8a261ae052
feat(FN-2520): add remoteAccess auth link token mode support
...
- Extend project settings schema/types with remoteAccess defaults and auth link token mode fields
- Update settings store patch handling to deep-merge remoteAccess updates without clobbering sibling keys
- Add dashboard/API wiring for remoteAccess controls, including legacy settings route handling
- Expand core and dashboard tests for remoteAccess settings behavior, merge semantics, and UI coverage
- Align settings reference docs with the implemented remoteAccess schema and options
2026-04-26 03:55:57 -07:00
Fusion
db9f4ba57e
feat(FN-2519): add remote tunnel manager for settings sync
...
- Add remote-access contracts, provider adapters, and a tunnel process manager with lifecycle handling
- Wire tunnel manager into ProjectEngine startup/shutdown flow and export new remote-access modules
- Update settings modal UX for remote auth URLs, including wrapping and related UI test coverage
- Document tunnel manager behavior and remote settings sync details in architecture, CLI, and settings docs
2026-04-26 02:20:28 -07:00
Fusion
984f7965f6
feat(FN-2518): add remote TUI settings controls and routing
...
- Wire remote dashboard route contracts into CLI/TUI state and controller flows
- Add remote settings interaction UX in dashboard and dashboard-tui command paths
- Expand regression coverage for remote TUI behavior in dashboard and app test suites
- Document remote TUI controls and QR behavior in the CLI reference
- Add a changeset for @runfusion/fusion patch release
2026-04-26 01:20:32 -07:00