chore(release): v0.9.0
Version bump via changesets.
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Surface live run status on Active Agent cards instead of a generic "Connecting…" placeholder. The card now polls the agent's task and shows the current step (e.g. *"Step 5/8: Write Tests"*) and executor model while the SSE log stream warms up. A new "Live logs" button on the card opens the task detail modal directly on the Logs tab.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Prefer `merge-base` over potentially stale `baseCommitSha` when resolving task diff bases in the dashboard. Diffs no longer drift when the recorded base commit lags behind the actual divergence point.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Show only files actually changed by the task in `ChangesDiffModal` and `TaskChangesTab`. The diff baseline is no longer flooded with files that weren't touched by the task itself.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Close executor/merger concurrency races and reviewer pause TOCTOU. Worktree lifecycle is now synchronized more defensively across executor and merger paths, the reviewer pause/unpause flow is hardened against time-of-check/time-of-use races, and `AgentSemaphore` now guards against invalid limits (NaN, Infinity).
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
---
|
||||
|
||||
Fix agent heartbeat scheduling so disabled agents stay disabled and active timers are not reset by unrelated agent updates.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Read assistant text from session state when processing memory dreams. Dream extraction no longer misses content when the assistant message has not been flushed to the output stream yet.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
"runfusion.ai": minor
|
||||
"@fusion/core": minor
|
||||
"@fusion/dashboard": minor
|
||||
"@fusion/desktop": minor
|
||||
"@fusion/engine": minor
|
||||
"@fusion/mobile": minor
|
||||
"@fusion/pi-claude-cli": minor
|
||||
"@fusion/plugin-sdk": minor
|
||||
---
|
||||
|
||||
Generate richer merge commit messages via the AI summarizer. The merger now routes commit-body summarization through the consolidated `ai-summarize.ts` pipeline (using the title-summarization model), with an AI fallback cascade to guarantee non-empty merge bodies. Summarization model is configurable in settings.
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
"runfusion.ai": minor
|
||||
"@fusion/core": minor
|
||||
"@fusion/dashboard": minor
|
||||
"@fusion/desktop": minor
|
||||
"@fusion/engine": minor
|
||||
"@fusion/mobile": minor
|
||||
"@fusion/pi-claude-cli": minor
|
||||
"@fusion/plugin-sdk": minor
|
||||
---
|
||||
|
||||
Add unified multi-node task routing across CLI, dashboard, core, and engine flows.
|
||||
|
||||
- **Routing model:** Tasks can set a per-task node override with project-level pinned default node fallback. `resolveEffectiveNode()` computes the effective routing target per task.
|
||||
- **Core types:** Adds `Task.nodeId`, `UnavailableNodePolicy` (`"block" | "fallback-local"`), `ProjectSettings.defaultNodeId`, and `ProjectSettings.unavailableNodePolicy`.
|
||||
- **Engine behavior:** Adds effective-node resolution (per-task override → project default → local), unavailable-node policy enforcement, and routing activity event logging.
|
||||
- **Active-task guard:** Blocks node override changes for in-progress tasks via `validateNodeOverrideChange()`.
|
||||
- **Dashboard updates:** Adds project settings controls for default node and unavailable-node policy, task detail routing summary (effective node, routing source, fallback policy, blocking reason), quick task creation node picker, bulk node override actions, and node health/status indicators in selectors.
|
||||
- **CLI updates:** Adds `fn settings set defaultNodeId <node-id>`, `fn settings set unavailableNodePolicy <block|fallback-local>`, `fn task set-node <id> <node>`, `fn task clear-node <id>`, `fn task create --node <name>`, and routing details in `fn task show`.
|
||||
- **Schema updates:** Includes tasks table migration adding the `nodeId` column.
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
---
|
||||
Add pluggable notification provider system with built-in ntfy and webhook support.
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Fix PR-mode merge flow (related to [#21](https://github.com/Runfusion/Fusion/issues/21)):
|
||||
|
||||
- **PR-mode now pushes the per-task branch to origin before creating the PR.** `processPullRequestMergeTask` previously called `gh pr create --head fusion/<task-id>` without ever publishing the branch, so the PR creation failed and the task stalled in `in-review`. The branch is now pushed via `git push -u origin <branch>` immediately before `createPr` (skipped when an existing PR already covers the branch).
|
||||
- **Removed dead `autoCreatePr` setting** from the schema and `Settings` type. It was defined as a default but never read anywhere.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Fix [#21](https://github.com/Runfusion/Fusion/issues/21): the `recover-mergeable-review` maintenance sweep no longer bypasses `autoMerge` and `mergeStrategy`. The sweep now early-returns when `autoMerge !== true` (or when the engine is paused) and routes recovery merges through the engine's merge queue so `mergeStrategy: "pull-request"` is honored — eligible in-review tasks go through `processPullRequestMerge` instead of a raw local `git merge`. Operators using a PR-based review flow with `autoMerge: false` will no longer have tasks silently merged behind their back.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/engine": patch
|
||||
---
|
||||
|
||||
Remote access (Tailscale) overhaul: the auth/scan URL now uses the live `https://<machine>.<tailnet>.ts.net/` URL captured from `tailscale funnel` instead of a constructed `http://<hostname>:<port>` from a configured label, so QR codes lead to a working public endpoint. The hostname label is no longer required (engine validation and the Settings UI both dropped it; `tailscale funnel` never used it). QR codes are now rendered with the `qrcode` library — previously the SVG was just the URL drawn as text — and a new `format=terminal` returns ASCII QR for the TUI. The Tailscale readiness parser now waits for the line containing the URL before flipping to `running`, fixing missing-URL captures. Dashboard polls remote status while `starting`/`stopping` so state updates without reopening the modal. The TUI shows a global `● tunnel` indicator with URL in the header when running, and `Ctrl+Q` opens an ASCII QR overlay anywhere in the app.
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
"runfusion.ai": minor
|
||||
"@fusion/core": minor
|
||||
"@fusion/dashboard": minor
|
||||
"@fusion/desktop": minor
|
||||
"@fusion/engine": minor
|
||||
"@fusion/mobile": minor
|
||||
"@fusion/pi-claude-cli": minor
|
||||
"@fusion/plugin-sdk": minor
|
||||
---
|
||||
|
||||
Add `requirePrApproval` setting (related to [#21](https://github.com/Runfusion/Fusion/issues/21)).
|
||||
|
||||
When `mergeStrategy: "pull-request"`, GitHub's `required: true` flag for status checks only flows from branch protection — a Pro feature on private repos. On free private repos, `isPrMergeReady` reports every fresh PR as immediately mergeable, so `autoMerge: true` causes Fusion to auto-squash-merge the moment the PR opens with no chance for a human to review it.
|
||||
|
||||
The new `requirePrApproval` setting (project-level, default `false`) makes Fusion hold the merge until at least one approving GitHub review is present (`reviewDecision === "APPROVED"`), independent of GitHub's server-side enforcement. Surfaces in the dashboard's Merge settings panel under the Pull Request strategy. Lets you use Fusion's PR mode as "open the PR, wait for me to approve and merge" on any tier.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
"runfusion.ai": minor
|
||||
"@fusion/core": minor
|
||||
"@fusion/dashboard": minor
|
||||
"@fusion/desktop": minor
|
||||
"@fusion/engine": minor
|
||||
"@fusion/mobile": minor
|
||||
"@fusion/pi-claude-cli": minor
|
||||
"@fusion/plugin-sdk": minor
|
||||
---
|
||||
|
||||
Allow tasks to be respecified from `in-review`. `VALID_TRANSITIONS["in-review"]` now includes `triage`, so the dashboard's `Request AI Revision` and `Rebuild Spec` actions work for in-review tasks. Moving an in-review task to triage performs the same full reset as in-review → todo (clears branch/baseBranch/baseCommitSha/summary/recovery metadata and workflowStepResults) so the next run starts from scratch. The in-review card's `Move` menu also now offers `Planning` as a destination.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Restore task card timing and changes fallbacks (FN-2877). The dashboard task card again falls back gracefully when timing data or change summaries are missing, preventing blank states on tasks that haven't reported metrics yet.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Keep task card timer live while a task is actively merging (FN-2920). The in-review timer was driven by per-step instrumented duration, which freezes during the merge phase, so a stuck merge could read "3m" indefinitely. While `status` is `merging`/`merging-pr` the card now shows live elapsed since the merger flipped the status, with a "Merging Nm" tooltip.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Surface visible feedback when copying a log entry from the dashboard TUI. The Logs panel title now flashes a "Copied!" / "Copy failed" status so the action is no longer silent.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
"runfusion.ai": patch
|
||||
"@fusion/core": patch
|
||||
"@fusion/dashboard": patch
|
||||
"@fusion/desktop": patch
|
||||
"@fusion/engine": patch
|
||||
"@fusion/mobile": patch
|
||||
"@fusion/pi-claude-cli": patch
|
||||
"@fusion/plugin-sdk": patch
|
||||
---
|
||||
|
||||
Stack Utilities and Settings under Stats in the dashboard TUI wide layout (≥150 columns). Logs now fills the full right column for its full height; Stats flex-grows in the left column above fixed-height Utilities and Settings, so Stats absorbs all leftover vertical space.
|
||||
Reference in New Issue
Block a user