Keep AI merge commit finalization running when the task disappears during settings resolution.
- fall back to a synthetic task stub before merging effective settings in runAiAgentForCommit
- add an engine regression test covering deleted-task settings degradation
- add a patch changeset for the published CLI package
Files changed:
.changeset/fn-6193-merger-deleted-task.md | 5 +++
.../src/__tests__/merger-settings-degrade.test.ts | 43 ++++++++++++++++++++++
packages/engine/src/merger.ts | 3 +-
3 files changed, 50 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6193
Fusion-Task-Lineage: 1d63d24e-1321-450c-95c9-ffc058fd8387
Prevent rebuilt dashboard tabs from reusing stale cached assets after a deploy.
- revalidate service-worker asset requests against the network before falling back to cache and bump the cache version
- suppress repeated version-change reloads for the same remote build and cover the new behavior with dashboard tests
- update engine heartbeat test expectations for summarized task creation metadata and add the published package changeset
Files changed:
.changeset/fn-blank-page-service-worker-assets.md | 3 ++
packages/dashboard/app/__tests__/pwa.test.ts | 11 ++++++
packages/dashboard/app/__tests__/versionCheck.test.ts | 28 ++++++++++++++
packages/dashboard/app/public/sw.js | 37 +++++++++++++++++-
packages/dashboard/app/versionCheck.ts | 45 ++++++++++++++++++++++
packages/engine/src/__tests__/heartbeat-executor.test.ts | 3 +-
packages/engine/src/__tests__/heartbeat-session-prompt.test.ts | 7 +++-
7 files changed, 131 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6180
Fusion-Task-Lineage: 4f07e5f0-56c7-4241-8719-f576dfd8613e
Prevent the NodesView tablet overlay from letting underlying content bleed through.
- make the tablet nodes management overlay fixed, fullscreen, and scrollable with the app background
- add a regression test that asserts the tablet overlay media query and rule properties
- add a patch changeset for the published CLI package bundle
Files changed:
.changeset/fn-6179-tablet-nodes-overlay.md | 5 +++++
packages/dashboard/app/components/NodesView.css | 12 ++++++++++-
.../app/components/__tests__/NodesView.test.tsx | 23 ++++++++++++++++++++--
3 files changed, 37 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6179
Fusion-Task-Lineage: 9455b38e-c32f-4865-917a-a06c1cb38840
Make the mobile Nodes screen open as a full-screen overlay above the header and nav.
- add a mobile-only fixed fullscreen overlay style for the nodes management panel
- preserve safe-area spacing and scroll behavior while keeping the overlay above mobile navigation
- add a NodesView regression test that asserts the mobile overlay CSS contract and close control rendering
Files changed:
.changeset/fn-6170-mobile-nodes-fullscreen.md | 5 +++
packages/dashboard/app/components/NodesView.css | 11 +++++
.../app/components/__tests__/NodesView.test.tsx | 52 ++++++++++++++++++++++
3 files changed, 68 insertions(+)
Fusion-Task-Id: FN-6170
Fusion-Task-Lineage: 16995d9f-6b5e-4f15-9367-7eccbd3153d0
Handle in-review tasks with status none as retryable when execution or merge retry state is stranded.
- treat in-review tasks with status "none" plus incomplete execution or prior merge attempts as retryable across the CLI, extension, and dashboard routes
- send stranded execution retries back to todo with preserved progress and keep stranded merge retries in-review while clearing merge retry state
- add CLI, extension, and dashboard regression coverage and publish a patch changeset for @runfusion/fusion
Files changed:
.changeset/fuzzy-ravens-retry.md | 5 +
packages/cli/src/__tests__/extension.test.ts | 147 +++++++++++++++++++++
packages/cli/src/commands/__tests__/task.test.ts | 147 +++++++++++++++++++--
packages/cli/src/commands/task.ts | 59 ++++++++-
packages/cli/src/extension.ts | 39 ++++--
packages/dashboard/src/__tests__/routes-tasks-ops.test.ts | 134 +++++++++++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 30 +++--
7 files changed, 528 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-6166
Fusion-Task-Lineage: cf78b180-ded4-4b6f-8e98-35e6f309e1d4
Prevent mobile quick-entry action taps from being swallowed by browser touch gestures.
- apply a mobile touch-action override to quick-entry action containers and their descendants
- keep the existing mobile button sizing while removing the redundant per-button touch-action rule
- add a regression test that inspects the mobile CSS rule covering quick-entry action controls
Files changed:
.changeset/quick-entry-mobile-touch.md | 5 +++++
packages/dashboard/app/components/QuickEntryBox.css | 8 ++++----
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 17 +++++++++++++++++
3 files changed, 26 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6153
Fusion-Task-Lineage: e915bb06-2c45-4d96-b719-2b7efcf6f986
The shared delegated touch handler on .quick-entry-actions already uses
closest("button") to resolve taps that land on child SVG elements — delivered
via FN-6145. This changeset documents the fix scoped to the GitHub tracking
toggle and adds explicit regression test coverage for that control.
Fusion-Task-Id: FN-6148
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Treat already-finalized or paused workflow-graph exits as benign instead of failure-worthy.
- log info-level benign messages when workflow graph runs end after a task is paused or has already advanced out of in-progress
- keep true in-progress graph failures on the existing failed-and-handoff path with failure logging
- add executor recovery coverage for todo, in-review, done, paused, and genuine failure cases
- add a patch changeset for the published CLI package
Files changed:
.changeset/fn-6141-benign-graph-exit.md | 5 +
.../engine/src/__tests__/executor-recovery.test.ts | 137 ++++++++++++++++++++-
packages/engine/src/executor.ts | 23 ++--
3 files changed, 150 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-6141
Fusion-Task-Lineage: 8d29159a-8d7a-4e84-b05a-fe83f6ccbb78
Convert the built-in PR lifecycle into a reusable fragment instead of a selectable task workflow.
- mark builtin:pr-workflow as a fragment and exclude fragments from default-enabled built-ins
- hide built-in fragments from the General settings workflow toggles
- update core and dashboard tests to assert fragment behavior and reject task selection of the PR lifecycle fragment
- add a changeset for the published CLI package
Files changed:
.changeset/pr-lifecycle-fragment.md | 5 +++++
.../core/src/__tests__/builtin-workflows.test.ts | 24 ++++++++++++++++------
packages/core/src/builtin-workflows.ts | 7 ++++---
packages/core/src/store.ts | 2 +-
.../__tests__/WorkflowNodeEditor.test.tsx | 3 ++-
.../settings/sections/GeneralSection.tsx | 4 +++-
6 files changed, 33 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-6137
Fusion-Task-Lineage: d959ba3b-2e50-4c9b-a1fa-161776939403
Treat foreign task-attributed commits in branch ranges as informational instead of blocking worktree acquisition or branch authority checks.
Fusion-Task-Id: FN-6131
Filter active task diff displays to commits attributed to the current task when a branch range includes foreign task commits. This keeps task cards and Changes tabs from showing inherited branch stacks as task-owned file changes.
Fusion-Task-Id: FN-6117
Turn on the workflow rollout flags by default and update docs/tests for the new opt-out behavior.
- default workflowColumns, workflowGraphExecutor, workflowInterpreterDualObserve, and workflowInterpreterAuthoritative to enabled in global settings
- update workflow docs and concepts to describe explicit flag-off overrides instead of default-off rollout gating
- remove redundant demo/test setup that manually enabled workflow columns and keep characterization coverage for both enabled and disabled states
- add a changeset for the published CLI package documenting the default-on workflow rollout
Files changed:
.changeset/fn-6126-workflow-flags-default-on.md | 5 +++++
CONCEPTS.md | 4 ++--
demo/seed.ts | 1 -
docs/workflow-steps.md | 10 +++++-----
packages/core/src/__tests__/move-task-characterization.test.ts | 4 +---
packages/core/src/settings-schema.ts | 7 ++++++-
packages/core/src/types.ts | 4 +++-
packages/core/src/workflow-columns-settings.ts | 4 ++--
8 files changed, 24 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-6126
Fusion-Task-Lineage: 334283a6-e80a-42d0-bf66-68f88a12e287
Expose the dashboard file viewer to plugin views and wire Compound Engineering artifacts to it.
- add an openFile callback to the dashboard plugin view context and pass through the app host implementation
- switch Compound Engineering artifact Open actions to the built-in file viewer with matching styling and coverage
- document the new plugin context capability and add a published changeset for the CLI package
Files changed:
.changeset/ce-docs-built-in-viewer.md | 5 +++
docs/PLUGIN_AUTHORING.md | 2 +-
packages/dashboard/app/App.tsx | 1 +
packages/dashboard/app/plugins/types.ts | 2 ++
.../src/dashboard-interop.d.ts | 1 +
.../src/dashboard/CompoundEngineeringView.css | 16 +++++++++
.../src/dashboard/CompoundEngineeringView.tsx | 24 +++++++-------
.../__tests__/CompoundEngineeringView.test.tsx | 38 ++++++++++++++++++++++
8 files changed, 76 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-6119
Fusion-Task-Lineage: 8feb461c-b1d2-4059-9aa1-ffc756d15196
Ensure agent-created untitled tasks still request AI-generated titles even when project auto-summarization is disabled.
- force summarize=true for agent-created tasks that do not provide an explicit title
- add engine tests covering untitled, titled, and title-generation behavior with autoSummarizeTitles disabled
- document the agent-task summarization behavior in settings docs
- add a patch changeset for the published CLI package
Files changed:
.changeset/agent-task-title-summaries.md | 5 ++
docs/settings-reference.md | 2 +-
packages/engine/src/__tests__/agent-tools.test.ts | 63 +++++++++++++++++++++++
packages/engine/src/agent-tools.ts | 1 +
4 files changed, 70 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6107
Fusion-Task-Lineage: d0c25981-a5cb-48ca-b835-9267817b4edd
Open workflow-mode edits on the workflow the user already selected.
- pass the workflow editor's initial workflow id through AppModals
- preselect the matching workflow in WorkflowNodeEditor before defaulting to the first workflow
- skip the mobile workflow list stage when a valid initial workflow is already selected
- add dashboard tests for desktop selection, missing-id fallback, and mobile deep-link behavior
- add a patch changeset for @runfusion/fusion
Files changed:
.../fn-6088-workflow-editor-selected-workflow.md | 5 +++
packages/dashboard/app/components/AppModals.tsx | 1 +
.../app/components/WorkflowNodeEditor.tsx | 37 ++++++++++++++++++++--
.../__tests__/WorkflowNodeEditor.test.tsx | 34 ++++++++++++++++++++
4 files changed, 74 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6088
Fusion-Task-Lineage: 88a0cd03-2112-4706-b6b5-4cbebdcae234
Suppress legacy stalledReview hydration for tasks already owned by the merge queue and avoid repeated mergeable-review re-enqueue churn for queued tasks.
Fusion-Task-Id: FN-6088
Right-align the task card promote action within its action row.
- add auto margin to the promote action so it anchors to the row's right edge
- cover the promote action alignment with a TaskCard CSS regression test
- add a patch changeset for the published CLI package
Files changed:
.changeset/fn-6092-promote-button.md | 5 +++++
packages/dashboard/app/components/TaskCard.css | 1 +
.../app/components/__tests__/TaskCard.test.tsx | 21 +++++++++++++++++++++
3 files changed, 27 insertions(+)
Fusion-Task-Id: FN-6092
Fusion-Task-Lineage: eacd596e-c810-44fd-b8ec-05c76988649f
Treat persisted merge queue ownership as an active merge-lane owner when hydrating in-review stall state and when self-healing scans for ghost, stalled, or completion-handoff-limbo tasks.
Also clear false completion-handoff exhaustion for tasks that are still owned by the merge queue so previously poisoned review tasks can continue merging.
Fusion-Task-Id: FN-6086
Workflow-column hold releases now participate in active file-scope leases before moving tasks into in-progress, preserving overlapBlockedBy card badges and scheduler blocking.
Fusion-Task-Id: FN-6082
Workflow-column hold releases now reserve against the active worktree count before moving tasks into in-progress, preventing restart bursts from exceeding maxWorktrees.
Fusion-Task-Id: FN-6084
Keep scheduler capacity checks aligned with fresh task state during workflow dispatch.
- bypass the startup slim-list memo when scheduling and after workflow hold release sweeps
- clear the startup slim-list memo when task.json writes move tasks between columns
- treat capacity-exhausted moveTask rejections as queued dispatches, log the reason, and cover the behavior with scheduler/store tests
- add a patch changeset for the published CLI package
Files changed:
.changeset/workflow-capacity-scheduler.md | 5 +++
packages/core/src/__tests__/store-movement.test.ts | 15 ++++++++
packages/core/src/store.ts | 1 +
packages/engine/src/__tests__/scheduler.test.ts | 40 ++++++++++++++++++++--
packages/engine/src/scheduler.ts | 25 ++++++++++----
5 files changed, 77 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6063
Fusion-Task-Lineage: 80ddc0e7-f78d-483c-886a-27c4c07bde7a
Ensure the bundled dependency graph stretches to the full available dashboard width.
- add flex sizing and min-width rules so the dependency graph fills its parent container
- cover empty-state and populated mobile-width layouts with CSS-backed flex sizing assertions
- add a patch changeset for the published CLI bundle
Files changed:
.changeset/sharp-graphs-stretch.md | 5 +++
plugins/fusion-plugin-dependency-graph/src/DependencyGraph.css | 3 ++
plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.test.tsx | 44 ++++++++++++++++++++++
3 files changed, 52 insertions(+)
Fusion-Task-Id: FN-6019
Fusion-Task-Lineage: a34b2bdd-d489-4e84-9604-e6265bce733a