chore(release): v0.57.0

Version bump via changesets.
This commit is contained in:
gsxdsm
2026-07-08 16:27:10 -07:00
parent 8892534676
commit 400f04530c
128 changed files with 651 additions and 499 deletions

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Approval cards now show the gated command/arguments and dedupe repeated pending requests.
category: fix
dev: Permanent-agent gate persists approvalDedupeKey in targetAction.context and a payload-bearing summary (buildAgentGatedActionSummary); MailboxView renders GatedActionApprovalDetails for source="agent-gating".

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix Planning Mode Back button showing a generation screen instead of the previous question.
category: fix
dev: handleBack in PlanningModeModal no longer transitions to the loading view during the deterministic rewindPlanningSession; Back returns directly to the previous question form (success and error paths) and never renders .planning-loading.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Auto-approve plan toggle now appears only on the planning column, not Todo.
category: fix
dev: Board.tsx gated the plan auto-approve prop pair on intake||hold; the built-in Coding workflow's Todo is a hold column, leaking the control. Gate is now intake-only (legacy triage path unchanged).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Archived tasks now load newest-first in pages of 100 with a Show more button.
category: feature
dev: Adds ArchiveDatabase.listPage / TaskStore.listArchivedTasks and GET /tasks/archived for a bounded SQL LIMIT/OFFSET read ordered archivedAt DESC. useTasks.loadArchivedTasks fetches page 1 on first Archived-column expand; loadMoreArchivedTasks fetches subsequent pages. No schema change; the legacy merged listTasks({includeArchived}) path is unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix Quick Add action-row buttons (Save, Attach, Fast, workflow trigger) rendering at mismatched heights.
category: fix
dev: Adds a scoped `min-height` on `.quick-entry-actions .btn` and `.wf-optional-steps-dropdown-trigger` in `QuickEntryBox.css` (desktop base rule, alongside the existing mobile touch-target block) so every action-row control resolves one uniform box height regardless of icon-only vs text content or `.dep-trigger` padding differences. No shared `.btn`/`.btn-sm`/`.btn-icon`/`.btn-task-create`/`.dep-trigger` rules in `styles.css` were touched.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Quick Add action-row controls now resolve one identical box height, not just a min-height floor.
category: fix
dev: Upgraded `.quick-entry-actions .btn, .quick-entry-actions .wf-optional-steps-dropdown-trigger` in QuickEntryBox.css from a bare min-height floor to a fixed box height (min-height paired with an equal max-height) plus tokenized line-height and centered alignment, at both the desktop base rule and the <=768px touch-target media block. Follow-up: a mobile-only Save-specific override (no vertical padding, line-height:1) further corrects Save's mobile sizing to match siblings without affecting desktop/tablet.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Warn when changing a workflow's model surfaces tasks still pinned to the old model, including default-workflow tasks.
category: fix
dev: PATCH /workflows/:id/setting-values now returns `modelDrift` for execution/planning/validator lanes. Drift baseline is captured inside the settings write transaction (no stale-read race), and default-workflow patches pass `includeNullSelection` so no-workflow-selection tasks are counted. New `TaskStore.updateWorkflowSettingValuesWithPrevious` and `getModelLaneDrift(..., { includeNullSelection })`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Retry transient OAuth token-rotation errors so in-flight agent calls survive rotation without failing the task.
category: fix
dev: withRateLimitRetry now retries transient auth errors (authentication_error, invalid credentials, token_expired) on a separate ~5s flat-delay budget that does not consume rate-limit attempts. OAuth scope/permission failures are explicitly excluded (operator must re-authorize) so they surface immediately instead of retrying pointlessly.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Executors now block on pending approvals instead of probing for ungated workarounds.
category: fix
dev: wait-for-approval now suspends the in-flight executor session via awaitAbortInFlightTaskWork and dedupes identical pending approvals; executor prompts carve out awaiting-approval as a legitimate turn end.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix workspace-mode tasks failing auto-merge under the pull-request merge strategy.
category: fix
dev: Engine merge dispatch now checks isWorkspaceTask before the mergeStrategy branch, routing workspace tasks to landWorkspaceTask instead of processPullRequestMerge (which threw "could not determine repository" against the non-git workspace root). processPullRequestMergeTask/syncGroupPrCallback now throw the named WorkspaceTaskMergeError for workspace tasks as defense-in-depth.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: New tasks now land in the selected workflow's intake column instead of always jumping to Planning/triage.
category: fix
dev: Removed hardcoded `column: "triage"` overrides in `fn_task_create` (engine `createTaskCreateTool` and pi extension) and in signal/GitHub-import/planning create surfaces that had no `workflowId` or (for planning subtask routes) accepted one but still forced `column`. `TaskStore.createTask` already resolves `input.column || resolvedEntryColumn || "triage"`; callers no longer defeat that resolution. A custom workflow's non-triage `intake`-trait column (e.g. `Inbox`) now correctly captures new cards inert until released, while the default builtin:coding workflow still lands cards in `triage` byte-identically. The pi-extension `fn_task_create` response text now echoes the actual landing column instead of a fixed `"Column: triage"` string.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Yes/No chat question buttons now show a clear selected state after clicking.
category: fix
dev: Strengthened `.chat-question-response__confirm--selected` CSS specificity (compound selector + dedicated hover/focus-visible rules) so the CTA-token selected fill/border beats the global `.btn`/`.btn:hover` rules; added `aria-pressed` and a regression test asserting the selected class toggles correctly between Yes/No.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Planning Mode "needs input" now shows a yellow nav badge instead of a top banner.
category: fix
dev: Excludes planning `awaiting_input` sessions from SessionNotificationBanner and adds a `status-dot--pending` dot to the Planning nav destination (LeftSidebarNav + MobileNavBar More item/tab), driven by a new `planningNeedsInput` flag.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Planning Mode's "go deeper" prompt now suggests plan-specific topics instead of generic buckets.
category: feature
dev: AI completion payload gains optional `deepeningThemes`; the deepening checkpoint prefers them (via buildDeepeningCheckpointOptions) and falls back to the existing regex-derived themes when absent.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Task-detail Oversight button now matches Priority/Execution-mode height on desktop.
category: fix
dev: `.detail-oversight-menu-dropdown` (the popover-positioning wrapper) is now `inline-flex; align-items: stretch` so it participates in `.detail-meta-inline-controls`'s stretch, and `.detail-oversight-menu-trigger` gets `align-self: stretch` to fill it — matching Priority/Execution-mode's direct-child stretch behavior without any new hardcoded height.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: fn_task_attach now refuses to read files outside the task worktree boundary.
category: security
dev: Adds a path-containment guard (confine to ctx.cwd) before readFile in the fn_task_attach tool; rejects traversal/absolute/@-prefixed escaping paths. Regression tests in packages/cli/src/__tests__/extension.test.ts. Fixes FN-7619 (flagged out-of-scope during FN-7608).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix mobile dashboard terminal sometimes rendering completely blank on open.
category: fix
dev: TerminalModal now attaches a persistent ResizeObserver directly on the xterm container (mirroring SessionTerminal's existing pattern), so a container that reports a zero/collapsed box at the first post-open fit recovers as soon as its real box settles, instead of staying at FitAddon's degenerate 2x1-cell floor forever.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the mobile terminal shortcut bar so it truly scrolls horizontally to reach every key.
category: fix
dev: FN-7550's leaf `min-width:0`/`overflow-x:auto`/`touch-action:pan-x` on `.terminal-shortcut-panel` were already correct, but styles.css's mobile `@media(max-width:768px)` lockdown resets `touch-action` to `pan-y` on `*` and re-locks it explicitly on `.modal-overlay:not(.confirm-dialog-overlay)`/`#root`/`html`/`body` — the terminal's own overlay/modal ancestors were never carved back into `pan-x`, so the panel's own correct touch-action was defeated by ancestor-chain intersection on real mobile devices. Added `touch-action: pan-x pan-y` to `.modal-overlay.terminal-modal-overlay`, `.modal.terminal-modal(.terminal-modal--mobile)` (both mobile paths), and `.terminal-status-bar` (FN-7560 footer, same gap). Locked in with a real-CSS `getComputedStyle` layout test (`loadAllAppCss()`) that resolves the panel + full ancestor chain, replacing reliance on a leaf-rule string match that stayed green through this recurrence.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix desktop app showing a truncated provider/model list vs. the web build.
category: fix
dev: The Electron desktop app's in-process dashboard server (local-runtime.ts, local-server.ts) now routes through a shared `@fusion/engine` `seedDashboardProviders()` helper that mirrors the CLI serve/dashboard/daemon startup sequence (built-in Zai/API-key provider seeding, `wrapAuthStorageWithApiKeyProviders`, `registerCustomProviders`). `provider-auth.ts` and `custom-provider-registry.ts` moved from `@fusion/cli` into `@fusion/engine`; the CLI files are now re-export shims with unchanged observable behavior.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix desktop app plugin install and Browse registry (plugin subsystem now wired into the embedded server).
category: fix
dev: local-runtime.ts / local-server.ts now build a PluginStore + PluginLoader and pass pluginStore/pluginLoader/pluginRunner into createServer, mirroring the CLI dashboard command (FN-7623, issue #1937). Plugin subsystem init is fail-soft — a broken plugin (e.g. corrupt manifest) logs/traces via strace(...) but no longer blocks embedded dashboard startup.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix onboarding GitHub sign-in button erroring instead of starting GitHub auth.
category: fix
dev: The onboarding/settings GitHub step no longer offers dashboard-managed OAuth login when no `github` OAuth provider is registered (pi ships only anthropic/github-copilot/openai-codex); it now presents gh CLI (`gh auth login`) guidance. `/api/auth/login` returns a clear unknown-provider error for `github` instead of a misleading "model not found".

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Authentication settings always lists all supported providers, regardless of connected runtime plugins.
category: fix
dev: GET /api/auth/status now enumerates a static supported-provider catalog (union with storage-reported providers) and uses runtime/auth state only to annotate per-provider status; connecting a runtime plugin (e.g. Hermes Runtime) no longer collapses the provider list.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Add a close button to the Settings screen on mobile.
category: fix
dev: The embedded Settings header now renders a mobile-only `modal-close` control gated on `isEmbedded && viewportMode === "mobile"`, wired to the existing `onClose` prop (navigates back to the board and refreshes app settings). Desktop/tablet embedded and the standalone modal presentation are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Edit a chat message and resume the conversation from that point.
category: feature
dev: Adds ChatStore.deleteMessagesFrom + PATCH /api/chat/sessions/:id/messages/:messageId; rewinds the pi SessionManager (createBranchedSession) so the model forgets discarded turns. Direct model-loop chats only.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Built-in runtime plugins (Hermes, Paperclip, OpenClaw, Droid) can now be disabled and stay disabled across restarts.
category: feature
dev: renderBuiltinPluginSection now renders a durable enable/disable toggle for runtime built-ins independent of installed status, replacing the dead-end "Built-in metadata only" CTA for the not-installed / activated-without-record case. Chosen persistence path: on disable, a not-yet-installed built-in runtime is first registered via the existing installPlugin path (mirroring the CLI's ensureBundledPluginInstalled lazy-install), then disablePlugin is called immediately so a plugin_installs row + project state exists with enabled=false — no new persistence primitive needed since loadAllPlugins/loadPlugin already skip disabled plugins and recordActivationEvent only fires on actual load, so a disabled runtime is never re-activated on restart. HermesRuntimeCard/OpenClawRuntimeCard/PaperclipRuntimeCard now reflect the Plugin Manager disabled state ("Disabled in Plugin Manager") instead of showing a stale detected/connected status.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Hermes Runtime is now additive — connecting it no longer hides your custom providers, models, or auth options.
category: fix
dev: Audited the Hermes Runtime plugin (onLoad/onUnload, CLI-spawn/probe seams) and register-model-routes.ts/register-auth-routes.ts against GitHub #1931. Confirmed the reported customProviders suppression was already fixed generically (unrelated to Hermes) and that Hermes's PluginContext has no reference to AuthStorage/ModelRegistry, so it cannot mutate either store. Added FNXC documentation comments locking in the additive-runtime invariant and regression coverage across the model-picker (/api/models), custom-provider CRUD, and auth-status surfaces proving a connected Hermes runtime never narrows them. Item 3 (static auth catalog) remains owned by FN-7625; item 1 (additive Hermes-model surfacing in the picker) is deferred to a follow-up task (FN-7636) pending a non-blocking CLI-spawn caching strategy.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Chat search now matches message content, with a "Search in title only" toggle.
category: feature
dev: ChatStore.searchSessionsByMessageContent (parameterized LIKE ... ESCAPE); GET /chat/sessions gains q/titleOnly params; useChat exposes searchInTitleOnly.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Align Priority and Execution-mode control heights with the Oversight dropdown in task detail.
category: fix
dev: `.detail-priority-chip`, `.detail-execution-mode-toggle`, and `.detail-oversight-menu-trigger` in TaskDetailModal.css now all pin an explicit `height` (not just `min-height`) from the shared `--detail-priority-control-min-height` token, so none can outgrow or undershoot the others regardless of flex stretch behavior; extends the FN-7585/FN-7618 shared-token pattern.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the task-detail Planner Chat stop button rendering narrower than its send button.
category: fix
dev: `TaskPlannerChatTab.css` now declares a locally-scoped `--chat-input-control-size` on `.task-planner-chat-composer` (same formula as `ChatView.css`'s `.chat-input-row`) and applies it as a `min-inline-size` floor on `.task-planner-chat-send`, so the shared `.chat-input-send`/`.chat-input-stop` classes (which previously read an undefined custom property inside the Planner composer and fell back to `width: auto`) never render the streaming Stop button narrower than the idle Send button on desktop or mobile.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Hermes-configured models now appear in Fusion's model picker when the Hermes runtime is available.
category: feature
dev: /api/models additively merges `hermes profile list` results under the `hermes` provider via a short-TTL, single-flight cache (no per-request CLI spawn); rows are deduped by provider/id and never displace existing entries. Deferred item 1 of FN-7630.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Edit and resend a message in task-detail Planner Chat.
category: feature
dev: Wires FN-7628's edit affordance (editChatMessage + rewindSessionForEdit) into TaskPlannerChatTab for synthetic task-planner:<id> sessions; already-applied steering comments and refinement tasks are not reverted when a turn is discarded.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix cards stranded after workspace/out-of-band merges land; node-override end no longer silently no-ops.
category: fix
dev: store.moveTask now allows proven-merge recoveryRehome from legacy columns (e.g. todo→done); nodeId='end' finalizes on durable merge proof or returns an explicit error across the dashboard route, CLI task-update tool, and store.updateTask.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Code Review/Plan Review/CE gate failures now record a diagnostic instead of "(no feedback captured)".
category: fix
dev: When an enabled optional-group (`code-review`, `plan-review`, `browser-verification`) or CE `source:"node"` skill-gate template node fails via a dispatch/infra exception rather than a reviewer verdict, `WorkflowGraphExecutor` now synthesizes a non-blank `WorkflowStepResult.output` from the underlying `node:<id>:error` context-patch key (falling back to the failure `value`, then a stable sentinel) instead of leaving `output`/`notes` field-absent. Fixes Runfusion/Fusion#1946. `status`, verdict extraction, edge routing, and self-healing's `latestFailedPreMergeStep` selection are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix agents on long heartbeat intervals silently going stale for hours.
category: fix
dev: HeartbeatTriggerScheduler timer audit now re-arms non-advancing long-interval registrations (stale lastHeartbeatAt with a live timer entry), not just missing ones (FN-7645).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix provider API keys being wiped when the desktop and CLI apps share credentials on one machine.
category: fix
dev: createFusionAuthStorage() now reloads before persisting a refreshed OAuth credential so a concurrent Fusion process's newer login is not overwritten; adds cross-process regression coverage over ~/.fusion/agent/auth.json. Relies on the pi-coding-agent FileAuthStorageBackend locked per-provider merge (floor >=0.80.x).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Route node settings-sync and mesh credential writes through the coordinated auth store to prevent concurrent clobbers.
category: fix
dev: register-settings-sync-routes.ts, register-settings-sync-inbound-routes.ts, and register-mesh-routes.ts now persist received credentials via @fusion/engine createFusionAuthStorage() instead of raw AuthStorage.create(getFusionAuthPath()), sharing FN-7646's reload-before-persist + per-provider locked-merge path over ~/.fusion/agent/auth.json. Adds route-level regression coverage.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix tasks in planning/intake columns starting execution before they were specified.
category: fix
dev: The hold-release entry guard (reserveSlot in scheduler.ts, issueRelease in hold-release.ts) is now trait-based (isUnplannedForExecution resolves the `intake` trait plus `status:"planning"`/bootstrap-stub PROMPT.md) instead of keyed on the literal `todo` column id, so renamed custom intake columns (e.g. `ideas`, `Inbox`) are covered too. promoteHeldTask/releaseHeldTaskByEvent also route through the same guard (FN-7648).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Switching projects now lands on the Board instead of Settings when the last-visited view was Settings.
category: fix
dev: Extended resolveLandingTaskView in useViewState.ts to resolve "settings" (in addition to "command-center") to "board" for the auto-restored/hydrated landing view only; deep links (?view=settings) and explicit navigation still open Settings.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Removed the chat "Search in title only" toggle; chat search always matches message content and title.
category: fix
dev: Dropped searchInTitleOnly/setSearchInTitleOnly from useChat and the ChatView toggle button; content-search path (q param, matchedMessagePreview) is now always-on. Server GET /chat/sessions titleOnly param retained but unused by the client.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Automation live output no longer shows "Run failed" for runs that actually succeed.
category: fix
dev: Reconciles the live-run panel terminal status (ScheduledTasksModal/RoutineCard) to the authoritative POST/registry result and gates benign SSE teardown (post-terminal close, reconnect exhaustion) from being surfaced as a failure across both `/routines/:id/run/stream` and `/automations/:id/run/stream`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Planner chat stop button now shows just the stop icon, not a text label.
category: fix
dev: StandardChatActionButton gains showStopText (defaults to showSendText); TaskPlannerChatTab sets showStopText={false}. aria-label "Stop generation" retained.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Restore the chat "Working…" indicator immediately when returning to a session with an active generation.
category: fix
dev: `useChat.ts` `selectSession` now reattaches on the authoritative `fetchChatSession` refresh whenever `isGenerating===true`, instead of requiring a populated `inFlightGeneration` snapshot that is null pre-first-delta. Guards against races (stale active session, already-open stream) and reuses `attachIfGenerating` (FN-7656).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Retain GitHub issue import state when leaving and returning to Import Tasks.
category: fix
dev: Persists GitHubImportModal provider/tab/label filter/remote/selection per project via projectStorage (`kb-dashboard-github-import-state`) and hydrates on remount; falls back to the existing default-remote auto-detect when nothing is persisted.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Duplicate tasks are no longer auto-archived on creation by default — they are flagged for review instead.
category: feature
dev: Adds project setting `autoArchiveDuplicateTasksEnabled` (default false) gating the FN-4892 same-agent duplicate intake path in store `_maybeAutoArchiveSameAgentDuplicate`; disabled path uses new `flagSameAgentDuplicate` and sets `nearDuplicateOf` metadata. Tombstone-resurrection blocking is unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Built-in workflow boards and Automations editors now label the intake column "Planning", not "Triage".
category: fix
dev: board-workflows canonical label map BUILTIN_WORKFLOW_COLUMN_LABELS.triage was still "Triage", overriding FN-7599's IR rename; set to "Planning". English schedule.columnTriage/taskColumnTriage/triageColumn set to "Planning" and dashboard locale copy re-synced. Also fixed board.triage (AgentDetailView task-column badge) and docs/dashboard-guide.md references. Column id "triage" unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: fn_task_archive and fn_task_delete now accept removeLineageReferences to clear a lineage-parent block.
category: fix
dev: Forwards the boolean to store.archiveTask/deleteTask (FN-7661); resolves the tools referencing a parameter their schema never exposed.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: The Command Center SDLC funnel now labels the intake stage "Planning", matching the renamed board column.
category: fix
dev: commandCenter.funnel.stage.triage, enteredInRange, and completionRateAria English strings (and SdlcFunnel.tsx t() fallbacks) changed to "Planning"/"Entered planning"/"in-range planning entrants"; dashboard locale copy re-synced. Aggregator stage key "triage" and the i18n key names are unchanged.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Auto-recover durable agents stuck in transient error state even when their manager is active.
category: fix
dev: SelfHealingManager durable-error recovery no longer requires a missing manager; manager-present durable non-ephemeral agents with a transient lastError and no active run are recovered under the existing cooldown/backoff/retry-budget guards (FN-7672).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Agents now know they run inside Fusion and won't plan actions across a platform shutdown.
category: fix
dev: Adds a shared runtime self-awareness + capability-grounding preamble (packages/core/src/agent-prompts.ts, FUSION_RUNTIME_SELF_AWARENESS) prepended to the chat, heartbeat, and executor base prompts' stable layer.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Task cards no longer show the steps breakdown while in the Planning column.
category: fix
dev: TaskCard `showProgressSection` now excludes the `triage` column, matching ListView; the breakdown appears once a task leaves Planning.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Align the quick-add workflow dropdown button height with Save/Fast/Subtask buttons.
category: fix
dev: `.quick-entry-workflow-trigger` in QuickEntryBox.css now re-asserts `.btn-sm`'s `padding: 4px 10px` locally so the shared global `.dep-trigger` `padding: 3px 8px` no longer shortens it by ~2px; other `.dep-trigger` surfaces (InlineCreateCard, NewTaskModal, TaskDetailModal, TaskForm) are unaffected (FN-7677).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: On tablet widths, move terminal shortcuts/zoom controls into the bottom footer so they no longer overlap header icons.
category: fix
dev: Adds an isTabletTerminal flag (769–1024px, non-mobile) that renders the shared terminalActionControls fragment in the .terminal-status-bar footer (as FN-7560 did for mobile) instead of the header; true desktop (>1024px) keeps the header layout. Tablet footer keeps the desktop pin/pop-out toggles.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix dashboard terminal showing a blank screen for seconds before the first prompt appears on open.
category: performance
dev: `useTerminalSessions` no longer awaits a discardable `listTerminalSessions()` round trip before auto-creating the first session when there are no persisted `kb-terminal-tabs`; the round trip only produced a no-op filter result in that case. Reload-with-persisted-tabs is unaffected — it still awaits session-list validation.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Keep the mobile top header on a single line after a foldable phone is unfolded and refolded.
category: fix
dev: `.header` now pins `flex-wrap: nowrap` explicitly and `.header-left`/`.header-actions` get an explicit `flex`/`min-width: 0` shrink-and-truncate contract promoted to the base rule (not gated to the `@media (max-width: 768px)` block), so the row cannot wrap even while a foldable's CSS layout viewport lags its `visualViewport` pane mid fold/unfold/refold. `useViewportMode` was audited and already recomputes correctly on that resize sequence (regression test added; no hook change needed).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Add a one-time server log hint pointing to shell-profile-hygiene docs when a login shell is slow to prompt.
category: performance
dev: FN-7688 investigated whether `--login` in `TerminalService.detectShell()`/`createSession()` is a meaningful first-prompt latency contributor. Finding: negligible on lean profiles, additive (~800ms+) when `.zprofile`/`.bash_profile` eagerly sources something slow (e.g. version manager init). `--login` is preserved unconditionally per FN-7686; added `SLOW_LOGIN_PROFILE_HINT_MS` (2000ms) threshold and a one-time, non-blocking `console.info` hint in `createSession()`'s PTY `onData` handler — never alters spawn args, timeouts, or the `retry-without-login` fallback. See `docs/solutions/developer-experience/login-shell-profile-latency.md`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": minor
---
summary: Custom providers can now enable Anthropic-style prompt caching to stop re-billing the full context each turn.
category: fix
dev: Sets pi-ai `compat.cacheControlFormat="anthropic"` on opted-in custom-provider models across both registration paths (custom-provider-registry `toProviderConfig` and `pi.ts` createFnAgent). Opt-in via new `CustomProvider.anthropicPromptCaching` flag (FN-7689).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix Anthropic-compatible custom providers registering under an unregistered API key.
category: fix
dev: Aligns custom-provider-registry `resolveApiType("anthropic-compatible")` on "anthropic-messages" (the registered pi-ai api key), matching pi.ts `resolveCustomProviderApiType` and removing the latent "No API provider registered for api: anthropic" drift (FN-7690).

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix merger awaiting-confirmation copy that implied a hard block when auto-merge proceeds automatically.
category: fix
dev: `decidePlannerRecovery` now accepts an additive `autoMergeWillProceed` flag (threaded from `allowsAutoMergeProcessing` in `PlannerRecoveryController.tick`) that only shapes the confirmation `reason` string; no gating/behavior change to `action`/`requiresConfirmation`/`sideEffectClass`.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix the terminal rendering blank on mobile even though the shell prompt already loaded.
category: fix
dev: The global mobile `@media (max-width: 768px) { * { max-width: 100% } }` reset in styles.css also matched xterm's hidden character-measurement subtree (`.xterm-helpers` / `.xterm-char-measure-element`). That subtree's containing block is a 0x0 box, so `max-width: 100%` resolved to 0 and hard-capped xterm's character-cell measurement at 0 — FitAddon.fit() then proposed 0 columns and `.xterm-screen` (plus the WebGL canvas) collapsed to 0x0, so the prompt painted into a zero-size box. Exempt xterm's measurement subtree from that reset (`max-width: none`). Mobile-only; desktop was unaffected. Recurrence of FN-7620/FN-7686.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix workspace partial-land recovery losing the already-landed sub-repo sha.
category: fix
dev: merger-ai.ts landWorkspaceTask now recovers the EXACT proven landed commit (the task's own Fusion-Task-Id trailer commit, or the recorded landedSha when it is still an ancestor) via findProvenLandedCommit, instead of dropping it when the A1 trailer-fallback proved a sub-repo landed but its sha was never persisted. This avoids attributing a later unrelated integration tip to the repo after an intervening sub-repo land, so finalizeWorkspaceTask builds durable merge proof and the partial-land retry completes to done.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Fix workspace sub-repo worktree creation failing on absent shared branch.
category: fix
dev: worktree-acquisition.ts acquireWorkspaceRepoWorktree now strips the shared project integrationBranch/baseBranch overrides before forwarding to acquireTaskWorktree, so FN-7360's freshStartPoint resolution no longer tries to git-worktree-add a branch absent from the sub-repo.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Prevent redundant polling and a re-render loop in agent-card runtime-fallback badges.
category: fix
dev: AgentsView now caches one stable ref callback per viewport key (avoids an infinite re-render loop when IntersectionObserver is unavailable) and evicts it on unmount; the test-only toast-dedupe reset is guarded to a no-op in production builds.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Clear stale generated mission fix features after their source feature passes validation.
category: fix
dev: Reconciles obsolete generated Fix Feature chains during validator pass handling and active mission recovery.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop the false "OAuth token expired" push notification on startup.
category: fix
dev: In ProjectEngine.start, OAuthRefreshScheduler.start() now runs before OAuthExpiryMonitor.start() so the proactive refresh renews a stale-but-refreshable access token before the refresh-blind monitor's first awaited check() reads `expires`. Ordering locked by an invocationCallOrder assertion in project-engine.test.ts.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Preserve Hermes chat session state and project runtime routing more reliably.
category: fix
dev: Refreshes cached project chat plugin runners and hardens Hermes CLI session/error handling.

View File

@@ -1,7 +0,0 @@
---
"@runfusion/fusion": patch
---
summary: Stop the usage telemetry log from growing without bound and bloating the Fusion database.
category: fix
dev: usage_events was absent from operational-log retention, so it grew unbounded (observed ~187k rows / ~28MB with nothing ever aged out). pruneOperationalLogs now prunes usage_events on the same operationalLogRetentionDays cadence, keyed off its `ts` column (not `timestamp`). Existing rows still require a one-time VACUUM to reclaim on-disk space.

View File

@@ -2,15 +2,156 @@
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.56.1
## 0.57.0
### New
- Archived tasks now load newest-first in pages of 100 with a Show more button.
- Planning Mode's "go deeper" prompt now suggests plan-specific topics instead of generic buckets.
- Edit a chat message and resume the conversation from that point.
- Built-in runtime plugins (Hermes, Paperclip, OpenClaw, Droid) can now be disabled and stay disabled across restarts.
- Chat search now matches message content, with a "Search in title only" toggle.
- Hermes-configured models now appear in Fusion's model picker when the Hermes runtime is available.
- Edit and resend a message in task-detail Planner Chat.
- Duplicate tasks are no longer auto-archived on creation by default — they are flagged for review instead.
### Fixed
- 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.
- Approval cards now show the gated command/arguments and dedupe repeated pending requests.
- Fix Planning Mode Back button showing a generation screen instead of the previous question.
- Auto-approve plan toggle now appears only on the planning column, not Todo.
- Fix Quick Add action-row buttons (Save, Attach, Fast, workflow trigger) rendering at mismatched heights.
- Quick Add action-row controls now resolve one identical box height, not just a min-height floor.
- Warn when changing a workflow's model surfaces tasks still pinned to the old model, including default-workflow tasks.
- Retry transient OAuth token-rotation errors so in-flight agent calls survive rotation without failing the task.
- Executors now block on pending approvals instead of probing for ungated workarounds.
- Fix workspace-mode tasks failing auto-merge under the pull-request merge strategy.
- New tasks now land in the selected workflow's intake column instead of always jumping to Planning/triage.
- Yes/No chat question buttons now show a clear selected state after clicking.
- Planning Mode "needs input" now shows a yellow nav badge instead of a top banner.
- Task-detail Oversight button now matches Priority/Execution-mode height on desktop.
- Fix mobile dashboard terminal sometimes rendering completely blank on open.
- Fix the mobile terminal shortcut bar so it truly scrolls horizontally to reach every key.
- Fix desktop app showing a truncated provider/model list vs. the web build.
- Fix desktop app plugin install and Browse registry (plugin subsystem now wired into the embedded server).
- Fix onboarding GitHub sign-in button erroring instead of starting GitHub auth.
- Authentication settings always lists all supported providers, regardless of connected runtime plugins.
- Add a close button to the Settings screen on mobile.
- Hermes Runtime is now additive — connecting it no longer hides your custom providers, models, or auth options.
- Align Priority and Execution-mode control heights with the Oversight dropdown in task detail.
- Fix the task-detail Planner Chat stop button rendering narrower than its send button.
- Fix cards stranded after workspace/out-of-band merges land; node-override end no longer silently no-ops.
- Code Review/Plan Review/CE gate failures now record a diagnostic instead of "(no feedback captured)".
- Fix agents on long heartbeat intervals silently going stale for hours.
- Fix provider API keys being wiped when the desktop and CLI apps share credentials on one machine.
- Route node settings-sync and mesh credential writes through the coordinated auth store to prevent concurrent clobbers.
- Fix tasks in planning/intake columns starting execution before they were specified.
- Switching projects now lands on the Board instead of Settings when the last-visited view was Settings.
- Removed the chat "Search in title only" toggle; chat search always matches message content and title.
- Automation live output no longer shows "Run failed" for runs that actually succeed.
- Planner chat stop button now shows just the stop icon, not a text label.
- Restore the chat "Working…" indicator immediately when returning to a session with an active generation.
- Retain GitHub issue import state when leaving and returning to Import Tasks.
- Built-in workflow boards and Automations editors now label the intake column "Planning", not "Triage".
- fn_task_archive and fn_task_delete now accept removeLineageReferences to clear a lineage-parent block.
- The Command Center SDLC funnel now labels the intake stage "Planning", matching the renamed board column.
- Auto-recover durable agents stuck in transient error state even when their manager is active.
- Agents now know they run inside Fusion and won't plan actions across a platform shutdown.
- Task cards no longer show the steps breakdown while in the Planning column.
- Align the quick-add workflow dropdown button height with Save/Fast/Subtask buttons.
- On tablet widths, move terminal shortcuts/zoom controls into the bottom footer so they no longer overlap header icons.
- Keep the mobile top header on a single line after a foldable phone is unfolded and refolded.
- Custom providers can now enable Anthropic-style prompt caching to stop re-billing the full context each turn.
- Fix Anthropic-compatible custom providers registering under an unregistered API key.
- Fix merger awaiting-confirmation copy that implied a hard block when auto-merge proceeds automatically.
- Fix the terminal rendering blank on mobile even though the shell prompt already loaded.
- Fix workspace partial-land recovery losing the already-landed sub-repo sha.
- Fix workspace sub-repo worktree creation failing on absent shared branch.
- Prevent redundant polling and a re-render loop in agent-card runtime-fallback badges.
- Clear stale generated mission fix features after their source feature passes validation.
- Stop the false "OAuth token expired" push notification on startup.
- Preserve Hermes chat session state and project runtime routing more reliably.
- Stop the usage telemetry log from growing without bound and bloating the Fusion database.
### Security
- fn_task_attach now refuses to read files outside the task worktree boundary.
### Performance
- Fix dashboard terminal showing a blank screen for seconds before the first prompt appears on open.
- Add a one-time server log hint pointing to shell-profile-hygiene docs when a login shell is slow to prompt.
## 0.56.1
### @fusion/dashboard
#### Patch Changes
- @fusion/core@0.56.1
- @fusion/engine@0.56.1
- @fusion/i18n@0.39.21
- @fusion-plugin-examples/cli-printing-press@0.1.38
- @fusion-plugin-examples/compound-engineering@0.1.21
- @fusion-plugin-examples/dependency-graph@0.1.52
- @fusion-plugin-examples/roadmap@0.1.40
- @fusion-plugin-examples/cursor-runtime@0.1.40
- @fusion-plugin-examples/droid-runtime@0.1.47
- @fusion-plugin-examples/hermes-runtime@0.2.71
- @fusion-plugin-examples/openclaw-runtime@0.2.71
- @fusion-plugin-examples/paperclip-runtime@0.2.71
### @fusion/desktop
#### Patch Changes
- @fusion/core@0.56.1
- @fusion/dashboard@0.56.1
- @fusion/engine@0.56.1
### @fusion/engine
#### Patch Changes
- @fusion/core@0.56.1
- @fusion/pi-claude-cli@0.56.1
### @fusion/plugin-sdk
#### Patch Changes
- @fusion/core@0.56.1
### @runfusion/fusion
#### Patch Changes
- ed823c7: summary: Fix Anthropic subscription showing "logged in" while all model calls fail.
category: fix
dev: Two-part fix. (1) OAuth token refresh in `packages/engine/src/auth-storage.ts` sent a `scope` param (defaulting to `user:profile`), which per RFC 6749 §6 re-issued the access token narrowed to that scope and stripped `user:inference` — so refreshed tokens 403'd on every model call. Refresh now omits `scope` (preserving the originally-granted scopes, matching pi-ai's own refresh), and `ANTHROPIC_DEFAULT_SCOPES` mirrors the full Claude Code scope set. (2) `/auth/status` now reports an unexpired Anthropic OAuth token that lacks an inference scope as not-connected (authenticated:false, expired:true so the re-login banner fires) with a scope-specific loginError, instead of falsely claiming a live session. Existing narrowed tokens need one re-login to obtain a fresh broad grant.
- dc44730: summary: Fix "Invalid transition" error when moving cards out of a custom workflow column like Coding (Ideas) → Ideas.
category: fix
dev: moveTaskInternal's compat-flag legacy path validated moves against the legacy VALID_TRANSITIONS table, which is keyed only by the built-in column ids; a task in a non-legacy workflow column (e.g. "ideas") had no key and every move was rejected. The legacy branch now resolves a non-legacy source column's targets from the task's own workflow adjacency (resolveAllowedColumns) while preserving the legacy bare-Error contract for legacy columns.
- b9d60b3: summary: Fix overlapping Record and Clear buttons in the Keyboard Shortcuts settings rows on desktop and mobile.
category: fix
dev: The shortcut-capture Record/Clear buttons no longer use the icon-only `btn-icon` class (which set `line-height:0` and a mobile 36px square, clipping/overlapping the text labels); they use a text-button class and the `.shortcut-capture` row locks buttons with `flex-shrink:0` so the input and controls never overlap, stacking cleanly on mobile.
- e347062: summary: Fix persistent mobile terminal inter-character spacing (5th recurrence root cause).
category: fix
dev: xterm's CharSizeService picks a Canvas-based (OffscreenCanvas) or DOM-based character-measurement strategy at terminal.open() time; DomRenderer's letter-spacing bake always measures via a separate DOM-based WidthCache, so a Canvas-vs-DOM measurement mismatch survived FN-7561/FN-7567's remeasure-ordering fixes. `withDomBasedTerminalCharacterMeasurement` in terminalPreferences.ts forces CharSizeService onto the same DOM strategy for both TerminalModal and SessionTerminal.
- f4f1656: summary: Fix manual PR actions hidden when a task auto-merge override was on but global auto-merge was off.
category: fix
dev: TaskDetailModal isManualPrFlow now keys off live global autoMergeEnabled, not the per-task effective override (regression from FN-7255).
### runfusion.ai
#### Patch Changes
- Updated dependencies [ed823c7]
- Updated dependencies [dc44730]
- Updated dependencies [b9d60b3]
- Updated dependencies [e347062]
- Updated dependencies [f4f1656]
- @runfusion/fusion@0.56.1
## 0.56.0
@@ -12789,6 +12930,14 @@ for reference.
- Updated dependencies [a2ed6d0]
- @runfusion/fusion@0.1.0
## 0.39.22
### @fusion/i18n
#### Patch Changes
- @fusion/core@0.57.0
## 0.39.21
### @fusion/i18n
@@ -12959,6 +13108,14 @@ for reference.
- @fusion/core@0.40.0
## 0.11.48
### @fusion/droid-cli
#### Patch Changes
- @fusion-plugin-examples/droid-runtime@0.1.48
## 0.11.47
### @fusion/droid-cli

View File

@@ -1,6 +1,6 @@
{
"name": "fusion-workspace",
"version": "0.56.1",
"version": "0.57.0",
"private": true,
"license": "MIT",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,77 @@
# runfusion.ai
## 0.57.0
### Patch Changes
- Updated dependencies [4444262]
- Updated dependencies [1b1e1f1]
- Updated dependencies [ebe9b9f]
- Updated dependencies [03161ad]
- Updated dependencies [13570e8]
- Updated dependencies [9a5a8d2]
- Updated dependencies [1762229]
- Updated dependencies [a486e0b]
- Updated dependencies [9e5c025]
- Updated dependencies [60081fb]
- Updated dependencies [203f879]
- Updated dependencies [81fbb65]
- Updated dependencies [5631c88]
- Updated dependencies [e444581]
- Updated dependencies [1ea3c86]
- Updated dependencies [ca84473]
- Updated dependencies [8d73b18]
- Updated dependencies [ca7c987]
- Updated dependencies [fe5a595]
- Updated dependencies [d54ab80]
- Updated dependencies [a4f5fbc]
- Updated dependencies [a6c60e1]
- Updated dependencies [ebf8f87]
- Updated dependencies [42009cf]
- Updated dependencies [0f2bfa5]
- Updated dependencies [6bf0090]
- Updated dependencies [6777eea]
- Updated dependencies [413ef1d]
- Updated dependencies [51e3891]
- Updated dependencies [5b243f1]
- Updated dependencies [1b7bb1f]
- Updated dependencies [4e8c621]
- Updated dependencies [f1db313]
- Updated dependencies [923bba7]
- Updated dependencies [009ce26]
- Updated dependencies [563a8c6]
- Updated dependencies [bec8987]
- Updated dependencies [ce4f173]
- Updated dependencies [efabdd6]
- Updated dependencies [7c7b22e]
- Updated dependencies [dfb084c]
- Updated dependencies [e29fea3]
- Updated dependencies [511bcaf]
- Updated dependencies [f7d9509]
- Updated dependencies [97e4667]
- Updated dependencies [dd9fa2d]
- Updated dependencies [7cf70b3]
- Updated dependencies [aa534c1]
- Updated dependencies [8ee8f15]
- Updated dependencies [297c744]
- Updated dependencies [a4fce60]
- Updated dependencies [83e7743]
- Updated dependencies [a832b79]
- Updated dependencies [fd541bb]
- Updated dependencies [07507f5]
- Updated dependencies [461a4a2]
- Updated dependencies [64d4bb7]
- Updated dependencies [67cc027]
- Updated dependencies [0755fc5]
- Updated dependencies [0c1a20b]
- Updated dependencies [0c1a20b]
- Updated dependencies [d8ce3f4]
- Updated dependencies [3744fbc]
- Updated dependencies [a8c018f]
- Updated dependencies [a734d9f]
- Updated dependencies [ac719d1]
- @runfusion/fusion@0.57.0
## 0.56.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "runfusion.ai",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Launch Fusion with `npx runfusion.ai` — tiny alias for @runfusion/fusion.",
"homepage": "https://runfusion.ai",

View File

@@ -1,5 +1,211 @@
# @runfusion/fusion
## 0.57.0
### Minor Changes
- 03161ad: summary: Archived tasks now load newest-first in pages of 100 with a Show more button.
category: feature
dev: Adds ArchiveDatabase.listPage / TaskStore.listArchivedTasks and GET /tasks/archived for a bounded SQL LIMIT/OFFSET read ordered archivedAt DESC. useTasks.loadArchivedTasks fetches page 1 on first Archived-column expand; loadMoreArchivedTasks fetches subsequent pages. No schema change; the legacy merged listTasks({includeArchived}) path is unchanged.
- e444581: summary: Planning Mode's "go deeper" prompt now suggests plan-specific topics instead of generic buckets.
category: feature
dev: AI completion payload gains optional `deepeningThemes`; the deepening checkpoint prefers them (via buildDeepeningCheckpointOptions) and falls back to the existing regex-derived themes when absent.
- 42009cf: summary: Edit a chat message and resume the conversation from that point.
category: feature
dev: Adds ChatStore.deleteMessagesFrom + PATCH /api/chat/sessions/:id/messages/:messageId; rewinds the pi SessionManager (createBranchedSession) so the model forgets discarded turns. Direct model-loop chats only.
- 0f2bfa5: summary: Built-in runtime plugins (Hermes, Paperclip, OpenClaw, Droid) can now be disabled and stay disabled across restarts.
category: feature
dev: renderBuiltinPluginSection now renders a durable enable/disable toggle for runtime built-ins independent of installed status, replacing the dead-end "Built-in metadata only" CTA for the not-installed / activated-without-record case. Chosen persistence path: on disable, a not-yet-installed built-in runtime is first registered via the existing installPlugin path (mirroring the CLI's ensureBundledPluginInstalled lazy-install), then disablePlugin is called immediately so a plugin_installs row + project state exists with enabled=false — no new persistence primitive needed since loadAllPlugins/loadPlugin already skip disabled plugins and recordActivationEvent only fires on actual load, so a disabled runtime is never re-activated on restart. HermesRuntimeCard/OpenClawRuntimeCard/PaperclipRuntimeCard now reflect the Plugin Manager disabled state ("Disabled in Plugin Manager") instead of showing a stale detected/connected status.
- 6777eea: summary: Chat search now matches message content, with a "Search in title only" toggle.
category: feature
dev: ChatStore.searchSessionsByMessageContent (parameterized LIKE ... ESCAPE); GET /chat/sessions gains q/titleOnly params; useChat exposes searchInTitleOnly.
- 5b243f1: summary: Hermes-configured models now appear in Fusion's model picker when the Hermes runtime is available.
category: feature
dev: /api/models additively merges `hermes profile list` results under the `hermes` provider via a short-TTL, single-flight cache (no per-request CLI spawn); rows are deduped by provider/id and never displace existing entries. Deferred item 1 of FN-7630.
- 1b7bb1f: summary: Edit and resend a message in task-detail Planner Chat.
category: feature
dev: Wires FN-7628's edit affordance (editChatMessage + rewindSessionForEdit) into TaskPlannerChatTab for synthetic task-planner:<id> sessions; already-applied steering comments and refinement tasks are not reverted when a turn is discarded.
- f7d9509: summary: Duplicate tasks are no longer auto-archived on creation by default — they are flagged for review instead.
category: feature
dev: Adds project setting `autoArchiveDuplicateTasksEnabled` (default false) gating the FN-4892 same-agent duplicate intake path in store `_maybeAutoArchiveSameAgentDuplicate`; disabled path uses new `flagSameAgentDuplicate` and sets `nearDuplicateOf` metadata. Tombstone-resurrection blocking is unchanged.
- dd9fa2d: summary: fn_task_archive and fn_task_delete now accept removeLineageReferences to clear a lineage-parent block.
category: fix
dev: Forwards the boolean to store.archiveTask/deleteTask (FN-7661); resolves the tools referencing a parameter their schema never exposed.
- 8ee8f15: summary: Agents now know they run inside Fusion and won't plan actions across a platform shutdown.
category: fix
dev: Adds a shared runtime self-awareness + capability-grounding preamble (packages/core/src/agent-prompts.ts, FUSION_RUNTIME_SELF_AWARENESS) prepended to the chat, heartbeat, and executor base prompts' stable layer.
- 461a4a2: summary: Custom providers can now enable Anthropic-style prompt caching to stop re-billing the full context each turn.
category: fix
dev: Sets pi-ai `compat.cacheControlFormat="anthropic"` on opted-in custom-provider models across both registration paths (custom-provider-registry `toProviderConfig` and `pi.ts` createFnAgent). Opt-in via new `CustomProvider.anthropicPromptCaching` flag (FN-7689).
### Patch Changes
- 4444262: summary: Approval cards now show the gated command/arguments and dedupe repeated pending requests.
category: fix
dev: Permanent-agent gate persists approvalDedupeKey in targetAction.context and a payload-bearing summary (buildAgentGatedActionSummary); MailboxView renders GatedActionApprovalDetails for source="agent-gating".
- 1b1e1f1: summary: Fix Planning Mode Back button showing a generation screen instead of the previous question.
category: fix
dev: handleBack in PlanningModeModal no longer transitions to the loading view during the deterministic rewindPlanningSession; Back returns directly to the previous question form (success and error paths) and never renders .planning-loading.
- ebe9b9f: summary: Auto-approve plan toggle now appears only on the planning column, not Todo.
category: fix
dev: Board.tsx gated the plan auto-approve prop pair on intake||hold; the built-in Coding workflow's Todo is a hold column, leaking the control. Gate is now intake-only (legacy triage path unchanged).
- 13570e8: summary: Fix Quick Add action-row buttons (Save, Attach, Fast, workflow trigger) rendering at mismatched heights.
category: fix
dev: Adds a scoped `min-height` on `.quick-entry-actions .btn` and `.wf-optional-steps-dropdown-trigger` in `QuickEntryBox.css` (desktop base rule, alongside the existing mobile touch-target block) so every action-row control resolves one uniform box height regardless of icon-only vs text content or `.dep-trigger` padding differences. No shared `.btn`/`.btn-sm`/`.btn-icon`/`.btn-task-create`/`.dep-trigger` rules in `styles.css` were touched.
- 9a5a8d2: summary: Quick Add action-row controls now resolve one identical box height, not just a min-height floor.
category: fix
dev: Upgraded `.quick-entry-actions .btn, .quick-entry-actions .wf-optional-steps-dropdown-trigger` in QuickEntryBox.css from a bare min-height floor to a fixed box height (min-height paired with an equal max-height) plus tokenized line-height and centered alignment, at both the desktop base rule and the <=768px touch-target media block. Follow-up: a mobile-only Save-specific override (no vertical padding, line-height:1) further corrects Save's mobile sizing to match siblings without affecting desktop/tablet.
- 1762229: summary: Warn when changing a workflow's model surfaces tasks still pinned to the old model, including default-workflow tasks.
category: fix
dev: PATCH /workflows/:id/setting-values now returns `modelDrift` for execution/planning/validator lanes. Drift baseline is captured inside the settings write transaction (no stale-read race), and default-workflow patches pass `includeNullSelection` so no-workflow-selection tasks are counted. New `TaskStore.updateWorkflowSettingValuesWithPrevious` and `getModelLaneDrift(..., { includeNullSelection })`.
- a486e0b: summary: Retry transient OAuth token-rotation errors so in-flight agent calls survive rotation without failing the task.
category: fix
dev: withRateLimitRetry now retries transient auth errors (authentication_error, invalid credentials, token_expired) on a separate ~5s flat-delay budget that does not consume rate-limit attempts. OAuth scope/permission failures are explicitly excluded (operator must re-authorize) so they surface immediately instead of retrying pointlessly.
- 9e5c025: summary: Executors now block on pending approvals instead of probing for ungated workarounds.
category: fix
dev: wait-for-approval now suspends the in-flight executor session via awaitAbortInFlightTaskWork and dedupes identical pending approvals; executor prompts carve out awaiting-approval as a legitimate turn end.
- 60081fb: summary: Fix workspace-mode tasks failing auto-merge under the pull-request merge strategy.
category: fix
dev: Engine merge dispatch now checks isWorkspaceTask before the mergeStrategy branch, routing workspace tasks to landWorkspaceTask instead of processPullRequestMerge (which threw "could not determine repository" against the non-git workspace root). processPullRequestMergeTask/syncGroupPrCallback now throw the named WorkspaceTaskMergeError for workspace tasks as defense-in-depth.
- 203f879: summary: New tasks now land in the selected workflow's intake column instead of always jumping to Planning/triage.
category: fix
dev: Removed hardcoded `column: "triage"` overrides in `fn_task_create` (engine `createTaskCreateTool` and pi extension) and in signal/GitHub-import/planning create surfaces that had no `workflowId` or (for planning subtask routes) accepted one but still forced `column`. `TaskStore.createTask` already resolves `input.column || resolvedEntryColumn || "triage"`; callers no longer defeat that resolution. A custom workflow's non-triage `intake`-trait column (e.g. `Inbox`) now correctly captures new cards inert until released, while the default builtin:coding workflow still lands cards in `triage` byte-identically. The pi-extension `fn_task_create` response text now echoes the actual landing column instead of a fixed `"Column: triage"` string.
- 81fbb65: summary: Yes/No chat question buttons now show a clear selected state after clicking.
category: fix
dev: Strengthened `.chat-question-response__confirm--selected` CSS specificity (compound selector + dedicated hover/focus-visible rules) so the CTA-token selected fill/border beats the global `.btn`/`.btn:hover` rules; added `aria-pressed` and a regression test asserting the selected class toggles correctly between Yes/No.
- 5631c88: summary: Planning Mode "needs input" now shows a yellow nav badge instead of a top banner.
category: fix
dev: Excludes planning `awaiting_input` sessions from SessionNotificationBanner and adds a `status-dot--pending` dot to the Planning nav destination (LeftSidebarNav + MobileNavBar More item/tab), driven by a new `planningNeedsInput` flag.
- 1ea3c86: summary: Task-detail Oversight button now matches Priority/Execution-mode height on desktop.
category: fix
dev: `.detail-oversight-menu-dropdown` (the popover-positioning wrapper) is now `inline-flex; align-items: stretch` so it participates in `.detail-meta-inline-controls`'s stretch, and `.detail-oversight-menu-trigger` gets `align-self: stretch` to fill it — matching Priority/Execution-mode's direct-child stretch behavior without any new hardcoded height.
- ca84473: summary: fn_task_attach now refuses to read files outside the task worktree boundary.
category: security
dev: Adds a path-containment guard (confine to ctx.cwd) before readFile in the fn_task_attach tool; rejects traversal/absolute/@-prefixed escaping paths. Regression tests in packages/cli/src/**tests**/extension.test.ts. Fixes FN-7619 (flagged out-of-scope during FN-7608).
- 8d73b18: summary: Fix mobile dashboard terminal sometimes rendering completely blank on open.
category: fix
dev: TerminalModal now attaches a persistent ResizeObserver directly on the xterm container (mirroring SessionTerminal's existing pattern), so a container that reports a zero/collapsed box at the first post-open fit recovers as soon as its real box settles, instead of staying at FitAddon's degenerate 2x1-cell floor forever.
- ca7c987: summary: Fix the mobile terminal shortcut bar so it truly scrolls horizontally to reach every key.
category: fix
dev: FN-7550's leaf `min-width:0`/`overflow-x:auto`/`touch-action:pan-x` on `.terminal-shortcut-panel` were already correct, but styles.css's mobile `@media(max-width:768px)` lockdown resets `touch-action` to `pan-y` on `*` and re-locks it explicitly on `.modal-overlay:not(.confirm-dialog-overlay)`/`#root`/`html`/`body` — the terminal's own overlay/modal ancestors were never carved back into `pan-x`, so the panel's own correct touch-action was defeated by ancestor-chain intersection on real mobile devices. Added `touch-action: pan-x pan-y` to `.modal-overlay.terminal-modal-overlay`, `.modal.terminal-modal(.terminal-modal--mobile)` (both mobile paths), and `.terminal-status-bar` (FN-7560 footer, same gap). Locked in with a real-CSS `getComputedStyle` layout test (`loadAllAppCss()`) that resolves the panel + full ancestor chain, replacing reliance on a leaf-rule string match that stayed green through this recurrence.
- fe5a595: summary: Fix desktop app showing a truncated provider/model list vs. the web build.
category: fix
dev: The Electron desktop app's in-process dashboard server (local-runtime.ts, local-server.ts) now routes through a shared `@fusion/engine` `seedDashboardProviders()` helper that mirrors the CLI serve/dashboard/daemon startup sequence (built-in Zai/API-key provider seeding, `wrapAuthStorageWithApiKeyProviders`, `registerCustomProviders`). `provider-auth.ts` and `custom-provider-registry.ts` moved from `@fusion/cli` into `@fusion/engine`; the CLI files are now re-export shims with unchanged observable behavior.
- d54ab80: summary: Fix desktop app plugin install and Browse registry (plugin subsystem now wired into the embedded server).
category: fix
dev: local-runtime.ts / local-server.ts now build a PluginStore + PluginLoader and pass pluginStore/pluginLoader/pluginRunner into createServer, mirroring the CLI dashboard command (FN-7623, issue #1937). Plugin subsystem init is fail-soft — a broken plugin (e.g. corrupt manifest) logs/traces via strace(...) but no longer blocks embedded dashboard startup.
- a4f5fbc: summary: Fix onboarding GitHub sign-in button erroring instead of starting GitHub auth.
category: fix
dev: The onboarding/settings GitHub step no longer offers dashboard-managed OAuth login when no `github` OAuth provider is registered (pi ships only anthropic/github-copilot/openai-codex); it now presents gh CLI (`gh auth login`) guidance. `/api/auth/login` returns a clear unknown-provider error for `github` instead of a misleading "model not found".
- a6c60e1: summary: Authentication settings always lists all supported providers, regardless of connected runtime plugins.
category: fix
dev: GET /api/auth/status now enumerates a static supported-provider catalog (union with storage-reported providers) and uses runtime/auth state only to annotate per-provider status; connecting a runtime plugin (e.g. Hermes Runtime) no longer collapses the provider list.
- ebf8f87: summary: Add a close button to the Settings screen on mobile.
category: fix
dev: The embedded Settings header now renders a mobile-only `modal-close` control gated on `isEmbedded && viewportMode === "mobile"`, wired to the existing `onClose` prop (navigates back to the board and refreshes app settings). Desktop/tablet embedded and the standalone modal presentation are unchanged.
- 6bf0090: summary: Hermes Runtime is now additive — connecting it no longer hides your custom providers, models, or auth options.
category: fix
dev: Audited the Hermes Runtime plugin (onLoad/onUnload, CLI-spawn/probe seams) and register-model-routes.ts/register-auth-routes.ts against GitHub #1931. Confirmed the reported customProviders suppression was already fixed generically (unrelated to Hermes) and that Hermes's PluginContext has no reference to AuthStorage/ModelRegistry, so it cannot mutate either store. Added FNXC documentation comments locking in the additive-runtime invariant and regression coverage across the model-picker (/api/models), custom-provider CRUD, and auth-status surfaces proving a connected Hermes runtime never narrows them. Item 3 (static auth catalog) remains owned by FN-7625; item 1 (additive Hermes-model surfacing in the picker) is deferred to a follow-up task (FN-7636) pending a non-blocking CLI-spawn caching strategy.
- 413ef1d: summary: Align Priority and Execution-mode control heights with the Oversight dropdown in task detail.
category: fix
dev: `.detail-priority-chip`, `.detail-execution-mode-toggle`, and `.detail-oversight-menu-trigger` in TaskDetailModal.css now all pin an explicit `height` (not just `min-height`) from the shared `--detail-priority-control-min-height` token, so none can outgrow or undershoot the others regardless of flex stretch behavior; extends the FN-7585/FN-7618 shared-token pattern.
- 51e3891: summary: Fix the task-detail Planner Chat stop button rendering narrower than its send button.
category: fix
dev: `TaskPlannerChatTab.css` now declares a locally-scoped `--chat-input-control-size` on `.task-planner-chat-composer` (same formula as `ChatView.css`'s `.chat-input-row`) and applies it as a `min-inline-size` floor on `.task-planner-chat-send`, so the shared `.chat-input-send`/`.chat-input-stop` classes (which previously read an undefined custom property inside the Planner composer and fell back to `width: auto`) never render the streaming Stop button narrower than the idle Send button on desktop or mobile.
- 4e8c621: summary: Fix cards stranded after workspace/out-of-band merges land; node-override end no longer silently no-ops.
category: fix
dev: store.moveTask now allows proven-merge recoveryRehome from legacy columns (e.g. todo→done); nodeId='end' finalizes on durable merge proof or returns an explicit error across the dashboard route, CLI task-update tool, and store.updateTask.
- f1db313: summary: Code Review/Plan Review/CE gate failures now record a diagnostic instead of "(no feedback captured)".
category: fix
dev: When an enabled optional-group (`code-review`, `plan-review`, `browser-verification`) or CE `source:"node"` skill-gate template node fails via a dispatch/infra exception rather than a reviewer verdict, `WorkflowGraphExecutor` now synthesizes a non-blank `WorkflowStepResult.output` from the underlying `node:<id>:error` context-patch key (falling back to the failure `value`, then a stable sentinel) instead of leaving `output`/`notes` field-absent. Fixes Runfusion/Fusion#1946. `status`, verdict extraction, edge routing, and self-healing's `latestFailedPreMergeStep` selection are unchanged.
- 923bba7: summary: Fix agents on long heartbeat intervals silently going stale for hours.
category: fix
dev: HeartbeatTriggerScheduler timer audit now re-arms non-advancing long-interval registrations (stale lastHeartbeatAt with a live timer entry), not just missing ones (FN-7645).
- 009ce26: summary: Fix provider API keys being wiped when the desktop and CLI apps share credentials on one machine.
category: fix
dev: createFusionAuthStorage() now reloads before persisting a refreshed OAuth credential so a concurrent Fusion process's newer login is not overwritten; adds cross-process regression coverage over ~/.fusion/agent/auth.json. Relies on the pi-coding-agent FileAuthStorageBackend locked per-provider merge (floor >=0.80.x).
- 563a8c6: summary: Route node settings-sync and mesh credential writes through the coordinated auth store to prevent concurrent clobbers.
category: fix
dev: register-settings-sync-routes.ts, register-settings-sync-inbound-routes.ts, and register-mesh-routes.ts now persist received credentials via @fusion/engine createFusionAuthStorage() instead of raw AuthStorage.create(getFusionAuthPath()), sharing FN-7646's reload-before-persist + per-provider locked-merge path over ~/.fusion/agent/auth.json. Adds route-level regression coverage.
- bec8987: summary: Fix tasks in planning/intake columns starting execution before they were specified.
category: fix
dev: The hold-release entry guard (reserveSlot in scheduler.ts, issueRelease in hold-release.ts) is now trait-based (isUnplannedForExecution resolves the `intake` trait plus `status:"planning"`/bootstrap-stub PROMPT.md) instead of keyed on the literal `todo` column id, so renamed custom intake columns (e.g. `ideas`, `Inbox`) are covered too. promoteHeldTask/releaseHeldTaskByEvent also route through the same guard (FN-7648).
- ce4f173: summary: Switching projects now lands on the Board instead of Settings when the last-visited view was Settings.
category: fix
dev: Extended resolveLandingTaskView in useViewState.ts to resolve "settings" (in addition to "command-center") to "board" for the auto-restored/hydrated landing view only; deep links (?view=settings) and explicit navigation still open Settings.
- efabdd6: summary: Removed the chat "Search in title only" toggle; chat search always matches message content and title.
category: fix
dev: Dropped searchInTitleOnly/setSearchInTitleOnly from useChat and the ChatView toggle button; content-search path (q param, matchedMessagePreview) is now always-on. Server GET /chat/sessions titleOnly param retained but unused by the client.
- 7c7b22e: summary: Automation live output no longer shows "Run failed" for runs that actually succeed.
category: fix
dev: Reconciles the live-run panel terminal status (ScheduledTasksModal/RoutineCard) to the authoritative POST/registry result and gates benign SSE teardown (post-terminal close, reconnect exhaustion) from being surfaced as a failure across both `/routines/:id/run/stream` and `/automations/:id/run/stream`.
- dfb084c: summary: Planner chat stop button now shows just the stop icon, not a text label.
category: fix
dev: StandardChatActionButton gains showStopText (defaults to showSendText); TaskPlannerChatTab sets showStopText={false}. aria-label "Stop generation" retained.
- e29fea3: summary: Restore the chat "Working…" indicator immediately when returning to a session with an active generation.
category: fix
dev: `useChat.ts` `selectSession` now reattaches on the authoritative `fetchChatSession` refresh whenever `isGenerating===true`, instead of requiring a populated `inFlightGeneration` snapshot that is null pre-first-delta. Guards against races (stale active session, already-open stream) and reuses `attachIfGenerating` (FN-7656).
- 511bcaf: summary: Retain GitHub issue import state when leaving and returning to Import Tasks.
category: fix
dev: Persists GitHubImportModal provider/tab/label filter/remote/selection per project via projectStorage (`kb-dashboard-github-import-state`) and hydrates on remount; falls back to the existing default-remote auto-detect when nothing is persisted.
- 97e4667: summary: Built-in workflow boards and Automations editors now label the intake column "Planning", not "Triage".
category: fix
dev: board-workflows canonical label map BUILTIN_WORKFLOW_COLUMN_LABELS.triage was still "Triage", overriding FN-7599's IR rename; set to "Planning". English schedule.columnTriage/taskColumnTriage/triageColumn set to "Planning" and dashboard locale copy re-synced. Also fixed board.triage (AgentDetailView task-column badge) and docs/dashboard-guide.md references. Column id "triage" unchanged.
- 7cf70b3: summary: The Command Center SDLC funnel now labels the intake stage "Planning", matching the renamed board column.
category: fix
dev: commandCenter.funnel.stage.triage, enteredInRange, and completionRateAria English strings (and SdlcFunnel.tsx t() fallbacks) changed to "Planning"/"Entered planning"/"in-range planning entrants"; dashboard locale copy re-synced. Aggregator stage key "triage" and the i18n key names are unchanged.
- aa534c1: summary: Auto-recover durable agents stuck in transient error state even when their manager is active.
category: fix
dev: SelfHealingManager durable-error recovery no longer requires a missing manager; manager-present durable non-ephemeral agents with a transient lastError and no active run are recovered under the existing cooldown/backoff/retry-budget guards (FN-7672).
- 297c744: summary: Task cards no longer show the steps breakdown while in the Planning column.
category: fix
dev: TaskCard `showProgressSection` now excludes the `triage` column, matching ListView; the breakdown appears once a task leaves Planning.
- a4fce60: summary: Align the quick-add workflow dropdown button height with Save/Fast/Subtask buttons.
category: fix
dev: `.quick-entry-workflow-trigger` in QuickEntryBox.css now re-asserts `.btn-sm`'s `padding: 4px 10px` locally so the shared global `.dep-trigger` `padding: 3px 8px` no longer shortens it by ~2px; other `.dep-trigger` surfaces (InlineCreateCard, NewTaskModal, TaskDetailModal, TaskForm) are unaffected (FN-7677).
- 83e7743: summary: On tablet widths, move terminal shortcuts/zoom controls into the bottom footer so they no longer overlap header icons.
category: fix
dev: Adds an isTabletTerminal flag (769–1024px, non-mobile) that renders the shared terminalActionControls fragment in the .terminal-status-bar footer (as FN-7560 did for mobile) instead of the header; true desktop (>1024px) keeps the header layout. Tablet footer keeps the desktop pin/pop-out toggles.
- a832b79: summary: Fix dashboard terminal showing a blank screen for seconds before the first prompt appears on open.
category: performance
dev: `useTerminalSessions` no longer awaits a discardable `listTerminalSessions()` round trip before auto-creating the first session when there are no persisted `kb-terminal-tabs`; the round trip only produced a no-op filter result in that case. Reload-with-persisted-tabs is unaffected — it still awaits session-list validation.
- fd541bb: summary: Keep the mobile top header on a single line after a foldable phone is unfolded and refolded.
category: fix
dev: `.header` now pins `flex-wrap: nowrap` explicitly and `.header-left`/`.header-actions` get an explicit `flex`/`min-width: 0` shrink-and-truncate contract promoted to the base rule (not gated to the `@media (max-width: 768px)` block), so the row cannot wrap even while a foldable's CSS layout viewport lags its `visualViewport` pane mid fold/unfold/refold. `useViewportMode` was audited and already recomputes correctly on that resize sequence (regression test added; no hook change needed).
- 07507f5: summary: Add a one-time server log hint pointing to shell-profile-hygiene docs when a login shell is slow to prompt.
category: performance
dev: FN-7688 investigated whether `--login` in `TerminalService.detectShell()`/`createSession()` is a meaningful first-prompt latency contributor. Finding: negligible on lean profiles, additive (~800ms+) when `.zprofile`/`.bash_profile` eagerly sources something slow (e.g. version manager init). `--login` is preserved unconditionally per FN-7686; added `SLOW_LOGIN_PROFILE_HINT_MS` (2000ms) threshold and a one-time, non-blocking `console.info` hint in `createSession()`'s PTY `onData` handler — never alters spawn args, timeouts, or the `retry-without-login` fallback. See `docs/solutions/developer-experience/login-shell-profile-latency.md`.
- 64d4bb7: summary: Fix Anthropic-compatible custom providers registering under an unregistered API key.
category: fix
dev: Aligns custom-provider-registry `resolveApiType("anthropic-compatible")` on "anthropic-messages" (the registered pi-ai api key), matching pi.ts `resolveCustomProviderApiType` and removing the latent "No API provider registered for api: anthropic" drift (FN-7690).
- 67cc027: summary: Fix merger awaiting-confirmation copy that implied a hard block when auto-merge proceeds automatically.
category: fix
dev: `decidePlannerRecovery` now accepts an additive `autoMergeWillProceed` flag (threaded from `allowsAutoMergeProcessing` in `PlannerRecoveryController.tick`) that only shapes the confirmation `reason` string; no gating/behavior change to `action`/`requiresConfirmation`/`sideEffectClass`.
- 0755fc5: summary: Fix the terminal rendering blank on mobile even though the shell prompt already loaded.
category: fix
dev: The global mobile `@media (max-width: 768px) { * { max-width: 100% } }` reset in styles.css also matched xterm's hidden character-measurement subtree (`.xterm-helpers` / `.xterm-char-measure-element`). That subtree's containing block is a 0x0 box, so `max-width: 100%` resolved to 0 and hard-capped xterm's character-cell measurement at 0 — FitAddon.fit() then proposed 0 columns and `.xterm-screen` (plus the WebGL canvas) collapsed to 0x0, so the prompt painted into a zero-size box. Exempt xterm's measurement subtree from that reset (`max-width: none`). Mobile-only; desktop was unaffected. Recurrence of FN-7620/FN-7686.
- 0c1a20b: summary: Fix workspace partial-land recovery losing the already-landed sub-repo sha.
category: fix
dev: merger-ai.ts landWorkspaceTask now recovers the EXACT proven landed commit (the task's own Fusion-Task-Id trailer commit, or the recorded landedSha when it is still an ancestor) via findProvenLandedCommit, instead of dropping it when the A1 trailer-fallback proved a sub-repo landed but its sha was never persisted. This avoids attributing a later unrelated integration tip to the repo after an intervening sub-repo land, so finalizeWorkspaceTask builds durable merge proof and the partial-land retry completes to done.
- 0c1a20b: summary: Fix workspace sub-repo worktree creation failing on absent shared branch.
category: fix
dev: worktree-acquisition.ts acquireWorkspaceRepoWorktree now strips the shared project integrationBranch/baseBranch overrides before forwarding to acquireTaskWorktree, so FN-7360's freshStartPoint resolution no longer tries to git-worktree-add a branch absent from the sub-repo.
- d8ce3f4: summary: Prevent redundant polling and a re-render loop in agent-card runtime-fallback badges.
category: fix
dev: AgentsView now caches one stable ref callback per viewport key (avoids an infinite re-render loop when IntersectionObserver is unavailable) and evicts it on unmount; the test-only toast-dedupe reset is guarded to a no-op in production builds.
- 3744fbc: summary: Clear stale generated mission fix features after their source feature passes validation.
category: fix
dev: Reconciles obsolete generated Fix Feature chains during validator pass handling and active mission recovery.
- a8c018f: summary: Stop the false "OAuth token expired" push notification on startup.
category: fix
dev: In ProjectEngine.start, OAuthRefreshScheduler.start() now runs before OAuthExpiryMonitor.start() so the proactive refresh renews a stale-but-refreshable access token before the refresh-blind monitor's first awaited check() reads `expires`. Ordering locked by an invocationCallOrder assertion in project-engine.test.ts.
- a734d9f: summary: Preserve Hermes chat session state and project runtime routing more reliably.
category: fix
dev: Refreshes cached project chat plugin runners and hardens Hermes CLI session/error handling.
- ac719d1: summary: Stop the usage telemetry log from growing without bound and bloating the Fusion database.
category: fix
dev: usage_events was absent from operational-log retention, so it grew unbounded (observed ~187k rows / ~28MB with nothing ever aged out). pruneOperationalLogs now prunes usage_events on the same operationalLogRetentionDays cadence, keyed off its `ts` column (not `timestamp`). Existing rows still require a one-time VACUUM to reclaim on-disk space.
## 0.56.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@runfusion/fusion",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,7 @@
# @fusion/core
## 0.57.0
## 0.56.1
## 0.56.0

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/core",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion core: task store, scheduler, settings, and shared domain types backing the Fusion AI coding agent.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,22 @@
# @fusion/dashboard
## 0.57.0
### Patch Changes
- @fusion/core@0.57.0
- @fusion/engine@0.57.0
- @fusion/i18n@0.39.22
- @fusion-plugin-examples/cli-printing-press@0.1.39
- @fusion-plugin-examples/compound-engineering@0.1.22
- @fusion-plugin-examples/dependency-graph@0.1.53
- @fusion-plugin-examples/roadmap@0.1.41
- @fusion-plugin-examples/cursor-runtime@0.1.41
- @fusion-plugin-examples/droid-runtime@0.1.48
- @fusion-plugin-examples/hermes-runtime@0.2.72
- @fusion-plugin-examples/openclaw-runtime@0.2.72
- @fusion-plugin-examples/paperclip-runtime@0.2.72
## 0.56.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/dashboard",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion dashboard: React UI and HTTP API server for monitoring and controlling the Fusion AI coding agent.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,13 @@
# @fusion/desktop
## 0.57.0
### Patch Changes
- @fusion/core@0.57.0
- @fusion/dashboard@0.57.0
- @fusion/engine@0.57.0
## 0.56.1
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "@fusion/desktop",
"productName": "Fusion",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"author": {
"name": "Runfusion",

View File

@@ -1,5 +1,11 @@
# @fusion/droid-cli
## 0.11.48
### Patch Changes
- @fusion-plugin-examples/droid-runtime@0.1.48
## 0.11.47
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/droid-cli",
"version": "0.11.47",
"version": "0.11.48",
"description": "First-party Fusion pi extension that routes LLM calls through the Droid CLI subprocess.",
"license": "MIT",
"private": true,

View File

@@ -1,5 +1,12 @@
# @fusion/engine
## 0.57.0
### Patch Changes
- @fusion/core@0.57.0
- @fusion/pi-claude-cli@0.57.0
## 0.56.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/engine",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion engine: executor, merger, scheduler, and automation runtime for the Fusion AI coding agent.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,11 @@
# @fusion/i18n
## 0.39.22
### Patch Changes
- @fusion/core@0.57.0
## 0.39.21
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/i18n",
"version": "0.39.21",
"version": "0.39.22",
"license": "MIT",
"description": "Fusion i18n: authored translation catalogs and shared i18next configuration for the Fusion dashboard and terminal UI.",
"type": "module",

View File

@@ -1,5 +1,7 @@
# @fusion/mobile
## 0.57.0
## 0.56.1
## 0.56.0

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/mobile",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion mobile: Capacitor wrapper around the Fusion dashboard for iOS and Android.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,7 @@
# @fusion/pi-claude-cli
## 0.57.0
## 0.56.1
## 0.56.0

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/pi-claude-cli",
"version": "0.56.1",
"version": "0.57.0",
"description": "Fusion vendored fork: pi coding-agent extension that routes LLM calls through the Claude Code CLI. Forked from rchern/pi-claude-cli (MIT). See UPSTREAM.md.",
"license": "MIT",
"private": true,

View File

@@ -1,5 +1,11 @@
# @fusion/plugin-sdk
## 0.57.0
### Patch Changes
- @fusion/core@0.57.0
## 0.56.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion/plugin-sdk",
"version": "0.56.1",
"version": "0.57.0",
"license": "MIT",
"description": "Fusion plugin SDK: types and helpers for authoring third-party plugins that extend the Fusion dashboard and engine.",
"homepage": "https://github.com/Runfusion/Fusion#readme",

View File

@@ -1,5 +1,11 @@
# @fusion-plugin-examples/auto-label
## 0.2.72
### Patch Changes
- @fusion/plugin-sdk@0.57.0
## 0.2.71
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion-plugin-examples/auto-label",
"version": "0.2.71",
"version": "0.2.72",
"type": "module",
"description": "Automatically labels tasks based on description content",
"keywords": [

View File

@@ -1,5 +1,11 @@
# @fusion-plugin-examples/ci-status
## 0.2.72
### Patch Changes
- @fusion/plugin-sdk@0.57.0
## 0.2.71
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion-plugin-examples/ci-status",
"version": "0.2.71",
"version": "0.2.72",
"type": "module",
"description": "Polls CI status for branches and provides a custom API to query results",
"keywords": [

View File

@@ -1,5 +1,11 @@
# @fusion-plugin-examples/notification
## 0.2.72
### Patch Changes
- @fusion/plugin-sdk@0.57.0
## 0.2.71
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion-plugin-examples/notification",
"version": "0.2.71",
"version": "0.2.72",
"type": "module",
"description": "Example Fusion plugin that sends webhook notifications on task lifecycle events",
"keywords": [

View File

@@ -1,5 +1,11 @@
# @fusion-plugin-examples/settings-demo
## 0.2.72
### Patch Changes
- @fusion/plugin-sdk@0.57.0
## 0.2.71
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion-plugin-examples/settings-demo",
"version": "0.2.71",
"version": "0.2.72",
"type": "module",
"description": "Example Fusion plugin demonstrating settings schema and runtime configuration",
"keywords": [

View File

@@ -1,5 +1,12 @@
# @fusion-plugin-examples/acp-runtime
## 0.1.22
### Patch Changes
- @fusion/core@0.57.0
- @fusion/plugin-sdk@0.57.0
## 0.1.21
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@fusion-plugin-examples/acp-runtime",
"version": "0.1.21",
"version": "0.1.22",
"type": "module",
"description": "ACP (Agent Client Protocol) runtime plugin for Fusion — drives any ACP-compatible agent over JSON-RPC/stdio",
"keywords": [

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