gsxdsm
620049cf15
chore(release): v0.9.4
...
Version bump via changesets.
2026-04-30 04:45:06 -07:00
gsxdsm
0ade837234
chore(changeset): bump merge-summary changeset to patch
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 04:44:09 -07:00
gsxdsm
22c2078535
docs: add changeset for ghost-review fallback recovery
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 04:43:32 -07:00
gsxdsm
f9c08dea7a
feat(merger): generate AI summary subject for merge commits
...
Replace bare `feat(FN-XXXX): merge fusion/fn-XXXX` subjects with an
AI-generated summary describing what landed (e.g. `feat(FN-XXXX): add
webhook handler`). Calls the existing `summarizeCommitSubject` lane
alongside the body summarizer; falls back to `merge <branch>` when the
summarizer is disabled, unavailable, or returns nothing.
Default for `useAiMergeCommitSummary` flips to true so existing
projects without an explicit override pick up the new behavior. The
Settings UI already exposes the toggle.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 04:39:00 -07:00
gsxdsm
fc16ab08a3
docs: add changeset for nested .fusion dir fix
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 04:24:39 -07:00
gsxdsm
c1c5ba6f43
chore(release): v0.9.3
...
Version bump via changesets.
2026-04-29 23:20:40 -07:00
gsxdsm
ffa116a238
fix(FN-3005): preserve card timer across reruns
2026-04-29 23:13:38 -07:00
gsxdsm
ab1afdc940
chore(release): v0.9.2
...
Version bump via changesets.
2026-04-29 22:27:14 -07:00
gsxdsm
91ad41e172
docs: add changeset for per-agent heartbeat procedure
...
Document the Wake Delta + Heartbeat Procedure restructure and the new
heartbeatProcedurePath override / upgrade-heartbeat-procedure endpoint
landed in the recent FN-29xx merges.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 21:57:36 -07:00
Fusion
38f5159719
feat(FN-2962): merge fusion/fn-2962
...
- Add changeset for `@runfusion/fusion` minor release introducing custom provider registration support
Commits merged:
- feat(FN-2962): complete Step 8 — add changeset and documentation
Files changed:
.changeset/register-custom-providers.md | 5 +++++
1 file changed, 5 insertions(+)
Fusion-Task-Id: FN-2962
2026-04-29 21:42:44 -07:00
gsxdsm
476d17e2ca
fix(FN-XXX): update release notes link in update notification
2026-04-29 21:33:18 -07:00
gsxdsm
e75a22c656
fix(tui): keep header left edge anchored when remote tunnel is shown
...
Between 100-175 cols the remote URL pushed the logo/tabs offscreen.
Remote info now sits in a flex-shrinkable, right-justified slot that
truncates. Also paints a solid background on the QR overlay.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 20:47:04 -07:00
Fusion
567873bc02
feat(FN-2959): merge fusion/fn-2959-2
...
- Add custom provider CRUD routes (`POST/GET/PUT/DELETE /api/custom-providers`) with auth validation and storage in `~/.fusion/settings.json`; registers via `register-custom-provider-routes.ts`
- Add `CustomProviderForm` component for user-defined provider configuration (endpoint URL, API key, model ID); includes dedicated CSS
- Add custom provider section to `SettingsModal` under the "Models" tab with provider list and add/disable controls
- Add custom provider selection to `ModelOnboardingModal` onboarding flow so new users can use their own endpoints
- Add changeset (`custom-openai-anthropic-providers.md`) for `@runfusion/fusion` minor release
- Add unit tests for `CustomProviderForm`, `ModelOnboardingModal`, `SettingsModal`, custom-provider routes, and `useTasks` hook; update existing mocks
Commits merged:
- feat(FN-2959): complete Step 6 — add changeset and docs
- test(FN-2959): update settings modal mocks for custom provider API
- feat(FN-2959): complete Step 4 — add onboarding custom provider flow
- feat(FN-2959): complete Step 3 — add settings custom provider disclosure
- feat(FN-2959): complete Step 2 — add custom provider form component
- feat(FN-2959): complete Step 1 — add custom provider CRUD routes
- feat(FN-2975): merge fusion/fn-2975
Files changed:
.changeset/custom-openai-anthropic-providers.md | 5 +
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 +
.../dashboard/app/hooks/__tests__/useTasks.test.ts | 48 ++++
packages/dashboard/app/hooks/useTasks.ts | 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 +++++++++++++++++++++
19 files changed, 1027 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-2959
2026-04-29 20:15:05 -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
gsxdsm
93b639f6a5
chore(release): v0.9.1
...
Version bump via changesets.
2026-04-29 16:29:16 -07:00
gsxdsm
94edc2176c
fix(FN-XXX): improve git manager diff layout
2026-04-29 16:26:53 -07:00
gsxdsm
64d0f258ae
fix(dashboard): rework Insights view with two-pane layout
...
- Categories list in a left sidebar; insights for the selected category
render in a scrollable right pane (mobile collapses sidebar to a
horizontal chip rail and keeps the header on a single row).
- Removed -webkit-line-clamp on insight content so full text shows.
- Fixed scroll: added min-height: 0 to flex containers.
- Larger icons (20px) inside per-insight action buttons; close button
switched off the invisible btn-icon styling.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 16:25:30 -07:00
gsxdsm
4c5173410b
fix(FN-XXX): keep experimental views off by default
2026-04-29 16:11:59 -07:00
gsxdsm
fb309e5eea
fix(FN-XXX): show planning-created tasks without refresh
2026-04-29 15:25:06 -07:00
Fusion
8793d4761e
feat(FN-2943): merge fusion/fn-2943
...
- **Active Agents panel overhaul**: Hoisted above the main agent list with a new `ActiveAgentsPanel.css` stylesheet; shows next heartbeat ETA and prevents cards from getting stuck in "Connecting..." state
- **Node routing policy**: Scheduler now enforces unavailable-node scheduling rules and routes tasks to eligible nodes more reliably (`packages/engine/src/scheduler.ts`, `node-routing-policy.ts`)
- **Task card merge timer**: Keeps the card timer live while a task is actively merging rather than resetting on merge start
- **Settings modal scroll**: Scrolls to top when auth actions succeed, with regression tests added
- **Task steps reset**: Resets steps when reopening a task that returns to todo or triage (FN-2966)
- **Core store additions**: New `packages/core/src/store.ts` test coverage for task state mutations
- **Dashboard SSE bus**: New `sse-bus.ts` for event bus communication in the dashboard
- **Version bumps**: `v0.9.0` release across all packages; `cli-alias`, `dashboard`, `engine`, `plugin-sdk`, and plugin changelogs updated
- **Changeset cleanup**: Removed 20 stale changeset files consumed by the v0.9.0 release; added two new ones for Active Agents panel fixes
Commits merged:
- test(FN-2943): complete Step 3 — add auth scroll-to-top regressions
- feat(FN-2943): complete Step 2 — scroll on successful auth actions
- feat(FN-2943): complete Step 1 — add settings content scroll ref
- feat(FN-2951): enforce unavailable-node scheduling and improve active agents panel
- chore: add changeset for Active Agents panel hoist + heartbeat ETA
- feat(dashboard): hoist Active Agents panel above main list, show next heartbeat
- fix(dashboard): add top margin between agent list and Active Agents panel
- fix(dashboard): unstick Active Agents panel cards from "Connecting..."
- chore(release): v0.9.0
- chore: add changeset for live merge timer on task card
- fix(dashboard): keep card timer live while task is actively merging
- feat(FN-2966): reset task steps when reopening to todo or triage
Files changed:
.changeset/active-agents-live-status-and-logs.md | 13 -
.changeset/active-agents-no-stuck-connecting.md | 13 +
.changeset/active-agents-panel-hoist-heartbeat.md | 13 +
.changeset/dashboard-merge-base-diff.md | 13 -
.changeset/dashboard-task-changed-files-only.md | 13 -
.changeset/engine-concurrency-races.md | 13 -
.changeset/fix-agent-heartbeat-scheduling.md | 5 -
.changeset/memory-dream-session-state.md | 13 -
.changeset/merger-ai-summarized-commits.md | 13 -
.changeset/multi-node-routing.md | 21 -
.changeset/pluggable-notification-providers.md | 4 -
.changeset/pr-mode-push-branch-and-cleanup.md | 16 -
.../recover-mergeable-respects-merge-settings.md | 13 -
.changeset/remote-tailscale-qr-tui.md | 7 -
.changeset/require-pr-approval-setting.md | 17 -
.changeset/respec-from-in-review.md | 13 -
.changeset/restore-task-card-fallbacks.md | 13 -
.changeset/tui-log-copy-feedback.md | 13 -
.changeset/tui-wide-stats-stack.md | 13 -
CHANGELOG.md | 449 +++++++++++++++++++++
package.json | 2 +-
packages/cli-alias/CHANGELOG.md | 60 +++
packages/cli-alias/package.json | 2 +-
packages/cli/CHANGELOG.md | 44 ++
packages/cli/package.json | 2 +-
packages/core/CHANGELOG.md | 41 ++
packages/core/package.json | 2 +-
packages/core/src/__tests__/store.test.ts | 127 ++++++
packages/core/src/store.ts | 35 +-
packages/dashboard/CHANGELOG.md | 63 +++
.../dashboard/app/components/ActiveAgentsPanel.css | 29 ++
.../dashboard/app/components/ActiveAgentsPanel.tsx | 35 +-
packages/dashboard/app/components/AgentsView.tsx | 5 +-
.../dashboard/app/components/SettingsModal.tsx | 13 +-
packages/dashboard/app/components/TaskCard.tsx | 30 +-
.../__tests__/ActiveAgentsPanel.test.tsx | 42 ++
.../app/components/__tests__/AgentsView.test.tsx | 11 +-
.../components/__tests__/SettingsModal.test.tsx | 68 ++++
.../app/components/__tests__/TaskCard.test.tsx | 36 ++
packages/dashboard/app/sse-bus.ts | 13 +
packages/dashboard/package.json | 2 +-
packages/desktop/CHANGELOG.md | 41 ++
packages/desktop/package.json | 2 +-
packages/engine/CHANGELOG.md | 59 +++
packages/engine/package.json | 2 +-
.../src/__tests__/node-routing-policy.test.ts | 102 +++--
.../src/__tests__/scheduler-node-routing.test.ts | 43 +-
packages/engine/src/index.ts | 1 +
packages/engine/src/node-routing-policy.ts | 41 +-
packages/engine/src/scheduler.ts | 48 +--
packages/mobile/CHANGELOG.md | 41 ++
packages/mobile/package.json | 2 +-
packages/pi-claude-cli/CHANGELOG.md | 41 ++
packages/pi-claude-cli/package.json | 2 +-
packages/plugin-sdk/CHANGELOG.md | 57 +++
packages/plugin-sdk/package.json | 2 +-
.../examples/fusion-plugin-auto-label/CHANGELOG.md | 21 +
.../examples/fusion-plugin-auto-label/package.json | 2 +-
.../examples/fusion-plugin-ci-status/CHANGELOG.md | 21 +
.../examples/fusion-plugin-ci-status/package.json | 2 +-
.../fusion-plugin-notification/CHANGELOG.md | 21 +
.../fusion-plugin-notification/package.json | 2 +-
.../fusion-plugin-settings-demo/CHANGELOG.md | 21 +
.../fusion-plugin-settings-demo/package.json | 2 +-
plugins/fusion-plugin-hermes-runtime/CHANGELOG.md | 21 +
plugins/fusion-plugin-hermes-runtime/package.json | 2 +-
.../fusion-plugin-openclaw-runtime/CHANGELOG.md | 21 +
.../fusion-plugin-openclaw-runtime/package.json | 2 +-
.../fusion-plugin-paperclip-runtime/CHANGELOG.md | 21 +
.../fusion-plugin-paperclip-runtime/package.json | 2 +-
70 files changed, 1617 insertions(+), 378 deletions(-)
Fusion-Task-Id: FN-2943
2026-04-29 14:43:10 -07:00
gsxdsm
d6c8073ad1
chore: add changeset for Active Agents panel hoist + heartbeat ETA
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 14:34:16 -07:00
gsxdsm
c31090efb5
fix(dashboard): unstick Active Agents panel cards from "Connecting..."
...
Agents in `active` state without a current taskId had no SSE to attach
to, but the card still rendered "Connecting..." — implying a network
state that never resolves. Branch on taskId first: idle agents show
"Idle — no task assigned"; running-without-task shows "Starting...".
Also fix a related SSE multiplexer race: subscribers joining a channel
that had already opened never got an onOpen callback (EventSource only
fires `open` once), so they sat at isConnected=false forever whenever
another component was already streaming the same URL. Fire onOpen on a
microtask for late-joiners.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 14:23:58 -07:00
gsxdsm
3460977be3
chore(release): v0.9.0
...
Version bump via changesets.
2026-04-29 14:04:09 -07:00
gsxdsm
6f5e2a843f
chore: add changeset for live merge timer on task card
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 14:02:50 -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
gsxdsm
8fdadb0795
fix(cli): push per-task branch to origin before creating PR; drop dead autoCreatePr
...
In PR-mode, processPullRequestMergeTask called gh pr create --head
fusion/<task-id> without ever pushing the branch to origin. PR creation
failed and the task stalled in in-review — and combined with the
recover-mergeable-review sweep bug, the stalled task got force-merged
locally instead. Push the branch via git push -u origin <branch>
immediately before createPr (skipped when an existing PR already covers
the branch).
Also remove the dead autoCreatePr setting: defined as a default in the
schema and Settings type but never read anywhere.
Related to https://github.com/Runfusion/Fusion/issues/21
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 13:42:17 -07:00
Fusion
07ca2ae668
feat(FN-2926): merge fusion/fn-2926
...
- Chat grouped tool calls refactored out of `ChatToolCalls.tsx` into inline rendering in `ChatView.tsx`, with updated styling and new tests; summary/expand logic for grouped calls updated
- New `QuickChatFAB` component added with styles, replacing the old `ChatToolCalls` inline callout with a persistent quick-access button
- Settings modal enhanced with agent runtime routes (register/unregister, run management) and memory settings routes (export, update limits)
- Remote access provider adapters updated to support real QR codes and live Tailscale URL sharing in TUI dashboard
- TUI dashboard app/controller/state updated to surface remote node status and shortcut hints
- `AgentsView` component updated with new layout and styling, plus comprehensive tests
- Route registration and agent runs tests updated to match new runtime API shape
- `surface-hover` fallback assertion aligned across tests
- Bundled dependency updates in `pnpm-lock.yaml`
Commits merged:
- test(FN-2926): align surface-hover fallback assertion
- feat(FN-2926): complete Steps 2-4 — inline grouped tool-call rendering and tests
- feat(FN-2926): complete Step 3 — refine grouped tool-call styles
- feat(FN-2926): complete Step 1 — update grouped tool call summary logic
- feat(remote): real QR codes, live tailscale URL, TUI status & shortcut
- feat(FN-2931): merge fusion/fn-2931
- feat(FN-2925): merge fusion/fn-2925
- feat(FN-2903): merge fusion/fn-2903
Files changed:
.../commands/dashboard-tui/__tests__/app.test.tsx | 9 +-
packages/cli/src/commands/dashboard-tui/app.tsx | 97 +++++++++++--
.../cli/src/commands/dashboard-tui/controller.ts | 31 ++++
packages/cli/src/commands/dashboard-tui/state.ts | 9 +-
packages/cli/src/commands/dashboard.ts | 3 +-
.../app/__tests__/status-colors-theme.test.ts | 4 +-
packages/dashboard/app/components/AgentsView.css | 20 ++-
packages/dashboard/app/components/AgentsView.tsx | 11 +-
.../dashboard/app/components/ChatToolCalls.tsx | 160 ---------------------
packages/dashboard/app/components/ChatView.css | 53 +++----
packages/dashboard/app/components/ChatView.tsx | 131 ++++++++++++++++-
packages/dashboard/app/components/QuickChatFAB.css | 87 ++++++-----
packages/dashboard/app/components/QuickChatFAB.tsx | 124 +++++++++++++++-
.../dashboard/app/components/SettingsModal.css | 21 +++
.../dashboard/app/components/SettingsModal.tsx | 72 +++++++++-
.../app/components/__tests__/AgentsView.test.tsx | 37 +++++
.../app/components/__tests__/ChatView.test.tsx | 83 +++++++++--
.../app/components/__tests__/QuickChatFAB.test.tsx | 68 ++++++---
.../components/__tests__/SettingsModal.test.tsx | 12 +-
packages/dashboard/package.json | 2 +
.../src/__tests__/routes-agent-runs.test.ts | 13 +-
.../src/routes/register-agent-runtime-routes.ts | 49 ++++---
.../src/routes/register-settings-memory-routes.ts | 36 ++++-
packages/engine/src/project-engine.ts | 4 +-
.../engine/src/remote-access/provider-adapters.ts | 14 +-
pnpm-lock.yaml | 113 +++++++++++++++
26 files changed, 933 insertions(+), 330 deletions(-)
Fusion-Task-Id: FN-2926
2026-04-29 13:26:25 -07:00
gsxdsm
d6556e6f1f
chore: add changeset for remote tailscale QR/TUI overhaul
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 13:26:07 -07:00
gsxdsm
9dde067573
fix(engine): respect autoMerge and mergeStrategy in recover-mergeable-review sweep
...
The periodic maintenance job `recover-mergeable-review` was silently merging
in-review tasks regardless of `autoMerge` and `mergeStrategy` settings,
defeating the PR-based review flow for users with `autoMerge: false` and
`mergeStrategy: "pull-request"`.
Gate the sweep on `settings.autoMerge` (and globalPause/enginePaused for
consistency with other merge entry points) and route through the engine's
merge queue via the existing `enqueueMerge` callback so `mergeStrategy ===
"pull-request"` is honored. Falls back to the direct `store.mergeTask` path
only when no enqueue callback is wired (standalone/tests).
Closes https://github.com/Runfusion/Fusion/issues/21
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 13:26:05 -07:00
gsxdsm
a6a8862986
chore: backfill changesets for recent commits
...
Add changesets covering recent fix/feat commits since v0.8.4 that did
not yet have one: TUI wide layout, TUI log copy feedback, dashboard
merge-base diff, dashboard task-only file diffs, engine concurrency
races, memory dream session-state read, AI-summarized merge commits,
and the FN-2877 task card fallbacks.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 11:53:42 -07:00
gsxdsm
627d1c9606
feat(core,dashboard): allow tasks to be respec'd from in-review
...
Add `triage` to VALID_TRANSITIONS["in-review"] so the dashboard's
`Request AI Revision` and `Rebuild Spec` actions work for in-review
tasks. moveTask now applies the same full reset on in-review → triage
as on in-review → todo (clears branch/baseBranch/baseCommitSha/summary/
recovery metadata and workflowStepResults) so the respec'd task starts
from scratch. The in-review task card's Move menu also gains Planning
as a destination.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 11:53:35 -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
b42eac3891
feat(FN-2731): merge fusion/fn-2731
...
- feat(FN-2731): add changeset for multi-node routing feature
- feat(FN-2730): merge fusion/fn-2730
- feat(FN-2729): merge fusion/fn-2729
- chore(release): v0.8.4
- chore(dashboard): tidy stray workspace artifacts
- refactor(core,merger): consolidate AI commit-body summarization into ai-summarize.ts
- feat(merger,dashboard): use title-summarization model for commit body AI + reword settings
- fix(engine): guarantee non-empty merge commit body via AI fallback cascade
- fix(FN-XXX): sync workspace version on release
- feat(FN-2729): unify node status indicator with NodeHealthDot
- fix(FN-0000): harden sqlite startup validation
- fix(FN-XXX): align tui startup update check
- fix(FN-XXX): harden windows path handling
- fix(engine): tighten Layer 3 — pass safety constraint into AI prompt + harden Layer 2 restore
- feat(FN-2944): merge fusion/fn-2944
- fix(engine): auto-recover from squash-merge orphan rebase failures
- feat(FN-2948): merge fusion/fn-2948
- feat(FN-2939): merge fusion/fn-2939
- feat(FN-2946): merge fusion/fn-2946
- feat(FN-2941): merge fusion/fn-2941
- feat(FN-2938): merge fusion/fn-2938
- feat(FN-2929): merge fusion/fn-2929
- feat(FN-2934): merge fusion/fn-2934
- feat(FN-2930): merge fusion/fn-2930
- feat(FN-2928): merge fusion/fn-2928
- feat(FN-2927): merge fusion/fn-2927
- feat(FN-2916): streamline Cloudflare quick tunnel settings UX
- feat(FN-2913): merge fusion/fn-2913
- feat(FN-2911): merge fusion/fn-2911
- feat(FN-2901): merge fusion/fn-2901
- feat(FN-2729): merge fusion/fn-2729
Fusion-Task-Id: FN-2731
2026-04-29 09:16:23 -07:00
gsxdsm
3672700306
chore(release): v0.8.4
...
Version bump via changesets.
2026-04-29 08:59:49 -07:00
gsxdsm
5661188a61
fix(FN-0000): harden sqlite startup validation
2026-04-29 07:58:58 -07:00
gsxdsm
597295e749
fix(FN-XXX): align tui startup update check
2026-04-29 07:54:45 -07:00
gsxdsm
42c27fcc3e
fix(FN-XXX): harden windows path handling
2026-04-29 07:35:23 -07:00
Fusion
ba3d868c2d
feat(FN-2944): merge fusion/fn-2944
...
- test(FN-2944): cover already checked out worktree conflict recovery
- fix(FN-2944): recognize git already checked out worktree conflict
- fix(engine): auto-recover from squash-merge orphan rebase failures
Fusion-Task-Id: FN-2944
2026-04-29 07:10:52 -07:00
Fusion
e891a05950
feat(FN-2939): merge fusion/fn-2939
...
- feat(FN-2939): complete Step 6 — add verification changeset
- test(FN-2939): complete Step 4 — tighten bundle-output coverage
- feat(FN-2946): merge fusion/fn-2946
Fusion-Task-Id: FN-2939
2026-04-29 02:39:06 -07:00
Fusion
854dc7d1e8
feat(FN-2929): merge fusion/fn-2929
...
- fix(FN-2929): complete Step 6 — add changeset and docs
- test(FN-2929): update loginProvider API test for origin payload
- test(FN-2929): complete Step 4 — cover oauth redirect rewrite and callback proxy
- fix(FN-2929): complete Step 3 — send browser origin in auth login request
- fix(FN-2929): complete Step 1-2 — rewrite OAuth redirect and add callback proxy
- feat(FN-2934): merge fusion/fn-2934
Fusion-Task-Id: FN-2929
2026-04-29 01:32:37 -07:00
gsxdsm
d10f33210f
chore(release): v0.8.3
...
Version bump via changesets.
2026-04-28 22:02:56 -07:00
gsxdsm
013c814f54
Update changeset
2026-04-28 22:02:30 -07:00
gsxdsm
7a4970e2d6
chore(release): v0.8.2
...
Version bump via changesets.
2026-04-28 21:51:32 -07:00
Fusion
6bb919864b
feat(FN-2895): merge fusion/fn-2895
...
- feat(FN-2895): complete Step 7 — documentation and delivery
Fusion-Task-Id: FN-2895
2026-04-28 21:50:27 -07:00
gsxdsm
afef995eb7
chore(release): v0.8.1
...
Version bump via changesets.
2026-04-28 21:15:15 -07:00
Fusion
9286205f4b
feat(FN-2915): merge fusion/fn-2915
...
- feat(FN-2915): include github issue refs in commit workflows
- refactor(dashboard): simplify setup wizard manual step
- fix(engine): prevent phantom merges when verification fix runs without a commit
Fusion-Task-Id: FN-2915
2026-04-28 21:13:30 -07:00
gsxdsm
946984a5d0
chore(release): v0.8.0
...
Version bump via changesets.
2026-04-28 19:24:57 -07:00
Fusion
7960b3d4c6
fix(FN-2897): harden npm bundle packaging and merge recovery flows
...
- Strip private @fusion/* workspace devDependencies from the published CLI manifest via prepare-publish-manifest and package metadata updates
- Replace cross-spawn usage and add staged bundle layout assertions to verify resolver output in dist packaging
- Add per-task/project model override resolution across core, dashboard settings/task modals, and route coverage with new regression tests
- Strengthen engine merge/recovery handling for paused/interrupted/squash paths and surface merger timeline activity with additional self-healing and merger tests
- Add changesets for npm bundle dependency fixes, project model override stabilization, and FTS5 corruption recovery
Fusion-Task-Id: FN-2897
2026-04-28 18:23:21 -07:00
gsxdsm
3f061460b9
fix(FN-2662): honor project model overrides and stabilize tests
2026-04-28 18:21:17 -07:00
Fusion
29be0d22ad
feat(FN-2895): add FTS5 corruption recovery path
...
- Add Database APIs to rebuild the tasks_fts index and detect FTS5 corruption signatures
- Retry task upserts once after rebuilding FTS5 when corruption errors are encountered
- Extend TaskStore health checks to include FTS5 integrity verification
- Add regression tests for rebuild/integrity behavior and upsert recovery, plus a patch changeset for @runfusion/fusion
2026-04-28 16:51:04 -07:00