Keep the mobile workflow editor stage from stretching the canvas wrapper and shrinking the full-screen view.
- adjust the mobile editor-stage canvas wrapper flex rule to avoid consuming the full stage height
- extend the WorkflowNodeEditor mobile CSS contract test to lock the updated flex behavior
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 2 +-
.../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6162
Fusion-Task-Lineage: b09d3317-cf22-4fbf-a732-9f4829c1cfd8
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
Rescue the dashboard board workflow toolbar coverage and rotate the active quarantine.
- wait for the workflow toolbar itself before asserting board workflow actions in Board.test.tsx
- remove Board.test.tsx from the dashboard vitest quarantine list
- quarantine WorkflowNodeEditor.test.tsx with an updated ledger entry for the newly observed flake
Files changed:
packages/dashboard/app/components/__tests__/Board.test.tsx | 4 ++--
packages/dashboard/vitest.config.ts | 4 +++-
scripts/lib/test-quarantine.json | 4 ++--
3 files changed, 7 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-6156
Fusion-Task-Lineage: c91c3542-fdec-426a-8e63-3edb3f5d34e5
Guard the U8 authoring workflow test against editor hydration races.
- wait for the workflow column panel before opening the Code palette
- wait for the code node to render before reading the TypeScript source textarea
- document the flake class to align this test with the existing palette-add race fix
Files changed:
.../dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6157
Fusion-Task-Lineage: 4009cbb5-8217-4eae-8889-e047ec31bee3
Keep the workflow prompt expander usable in the fullscreen editor across desktop and mobile.
- render the expanded prompt and gate editor in a document-body portal instead of reusing the inline inspector container
- keep the inline prompt textarea compact while wiring fullscreen edits, focus, and collapse controls through the portal overlay
- extend workflow node editor coverage for desktop and mobile fullscreen expand, collapse, Escape, empty prompt, and edit persistence flows
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 81 +++++++------
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 127 +++++++++++++++++++--
2 files changed, 164 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-6155
Fusion-Task-Lineage: 5d0a6367-932a-4fbc-bded-ebad3073d1a6
Let the mobile workflow node editor inspector use the full available height.
- remove the mobile inspector max-height cap so the editor stage can expand full screen
- update the WorkflowNodeEditor mobile CSS contract test to assert the new max-height rule
- quarantine the unrelated flaky dashboard Board test and record it in the quarantine ledger
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 1 +
.../app/components/__tests__/WorkflowNodeEditor.css.test.ts | 1 +
packages/dashboard/vitest.config.ts | 2 +-
scripts/lib/test-quarantine.json | 8 +++++++-
4 files changed, 10 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6154
Fusion-Task-Lineage: 14928ad1-dc84-461b-9adf-b5ee079e3b0d
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
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>
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
Keep the Compound Engineering interview transcript full-width and pinned to the latest messages when appropriate.
- expand the Compound Engineering view and transcript containers so the interview flow can fill the available panel width and height
- auto-scroll the transcript on first load and while new messages arrive if the viewer is still following the bottom
- preserve user scroll position when they scroll away from the bottom and cover the transcript follow behavior with tests
Files changed:
plugins/fusion-plugin-compound-engineering/src/dashboard/CeFlow.tsx | 53 ++++++++-
plugins/fusion-plugin-compound-engineering/src/dashboard/CompoundEngineeringView.css | 28 ++++-
plugins/fusion-plugin-compound-engineering/src/dashboard/__tests__/CeFlow.test.tsx | 132 ++++++++++++++++++++-
3 files changed, 207 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6120
Fusion-Task-Lineage: 1f7152f3-5af0-4db3-a767-96bca06b93c3
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