Merge branch 'main' into fix/self-heal-merged-pr-stale-base

This commit is contained in:
gsxdsm
2026-07-05 20:47:22 -07:00
committed by GitHub
226 changed files with 5455 additions and 1164 deletions

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Add a workflow setting to disable automatic large-task triage splitting.
category: feature
dev: Adds triageProactiveSubtaskSplittingEnabled while preserving explicit breakIntoSubtasks requests.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Show active Plan Review progress on triage task cards.
category: fix
dev: TaskCard now renders the existing progress affordance for Triage only when unified progress has active workflow work.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Remove the eye icon markdown/plain toggle from chat; messages always render as Markdown.
category: breaking
dev: Removed ChatView `chat-thread-header-render-toggle` (desktop + mobile), `showAllAsPlain` state, and `chat.showRenderedMarkdown`/`chat.showPlainText` i18n keys (FN-7541).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Clarify task-detail oversight Nudge/Explain controls: visible label, disabled reason, always-openable Explain panel.
category: fix
dev: TaskDetailModal now renders a `detail-oversight-controls-label` group label and `detail-overseer-nudge-disabled-reason` helper text (both gated by the existing oversight-cluster visibility condition); Explain no longer disables on `!canExplainOverseer` since it is read-only. Nudge's `canNudgeOverseer` gate and Stop's confirm dialog are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Keep the task-detail Activity view menu open during mobile iOS taps.
category: fix
dev: Guards the Activity views dropdown against iOS visualViewport resize/scroll echoes during menu opening.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix Anthropic subscription login when pasted callback URLs contain fragment OAuth parameters.
category: fix
dev: Normalizes pasted OAuth callback fragments before resolving dashboard manual-code login prompts.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix Claude/Anthropic subscription re-login showing "Login did not complete" after logging out.
category: fix
dev: Anthropic subscription OAuth is aliased across the legacy `anthropic` row (where interactive login persists the credential) and the `anthropic-subscription` id (where the settings card's in-memory logged-out suppression and status read are keyed). Re-login wrote only `anthropic`, so `loggedOutProviders` kept suppressing `anthropic-subscription` and the card reported failure despite a valid stored credential until process restart. auth-storage's proxy now clears the logged-out state on both aliases when either is re-authenticated (new `login` trap + hardened `set` trap via `clearReauthenticatedLogoutState`; raw api_key writes stay scoped to their own card). Also surfaces background OAuth login failures on `GET /auth/status` (`loginError`) + server logs so future paste-callback failures are diagnosable instead of a generic error.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop self-healing from killing actively-running tasks after ~30 minutes.
category: fix
dev: FN-7566. isPhantomExecutorBinding's liveness gate (heartbeat/checkout/runAudit) was blind to ephemeral executor agents, leaving only the age>graceMs*3 threshold, so any ephemeral-executor task running longer than ~30 min was reclaimed to `todo` mid-flight. Adds the in-process live-session veto (activeSessionRegistry path / executingTaskLock / isTaskActive), mirroring the isWorkspaceTaskLive/sessionDead predicate, and honors clearPhantomExecutorBinding's live-session refusal in reclaimSelfOwnedBranchConflicts.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop Windows Terminal version dialogs from popping up when opening the dashboard or Settings on Windows.
category: fix
dev: Root cause was the worktrunk integration, not the embedded terminal: worktrunk's CLI is named `wt`, which collides with Windows Terminal (`wt.exe`) on PATH, so probing it with `wt --version` launched Windows Terminal. Fixed by (1) `useWorktrunkInstallStatus` only auto-fetching `/api/worktrunk/status` when the integration is enabled (user opt-in) instead of on every Settings/dashboard mount, and (2) an engine-level guard in `probeWorktrunk` that refuses to exec a resolved `wt` that is the Windows Terminal alias (under `WindowsApps` / a `WindowsTerminal` package dir), covering all resolution surfaces.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Expand first-run AI provider quick-start choices beyond Anthropic.
category: feature
dev: Moves advanced/all-provider onboarding controls under the quick-start provider section.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Select newly created folders automatically during project setup.
category: fix
dev: Adds DirectoryPicker opt-in selection for project-registration surfaces while preserving default picker behavior.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Show Git prerequisite guidance during first-run GitHub onboarding.
category: feature
dev: Adds bounded server-host git availability to auth status and onboarding.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Prevent Desktop update banners from using 0.0.0 as the current version.
category: fix
dev: Dashboard update checks now resolve packaged @fusion/desktop metadata and fail closed for unresolved versions.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Quit Fusion Desktop on Windows when the window is closed.
category: fix
dev: Updates Electron close lifecycle so Windows shutdown reaches embedded runtime cleanup.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Open desktop Anthropic Subscription OAuth logins in the system browser.
category: fix
dev: Adds Electron window-open policy coverage and preserves Settings auth polling completion paths.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add GitHub OAuth and CLI setup actions to first-run onboarding.
category: feature
dev: GitHub onboarding now shows in-flow OAuth connect, gh auth login, and gh install guidance.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Delay GitHub setup warnings for one day and add a dashboard connect action.
category: fix
dev: Dashboard setup warnings now gate GitHub prompts per project and route the CTA to Settings → Authentication.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix a false AI engine not running banner in desktop mode.
category: fix
dev: Distinguishes transient embedded desktop engine startup from true dashboard-only mode.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Clarify the desktop Connection Manager add-remote flow.
category: fix
dev: Desktop Connection Manager now separates Local Server context from saved remote profiles and collapses the remote editor until add/edit.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Restore Local Server in the desktop Switch server list.
category: fix
dev: Desktop Connection Manager now lists local and saved remote destinations together.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Make right-dock task list clicks respect the task popup setting.
category: fix
dev: Threads openMobileTasksInPopup through the right-dock Tasks list route while preserving embedded dock detail when disabled.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Auto-retry retryable Code Review remediation failures.
category: fix
dev: Prevents retryable code-review-remediation graph failures from stranding tasks in in-review.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix no-op task branch recovery after a previously landed task.
category: fix
dev: Merge/recovery ownership classification now checks no-diff branches before foreign trailer rejection.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Allow documented source-free task-artifact deliveries to finish without commits.
category: fix
dev: fn_task_done now recognizes explicit gitignored .fusion/tasks artifact contracts while preserving source-change no-commit guards.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix direct merges so Push to remote after merge honors the configured remote and branch.
category: fix
dev: Resolves remote-only push targets from the merge integration branch and preserves non-fatal push errors on done tasks.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Keep task popups on the board layer with Activity menus above them.
category: fix
dev: Task-detail FloatingWindow callers use a lower layer band, and Activity view menus reposition after popup geometry changes.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add configurable dashboard keyboard shortcuts for Quick Chat and Terminal.
category: feature
dev: Global dashboardKeyboardShortcuts settings, guarded document-level key handling, and Escape topmost-popup dismissal.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add search in Settings so operators can find settings faster.
category: feature
dev: Dashboard Settings filters visible sections by setting labels and keywords.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Keep accepted chat requests waiting instead of showing false first-event timeout failures.
category: fix
dev: Dashboard chat POST streams no longer abort accepted-but-silent responses on the client first-event timer.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Show each task's original prompt in the Plan tab alongside the generated plan.
category: fix
dev: Adds a read-only Task Detail original-prompt section backed by task.description.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Add before-to-after transformation summaries to generated task definitions.
category: feature
dev: Built-in standard and fast triage prompts now require a `## Before → After Transformation` section.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Restore terminal Ctrl/Cmd copy and paste shortcuts.
category: fix
dev: Integrated and embedded terminals now own physical clipboard paste to avoid swallowed or duplicate input.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a pinned below-application layout option for the dashboard terminal.
category: feature
dev: Terminal display mode now supports persisted docked, floating, and below layouts, with header controls replacing the footer shell.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Show first-token and tool processing durations in task agent logs.
category: feature
dev: Adds optional agent-log timing fields `timeToFirstTokenMs` and `durationMs`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix mobile Chat composer being hidden behind the keyboard accessory bar.
category: fix
dev: Adds keyboard-open bottom clearance in ChatView so the composer clears the iOS input-assistant/autofill bar without a persistent .chat-thread transform or Android reserved-gap.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Settings descriptions now show each setting's default value.
category: feature
dev: Appended default-value copy to settings.* i18n descriptions across Global, Runtimes, and Project Settings sections, sourced from DEFAULT_GLOBAL_SETTINGS/DEFAULT_PROJECT_SETTINGS in settings-schema.ts; added settings-default-descriptions.test.tsx guarding that every surfaced setting states a default (or explicit "inherits"/"no default \u2014 unset") and that every DEFAULT_SETTINGS key is documented or allowlisted as not surfaced.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a Reset Settings button to restore a menu's or all project settings to defaults.
category: feature
dev: New tested section→keys (scope-aware) registry (packages/dashboard/app/components/settings/section-keys.ts) drives per-menu reset via updateSettings/updateGlobalSettings with null-as-delete; non-blob sections (secrets, MCP, plugins, memory, auth, prompts, CLI agents, runtimes) are excluded with a documented reason.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a per-workflow planner oversight level setting (Off, Observe, Steer, Autonomous recovery).
category: feature
dev: New workflow setting `plannerOversightLevel` declared in BUILTIN_OVERSIGHT_SETTINGS; default `autonomous`. Per-task override and engine behavior land in follow-up tasks.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Tasks can override the workflow planner oversight level (Off, Observe, Steer, Autonomous recovery).
category: feature
dev: New nullable Task.plannerOversightLevel field (migration 137, SCHEMA_VERSION 137) mirroring executionMode; NULL inherits the workflow setting. Adds resolveEffectivePlannerOversightLevel precedence helper. Dashboard UI/API threading and engine behavior land in follow-up tasks.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planner oversight now defaults to full steering/control for every workflow unless explicitly changed.
category: feature
dev: Confirms the `plannerOversightLevel` workflow-setting default is the highest (autonomous) level; unset workflow value and unset per-task override both resolve to full steering via `resolveEffectivePlannerOversightLevel` (task override → workflow effective value → autonomous), adding dedicated regression coverage for the "unless explicitly disabled" precedence.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planner oversight now monitors tasks across executor, reviewer, merger, pull-request, and workflow-gate stages.
category: feature
dev: Adds records-only PlannerOverseerMonitor + resolveWatchedStage + OverseerStageObservation in @fusion/engine, gated by resolveEffectivePlannerOversightLevel (off = no observation) and wired into ProjectEngine via a bounded poll. Steering/recovery and UI land in FN-7512/FN-7515+.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planner oversight can autonomously inject guidance, retry stuck/failed steps, and request fixes within bounded limits.
category: feature
dev: Adds pure `decidePlannerRecovery` + recovery types (core) and `PlannerRecoveryController` with injected guidance/retry/targeted-fix handlers (engine), consuming the FN-7511 observation. Acts only at effective level `autonomous`, caps attempts per (task, stage) via `PLANNER_RECOVERY_MAX_ATTEMPTS`, skips user-paused tasks, and excludes merge/PR/destructive actions (deferred to FN-7513) and comprehensive human-control safeguards (FN-7514).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planner oversight now requires confirmation before merge/PR actions and destructive/external side effects.
category: feature
dev: Adds `PlannerActionSideEffectClass` + `PlannerConfirmationRequest` and `classifyPlannerActionSideEffect`/`requiresPlannerConfirmation` (core), extends `decidePlannerRecovery` with an `await_confirmation` action, and adds `requestConfirmation`/`resolveConfirmation` gating to `PlannerRecoveryController` (engine). Merge/PR and destructive/external actions never execute without a recorded approval; bounded recovery (guidance/retry/targeted-fix) is unchanged. UX rendering, human-control safeguards, timeline, and run-audit land in follow-up tasks.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planner overseer now stays fully hands-off for paused tasks and auto-merge-off / human-review tasks.
category: feature
dev: Adds the pure `evaluateOverseerHumanControl` policy (packages/engine/src/overseer-human-control-policy.ts), consulted at the top of `PlannerRecoveryController.tick()` before any action classification, confirmation gating, steering, retry, or dispatch — so a user-paused or `autoMerge:false`/human-review task never even records a pending confirmation. Reuses `allowsAutoMergeProcessing` from `@fusion/core` verbatim (never re-derives the auto-merge/human-review predicate). Distinguishes explicit user pause (`task.userPaused===true`, or `task.paused===true` with no `pausedReason`) from engine/self-healing parks (which always stamp a `pausedReason`). Emits a bounded `overseer:oversight-withheld-human-control` run-audit no-action event (metadata: `{ taskId, reason, stage, oversightLevel }`), deduped per (taskId, reason) so it does not spam every poll.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Configure planner oversight level per task and per project in the workflow editor and task create/detail.
category: feature
dev: Per-task `plannerOversightLevel` override exposed via TaskForm (Inherit/off/observe/steer/autonomous), threaded through createTask/updateTask; workflow-editor Values tab gets a first-class display entry. Workflow-native setting; not a project setting.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a configurable planner-overseer notification verbosity level (Silent/Errors/Important/All).
category: feature
dev: New workflow-native enum setting `plannerOversightNotificationLevel` in BUILTIN_OVERSIGHT_SETTINGS; default `important`. Resolves via resolveEffectiveSettings; emission gating that reads it lands in FN-7519/FN-7520.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a task-detail planner-overseer intervention timeline (stage, reason, action, outcome, attempts, links).
category: feature
dev: New core `PlannerInterventionEntry` model + `recordPlannerIntervention`/`getPlannerInterventionTimeline` helpers persisting via the run-audit store under the `overseer:intervention` mutation, plus a `PlannerInterventionTimeline` component rendered in the task-detail Planner Oversight cluster. Emission call-sites land in FN-7520.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Emit planner-overseer run-audit events for observations, steering, retries, recovery, confirmations, and escalations.
category: feature
dev: New core emitters (emitOverseerObservation/Steering/RecoveryAttempt/Retry/Confirmation/Escalation) in planner-overseer-events.ts, each mapping its decision-point to the correct intervention action/outcome and delegating to FN-7519's recordPlannerIntervention under the overseer:intervention mutation. Producer call-sites land in FN-7511/FN-7512/FN-7513.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Add an intelligent git-revert engine service and POST /api/tasks/:id/revert route.
category: feature
dev: New `packages/engine/src/task-revert.ts` exports `resolveTaskRevertCommits`, `classifyTaskRevert`, and `performTaskRevert` (squash/rebase/lineage attribution precedence, dry-run classification, guaranteed-clean rollback). Route enforces done/archived-only and autoMerge-off guard rails; conflicting results are returned unresolved for sibling FN-7524 (AI-undo) to act on. Workspace tasks return `unsupported`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add an AI-undo fallback task when reverting a done task via git conflicts or is unsupported.
category: feature
dev: `POST /api/tasks/:id/revert` now accepts `{ mode?: "git" | "ai" | "auto" }` (default `"auto"`). `"auto"` tries the FN-7523 git-revert path first and falls back to creating an AI-undo board task (`{ mode: "ai", createdTaskId, alreadyOpen? }`) on a conflicting or unsupported (e.g. workspace) git result; `needsHuman` (autoMerge-off) never triggers the fallback. `"ai"` always creates the AI-undo task; `"git"` keeps the FN-7523 git-only contract, which is otherwise unchanged. New engine exports: `createAiUndoTask`, `buildAiUndoTaskDescription`, `REVERT_OF_METADATA_KEY`. New core store method `TaskStore.findOpenRevertTaskForSource` backs the idempotency guard (an open undo task suppresses a duplicate; a closed one does not).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a Revert action to Done/Archived task cards to undo landed changes.
category: feature
dev: Wires onRevertTask through Board/List/Detail surfaces; calls POST /tasks/:id/revert in "auto" mode with a conflict-confirm AI-undo fallback (mode: "ai").

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Auto-approve now reliably sends specified plans to the board without a manual approval stop.
category: fix
dev: FN-7526 — investigated the reported "plans still park at awaiting-approval when auto-approve is on" symptom; resolvePlanApprovalRequired, mergeEffectiveSettings/applyWorkflowSettingsOverlay, and every finalizeApprovedTask call site (specifyTask, recoverApprovedTask, retryUnavailablePlanReview, tryFinalizeExplicitDuplicateMarker) already honored project planApprovalMode: "auto-approve-all" over a stored workflow requirePlanApproval value — no production defect reproduced. Added end-to-end regression coverage across every enumerated surface (Plan Review reviewer-outage retry, refinement routing, self-healing starved-refinement recovery) using the real mergeEffectiveSettings pipeline instead of isolated bare-settings unit calls, plus explicit assertions that the independent release-authorization and Workflow Plan Review gates remain intact under auto-approve-all, so a future bare-settings call site is caught immediately instead of silently reintroducing the reported behavior.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the in-dashboard Switch server menu not switching desktop local/remote.
category: fix
dev: The desktop shell's redirect effects in App.tsx read a dead `localServer` field that the preload never populates; extracted `resolveDesktopShellRedirectTarget` in appLifecycle.ts now derives the navigation target from the live `localRuntime`/`activeProfileId` state for both directions, and the unused `localServer` field was removed from `ShellConnectionState`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Capture a structured performance snapshot when an agent task completes.
category: feature
dev: New AgentReflectionService.captureTaskPerformance persists a non-LLM post-task ReflectionMetrics record (duration, packages/files touched, verification command + scope, retry/rework count) and emits ids/counts-only `reflection:captured` run-audit telemetry; populates performanceSummary/latestReflection.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Task cards can now show the planner overseer's active state (idle/watching/steering/recovering/awaiting-confirmation).
category: feature
dev: Adds a serializable `PlannerOverseerRuntimeSnapshot` + pure `derivePlannerOverseerState` (core), a read-only `ProjectEngine.getPlannerOverseerRuntimeSnapshot(taskId)` accessor assembling it from the FN-7511 monitor + FN-7512/7513 recovery controller, and a best-effort additive `plannerOverseerState` enrichment on `GET /api/tasks` (mirrors the `branchProgress` pattern; never persisted, never fails the board load). Consumed by FN-7516's TaskCard.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix branch group completion checklists to show accurate landed/finished counts.
category: fix
dev: runAiMerge (the sole merge path since master-plan U0) never resolved branch-group routing or stamped mergeDetails.mergeTargetBranch/mergeTargetSource, so isBranchGroupMemberLanded permanently reported shared-group members as not landed. Routes through resolveBranchGroupMergeRouting (matching the legacy merger.ts pattern) and stamps the target fields on both the landed and no-op finalize paths; preserves merge-target-safety in isBranchGroupMemberLanded (a sibling/mismatched-branch member still never counts as landed).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Branch groups no longer report complete (or become promotable) when an unlanded member is archived.
category: fix
dev: listTasksByBranchGroup membership now scans with includeArchived:true so an archived-but-unlanded member stays counted in total instead of silently dropping out; mergeDetails is now persisted on ArchivedTaskEntry so an archived member that had already landed keeps counting as landed. evaluateBranchGroupCompletion / promoteBranchGroup gate correctly; merge-target-safety in isBranchGroupMemberLanded is unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the global GitLab integration setting not persisting when saved.
category: fix
dev: splitSettingsSave now diffs the five global GitLab keys (gitlabEnabled, gitlabInstanceUrl, gitlabApiBaseUrl, gitlabAuthToken, gitlabAuthTokenType) against scoped global initials only, never the project-effective merged initialValues, so a project override no longer suppresses a real global save.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix task-detail Activity view dropdown not opening reliably on mobile.
category: fix
dev: Guards the Activity menu's window resize/orientationchange/scroll close-listener with the same opening-tap timing guard already used for visualViewport, and exempts scroll events originating in the `.detail-tabs` scroller, so a same-gesture mobile tap echo (Android/iOS, fixed modal or `.floating-window--task-detail` popup) no longer closes the menu the instant it opens.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Manual "Run now" for the Database Backup automation now runs in-process like the scheduler, matching cron behavior.
category: fix
dev: The legacy single-command and command-step manual automation run path (`executeSingleCommand` in packages/dashboard/src/routes.ts) now intercepts `isInProcessBackupCommand`/`isInProcessMemoryBackupCommand` via the scoped TaskStore, mirroring `RoutineRunner.executeCommand`/`CronRunner`, instead of always shelling out via `exec()`. `formatInProcessBackupError`, `isInProcessBackupCommand`, and `isInProcessMemoryBackupCommand` are now exported from `@fusion/engine` for reuse. Existing onStep/onText live-run callbacks already stream incremental output for command/backup runs; added regression coverage confirming this holds for the new interception branch.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Task cards no longer show the "Auto-recovery" oversight badge unless oversight is explicitly configured.
category: fix
dev: `TaskCard.tsx`'s `showOversightBadge` gate now also suppresses the badge when the effective level equals `DEFAULT_PLANNER_OVERSIGHT_LEVEL` ("autonomous") and there is no explicit per-task `plannerOversightLevel` override; an explicit per-task override of "autonomous" still renders the badge.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Remove the per-card overseer-state ("Executor") badge from task cards.
category: fix
dev: Deleted the FN-7516 `card-overseer-state-badge` render, its card-local `deriveOverseerCardWatchedStage` helper/label maps, and its CSS; the sibling oversight-level badge (`card-oversight-badge`) is unaffected.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Original task prompt now renders as Markdown and is collapsed by default in the task Plan tab.
category: feature
dev: Task Detail Plan/Definition tab original-prompt section reuses the existing `.detail-source-toggle`/`.detail-source-chevron--expanded` collapse pattern and the shared `ReactMarkdown` pipeline (`remarkGfm`, `sharedRehypePlugins`, `markdownLinkifyComponents`); backed by read-only `task.description`, no change to the generated `PROMPT.md` editor/revision flow.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix agent-created artifacts not appearing live in the dashboard artifacts view.
category: fix
dev: Root cause was cross-instance artifact-registration replication, not the route/hook/render path (all already correct). `TaskStore.registerArtifact()` never bumped `lastModified`, and `checkForChanges()` (the polling replicator that lets a second TaskStore instance on the same project — e.g. the dashboard's cached store vs. the engine's own store — mirror events it did not write itself) only ever diffed the `tasks` table, never `artifacts`. A store instance that did not perform the write could therefore never observe or re-emit `artifact:registered`, leaving an already-open Documents/task Artifacts gallery stale until a full reload. Fixed by bumping `lastModified` on artifact writes and adding a strictly-increasing `rowid`-cursor poll over the `artifacts` table in `checkForChanges()`. See `packages/core/src/__tests__/artifacts.test.ts` and `packages/dashboard/src/routes/__tests__/artifacts-route-integration.test.ts` for regression coverage.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Support reverting multi-repo workspace tasks via git, all-or-nothing across sub-repos.
category: feature
dev: Extends `packages/engine/src/task-revert.ts` with `resolveWorkspaceTaskRevertCommits`/`revertWorkspaceTask` and wires `POST /api/tasks/:id/revert` to dispatch workspace tasks (`isWorkspaceTask`) to the new path; returns `{ mode: "git", clean, workspace: { repos: [...] }, conflicts? }`. Single-repo `performTaskRevert` path is unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add per-sha revert commit granularity to the task revert API and service.
category: feature
dev: `performTaskRevert` and `POST /api/tasks/:id/revert` accept an optional `granularity: "squash" | "per-sha"` (default `"squash"`, unchanged FN-7523 behavior). `"per-sha"` creates one attributed `revert(FN-xxxx)` commit per original sha (each with its own `Fusion-Task-Id` trailer and audit line), skipping no-op shas without empty commits. A mid-batch conflict in either mode rolls back the whole batch to the pre-call HEAD — no partially-landed per-sha commits. The clean result now reports `revertCommitShas: string[]` (all created commits) alongside the existing `revertCommitSha` (kept for backward compatibility).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the mobile terminal shortcut bar so it scrolls horizontally to reach every key.
category: fix
dev: Added `min-width: 0` to `.terminal-shortcut-panel` to defeat the flex min-width:auto trap that clipped overflow instead of engaging `overflow-x: auto`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Planner-oversight intervention timeline now populates from real engine activity.
category: fix
dev: Wires PlannerOverseerMonitor/PlannerRecoveryController decision points to the FN-7520 emitOverseer* façade with the real TaskStore; observation/escalation emission deduped per (task, stage[, signal]).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Show the "Global" prefix on the Authentication entry in the mobile Settings picker.
category: fix
dev: resolveSettingsSectionOptionLabel now derives the Global-group prefix for storage-less (scope: undefined) sections in SettingsModal.tsx (FN-7552).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a dedicated Keyboard Shortcuts settings section with click-to-record capture and more configurable actions.
category: feature
dev: Relocates dashboardKeyboardShortcuts into its own settings section, adds a ShortcutCaptureInput recorder, and extends DashboardShortcutAction with openFiles/openSettings/openCommandCenter/newTask actions wired into existing App nav handlers.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Open a revert PR for done/archived tasks when autoMerge is disabled instead of refusing.
category: feature
dev: `POST /api/tasks/:id/revert` gains an additive `{ mode: "pr", clean: true, prUrl, prNumber, revertBranch, existingPr? }` result for clean single-repo reverts under `autoMerge:false`, reusing `GitHubClient.createPr`, `findPrForBranch` idempotency, and the `manual:true` PR handoff. New engine export `prepareRevertPrBranch` (packages/engine/src/task-revert.ts) prepares the dedicated `fusion/revert-<id>` branch without ever mutating the base branch. Existing `{ mode: "git" | "ai", ... }` shapes and the `autoMerge:true` path are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: AI-undo tasks now default to a configurable, stricter review workflow.
category: feature
dev: New project setting `aiUndoTaskWorkflowId` (default `builtin:review-heavy`) selects the workflow for AI-undo board tasks created by `POST /api/tasks/:id/revert` (`mode: "ai"`, the `auto` conflict fallback, and the workspace conflict fallback all share the `createAiUndoResult()` closure, so all three inherit this default). A blank/unset value means the created task inherits the project default workflow (pre-FN-7556 behavior). The route validates the configured id via `getWorkflowDefinition`/`isBuiltinWorkflowId` and falls back to inherit (with a logged warning) on a blank or unknown value, so a misconfigured id never breaks AI-undo task creation. The engine's `createAiUndoTask` helper stays pure — it only forwards a `workflowId` it is given, never resolves the setting itself. The Settings Modal UI field for this setting is a deliberate follow-up task; the value is settable today only via the settings API.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Plan auto-approval is now the default; specified tasks skip manual approval unless you opt into workflow/require-all.
category: feature
dev: `DEFAULT_PROJECT_SETTINGS.planApprovalMode` flips `workflow` → `auto-approve-all`; existing projects with an explicit stored value are unchanged; consumed by `resolvePlanApprovalRequired` at the triage gating sites.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Tasks held for release authorization or Plan Review are now shown distinctly, so auto-approve no longer looks broken.
category: fix
dev: FN-7559 — auto-approve-all bypasses only the manual plan-approval gate (unchanged, FN-7526). Release-authorization holds are surfaced with a new distinct status reason (`Task.awaitingApprovalReason: "release-authorization"`) and no longer render the generic manual Approve/Reject affordance in TaskCard/TaskDetailModal; Workflow Plan Review already used distinct statuses (`needs-replan`/`plan-review-unavailable`) and is unaffected. Both gates remain independent and intact — this is UI/data disambiguation only.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Move mobile terminal controls into a bottom footer so they no longer crowd the header, with a scrollable shortcut bar.
category: fix
dev: On the ≤768px terminal, the `.terminal-actions` cluster now renders in a `terminal-footer-actions` bar (with `min-width:0; overflow-x:auto`) instead of the header; desktop/floating/pinned-below keep the FN-7502 header layout. Preserves the FN-7550 shortcut-panel scroll fix.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop the release-authorization gate from holding tasks that merely disclaim releasing.
category: fix
dev: classifyReleaseTask now strips negated release-disclaimer clauses (e.g. "this task performs no release/publish; releases are owned by scripts/release.mjs") before signal matching in packages/engine/src/triage-release-authorization.ts, so revert/undo/UI specs are no longer false-flagged as release-class. Genuine "run pnpm release"/"publish @runfusion/fusion" intent still trips the gate.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix mobile terminal text still rendering with excess inter-character gaps after font-load settle.
category: fix
dev: Root cause: xterm's OptionsService setter is a no-op when reassigning an already-current fontFamily/fontSize, so post-settle reapply never forced CharSizeService/DomRenderer to remeasure. Added `forceTerminalFontRemeasure()` in `terminalPreferences.ts`, used by both `TerminalModal.tsx` and `SessionTerminal.tsx` at every post-`waitForTerminalFontMetrics()` settle site.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop Plan Review from looping tasks forever and fix its "can't find the plan" reviews.
category: fix
dev: FN-7561 — Plan Review pre-merge gate hardening in packages/engine/src/executor.ts. (1) The reviewer ran readonly with cwd=worktree but the spec lives at project-root .fusion/tasks/<id>/PROMPT.md, so "Read PROMPT.md" produced "no PROMPT.md found / data is in a DB" non-verdicts; the spec text is now injected into the reviewer prompt via readTaskArtifact. (2) A malformed reviewer response now self-retries once on the primary model when no fallback is configured. (3) A malformed (advisory_failure, no verdict) plan-review result can never trigger a triage replan. (4) The unbounded plan-review replan default is capped at 15 attempts with a loud halting log entry, so a persistently-disagreeing planner/reviewer no longer burns LLM calls indefinitely (FN-7525 ran 13+ attempts overnight).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Planner-overseer task badge now shows a readable label and explains what it is waiting on.
category: fix
dev: TaskCard badge renders plannerOverseerStateLabel + plannerOverseerBadgeTooltip built from the existing PlannerOverseerRuntimeSnapshot (reason/watchedStage/signal/pendingConfirmation); presentation-only, no engine changes.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Plan approve/reject API now blocks release-authorization holds, requiring the authorization marker first.
category: fix
dev: FN-7564 — POST /tasks/:id/approve-plan and /reject-plan now return 400 when task.awaitingApprovalReason === "release-authorization" (FN-7559 discriminator), enforcing the FN-6481 release-authorization gate at the API layer regardless of client. Manual-approval holds are unaffected.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Pin the mobile terminal close (X) button to the top-right corner so it is easy to find and tap.
category: fix
dev: On the ≤768px terminal, the `terminal-close` button now carries a `terminal-close--corner` class (order:3 + margin-inline-start:auto) so it renders last in flex order and hugs the right edge next to the tab dropdown, instead of falling back to order:0 (far left). Desktop/floating/pinned-below placement inside `.terminal-actions` is unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix mobile terminal excess character spacing that survived earlier font-remeasure fixes.
category: fix
dev: `TerminalModal`/`SessionTerminal` re-bake xterm's `DomRenderer` letter-spacing compensation AFTER `fitAddon.fit()` settles the post-fit column count (not just before it), since `handleResize()` never re-bakes spacing itself. See `docs/solutions/ui-bugs/xterm-options-noop-remeasure-after-font-settle.md` recurrence #4.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Rename downloadable CLI release binaries to the fn-cli-<platform> base name.
category: internal
dev: `binaryNameForTarget` in `packages/cli/build.ts` and the `release.yml` / `test-release.yml` matrices now emit `fn-cli-<suffix>`; the local dev binary stays `fn`/`fn.exe`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Manual plan approval no longer re-asks you to approve a plan you already approved when it hasn't changed.
category: fix
dev: FN-7569 — approving a plan records a fingerprint of the approved PROMPT.md (new nullable Task.approvedPlanFingerprint, migration 139). The manual plan-approval gate skips re-parking at awaiting-approval when a re-specification (replan, plan-review retry, self-healing rebound) produces the same plan; a changed plan or reject-plan still requires fresh approval. Release authorization, Workflow Plan Review, and auto-approve-all are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Move the planner intervention timeline into the task Activity view dropdown.
category: feature
dev: Removes the inline `PlannerInterventionTimeline` mount from the FN-7517 oversight cluster in `TaskDetailModal.tsx` and adds a fourth `interventions` `ActivitySegment`, shown in the Activity dropdown only when planner oversight is active for the task; falls back to Live if oversight turns off while Interventions is selected.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Expired Claude subscription logins now show disconnected with a re-login prompt; tokens auto-refresh before expiry.
category: fix
dev: Unifies OAuth expiry detection between OAuthExpiryMonitor and /api/auth/status, and adds an engine-side proactive OAuth refresh scheduler wired in project-engine (guarded by skipNotifier). No token material logged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Fusion self-repo issue-close comments now show current and target release versions.
category: feature
dev: GitHubIssueCommentService appends "Current version: v{current}" and "Target release: v{next-minor}" lines when the linked source issue is runfusion/fusion; other repos unchanged. Version resolved via getCliPackageVersion.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Anthropic subscription reads now refresh the OAuth token automatically instead of silently failing when expired.
category: fix
dev: mergeAuthStorageReads getApiKey("anthropic-subscription") now delegates to the underlying engine authStorage.getApiKey (the only refresh-token HTTP round trip) instead of a local static expiry check; regression tests drive the wrapper directly. No token material logged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Open one revert PR per sub-repo for workspace tasks when autoMerge is disabled.
category: feature
dev: `POST /api/tasks/:id/revert` gains an additive workspace `{ mode: "pr", clean: true, workspace: { repos: [{ repo, revertBranch, prUrl, prNumber, existingPr? }] } }` result for clean multi-repo reverts under `autoMerge:false`, extending FN-7554's single-repo `mode:"pr"` path. New engine export `prepareWorkspaceRevertPrBranches` (packages/engine/src/task-revert.ts) classifies every sub-repo first and only prepares a dedicated `fusion/revert-<id>` branch per sub-repo when all are clean/already-reverted (all-or-nothing at the branch-prep phase), never force-writing any sub-repo integration branch. The route resolves owner/repo and checks the rate limiter for every sub-repo before pushing/creating any PR, so GitHub-unconfigured/rate-limited cases degrade the whole task to `needsHuman` rather than opening a partial subset of PRs. Existing `{ mode: "git" | "ai" | "pr", ... }` shapes, the `autoMerge:true` workspace path, and FN-7554's single-repo path are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a Settings → General picker to choose the workflow used for AI-undo (revert) tasks.
category: feature
dev: Surfaces `aiUndoTaskWorkflowId` (default `builtin:review-heavy`) in GeneralSection; empty selection means "inherit project default workflow", matching the revert route's blank-is-inherit behavior from FN-7556.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add "Ask user question" and "Exit gate" workflow nodes for mid-flow chat reach-out and early exit.
category: feature
dev: New IR node kinds `ask-user` (reuses await-input park/resume; surfaces the question in the task chat) and `exit-gate` (terminates the workflow early, optional condition). Editor palette + summaries + help updated; `prompt`+`awaitInput` remains a back-compat alias.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop GitHub tracking-issue creation from linking new tasks to old/closed issues.
category: fix
dev: github-tracking dedup now only reuses OPEN issues and requires a File-Scope path overlap (keyword-only matches no longer link). Prevents mis-linking a fresh task to a stale/resolved tracking issue (FN-7579). Setting `githubTrackingDedupEnabled` unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Clarify the oversight "Nudge unavailable" guideline so it no longer reads as an overseer fault.
category: fix
dev: TaskDetailModal oversight controls — reworded taskDetail.oversight.nudgeDisabledTitle and added taskDetail.oversight.nudgeSuppressedTitle to differentiate periodic-observation vs. manual-control states. No enablement/engine logic changed.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a built-in "Brainstorming" workflow that talks to you before planning.
category: feature
dev: Registers `builtin:brainstorming` (non-default, default-enabled) composing FN-7579's `ask-user` → refine → `exit-gate`-on-approval phase ahead of the normal coding plan/execute/review/merge spine. Parity suite (`builtin-workflows.test.ts`) extended for the new entry.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Add a "Coding (Ideas)" workflow with a manual Ideas intake and a merged Todo planner column.
category: feature
dev: New `builtin:coding-ideas` clones the default stepwise pipeline with an `ideas` intake (autoTriage:false) in front of a merged `todo` planner+capacity column. createTask lands cards in the workflow's intake column; the triage service plans unplanned todo tasks in place; the scheduler skips bootstrap-prompt todo tasks; TaskCard gains a Start button and a Ready badge.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Honor mission branchStrategy when triage omits branchAssignment; skip validation for inactive missions.
category: fix
dev: resolveBranchAssignmentContext returns undefined for absent mode so triage falls back to mission.branchStrategy; processTaskOutcome gates on mission.status === "active" like recoverActiveMissions.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Planner overseer no longer marks healthy in-progress tasks as "recovering" or steers them.
category: fix
dev: `decidePlannerRecovery` now returns `none` for healthy (`progressing`/`complete`) and `awaiting-human` executor/workflow-gate signals instead of falling through to `inject_guidance`; only `stuck`/`blocked`/`failed` trigger autonomous steering. Also dedupes the `PlannerOverseerMonitor` activity-feed heartbeat so an unchanged `(stage, signal, reason)` observation is logged once per change, not every poll tick. Fixes the "overseer recovering" badge appearing on every autonomous card and the needless AI-consuming guidance injections (FN-7577).

View File

@@ -2,60 +2,727 @@
User-facing release notes aggregated across all packages. This file is auto-synced from each `packages/*/CHANGELOG.md` by `scripts/release.mjs` — do not edit by hand.
## 0.55.0
### New
- Allow configuring permissions for ephemeral and permanent agents.
- Add a Settings override for the local Cursor CLI binary path.
- Add GitLab instance URL settings for GitLab.com and self-managed servers.
- Add GitLab access-token settings for personal, project, and group tokens.
- Add GitLab project issue, group issue, and merge request imports.
- Display linked GitLab tracking metadata and stale badges on tasks.
- Add GitLab comment and auto-close lifecycle actions for linked work items.
- Add GitLab as a Command Center Signals connector.
- Add explicit onboarding choices to use, initialize, or clone a git repository.
- Let chat update existing agents without delete/recreate.
- Add sidebar rename buttons to direct Chat conversations.
- Add a bundled Linear import plugin for creating tasks from Linear issues.
- Add a mandatory Planning Mode deepening checkpoint before final summaries.
- Add visible create buttons and recursive search to Project Files.
- Collapse mobile Chat thread controls into one compact header row.
- Add a GitLab enable toggle and collapsible Settings controls.
## 0.56.1
### Fixed
- Stop recurring Windows Terminal warning popups during terminal startup.
- Fix dashboard localStorage quota exhaustion from stale SWR caches and add a Clear local data escape hatch.
- Fix `fusion desktop` on Windows and published npm installs (Electron dependency, GPU/sandbox flags, dashboard reuse).
- First-run agent setup no longer errors on a duplicate CEO; desktop Switch-server button now opens the connection menu.
- Allow operators to delete archived tasks.
- Show workflow template block boundary connectors in the graph editor.
- Preserve the selected dashboard project across browser refreshes.
- Detect Cursor CLI installations that expose Windows cmd or bat shims.
- Preserve GitLab tracking metadata for CLI and extension imports.
- Keep Planning Mode Refine Further from getting stuck on duplicate generation.
- Show task status badges on Documents task groups.
- Suppress misleading Anthropic Subscription re-login banners when another Anthropic auth method is active.
- Keep Anthropic authentication cards grouped near the top in Settings.
- Stop planner model fallback loops with a clear terminal triage error.
- Recover stale task branch-group references from Task Detail after server restarts.
- Return GitHub issue import actions to the main issue list.
- Prevent Planning Mode sessions from failing when MCP resolution returns no shaped result.
- Fix Android mobile terminal spacing while the keyboard is open.
- Fix Last 30 days token usage to include every model in Command Center.
- Include supported chat interactions in Command Center token usage totals.
- Preserve workflow setting edits made while a values save is still in flight.
- Preserve migrated workflow settings when project identity is assigned later.
- Show the bundled Linear Import plugin in Plugin Manager and dashboard plugin surfaces.
- Fix the mobile Chat header so back navigation and session selection stay on one row.
- Fix iOS mobile terminal spacing when opening terminals with the keyboard already visible.
- Default fresh startup and theme reset to System mode.
- Remember task popup size and position when switching between tasks.
- Fix iPhone Safari terminal text spacing with the keyboard open.
- Count planning tasks correctly in the dashboard footer queue metric.
- Show conversation titles in the mobile Chat dropdown.
- Merges no longer fail when a task adds a dependency without updating the lockfile.
- Fix Anthropic subscription showing "logged in" while all model calls fail.
- Fix "Invalid transition" error when moving cards out of a custom workflow column like Coding (Ideas) → Ideas.
- Fix overlapping Record and Clear buttons in the Keyboard Shortcuts settings rows on desktop and mobile.
- Fix persistent mobile terminal inter-character spacing (5th recurrence root cause).
- Fix manual PR actions hidden when a task auto-merge override was on but global auto-merge was off.
## 0.56.0
### @fusion/dashboard
#### Patch Changes
- @fusion/core@0.56.0
- @fusion/engine@0.56.0
- @fusion/i18n@0.39.20
- @fusion-plugin-examples/cli-printing-press@0.1.37
- @fusion-plugin-examples/compound-engineering@0.1.20
- @fusion-plugin-examples/dependency-graph@0.1.51
- @fusion-plugin-examples/roadmap@0.1.39
- @fusion-plugin-examples/cursor-runtime@0.1.39
- @fusion-plugin-examples/droid-runtime@0.1.46
- @fusion-plugin-examples/hermes-runtime@0.2.70
- @fusion-plugin-examples/openclaw-runtime@0.2.70
- @fusion-plugin-examples/paperclip-runtime@0.2.70
### @fusion/desktop
#### Patch Changes
- @fusion/core@0.56.0
- @fusion/dashboard@0.56.0
- @fusion/engine@0.56.0
### @fusion/engine
#### Patch Changes
- @fusion/core@0.56.0
- @fusion/pi-claude-cli@0.56.0
### @fusion/plugin-sdk
#### Patch Changes
- @fusion/core@0.56.0
### @runfusion/fusion
#### Minor Changes
- d16c8b4: summary: Expand first-run AI provider quick-start choices beyond Anthropic.
category: feature
dev: Moves advanced/all-provider onboarding controls under the quick-start provider section.
- 315f3bc: summary: Show Git prerequisite guidance during first-run GitHub onboarding.
category: feature
dev: Adds bounded server-host git availability to auth status and onboarding.
- 50cdab1: summary: Add GitHub OAuth and CLI setup actions to first-run onboarding.
category: feature
dev: GitHub onboarding now shows in-flow OAuth connect, gh auth login, and gh install guidance.
- 2f23d22: summary: Add configurable dashboard keyboard shortcuts for Quick Chat and Terminal.
category: feature
dev: Global dashboardKeyboardShortcuts settings, guarded document-level key handling, and Escape topmost-popup dismissal.
- efa8105: summary: Add search in Settings so operators can find settings faster.
category: feature
dev: Dashboard Settings filters visible sections by setting labels and keywords.
- 7d8a1b8: summary: Add a pinned below-application layout option for the dashboard terminal.
category: feature
dev: Terminal display mode now supports persisted docked, floating, and below layouts, with header controls replacing the footer shell.
- 87a700c: summary: Add a Reset Settings button to restore a menu's or all project settings to defaults.
category: feature
dev: New tested section→keys (scope-aware) registry (packages/dashboard/app/components/settings/section-keys.ts) drives per-menu reset via updateSettings/updateGlobalSettings with null-as-delete; non-blob sections (secrets, MCP, plugins, memory, auth, prompts, CLI agents, runtimes) are excluded with a documented reason.
- 68f5153: summary: Add a per-workflow planner oversight level setting (Off, Observe, Steer, Autonomous recovery).
category: feature
dev: New workflow setting `plannerOversightLevel` declared in BUILTIN_OVERSIGHT_SETTINGS; default `autonomous`. Per-task override and engine behavior land in follow-up tasks.
- aa757bc: summary: Tasks can override the workflow planner oversight level (Off, Observe, Steer, Autonomous recovery).
category: feature
dev: New nullable Task.plannerOversightLevel field (migration 137, SCHEMA_VERSION 137) mirroring executionMode; NULL inherits the workflow setting. Adds resolveEffectivePlannerOversightLevel precedence helper. Dashboard UI/API threading and engine behavior land in follow-up tasks.
- 0689250: summary: Planner oversight now defaults to full steering/control for every workflow unless explicitly changed.
category: feature
dev: Confirms the `plannerOversightLevel` workflow-setting default is the highest (autonomous) level; unset workflow value and unset per-task override both resolve to full steering via `resolveEffectivePlannerOversightLevel` (task override → workflow effective value → autonomous), adding dedicated regression coverage for the "unless explicitly disabled" precedence.
- 12a6d1b: summary: Planner oversight now monitors tasks across executor, reviewer, merger, pull-request, and workflow-gate stages.
category: feature
dev: Adds records-only PlannerOverseerMonitor + resolveWatchedStage + OverseerStageObservation in @fusion/engine, gated by resolveEffectivePlannerOversightLevel (off = no observation) and wired into ProjectEngine via a bounded poll. Steering/recovery and UI land in FN-7512/FN-7515+.
- 81f2053: summary: Planner oversight can autonomously inject guidance, retry stuck/failed steps, and request fixes within bounded limits.
category: feature
dev: Adds pure `decidePlannerRecovery` + recovery types (core) and `PlannerRecoveryController` with injected guidance/retry/targeted-fix handlers (engine), consuming the FN-7511 observation. Acts only at effective level `autonomous`, caps attempts per (task, stage) via `PLANNER_RECOVERY_MAX_ATTEMPTS`, skips user-paused tasks, and excludes merge/PR/destructive actions (deferred to FN-7513) and comprehensive human-control safeguards (FN-7514).
- 2cc84b5: summary: Planner oversight now requires confirmation before merge/PR actions and destructive/external side effects.
category: feature
dev: Adds `PlannerActionSideEffectClass` + `PlannerConfirmationRequest` and `classifyPlannerActionSideEffect`/`requiresPlannerConfirmation` (core), extends `decidePlannerRecovery` with an `await_confirmation` action, and adds `requestConfirmation`/`resolveConfirmation` gating to `PlannerRecoveryController` (engine). Merge/PR and destructive/external actions never execute without a recorded approval; bounded recovery (guidance/retry/targeted-fix) is unchanged. UX rendering, human-control safeguards, timeline, and run-audit land in follow-up tasks.
- 79ab367: summary: Planner overseer now stays fully hands-off for paused tasks and auto-merge-off / human-review tasks.
category: feature
dev: Adds the pure `evaluateOverseerHumanControl` policy (packages/engine/src/overseer-human-control-policy.ts), consulted at the top of `PlannerRecoveryController.tick()` before any action classification, confirmation gating, steering, retry, or dispatch — so a user-paused or `autoMerge:false`/human-review task never even records a pending confirmation. Reuses `allowsAutoMergeProcessing` from `@fusion/core` verbatim (never re-derives the auto-merge/human-review predicate). Distinguishes explicit user pause (`task.userPaused===true`, or `task.paused===true` with no `pausedReason`) from engine/self-healing parks (which always stamp a `pausedReason`). Emits a bounded `overseer:oversight-withheld-human-control` run-audit no-action event (metadata: `{ taskId, reason, stage, oversightLevel }`), deduped per (taskId, reason) so it does not spam every poll.
- c16cc9e: summary: Configure planner oversight level per task and per project in the workflow editor and task create/detail.
category: feature
dev: Per-task `plannerOversightLevel` override exposed via TaskForm (Inherit/off/observe/steer/autonomous), threaded through createTask/updateTask; workflow-editor Values tab gets a first-class display entry. Workflow-native setting; not a project setting.
- aae603b: summary: Add a configurable planner-overseer notification verbosity level (Silent/Errors/Important/All).
category: feature
dev: New workflow-native enum setting `plannerOversightNotificationLevel` in BUILTIN_OVERSIGHT_SETTINGS; default `important`. Resolves via resolveEffectiveSettings; emission gating that reads it lands in FN-7519/FN-7520.
- d10ea9a: summary: Add a task-detail planner-overseer intervention timeline (stage, reason, action, outcome, attempts, links).
category: feature
dev: New core `PlannerInterventionEntry` model + `recordPlannerIntervention`/`getPlannerInterventionTimeline` helpers persisting via the run-audit store under the `overseer:intervention` mutation, plus a `PlannerInterventionTimeline` component rendered in the task-detail Planner Oversight cluster. Emission call-sites land in FN-7520.
- bf68839: summary: Emit planner-overseer run-audit events for observations, steering, retries, recovery, confirmations, and escalations.
category: feature
dev: New core emitters (emitOverseerObservation/Steering/RecoveryAttempt/Retry/Confirmation/Escalation) in planner-overseer-events.ts, each mapping its decision-point to the correct intervention action/outcome and delegating to FN-7519's recordPlannerIntervention under the overseer:intervention mutation. Producer call-sites land in FN-7511/FN-7512/FN-7513.
- c4d81fe: summary: Add an AI-undo fallback task when reverting a done task via git conflicts or is unsupported.
category: feature
dev: `POST /api/tasks/:id/revert` now accepts `{ mode?: "git" | "ai" | "auto" }` (default `"auto"`). `"auto"` tries the FN-7523 git-revert path first and falls back to creating an AI-undo board task (`{ mode: "ai", createdTaskId, alreadyOpen? }`) on a conflicting or unsupported (e.g. workspace) git result; `needsHuman` (autoMerge-off) never triggers the fallback. `"ai"` always creates the AI-undo task; `"git"` keeps the FN-7523 git-only contract, which is otherwise unchanged. New engine exports: `createAiUndoTask`, `buildAiUndoTaskDescription`, `REVERT_OF_METADATA_KEY`. New core store method `TaskStore.findOpenRevertTaskForSource` backs the idempotency guard (an open undo task suppresses a duplicate; a closed one does not).
- e7cb2f1: summary: Add a Revert action to Done/Archived task cards to undo landed changes.
category: feature
dev: Wires onRevertTask through Board/List/Detail surfaces; calls POST /tasks/:id/revert in "auto" mode with a conflict-confirm AI-undo fallback (mode: "ai").
- 5ad8ec8: summary: Capture a structured performance snapshot when an agent task completes.
category: feature
dev: New AgentReflectionService.captureTaskPerformance persists a non-LLM post-task ReflectionMetrics record (duration, packages/files touched, verification command + scope, retry/rework count) and emits ids/counts-only `reflection:captured` run-audit telemetry; populates performanceSummary/latestReflection.
- 726cbf8: summary: Task cards can now show the planner overseer's active state (idle/watching/steering/recovering/awaiting-confirmation).
category: feature
dev: Adds a serializable `PlannerOverseerRuntimeSnapshot` + pure `derivePlannerOverseerState` (core), a read-only `ProjectEngine.getPlannerOverseerRuntimeSnapshot(taskId)` accessor assembling it from the FN-7511 monitor + FN-7512/7513 recovery controller, and a best-effort additive `plannerOverseerState` enrichment on `GET /api/tasks` (mirrors the `branchProgress` pattern; never persisted, never fails the board load). Consumed by FN-7516's TaskCard.
- 2ed06f9: summary: Support reverting multi-repo workspace tasks via git, all-or-nothing across sub-repos.
category: feature
dev: Extends `packages/engine/src/task-revert.ts` with `resolveWorkspaceTaskRevertCommits`/`revertWorkspaceTask` and wires `POST /api/tasks/:id/revert` to dispatch workspace tasks (`isWorkspaceTask`) to the new path; returns `{ mode: "git", clean, workspace: { repos: [...] }, conflicts? }`. Single-repo `performTaskRevert` path is unchanged.
- 8c6f76c: summary: Add per-sha revert commit granularity to the task revert API and service.
category: feature
dev: `performTaskRevert` and `POST /api/tasks/:id/revert` accept an optional `granularity: "squash" | "per-sha"` (default `"squash"`, unchanged FN-7523 behavior). `"per-sha"` creates one attributed `revert(FN-xxxx)` commit per original sha (each with its own `Fusion-Task-Id` trailer and audit line), skipping no-op shas without empty commits. A mid-batch conflict in either mode rolls back the whole batch to the pre-call HEAD — no partially-landed per-sha commits. The clean result now reports `revertCommitShas: string[]` (all created commits) alongside the existing `revertCommitSha` (kept for backward compatibility).
- f992e6a: summary: Add a dedicated Keyboard Shortcuts settings section with click-to-record capture and more configurable actions.
category: feature
dev: Relocates dashboardKeyboardShortcuts into its own settings section, adds a ShortcutCaptureInput recorder, and extends DashboardShortcutAction with openFiles/openSettings/openCommandCenter/newTask actions wired into existing App nav handlers.
- 2df6c35: summary: Open a revert PR for done/archived tasks when autoMerge is disabled instead of refusing.
category: feature
dev: `POST /api/tasks/:id/revert` gains an additive `{ mode: "pr", clean: true, prUrl, prNumber, revertBranch, existingPr? }` result for clean single-repo reverts under `autoMerge:false`, reusing `GitHubClient.createPr`, `findPrForBranch` idempotency, and the `manual:true` PR handoff. New engine export `prepareRevertPrBranch` (packages/engine/src/task-revert.ts) prepares the dedicated `fusion/revert-<id>` branch without ever mutating the base branch. Existing `{ mode: "git" | "ai", ... }` shapes and the `autoMerge:true` path are unchanged.
- 94e9d15: summary: AI-undo tasks now default to a configurable, stricter review workflow.
category: feature
dev: New project setting `aiUndoTaskWorkflowId` (default `builtin:review-heavy`) selects the workflow for AI-undo board tasks created by `POST /api/tasks/:id/revert` (`mode: "ai"`, the `auto` conflict fallback, and the workspace conflict fallback all share the `createAiUndoResult()` closure, so all three inherit this default). A blank/unset value means the created task inherits the project default workflow (pre-FN-7556 behavior). The route validates the configured id via `getWorkflowDefinition`/`isBuiltinWorkflowId` and falls back to inherit (with a logged warning) on a blank or unknown value, so a misconfigured id never breaks AI-undo task creation. The engine's `createAiUndoTask` helper stays pure — it only forwards a `workflowId` it is given, never resolves the setting itself. The Settings Modal UI field for this setting is a deliberate follow-up task; the value is settable today only via the settings API.
- 3dd227b: summary: Plan auto-approval is now the default; specified tasks skip manual approval unless you opt into workflow/require-all.
category: feature
dev: `DEFAULT_PROJECT_SETTINGS.planApprovalMode` flips `workflow` → `auto-approve-all`; existing projects with an explicit stored value are unchanged; consumed by `resolvePlanApprovalRequired` at the triage gating sites.
- 78d4db9: summary: Fusion self-repo issue-close comments now show current and target release versions.
category: feature
dev: GitHubIssueCommentService appends "Current version: v{current}" and "Target release: v{next-minor}" lines when the linked source issue is runfusion/fusion; other repos unchanged. Version resolved via getCliPackageVersion.
- 7435849: summary: Open one revert PR per sub-repo for workspace tasks when autoMerge is disabled.
category: feature
dev: `POST /api/tasks/:id/revert` gains an additive workspace `{ mode: "pr", clean: true, workspace: { repos: [{ repo, revertBranch, prUrl, prNumber, existingPr? }] } }` result for clean multi-repo reverts under `autoMerge:false`, extending FN-7554's single-repo `mode:"pr"` path. New engine export `prepareWorkspaceRevertPrBranches` (packages/engine/src/task-revert.ts) classifies every sub-repo first and only prepares a dedicated `fusion/revert-<id>` branch per sub-repo when all are clean/already-reverted (all-or-nothing at the branch-prep phase), never force-writing any sub-repo integration branch. The route resolves owner/repo and checks the rate limiter for every sub-repo before pushing/creating any PR, so GitHub-unconfigured/rate-limited cases degrade the whole task to `needsHuman` rather than opening a partial subset of PRs. Existing `{ mode: "git" | "ai" | "pr", ... }` shapes, the `autoMerge:true` workspace path, and FN-7554's single-repo path are unchanged.
- 73b38ba: summary: Add a Settings → General picker to choose the workflow used for AI-undo (revert) tasks.
category: feature
dev: Surfaces `aiUndoTaskWorkflowId` (default `builtin:review-heavy`) in GeneralSection; empty selection means "inherit project default workflow", matching the revert route's blank-is-inherit behavior from FN-7556.
- 42bbe58: summary: Add "Ask user question" and "Exit gate" workflow nodes for mid-flow chat reach-out and early exit.
category: feature
dev: New IR node kinds `ask-user` (reuses await-input park/resume; surfaces the question in the task chat) and `exit-gate` (terminates the workflow early, optional condition). Editor palette + summaries + help updated; `prompt`+`awaitInput` remains a back-compat alias.
- 53fe0d7: summary: Add a built-in "Brainstorming" workflow that talks to you before planning.
category: feature
dev: Registers `builtin:brainstorming` (non-default, default-enabled) composing FN-7579's `ask-user` → refine → `exit-gate`-on-approval phase ahead of the normal coding plan/execute/review/merge spine. Parity suite (`builtin-workflows.test.ts`) extended for the new entry.
- ecbbb29: summary: Add a "Coding (Ideas)" workflow with a manual Ideas intake and a merged Todo planner column.
category: feature
dev: New `builtin:coding-ideas` clones the default stepwise pipeline with an `ideas` intake (autoTriage:false) in front of a merged `todo` planner+capacity column. createTask lands cards in the workflow's intake column; the triage service plans unplanned todo tasks in place; the scheduler skips bootstrap-prompt todo tasks; TaskCard gains a Start button and a Ready badge.
#### Patch Changes
- 8668a05: summary: Add a workflow setting to disable automatic large-task triage splitting.
category: feature
dev: Adds triageProactiveSubtaskSplittingEnabled while preserving explicit breakIntoSubtasks requests.
- 978cdda: summary: Show active Plan Review progress on triage task cards.
category: fix
dev: TaskCard now renders the existing progress affordance for Triage only when unified progress has active workflow work.
- 635fca2: summary: Remove the eye icon markdown/plain toggle from chat; messages always render as Markdown.
category: breaking
dev: Removed ChatView `chat-thread-header-render-toggle` (desktop + mobile), `showAllAsPlain` state, and `chat.showRenderedMarkdown`/`chat.showPlainText` i18n keys (FN-7541).
- 3d55102: summary: Clarify task-detail oversight Nudge/Explain controls: visible label, disabled reason, always-openable Explain panel.
category: fix
dev: TaskDetailModal now renders a `detail-oversight-controls-label` group label and `detail-overseer-nudge-disabled-reason` helper text (both gated by the existing oversight-cluster visibility condition); Explain no longer disables on `!canExplainOverseer` since it is read-only. Nudge's `canNudgeOverseer` gate and Stop's confirm dialog are unchanged.
- 0f1cd0a: summary: Unify border, radius, and height of the task-detail Priority/Execution/Oversight controls.
category: fix
dev: Adds a shared --detail-control-border-radius token alongside --detail-priority-control-min-height so .detail-priority-chip, .detail-execution-mode-toggle, .detail-oversight-chip, and .detail-oversight-menu-trigger all resolve the same border-width/color/radius/height.
- b42ba9f: summary: Keep the task-detail Activity view menu open during mobile iOS taps.
category: fix
dev: Guards the Activity views dropdown against iOS visualViewport resize/scroll echoes during menu opening.
- a7559b0: summary: Fix Anthropic subscription login when pasted callback URLs contain fragment OAuth parameters.
category: fix
dev: Normalizes pasted OAuth callback fragments before resolving dashboard manual-code login prompts.
- 4b530a6: summary: Fix Claude/Anthropic subscription re-login showing "Login did not complete" after logging out.
category: fix
dev: Anthropic subscription OAuth is aliased across the legacy `anthropic` row (where interactive login persists the credential) and the `anthropic-subscription` id (where the settings card's in-memory logged-out suppression and status read are keyed). Re-login wrote only `anthropic`, so `loggedOutProviders` kept suppressing `anthropic-subscription` and the card reported failure despite a valid stored credential until process restart. auth-storage's proxy now clears the logged-out state on both aliases when either is re-authenticated (new `login` trap + hardened `set` trap via `clearReauthenticatedLogoutState`; raw api_key writes stay scoped to their own card). Also surfaces background OAuth login failures on `GET /auth/status` (`loginError`) + server logs so future paste-callback failures are diagnosable instead of a generic error.
- a5ac3c3: summary: Stop self-healing from killing actively-running tasks after ~30 minutes.
category: fix
dev: FN-7566. isPhantomExecutorBinding's liveness gate (heartbeat/checkout/runAudit) was blind to ephemeral executor agents, leaving only the age>graceMs\*3 threshold, so any ephemeral-executor task running longer than ~30 min was reclaimed to `todo` mid-flight. Adds the in-process live-session veto (activeSessionRegistry path / executingTaskLock / isTaskActive), mirroring the isWorkspaceTaskLive/sessionDead predicate, and honors clearPhantomExecutorBinding's live-session refusal in reclaimSelfOwnedBranchConflicts.
- 8912399: summary: Stop Windows Terminal version dialogs from popping up when opening the dashboard or Settings on Windows.
category: fix
dev: Root cause was the worktrunk integration, not the embedded terminal: worktrunk's CLI is named `wt`, which collides with Windows Terminal (`wt.exe`) on PATH, so probing it with `wt --version` launched Windows Terminal. Fixed by (1) `useWorktrunkInstallStatus` only auto-fetching `/api/worktrunk/status` when the integration is enabled (user opt-in) instead of on every Settings/dashboard mount, and (2) an engine-level guard in `probeWorktrunk` that refuses to exec a resolved `wt` that is the Windows Terminal alias (under `WindowsApps` / a `WindowsTerminal` package dir), covering all resolution surfaces.
- b800f7d: summary: Select newly created folders automatically during project setup.
category: fix
dev: Adds DirectoryPicker opt-in selection for project-registration surfaces while preserving default picker behavior.
- 9dc248e: summary: Prevent Desktop update banners from using 0.0.0 as the current version.
category: fix
dev: Dashboard update checks now resolve packaged @fusion/desktop metadata and fail closed for unresolved versions.
- 52dbc0e: summary: Quit Fusion Desktop on Windows when the window is closed.
category: fix
dev: Updates Electron close lifecycle so Windows shutdown reaches embedded runtime cleanup.
- ced783e: summary: Open desktop Anthropic Subscription OAuth logins in the system browser.
category: fix
dev: Adds Electron window-open policy coverage and preserves Settings auth polling completion paths.
- 50786f2: summary: Delay GitHub setup warnings for one day and add a dashboard connect action.
category: fix
dev: Dashboard setup warnings now gate GitHub prompts per project and route the CTA to Settings → Authentication.
- b4b1f6d: summary: Fix a false AI engine not running banner in desktop mode.
category: fix
dev: Distinguishes transient embedded desktop engine startup from true dashboard-only mode.
- e8b7362: summary: Clarify the desktop Connection Manager add-remote flow.
category: fix
dev: Desktop Connection Manager now separates Local Server context from saved remote profiles and collapses the remote editor until add/edit.
- 0900a38: summary: Restore Local Server in the desktop Switch server list.
category: fix
dev: Desktop Connection Manager now lists local and saved remote destinations together.
- a2b09f2: summary: Make right-dock task list clicks respect the task popup setting.
category: fix
dev: Threads openMobileTasksInPopup through the right-dock Tasks list route while preserving embedded dock detail when disabled.
- 0f05156: summary: Auto-retry retryable Code Review remediation failures.
category: fix
dev: Prevents retryable code-review-remediation graph failures from stranding tasks in in-review.
- 20184ac: summary: Fix no-op task branch recovery after a previously landed task.
category: fix
dev: Merge/recovery ownership classification now checks no-diff branches before foreign trailer rejection.
- 82493e0: summary: Allow documented source-free task-artifact deliveries to finish without commits.
category: fix
dev: fn_task_done now recognizes explicit gitignored .fusion/tasks artifact contracts while preserving source-change no-commit guards.
- 5689346: summary: Fix direct merges so Push to remote after merge honors the configured remote and branch.
category: fix
dev: Resolves remote-only push targets from the merge integration branch and preserves non-fatal push errors on done tasks.
- b42be87: summary: Keep task popups on the board layer with Activity menus above them.
category: fix
dev: Task-detail FloatingWindow callers use a lower layer band, and Activity view menus reposition after popup geometry changes.
- 61c8bdc: summary: Keep accepted chat requests waiting instead of showing false first-event timeout failures.
category: fix
dev: Dashboard chat POST streams no longer abort accepted-but-silent responses on the client first-event timer.
- e8dc2ae: summary: Show each task's original prompt in the Plan tab alongside the generated plan.
category: fix
dev: Adds a read-only Task Detail original-prompt section backed by task.description.
- d2e3134: summary: Add before-to-after transformation summaries to generated task definitions.
category: feature
dev: Built-in standard and fast triage prompts now require a `## Before → After Transformation` section.
- b0208c1: summary: Restore terminal Ctrl/Cmd copy and paste shortcuts.
category: fix
dev: Integrated and embedded terminals now own physical clipboard paste to avoid swallowed or duplicate input.
- 2797803: summary: Show first-token and tool processing durations in task agent logs.
category: feature
dev: Adds optional agent-log timing fields `timeToFirstTokenMs` and `durationMs`.
- a2d6349: summary: Fix mobile Chat composer being hidden behind the keyboard accessory bar.
category: fix
dev: Adds keyboard-open bottom clearance in ChatView so the composer clears the iOS input-assistant/autofill bar without a persistent .chat-thread transform or Android reserved-gap.
- 4baa4c4: summary: Settings descriptions now show each setting's default value.
category: feature
dev: Appended default-value copy to settings.\* i18n descriptions across Global, Runtimes, and Project Settings sections, sourced from DEFAULT_GLOBAL_SETTINGS/DEFAULT_PROJECT_SETTINGS in settings-schema.ts; added settings-default-descriptions.test.tsx guarding that every surfaced setting states a default (or explicit "inherits"/"no default \u2014 unset") and that every DEFAULT_SETTINGS key is documented or allowlisted as not surfaced.
- 53d7b7e: summary: Add an intelligent git-revert engine service and POST /api/tasks/:id/revert route.
category: feature
dev: New `packages/engine/src/task-revert.ts` exports `resolveTaskRevertCommits`, `classifyTaskRevert`, and `performTaskRevert` (squash/rebase/lineage attribution precedence, dry-run classification, guaranteed-clean rollback). Route enforces done/archived-only and autoMerge-off guard rails; conflicting results are returned unresolved for sibling FN-7524 (AI-undo) to act on. Workspace tasks return `unsupported`.
- 4707eb5: summary: Auto-approve now reliably sends specified plans to the board without a manual approval stop.
category: fix
dev: FN-7526 — investigated the reported "plans still park at awaiting-approval when auto-approve is on" symptom; resolvePlanApprovalRequired, mergeEffectiveSettings/applyWorkflowSettingsOverlay, and every finalizeApprovedTask call site (specifyTask, recoverApprovedTask, retryUnavailablePlanReview, tryFinalizeExplicitDuplicateMarker) already honored project planApprovalMode: "auto-approve-all" over a stored workflow requirePlanApproval value — no production defect reproduced. Added end-to-end regression coverage across every enumerated surface (Plan Review reviewer-outage retry, refinement routing, self-healing starved-refinement recovery) using the real mergeEffectiveSettings pipeline instead of isolated bare-settings unit calls, plus explicit assertions that the independent release-authorization and Workflow Plan Review gates remain intact under auto-approve-all, so a future bare-settings call site is caught immediately instead of silently reintroducing the reported behavior.
- 3b52a4d: summary: Fix the in-dashboard Switch server menu not switching desktop local/remote.
category: fix
dev: The desktop shell's redirect effects in App.tsx read a dead `localServer` field that the preload never populates; extracted `resolveDesktopShellRedirectTarget` in appLifecycle.ts now derives the navigation target from the live `localRuntime`/`activeProfileId` state for both directions, and the unused `localServer` field was removed from `ShellConnectionState`.
- 36bd74e: summary: Fix branch group completion checklists to show accurate landed/finished counts.
category: fix
dev: runAiMerge (the sole merge path since master-plan U0) never resolved branch-group routing or stamped mergeDetails.mergeTargetBranch/mergeTargetSource, so isBranchGroupMemberLanded permanently reported shared-group members as not landed. Routes through resolveBranchGroupMergeRouting (matching the legacy merger.ts pattern) and stamps the target fields on both the landed and no-op finalize paths; preserves merge-target-safety in isBranchGroupMemberLanded (a sibling/mismatched-branch member still never counts as landed).
- df0be88: summary: Branch groups no longer report complete (or become promotable) when an unlanded member is archived.
category: fix
dev: listTasksByBranchGroup membership now scans with includeArchived:true so an archived-but-unlanded member stays counted in total instead of silently dropping out; mergeDetails is now persisted on ArchivedTaskEntry so an archived member that had already landed keeps counting as landed. evaluateBranchGroupCompletion / promoteBranchGroup gate correctly; merge-target-safety in isBranchGroupMemberLanded is unchanged.
- ec9ac61: summary: Fix the global GitLab integration setting not persisting when saved.
category: fix
dev: splitSettingsSave now diffs the five global GitLab keys (gitlabEnabled, gitlabInstanceUrl, gitlabApiBaseUrl, gitlabAuthToken, gitlabAuthTokenType) against scoped global initials only, never the project-effective merged initialValues, so a project override no longer suppresses a real global save.
- 8d36b99: summary: Fix task-detail Activity view dropdown not opening reliably on mobile.
category: fix
dev: Guards the Activity menu's window resize/orientationchange/scroll close-listener with the same opening-tap timing guard already used for visualViewport, and exempts scroll events originating in the `.detail-tabs` scroller, so a same-gesture mobile tap echo (Android/iOS, fixed modal or `.floating-window--task-detail` popup) no longer closes the menu the instant it opens.
- ad744aa: summary: Manual "Run now" for the Database Backup automation now runs in-process like the scheduler, matching cron behavior.
category: fix
dev: The legacy single-command and command-step manual automation run path (`executeSingleCommand` in packages/dashboard/src/routes.ts) now intercepts `isInProcessBackupCommand`/`isInProcessMemoryBackupCommand` via the scoped TaskStore, mirroring `RoutineRunner.executeCommand`/`CronRunner`, instead of always shelling out via `exec()`. `formatInProcessBackupError`, `isInProcessBackupCommand`, and `isInProcessMemoryBackupCommand` are now exported from `@fusion/engine` for reuse. Existing onStep/onText live-run callbacks already stream incremental output for command/backup runs; added regression coverage confirming this holds for the new interception branch.
- 5c3d58a: summary: Task cards no longer show the "Auto-recovery" oversight badge unless oversight is explicitly configured.
category: fix
dev: `TaskCard.tsx`'s `showOversightBadge` gate now also suppresses the badge when the effective level equals `DEFAULT_PLANNER_OVERSIGHT_LEVEL` ("autonomous") and there is no explicit per-task `plannerOversightLevel` override; an explicit per-task override of "autonomous" still renders the badge.
- b4be515: summary: Remove the per-card overseer-state ("Executor") badge from task cards.
category: fix
dev: Deleted the FN-7516 `card-overseer-state-badge` render, its card-local `deriveOverseerCardWatchedStage` helper/label maps, and its CSS; the sibling oversight-level badge (`card-oversight-badge`) is unaffected.
- 62ddb19: summary: Original task prompt now renders as Markdown and is collapsed by default in the task Plan tab.
category: feature
dev: Task Detail Plan/Definition tab original-prompt section reuses the existing `.detail-source-toggle`/`.detail-source-chevron--expanded` collapse pattern and the shared `ReactMarkdown` pipeline (`remarkGfm`, `sharedRehypePlugins`, `markdownLinkifyComponents`); backed by read-only `task.description`, no change to the generated `PROMPT.md` editor/revision flow.
- 883c73e: summary: Fix agent-created artifacts not appearing live in the dashboard artifacts view.
category: fix
dev: Root cause was cross-instance artifact-registration replication, not the route/hook/render path (all already correct). `TaskStore.registerArtifact()` never bumped `lastModified`, and `checkForChanges()` (the polling replicator that lets a second TaskStore instance on the same project — e.g. the dashboard's cached store vs. the engine's own store — mirror events it did not write itself) only ever diffed the `tasks` table, never `artifacts`. A store instance that did not perform the write could therefore never observe or re-emit `artifact:registered`, leaving an already-open Documents/task Artifacts gallery stale until a full reload. Fixed by bumping `lastModified` on artifact writes and adding a strictly-increasing `rowid`-cursor poll over the `artifacts` table in `checkForChanges()`. See `packages/core/src/__tests__/artifacts.test.ts` and `packages/dashboard/src/routes/__tests__/artifacts-route-integration.test.ts` for regression coverage.
- d09b57f: summary: Fix the mobile terminal shortcut bar so it scrolls horizontally to reach every key.
category: fix
dev: Added `min-width: 0` to `.terminal-shortcut-panel` to defeat the flex min-width:auto trap that clipped overflow instead of engaging `overflow-x: auto`.
- 3d58260: summary: Planner-oversight intervention timeline now populates from real engine activity.
category: fix
dev: Wires PlannerOverseerMonitor/PlannerRecoveryController decision points to the FN-7520 emitOverseer\* façade with the real TaskStore; observation/escalation emission deduped per (task, stage[, signal]).
- 052a277: summary: Show the "Global" prefix on the Authentication entry in the mobile Settings picker.
category: fix
dev: resolveSettingsSectionOptionLabel now derives the Global-group prefix for storage-less (scope: undefined) sections in SettingsModal.tsx (FN-7552).
- 6e4c207: summary: Tasks held for release authorization or Plan Review are now shown distinctly, so auto-approve no longer looks broken.
category: fix
dev: FN-7559 — auto-approve-all bypasses only the manual plan-approval gate (unchanged, FN-7526). Release-authorization holds are surfaced with a new distinct status reason (`Task.awaitingApprovalReason: "release-authorization"`) and no longer render the generic manual Approve/Reject affordance in TaskCard/TaskDetailModal; Workflow Plan Review already used distinct statuses (`needs-replan`/`plan-review-unavailable`) and is unaffected. Both gates remain independent and intact — this is UI/data disambiguation only.
- 6d364fc: summary: Move mobile terminal controls into a bottom footer so they no longer crowd the header, with a scrollable shortcut bar.
category: fix
dev: On the ≤768px terminal, the `.terminal-actions` cluster now renders in a `terminal-footer-actions` bar (with `min-width:0; overflow-x:auto`) instead of the header; desktop/floating/pinned-below keep the FN-7502 header layout. Preserves the FN-7550 shortcut-panel scroll fix.
- b471aec: summary: Stop the release-authorization gate from holding tasks that merely disclaim releasing.
category: fix
dev: classifyReleaseTask now strips negated release-disclaimer clauses (e.g. "this task performs no release/publish; releases are owned by scripts/release.mjs") before signal matching in packages/engine/src/triage-release-authorization.ts, so revert/undo/UI specs are no longer false-flagged as release-class. Genuine "run pnpm release"/"publish @runfusion/fusion" intent still trips the gate.
- 9d4a45b: summary: Fix mobile terminal text still rendering with excess inter-character gaps after font-load settle.
category: fix
dev: Root cause: xterm's OptionsService setter is a no-op when reassigning an already-current fontFamily/fontSize, so post-settle reapply never forced CharSizeService/DomRenderer to remeasure. Added `forceTerminalFontRemeasure()` in `terminalPreferences.ts`, used by both `TerminalModal.tsx` and `SessionTerminal.tsx` at every post-`waitForTerminalFontMetrics()` settle site.
- 72b77bf: summary: Stop Plan Review from looping tasks forever and fix its "can't find the plan" reviews.
category: fix
dev: FN-7561 — Plan Review pre-merge gate hardening in packages/engine/src/executor.ts. (1) The reviewer ran readonly with cwd=worktree but the spec lives at project-root .fusion/tasks/<id>/PROMPT.md, so "Read PROMPT.md" produced "no PROMPT.md found / data is in a DB" non-verdicts; the spec text is now injected into the reviewer prompt via readTaskArtifact. (2) A malformed reviewer response now self-retries once on the primary model when no fallback is configured. (3) A malformed (advisory_failure, no verdict) plan-review result can never trigger a triage replan. (4) The unbounded plan-review replan default is capped at 15 attempts with a loud halting log entry, so a persistently-disagreeing planner/reviewer no longer burns LLM calls indefinitely (FN-7525 ran 13+ attempts overnight).
- c08498e: summary: Planner-overseer task badge now shows a readable label and explains what it is waiting on.
category: fix
dev: TaskCard badge renders plannerOverseerStateLabel + plannerOverseerBadgeTooltip built from the existing PlannerOverseerRuntimeSnapshot (reason/watchedStage/signal/pendingConfirmation); presentation-only, no engine changes.
- 24b27e8: summary: Plan approve/reject API now blocks release-authorization holds, requiring the authorization marker first.
category: fix
dev: FN-7564 — POST /tasks/:id/approve-plan and /reject-plan now return 400 when task.awaitingApprovalReason === "release-authorization" (FN-7559 discriminator), enforcing the FN-6481 release-authorization gate at the API layer regardless of client. Manual-approval holds are unaffected.
- fb45157: summary: Pin the mobile terminal close (X) button to the top-right corner so it is easy to find and tap.
category: fix
dev: On the ≤768px terminal, the `terminal-close` button now carries a `terminal-close--corner` class (order:3 + margin-inline-start:auto) so it renders last in flex order and hugs the right edge next to the tab dropdown, instead of falling back to order:0 (far left). Desktop/floating/pinned-below placement inside `.terminal-actions` is unchanged.
- 7c0be53: summary: Fix mobile terminal excess character spacing that survived earlier font-remeasure fixes.
category: fix
dev: `TerminalModal`/`SessionTerminal` re-bake xterm's `DomRenderer` letter-spacing compensation AFTER `fitAddon.fit()` settles the post-fit column count (not just before it), since `handleResize()` never re-bakes spacing itself. See `docs/solutions/ui-bugs/xterm-options-noop-remeasure-after-font-settle.md` recurrence #4.
- 71dfd3a: summary: Rename downloadable CLI release binaries to the fn-cli-<platform> base name.
category: internal
dev: `binaryNameForTarget` in `packages/cli/build.ts` and the `release.yml` / `test-release.yml` matrices now emit `fn-cli-<suffix>`; the local dev binary stays `fn`/`fn.exe`.
- 9592e3a: summary: Manual plan approval no longer re-asks you to approve a plan you already approved when it hasn't changed.
category: fix
dev: FN-7569 — approving a plan records a fingerprint of the approved PROMPT.md (new nullable Task.approvedPlanFingerprint, migration 139). The manual plan-approval gate skips re-parking at awaiting-approval when a re-specification (replan, plan-review retry, self-healing rebound) produces the same plan; a changed plan or reject-plan still requires fresh approval. Release authorization, Workflow Plan Review, and auto-approve-all are unchanged.
- c31f9ef: summary: Move the planner intervention timeline into the task Activity view dropdown.
category: feature
dev: Removes the inline `PlannerInterventionTimeline` mount from the FN-7517 oversight cluster in `TaskDetailModal.tsx` and adds a fourth `interventions` `ActivitySegment`, shown in the Activity dropdown only when planner oversight is active for the task; falls back to Live if oversight turns off while Interventions is selected.
- ce9df29: summary: Expired Claude subscription logins now show disconnected with a re-login prompt; tokens auto-refresh before expiry.
category: fix
dev: Unifies OAuth expiry detection between OAuthExpiryMonitor and /api/auth/status, and adds an engine-side proactive OAuth refresh scheduler wired in project-engine (guarded by skipNotifier). No token material logged.
- 196abb5: summary: Anthropic subscription reads now refresh the OAuth token automatically instead of silently failing when expired.
category: fix
dev: mergeAuthStorageReads getApiKey("anthropic-subscription") now delegates to the underlying engine authStorage.getApiKey (the only refresh-token HTTP round trip) instead of a local static expiry check; regression tests drive the wrapper directly. No token material logged.
- 45e5a26: summary: Stop GitHub tracking-issue creation from linking new tasks to old/closed issues.
category: fix
dev: github-tracking dedup now only reuses OPEN issues and requires a File-Scope path overlap (keyword-only matches no longer link). Prevents mis-linking a fresh task to a stale/resolved tracking issue (FN-7579). Setting `githubTrackingDedupEnabled` unchanged.
- a1a6b09: summary: Clarify the oversight "Nudge unavailable" guideline so it no longer reads as an overseer fault.
category: fix
dev: TaskDetailModal oversight controls — reworded taskDetail.oversight.nudgeDisabledTitle and added taskDetail.oversight.nudgeSuppressedTitle to differentiate periodic-observation vs. manual-control states. No enablement/engine logic changed.
- cf3fe8b: summary: New tasks created under the Coding (Ideas) workflow now land in the Ideas column and wait for you to promote them.
category: fix
dev: Dashboard create surfaces (InlineCreateCard, QuickEntryBox, NewTaskModal, insight/todo → task) no longer hard-code column:"triage"; the store now resolves the selected/default workflow's intake column. InlineCreateCard forwards workflowId at create time instead of applying it post-create. Also fixed a glue-layer regression in `useTaskHandlers.ts` (`handleBoardQuickCreate`/`handleModalCreate`) that re-forced column:"triage" even after the UI surfaces stopped sending it.
- 8b4e522: summary: Fix tasks vanishing from the board after being added to a workflow like Coding (Ideas).
category: fix
dev: Board.tsx forces a board-workflows refetch (deferred one tick, signature-guarded) whenever a rendered task is missing from the taskWorkflowIds map, so its real workflow and intake column resolve regardless of which create surface added it; the single-workflow grouping also re-homes a task whose column its workflow no longer declares into the intake lane instead of dropping it. Fixes the FN-7591 regression where intake-column cards (column "ideas") fell back to the default workflow, which has no such column, and were filtered out until a manual reload.
- f30d55f: summary: Move the Before → After transformation summary to the top of generated task definitions.
category: fix
dev: Reorders the standard and fast triage `PROMPT.md` templates in packages/core/src/agent-prompts.ts so `## Before → After Transformation` is the first content section, ahead of `## Review Level` and `## Mission`, matching FN-7499's glance-verification intent.
- 20379e8: summary: Task-detail Priority dropdown now matches the Oversight dropdown's size, border, and typography.
category: fix
dev: Removed the Priority-only forced select/option uppercase, added a neutral chip background scoped to `.detail-priority-chip.card-priority-badge--normal` for the untinted `normal` level, and reused the FN-7585 shared `--btn-border-width`/`--border`/`--detail-control-border-radius`/`--detail-priority-control-min-height` tokens so both dropdowns render as one control style across desktop and the mobile oversight-overflow surface.
- e0f3d3d: summary: Default workflow boards now label the intake column "Planning" instead of "Triage".
category: fix
dev: Renamed the `name` of the `id: "triage"` intake column to "Planning" in builtin-coding, builtin-stepwise-coding, and builtin-pr workflow IRs (column id unchanged; linear built-ins inherit via canonicalBuiltinWorkflowColumns). COLUMN_LABELS.triage was already "Planning".
- 5b193d2: summary: Fix the task-detail Nudge control staying disabled when the overseer is actively watching.
category: fix
dev: GET /api/tasks/:id now attaches the transient plannerOverseerState snapshot (mirrors the list route); TaskDetailModal reads the snapshot from workingTask so detail refetches no longer drop it.
- 546ef16: summary: Honor mission branchStrategy when triage omits branchAssignment; skip validation for inactive missions.
category: fix
dev: resolveBranchAssignmentContext returns undefined for absent mode so triage falls back to mission.branchStrategy; processTaskOutcome gates on mission.status === "active" like recoverActiveMissions.
- b173f76: summary: Planner overseer no longer marks healthy in-progress tasks as "recovering" or steers them.
category: fix
dev: `decidePlannerRecovery` now returns `none` for healthy (`progressing`/`complete`) and `awaiting-human` executor/workflow-gate signals instead of falling through to `inject_guidance`; only `stuck`/`blocked`/`failed` trigger autonomous steering. Also dedupes the `PlannerOverseerMonitor` activity-feed heartbeat so an unchanged `(stage, signal, reason)` observation is logged once per change, not every poll tick. Fixes the "overseer recovering" badge appearing on every autonomous card and the needless AI-consuming guidance injections (FN-7577).
### runfusion.ai
#### Patch Changes
- Updated dependencies [8668a05]
- Updated dependencies [978cdda]
- Updated dependencies [635fca2]
- Updated dependencies [3d55102]
- Updated dependencies [0f1cd0a]
- Updated dependencies [b42ba9f]
- Updated dependencies [a7559b0]
- Updated dependencies [4b530a6]
- Updated dependencies [a5ac3c3]
- Updated dependencies [8912399]
- Updated dependencies [d16c8b4]
- Updated dependencies [b800f7d]
- Updated dependencies [315f3bc]
- Updated dependencies [9dc248e]
- Updated dependencies [52dbc0e]
- Updated dependencies [ced783e]
- Updated dependencies [50cdab1]
- Updated dependencies [50786f2]
- Updated dependencies [b4b1f6d]
- Updated dependencies [e8b7362]
- Updated dependencies [0900a38]
- Updated dependencies [a2b09f2]
- Updated dependencies [0f05156]
- Updated dependencies [20184ac]
- Updated dependencies [82493e0]
- Updated dependencies [5689346]
- Updated dependencies [b42be87]
- Updated dependencies [2f23d22]
- Updated dependencies [efa8105]
- Updated dependencies [61c8bdc]
- Updated dependencies [e8dc2ae]
- Updated dependencies [d2e3134]
- Updated dependencies [b0208c1]
- Updated dependencies [7d8a1b8]
- Updated dependencies [2797803]
- Updated dependencies [a2d6349]
- Updated dependencies [4baa4c4]
- Updated dependencies [87a700c]
- Updated dependencies [68f5153]
- Updated dependencies [aa757bc]
- Updated dependencies [0689250]
- Updated dependencies [12a6d1b]
- Updated dependencies [81f2053]
- Updated dependencies [2cc84b5]
- Updated dependencies [79ab367]
- Updated dependencies [c16cc9e]
- Updated dependencies [aae603b]
- Updated dependencies [d10ea9a]
- Updated dependencies [bf68839]
- Updated dependencies [53d7b7e]
- Updated dependencies [c4d81fe]
- Updated dependencies [e7cb2f1]
- Updated dependencies [4707eb5]
- Updated dependencies [3b52a4d]
- Updated dependencies [5ad8ec8]
- Updated dependencies [726cbf8]
- Updated dependencies [36bd74e]
- Updated dependencies [df0be88]
- Updated dependencies [ec9ac61]
- Updated dependencies [8d36b99]
- Updated dependencies [ad744aa]
- Updated dependencies [5c3d58a]
- Updated dependencies [b4be515]
- Updated dependencies [62ddb19]
- Updated dependencies [883c73e]
- Updated dependencies [2ed06f9]
- Updated dependencies [8c6f76c]
- Updated dependencies [d09b57f]
- Updated dependencies [3d58260]
- Updated dependencies [052a277]
- Updated dependencies [f992e6a]
- Updated dependencies [2df6c35]
- Updated dependencies [94e9d15]
- Updated dependencies [3dd227b]
- Updated dependencies [6e4c207]
- Updated dependencies [6d364fc]
- Updated dependencies [b471aec]
- Updated dependencies [9d4a45b]
- Updated dependencies [72b77bf]
- Updated dependencies [c08498e]
- Updated dependencies [24b27e8]
- Updated dependencies [fb45157]
- Updated dependencies [7c0be53]
- Updated dependencies [71dfd3a]
- Updated dependencies [9592e3a]
- Updated dependencies [c31f9ef]
- Updated dependencies [ce9df29]
- Updated dependencies [78d4db9]
- Updated dependencies [196abb5]
- Updated dependencies [7435849]
- Updated dependencies [73b38ba]
- Updated dependencies [42bbe58]
- Updated dependencies [45e5a26]
- Updated dependencies [a1a6b09]
- Updated dependencies [53fe0d7]
- Updated dependencies [cf3fe8b]
- Updated dependencies [8b4e522]
- Updated dependencies [f30d55f]
- Updated dependencies [20379e8]
- Updated dependencies [e0f3d3d]
- Updated dependencies [5b193d2]
- Updated dependencies [ecbbb29]
- Updated dependencies [546ef16]
- Updated dependencies [b173f76]
- @runfusion/fusion@0.56.0
## 0.55.0
### @fusion/dashboard
#### Patch Changes
- @fusion/core@0.55.0
- @fusion/engine@0.55.0
- @fusion/i18n@0.39.19
- @fusion-plugin-examples/cli-printing-press@0.1.36
- @fusion-plugin-examples/compound-engineering@0.1.19
- @fusion-plugin-examples/dependency-graph@0.1.50
- @fusion-plugin-examples/roadmap@0.1.38
- @fusion-plugin-examples/cursor-runtime@0.1.38
- @fusion-plugin-examples/droid-runtime@0.1.45
- @fusion-plugin-examples/hermes-runtime@0.2.69
- @fusion-plugin-examples/openclaw-runtime@0.2.69
- @fusion-plugin-examples/paperclip-runtime@0.2.69
### @fusion/desktop
#### Patch Changes
- @fusion/core@0.55.0
- @fusion/dashboard@0.55.0
- @fusion/engine@0.55.0
### @fusion/engine
#### Patch Changes
- @fusion/core@0.55.0
- @fusion/pi-claude-cli@0.55.0
### @fusion/plugin-sdk
#### Patch Changes
- @fusion/core@0.55.0
### @runfusion/fusion
#### Minor Changes
- 8580910: summary: Allow configuring permissions for ephemeral and permanent agents.
category: feature
dev: Applies capability grants and runtime permission policies consistently across agent lifetimes.
- 5738766: summary: Add GitLab instance URL settings for GitLab.com and self-managed servers.
category: feature
dev: Adds typed GitLab web/API URL configuration and dashboard controls for later GitLab integration subtasks.
- fafe4c9: summary: Add GitLab access-token settings for personal, project, and group tokens.
category: feature
dev: Documents required GitLab API scopes and adds token auth resolution for later GitLab integration tasks.
- 865dec2: summary: Add GitLab project issue, group issue, and merge request imports.
category: feature
dev: Adds HTTP API GitLab import routes, dashboard affordances, CLI commands, and extension tools.
- 34be333: summary: Add GitLab comment and auto-close lifecycle actions for linked work items.
category: feature
dev: Uses GitLab REST notes and state-event APIs with configured self-managed instance URLs.
- 1f6befc: summary: Add GitLab as a Command Center Signals connector.
category: feature
dev: Adds GitLab webhook token verification and issue/MR signal normalization for Command Center incidents.
- 91737b1: summary: Add explicit onboarding choices to use, initialize, or clone a git repository.
category: feature
dev: Setup wizard now sends gitSetupMode while preserving cloneUrl-only project registration clients.
- 91fb53f: summary: Let chat update existing agents without delete/recreate.
category: feature
dev: Adds the fn_agent_update Pi extension tool for scoped AgentStore.updateAgent config edits.
- dfb6e52: summary: Add a bundled Linear import plugin for creating tasks from Linear issues.
category: feature
dev: Ships fusion-plugin-linear-import with plugin settings, routes, tools, dashboard view, and bundled-plugin packaging.
- ec0256f: summary: Add a mandatory Planning Mode deepening checkpoint before final summaries.
category: feature
dev: Planning sessions now persist pending summaries behind a "Would you like to go deeper?" checkpoint.
- 5984f32: summary: Add visible create buttons and recursive search to Project Files.
category: feature
dev: Files — Project uses the existing workspace-safe create and /files/search APIs with settings pickers left compact.
- f973334: summary: Add a GitLab enable toggle and collapsible Settings controls.
category: feature
dev: Adds gitlabEnabled gating for GitLab API operations while preserving saved configuration.
#### Patch Changes
- 306e516: summary: Stop recurring Windows Terminal warning popups during terminal startup.
category: fix
dev: Keeps embedded terminal bootstrap on supported shells and surfaces actionable inline errors.
- 9df13c7: summary: Fix dashboard localStorage quota exhaustion from stale SWR caches and add a Clear local data escape hatch.
category: fix
dev: Stale SWR hydration entries (per-chat-session/per-room message caches) were never garbage-collected; readCache now lazily deletes stale entries, a boot sweep prunes anything older than 24h, and Settings → General exposes a user-facing "Clear local data" button that preserves the auth token.
- c7641f9: summary: Fix `fusion desktop` on Windows and published npm installs (Electron dependency, GPU/sandbox flags, dashboard reuse).
category: fix
dev: `packages/cli/package.json` now depends on `electron` at runtime; previously the desktop launcher called `require("electron")`, which is only available inside the source checkout (via `pnpm-workspace.yaml` `onlyBuiltDependencies`) and is missing for npm consumers, causing `fusion desktop` to hang or fail silently. The launcher now applies GPU/sandbox-disabling Electron flags only on Windows (`os.platform() === "win32"`), keeps hardware acceleration and the Chromium sandbox on macOS/Linux, exports `FUSION_SERVER_PORT` so the desktop reuses the CLI-started dashboard instead of double-binding ports, and isolates desktop user-data under `~/.fusion/desktop-user-data`. Relocating the profile performs a one-time copy of the previous default Electron profile (`user-data-migration.ts`) so upgrading operators keep window geometry/session. `packages/desktop/scripts/build.ts` now fails the build if `main.js`/`preload.js`/`client/index.html` are missing from `dist/` or the staged `deploy/dist/`, preventing shipping an incomplete `app.asar`.
- da662c4: summary: First-run agent setup no longer errors on a duplicate CEO; desktop Switch-server button now opens the connection menu.
category: fix
dev: Onboarding agent creation (ModelOnboardingModal + SetupWizardModal) treats a 409 "Agent with this name already exists" as success and advances, since the default CEO can be created from more than one first-run surface. The desktop preload now bridges the `shell:open-connection-manager` IPC (sent by main when the header Switch-server button is clicked) into the `window` DOM event ShellContext listens for, so NativeShellConnectionManager (Local/Remote toggle + remote profiles) actually opens.
- 377eee6: summary: Allow operators to delete archived tasks.
category: fix
dev: Extends task deletion to archive-db snapshots while preserving soft-delete tombstones and ID reservation.
- 9ee33f9: summary: Show workflow template block boundary connectors in the graph editor.
category: fix
dev: Adds visual-only foreach/loop/optional-group template boundary edges that are filtered from persisted IR.
- 3453d16: summary: Preserve the selected dashboard project across browser refreshes.
category: fix
dev: Project selection now updates and hydrates from the existing `?project=` dashboard URL contract.
- 777f647: summary: Detect Cursor CLI installations that expose Windows cmd or bat shims.
category: fix
dev: Cursor runtime probes and model discovery now shell-spawn only on Windows and preserve spawn diagnostics.
- abb1917: summary: Add a Settings override for the local Cursor CLI binary path.
category: feature
dev: Adds global `cursorCliBinaryPath` and threads it through Cursor CLI probes, auth status, enable validation, and model discovery.
- b8e126e: summary: Display linked GitLab tracking metadata and stale badges on tasks.
category: feature
dev: Persists GitLab tracking metadata separately from GitHub tracking fields.
- c49a933: summary: Preserve GitLab tracking metadata for CLI and extension imports.
category: fix
dev: GitLab project, group, and merge-request imports now carry gitlabTracking metadata alongside sourceIssue provenance.
- 53d5bb1: summary: Keep Planning Mode Refine Further from getting stuck on duplicate generation.
category: fix
dev: Guards completed-summary refinement as a single-flight UI turn and preserves the active planning stream on same-refine in-progress responses.
- b493a1e: summary: Show task status badges on Documents task groups.
category: fix
dev: DocumentsView now renders taskColumn metadata in task document group headers and covers collapsed done/non-done states.
- e5be924: summary: Suppress misleading Anthropic Subscription re-login banners when another Anthropic auth method is active.
category: fix
dev: Keeps subscription OAuth expired in Settings while hiding only the global urgent banner entry when API key or Claude CLI auth is active.
- 326c72b: summary: Keep Anthropic authentication cards grouped near the top in Settings.
category: fix
dev: Sorts Claude CLI, Anthropic Subscription, and Anthropic API Key before other auth cards within each auth group.
- 1d6bb08: summary: Stop planner model fallback loops with a clear terminal triage error.
category: fix
dev: Bounds prompt-time/session-creation model fallback exhaustion and persists failed triage state.
- aa8f1f3: summary: Recover stale task branch-group references from Task Detail after server restarts.
category: fix
dev: Adds branch_group restart regression coverage and non-origin integration-branch diagnostics.
- 72adb52: summary: Add sidebar rename buttons to direct Chat conversations.
category: feature
dev: Reuses ChatView's existing rename dialog and useChat renameSession path.
- 25fecd7: summary: Return GitHub issue import actions to the main issue list.
category: fix
dev: Updates Import Tasks issue import/close navigation and regression coverage.
- ffcb54b: summary: Prevent Planning Mode sessions from failing when MCP resolution returns no shaped result.
category: fix
dev: Dashboard planning lanes now default malformed MCP resolver output to an empty server set while preserving MCP forwarding.
- 8d7abb8: summary: Fix Android mobile terminal spacing while the keyboard is open.
category: fix
dev: Terminal mobile sizing now tracks visualViewport width for keyboard-open xterm fits.
- 22fd0da: summary: Fix Last 30 days token usage to include every model in Command Center.
category: fix
dev: Corrects Command Center token analytics range attribution for durable multi-model task usage.
- 765218f: summary: Include supported chat interactions in Command Center token usage totals.
category: fix
dev: Records chat-session and room-responder token usage separately from task execution tokens and aggregates both sources in token analytics.
- 1d6011c: summary: Collapse mobile Chat thread controls into one compact header row.
category: feature
dev: Mobile direct-chat moves back/session controls into ViewHeader and floats the Markdown/plain toggle.
- 2050323: summary: Preserve workflow setting edits made while a values save is still in flight.
category: fix
dev: WorkflowSettingsPanel and Project Models workflow lane saves now clear only snapshot-matching pending keys.
- 3fac409: summary: Preserve migrated workflow settings when project identity is assigned later.
category: fix
dev: Backfills rootDir-keyed workflow_settings rows into the durable project identity row, keeping identity values on conflicts.
- 78ebeaf: summary: Show the bundled Linear Import plugin in Plugin Manager and dashboard plugin surfaces.
category: fix
dev: Keeps fusion-plugin-linear-import registered across the built-in Plugin Manager catalog while reusing existing registry, dashboard view, and bundled packaging paths.
- 1430a42: summary: Fix the mobile Chat header so back navigation and session selection stay on one row.
category: fix
dev: Keeps the direct-chat mobile header collapsed while preserving desktop and room-chat layouts.
- 7a4b0bf: summary: Fix iOS mobile terminal spacing when opening terminals with the keyboard already visible.
category: fix
dev: Seeds iOS keyboard-open viewport baselines for TerminalModal and SessionTerminal before xterm fit/resize.
- 00afb22: summary: Default fresh startup and theme reset to System mode.
category: fix
dev: Fresh global settings, pre-hydration scripts, and Appearance reset now keep Shadcn Ember while following OS light/dark preference.
- 9532520: summary: Remember task popup size and position when switching between tasks.
category: fix
dev: Task-detail FloatingWindow instances share the `floating-window:task-detail` geometry key.
- 7300bf5: summary: Fix iPhone Safari terminal text spacing with the keyboard open.
category: fix
dev: Disables WebKit text-size adjustment inside dashboard xterm measurement subtrees.
- 30a11ac: summary: Count planning tasks correctly in the dashboard footer queue metric.
category: fix
dev: Footer counter tests now cover queued, running, stuck, blocked, review, overlap, background AI, and Done absence.
- d9ef514: summary: Show conversation titles in the mobile Chat dropdown.
category: fix
dev: Keeps the provider logo while removing model-name text from the mobile direct-chat trigger.
- e4349ee: summary: Merges no longer fail when a task adds a dependency without updating the lockfile.
category: fix
dev: In merge-dependency-sync.ts, an inferred frozen install (pnpm/yarn/bun) that fails with an outdated-lockfile error now retries once non-frozen (pnpm gets explicit --no-frozen-lockfile) to regenerate the lockfile in the clean-room worktree, recomputing the install marker. Configured worktreeInitCommand keeps its authoritative frozen intent and still hard-fails. Surfaced via the merge:ai-deps-sync run-audit event (healed/healedCommand).
### runfusion.ai
#### Patch Changes
- Updated dependencies [306e516]
- Updated dependencies [9df13c7]
- Updated dependencies [c7641f9]
- Updated dependencies [da662c4]
- Updated dependencies [377eee6]
- Updated dependencies [9ee33f9]
- Updated dependencies [8580910]
- Updated dependencies [3453d16]
- Updated dependencies [777f647]
- Updated dependencies [abb1917]
- Updated dependencies [5738766]
- Updated dependencies [fafe4c9]
- Updated dependencies [865dec2]
- Updated dependencies [b8e126e]
- Updated dependencies [34be333]
- Updated dependencies [1f6befc]
- Updated dependencies [c49a933]
- Updated dependencies [53d5bb1]
- Updated dependencies [91737b1]
- Updated dependencies [b493a1e]
- Updated dependencies [e5be924]
- Updated dependencies [326c72b]
- Updated dependencies [1d6bb08]
- Updated dependencies [aa8f1f3]
- Updated dependencies [91fb53f]
- Updated dependencies [72adb52]
- Updated dependencies [25fecd7]
- Updated dependencies [dfb6e52]
- Updated dependencies [ec0256f]
- Updated dependencies [5984f32]
- Updated dependencies [ffcb54b]
- Updated dependencies [8d7abb8]
- Updated dependencies [22fd0da]
- Updated dependencies [765218f]
- Updated dependencies [1d6011c]
- Updated dependencies [2050323]
- Updated dependencies [3fac409]
- Updated dependencies [f973334]
- Updated dependencies [78ebeaf]
- Updated dependencies [1430a42]
- Updated dependencies [7a4b0bf]
- Updated dependencies [00afb22]
- Updated dependencies [9532520]
- Updated dependencies [7300bf5]
- Updated dependencies [30a11ac]
- Updated dependencies [d9ef514]
- Updated dependencies [e4349ee]
- @runfusion/fusion@0.55.0
## 0.54.0
@@ -12122,6 +12789,22 @@ for reference.
- Updated dependencies [a2ed6d0]
- @runfusion/fusion@0.1.0
## 0.39.21
### @fusion/i18n
#### Patch Changes
- @fusion/core@0.56.1
## 0.39.20
### @fusion/i18n
#### Patch Changes
- @fusion/core@0.56.0
## 0.39.19
### @fusion/i18n
@@ -12276,6 +12959,22 @@ for reference.
- @fusion/core@0.40.0
## 0.11.47
### @fusion/droid-cli
#### Patch Changes
- @fusion-plugin-examples/droid-runtime@0.1.47
## 0.11.46
### @fusion/droid-cli
#### Patch Changes
- @fusion-plugin-examples/droid-runtime@0.1.46
## 0.11.45
### @fusion/droid-cli

View File

@@ -89,6 +89,16 @@ Implementation notes:
- Active-profile deletion fallback is shell-owned: deleting the active profile promotes the first remaining profile, and deleting the final profile resets to a clean empty state.
- The dashboard consumes this through the shared `window.fusionShell` connection APIs.
### Native Back Handling (Android Back + iOS Edge-Swipe-Back)
Task-detail dismissal via native "back" (Android hardware Back / predictive-back gesture,
iOS edge-swipe-back, or plain browser swipe-back) converges on a single shared invariant:
the dashboard's `useNavigationHistory` nav-history stack. See `packages/mobile/README.md`
→ "Native Back Handling" for the full Android (`fusion:native-back`) vs. iOS (`popstate`)
routing details and the tracked post-`cap sync` patch scripts (`scripts/
patch-android-manifest.ts`, `scripts/patch-ios-webview.ts`) that keep each platform's native
gesture delivery enabled across `cap sync` regenerations.
### Planning Mode
Planning Mode opens directly into the composer pane on mobile when no planning sessions exist, avoiding an empty-sidebar dead end. On desktop/tablet the split view is unaffected. Once sessions are saved, mobile shows the session list as usual and the user can navigate between list and detail panes.
@@ -186,3 +196,5 @@ Mobile package scripts (`packages/mobile/package.json`):
- `dev:ios`
- `dev:android`
- `build:mobile`
- `patch:ios-webview` — idempotently enables the iOS WKWebView edge-swipe-back gesture in the generated `ios/App/App/AppDelegate.swift` (safe no-op if `ios/` doesn't exist yet)
- `capacitor:sync:after` — Capacitor's own post-`cap sync` hook; currently runs the iOS webview patch so `cap sync` regeneration can't silently drop the gesture opt-in

View File

@@ -136,6 +136,7 @@ Every task shows its plan, its reviews, its diffs, and its file changes in real
|---|---|
| 🧠 **AI planning** | Describe a task in plain language. Planning agents turn it into a `PROMPT.md` plan with steps, file scope, and acceptance criteria. |
| 🔁 **Selectable workflows** | Built-ins cover coding, quick fixes, review-heavy work, stepwise execution, plugin-gated Compound Engineering, and PR lifecycle fragments. Pick a workflow per task or author custom ones in the [Workflow Editor](./docs/workflow-editor.md). |
| 🛡️ **Planner oversight** | Per-task or per-workflow oversight level (`off` / `observe` / `steer` / `autonomous`) governs how closely a planner overseer watches and intervenes — merge/PR and destructive actions always require explicit human confirmation. See [Settings Reference](./docs/settings-reference.md#workflow-settings) and [Dashboard Guide](./docs/dashboard-guide.md). |
| 🌳 **Worktree isolation** | Each task runs in its own branch and worktree (`fusion/{task-id}`). Parallel tasks. Zero conflicts. Optional [worktrunk](https://github.com/max-sixty/worktrunk) delegation via [`worktrunk.enabled`](./docs/settings-reference.md#worktree-backend-settings) (see [WorktreeBackend abstraction](./docs/architecture.md#worktreebackend-abstraction)). |
| ⚡ **Smart merge controls** | Passing every gate? Fusion squash-merges and moves on. Opt into manual approval anywhere, inherit the live global auto-merge default, or set explicit per-task auto/manual overrides. |
| 🛰️ **Multi-node mesh** | Laptop, Mac mini, Linux server, cloud VM, phone — all synced. Desktop, mobile, web. |
@@ -385,6 +386,15 @@ Fusion workflows define how a task moves from idea to delivery. The default codi
Read [Workflow Steps](./docs/workflow-steps.md) for runtime semantics, built-in workflow behavior, and workflow-step templates; read [Workflow Editor](./docs/workflow-editor.md) for the dashboard authoring guide.
<!--
FNXC:PlannerOversight 2026-07-05-00:00:
The planner-oversight feature (FN-7508 → FN-7583) shipped fully documented in internal/reference docs (architecture.md, settings-reference.md, dashboard-guide.md, workflow-steps.md) but had no front-door entry point in README.md, so a new operator could not discover it. Add a short overview here that links out to the canonical docs instead of duplicating engine internals (FN-7598).
-->
### Planner oversight
Each workflow (and optionally each task) can set a **planner oversight** level — `off`, `observe`, `steer`, or `autonomous` (default) — controlling how closely a planner overseer watches and intervenes in that task's execution. Even at `autonomous`, merge/PR progression and any destructive or external-service side effect always require an explicit, recorded human confirmation before they run. Notification verbosity is controlled separately. Set the default in the **Workflow Editor → Values** tab, or override per task from the New Task dialog / Task Detail edit form. Read [Settings Reference](./docs/settings-reference.md#workflow-settings) for the full setting semantics and [Dashboard Guide](./docs/dashboard-guide.md) for the UI controls.
---
## Multi-node. One board. Every platform.
@@ -504,6 +514,7 @@ npx companies.sh add paperclipai/companies/gstack
- **Visual Workflow Editor** — Inspect read-only built-ins, duplicate/customize workflows, and edit graph nodes, columns, task fields, typed settings, and per-project values ([Workflow Editor](./docs/workflow-editor.md))
- **Workflow Steps** — Configurable quality gates (pre-merge: blocks merge; post-merge: informational), plus workflow-declared optional steps such as opt-in [Browser Verification](./docs/workflow-steps.md#workflow-declared-optional-steps)
- **Workflow-native policy** — Fast-mode planning (`leanPlanning` / `autoApproveSpec`), typed triage thresholds, review/approval, step execution, and model/fallback lanes are workflow settings, not hard-coded engine constants ([Settings Reference](./docs/settings-reference.md#workflow-native-triage-policy-settings); [workflow settings](./docs/settings-reference.md#workflow-settings))
- **Planner oversight** — Workflow-native `plannerOversightLevel` (`off`/`observe`/`steer`/`autonomous`), with an optional per-task override and a separate notification-verbosity setting; merge/PR progression and destructive actions always require explicit human confirmation, even at `autonomous` ([overview](#planner-oversight); [Settings Reference](./docs/settings-reference.md#workflow-settings))
- **GitHub + PR lifecycle** — Import issues, create PRs, display real-time PR/issue badges, and use workflow-mode PR lifecycle graph fragments where enabled
- **Dashboard** — Real-time kanban/list/graph views, agent management, terminal, git manager, mission planner, chat, workflow editor, custom provider setup, and one-click update action
- **Missions** — Hierarchical planning (Mission → Milestone → Slice → Feature → Task) with autopilot, validation contracts, fix-feature retries, mission-goal linking, and blocked-handoff semantics

Some files were not shown because too many files have changed in this diff Show More