Wait for workflow editor hydration before exercising save and rename flows.
- wait for the Save action and column inputs to render before editing workflow names
- switch the rename clicks to synchronous lookups after hydration to avoid async race flakiness
- keep the coverage focused on the existing save-and-close and dirty-switch scenarios
Files changed:
.../app/components/__tests__/WorkflowNodeEditor.test.tsx | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6150
Fusion-Task-Lineage: 98044a22-3f07-4a58-ad61-19ba6b372565
Preserve quick-entry mobile touch behavior for Fast and Priority controls.
- treat action touch targets as generic Elements so nested SVG taps still resolve to their parent buttons
- add mobile touch-action styling for quick-entry action buttons to improve tap handling
- extend QuickEntryBox mobile tests to cover Fast toggle, Priority picker, and SVG touch targets
Files changed:
packages/dashboard/app/components/QuickEntryBox.css | 5 +
packages/dashboard/app/components/QuickEntryBox.tsx | 2 +-
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 117 +++++++++++++++++----
3 files changed, 102 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-6145
Fusion-Task-Lineage: 2af1c142-25ba-41a8-ba4f-c58e38cc870a
Let the mobile workflow node editor use the full available screen height.
- replace the mobile inspector max-height cap with flex sizing so the editor stage can expand full screen
- preserve mobile inspector scrolling by setting a zero min-height in the stacked layout
- update the mobile CSS contract test to assert the new flex-based sizing rules
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 3 ++-
.../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6144
Fusion-Task-Lineage: 49d06acb-17c6-40fd-9c6d-3af98ddf8f6e
Restore pinned mobile chat scroll position when visibility-driven refetch hooks fire.
- re-anchor mobile chat to the bottom during visibility/pageshow refetch capture when the user was pinned
- tighten ChatView visibility restore regression tests to assert the synchronous re-anchor path directly
- remove the ChatView rooms test quarantine and restore the dashboard include list entry
Files changed:
packages/dashboard/app/components/ChatView.tsx | 6 +++++-
.../app/components/__tests__/ChatView.rooms.test.tsx | 17 ++++++++---------
.../app/components/__tests__/ChatView.test.tsx | 7 ++++---
packages/dashboard/vitest.config.ts | 2 +-
scripts/lib/test-quarantine.json | 8 +-------
5 files changed, 19 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-6142
Fusion-Task-Lineage: 2974cf0d-5512-4b24-ab0c-2d2fb63fd41a
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
Reorder the Quick Entry action row so the primary create controls appear first.
- move Save, Fast, GitHub, and Priority controls to the start of the Quick Entry actions row
- preserve the existing priority picker behavior while relocating its trigger and portal markup
- update QuickEntryBox tests to assert the new DOM order and keep focus-coverage stable after the reorder
Files changed:
packages/dashboard/app/components/QuickEntryBox.tsx | 225 +++++++++++----------
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 47 +++--
2 files changed, 145 insertions(+), 127 deletions(-)
Fusion-Task-Id: FN-6131
Fusion-Task-Lineage: d95401b9-4440-4c55-ad32-94df7d0c33fe
Prevent mobile quick-entry touches from stealing focus from the task textarea.
- intercept touch interactions on quick-entry action buttons before the browser refocuses them
- restore textarea focus after touch-triggered quick-entry actions complete
- avoid autofocus in the deps search input when the textarea is already focused
- add mobile regression coverage across the full quick-entry action button surface, including disabled buttons
Files changed:
packages/dashboard/app/components/QuickEntryBox.tsx | 32 +++++-
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 123 +++++++++++++++++++++
2 files changed, 153 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6128
Fusion-Task-Lineage: 598e6ba5-6e83-426c-9bf2-dd2ac4215092
Fix the branch authority helper and caller so the squash merge stays lint-clean.
- drop the unused `baseSha` parameter from `isBranchAuthoritativeForTask`
- update the merger authority probe to call the helper with the remaining arguments
Files changed:
packages/engine/src/branch-conflicts.ts | 1 -
packages/engine/src/merger.ts | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
Fusion-Task-Id: FN-6132
Fusion-Task-Lineage: c8d8352d-67f7-498b-8b6d-254375d42417
Keep the promote action pinned to the right edge of task card action rows.
- add `margin-left: auto` to the promote action send-back button styling
- preserve right alignment for the mobile action row breakpoint
- add TaskCard coverage for solo and multi-action mobile layouts
Files changed:
packages/dashboard/app/components/TaskCard.css | 5 +++
packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 40 ++++++++++++++++++++++
2 files changed, 45 insertions(+)
Fusion-Task-Id: FN-6129
Fusion-Task-Lineage: 70aed0c1-b007-4a71-9755-04535b630888
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
Add periodic bundle version polling so open dashboard tabs refresh after new deployments.
- add a production polling interval to version checks for visible dashboard tabs
- clear installed polling when version-check state resets to avoid duplicate timers in tests/runtime
- expand versionCheck coverage for poll-triggered mismatch detection, cooldown behavior, and cleanup
Files changed:
packages/dashboard/app/__tests__/versionCheck.test.ts | 115 +++++++++++++++++++++
packages/dashboard/app/versionCheck.ts | 27 ++++-
2 files changed, 140 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6124
Fusion-Task-Lineage: a211fc03-06fd-4142-8878-98ac60b70c13
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
Prevent stale terminal connection metadata from replaying after it has already been delivered.
- only retain scrollback and connected payloads when no listeners are registered yet
- clear buffered terminal events after live subscribers receive them
- add regression coverage for scrollback and connected replay behavior
Files changed:
.../app/hooks/__tests__/useTerminal.test.ts | 50 ++++++++++++++++++++++
packages/dashboard/app/hooks/useTerminal.ts | 23 ++++++----
2 files changed, 65 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-6116
Fusion-Task-Lineage: 5876fe24-2e90-4ef1-9e8b-5abce40555b4
Replace the empty lane toggle button with an accessible tappable header for workflow rows on mobile.
- make the full workflow lane header act as the collapse toggle
- add keyboard support plus hover and focus-visible states for the header control
- update Lane tests to cover header click, keyboard toggles, and removal of the empty icon button
Files changed:
packages/dashboard/app/components/Lane.css | 11 +++++++
packages/dashboard/app/components/Lane.tsx | 30 +++++++++++--------
packages/dashboard/app/components/__tests__/Lane.test.tsx | 35 +++++++++++++++++++---
3 files changed, 60 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-6118
Fusion-Task-Lineage: 0cc1b632-1e59-4d1d-b274-f1da53a503f4
Remove the workflow lane chevron while preserving collapse behavior.
- remove the chevron icon import and button contents from the workflow lane toggle
- keep the existing lane toggle button and accessible label behavior intact
- add a regression test that asserts the lane toggle renders without an svg icon
Files changed:
packages/dashboard/app/components/Lane.tsx | 5 +----
packages/dashboard/app/components/__tests__/Lane.test.tsx | 7 +++++--
2 files changed, 6 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6115
Fusion-Task-Lineage: ce865f17-1e29-4345-b0cd-d5038ca56333
Ensure the reliability view fills its flex container across loading, populated, and error states.
- add full-height styling for reliability loading and error states
- include reliability view in shared min-height reset for app content containers
- expand reliability view tests to assert width and height fill on desktop and mobile
Files changed:
packages/dashboard/app/components/ReliabilityView.css | 7 +++++++
.../app/components/__tests__/ReliabilityView.test.tsx | 14 ++++++++++----
packages/dashboard/app/styles.css | 3 ++-
3 files changed, 19 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-6112
Fusion-Task-Lineage: c5b2bd85-4024-4f88-b64d-dbc90b3cf2ed
Keep the Reliability view filling its flex parent across mobile and desktop states.
- add flex growth and min-width safeguards to the Reliability view, loading, and error containers
- add desktop and mobile regression coverage for loading, populated, and error rendering states
Files changed:
packages/dashboard/app/components/ReliabilityView.css | 6 +++
packages/dashboard/app/components/__tests__/ReliabilityView.test.tsx | 59 ++++++++++++++++++++++
2 files changed, 65 insertions(+)
Fusion-Task-Id: FN-6110
Fusion-Task-Lineage: 5fe1e5a7-f13a-4316-8c4e-b5c85a51ce86
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
Update the WorkflowNodeEditor CSS contract test to match the standalone mobile panel override selector.
- narrow the mobile selector contract assertion to the select and manage controls
- stop expecting the collapsed button in the standalone override rule
Files changed:
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Fusion-Task-Id: FN-6099
Fusion-Task-Lineage: 0e698ef2-c532-4a7d-9450-17b04f93be37
Keep QuickEntryBox expanded or collapsed after creating a task instead of forcing a reset.
- stop resetForm from collapsing the textarea and disclosure controls after successful task creation
- update QuickEntryBox tests to expect preserved visible controls after submit and preserved collapsed state when manually collapsed
- cover the submit flow where focus restoration keeps controls visible without changing user-selected disclosure state
Files changed:
.../dashboard/app/components/QuickEntryBox.tsx | 2 --
.../components/__tests__/QuickEntryBox.test.tsx | 38 +++++++++++++++++-----
2 files changed, 29 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-6104
Fusion-Task-Lineage: fd77c491-cd37-4a57-8270-3eb5e7ba3c94
Align the regular chat stop button with the composer control sizing while quarantining an unrelated flaky room test.
- define a shared chat input control size variable and apply it to send/stop buttons for consistent width and minimum height
- update the chat input autosize CSS test to assert the shared control size contract and textarea minimum height
- quarantine the unrelated flaky ChatView rooms test in the dashboard Vitest config and quarantine ledger per policy
Files changed:
packages/dashboard/app/components/ChatView.css | 20 +++++++++++++-------
.../__tests__/ChatView.chat-input-autosize.test.tsx | 16 +++++++++++-----
packages/dashboard/vitest.config.ts | 3 ++-
scripts/lib/test-quarantine.json | 8 +++++++-
4 files changed, 33 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-6103
Fusion-Task-Lineage: 3efc95ba-9369-4022-aa6e-f1981485caea
Ensure quick task model overrides flow through planning and submission.
- add planning model selection state to inline task creation and include it in submit payloads only when explicitly overridden
- extend the model selection modal with an optional planning-model picker that clears preset mode consistently with other manual overrides
- cover planning, combined overrides, and default omission behavior in inline create card and quick entry tests
Files changed:
packages/dashboard/app/components/InlineCreateCard.tsx | 26 ++++++++-
packages/dashboard/app/components/ModelSelectionModal.tsx | 45 +++++++++++++++
packages/dashboard/app/components/__tests__/InlineCreateCard.test.tsx | 67 +++++++++++++++++++++-
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 49 ++++++++++++----
4 files changed, 172 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-6101
Fusion-Task-Lineage: 7c1553d2-3edb-4b23-ad36-77756bbfe1dc
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
Improve ReliabilityView so pending and failed fetches render explicit UI states.
- add dedicated loading and error states to ReliabilityView while preserving existing data during background refreshes
- style the new reliability loading and error containers in the dashboard view CSS
- extend ReliabilityView tests to cover loading, fetch failure, and refresh behavior alongside the existing layout assertion
Files changed:
packages/dashboard/app/components/ReliabilityView.css | 25 ++++++++++
packages/dashboard/app/components/ReliabilityView.tsx | 41 ++++++++++++++---
packages/dashboard/app/components/__tests__/ReliabilityView.test.tsx | 53 ++++++++++++++++++++--
3 files changed, 109 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-6097
Fusion-Task-Lineage: c6949cc6-4383-4e53-8467-5656a101199e