Ensure the mobile workflow editor keeps the React Flow surface tall enough for edges to render correctly.
- add a full-height mobile rule for the workflow editor React Flow surface
- extend the mobile CSS contract test to assert the height requirement
- broaden the selector width test to cover the collapsed workflow selector button
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 1 +
.../app/components/__tests__/WorkflowNodeEditor.css.test.ts | 6 +++++-
2 files changed, 6 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6079
Fusion-Task-Lineage: a6f1de35-ce99-4673-bfaf-183124969a7c
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
Update dashboard tests to mirror constructor-based browser APIs and xterm addons.
- rewrite SessionTerminal mobile test doubles as constructable function mocks so xterm and addon instances initialize like real classes
- replace the useDocuments AbortController stub with a class-based mock to preserve constructor semantics during fetch cancellation tests
Files changed:
.../__tests__/SessionTerminal.mobile.test.tsx | 21 +++++++++++++++++----
.../app/hooks/__tests__/useDocuments.test.ts | 8 ++++----
2 files changed, 21 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-6078
Fusion-Task-Lineage: d8e0a9aa-6c7c-44c1-b9d4-5196924531c1
Preserve unsaved workflow value edits made while a save request is in flight.
- track the keys included in the current save request before sending it
- clear only the saved keys after a successful save so newer edits remain pending
- add regression coverage for mid-flight edits that trigger a follow-up save
Files changed:
packages/dashboard/app/components/WorkflowSettingsPanel.tsx | 7 +++-
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 41 +++++++++++++++++++++-
2 files changed, 46 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6073
Fusion-Task-Lineage: 31e05269-d51d-40c0-9691-87e61d464992
Ensure the SettingsModal quality-settings tests start from a fully reset mock state.
- replace `vi.clearAllMocks()` with `vi.resetAllMocks()` in the SettingsModal test `beforeEach`
- preserve existing timer, storage, and plugin UI cache cleanup around each test
Files changed:
packages/dashboard/app/components/__tests__/SettingsModal.test.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Fusion-Task-Id: FN-6067
Fusion-Task-Lineage: 90250b2f-2572-4cfe-92e2-e9827a2a605c
Add an inline task-detail action to summarize descriptions into titles.
- add a read-mode "Summarize as title" control in Task Detail for editable tasks with descriptions
- call the title summarizer, persist the generated title, and show loading/success/error feedback
- cover button visibility, pending, success, error, and mobile behavior in Task Detail tests
- document the new Task Detail modal action in the dashboard guide
Files changed:
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/TaskDetailModal.css | 47 +++++++
.../dashboard/app/components/TaskDetailModal.tsx | 56 +++++++-
.../__tests__/TaskDetailModal.test-helpers.ts | 5 +-
.../components/__tests__/TaskDetailModal.test.tsx | 145 +++++++++++++++++++++
5 files changed, 247 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-6059
Fusion-Task-Lineage: ed5a2f1b-a490-45f7-a747-d28c345f143b
Treat previously recorded unlinked-mission advisories as authoritative across insight states.
- remove the generated-only insight filter when checking for an existing unlinked mission advisory
- suppress duplicate advisories even when the existing insight is dismissed, archived, or confirmed
- expand reporter coverage to assert the broader duplicate-detection behavior and insight query shape
Files changed:
.../unlinked-missions-advisory-reporter.test.ts | 49 +++++++++++++---------
.../src/unlinked-missions-advisory-reporter.ts | 1 -
2 files changed, 29 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-6050
Fusion-Task-Lineage: 5b9274f7-baf6-40c1-8a88-2fcc86c7ef14
Restore the SettingsModal project models workflow-lane test setup so runs start from a clean browser state.
- import and call testing-library cleanup after each test
- reset timers, plugin UI slot cache, and browser storage in test hooks
- unstub globals during teardown to prevent cross-test leakage
Files changed:
.../dashboard/app/components/__tests__/SettingsModal.test.tsx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6036
Fusion-Task-Lineage: 69976a8b-272f-43a4-b61e-538993f930c8
Ensure limbo recovery attempts count only when auto-merge requeue is actually accepted.
- require completion-handoff recovery to enqueue merge work and confirm the requeue callback accepted the handoff before incrementing recovery counters
- return a boolean from the in-process runtime auto-merge requeue hook so self-healing can distinguish accepted versus rejected handoffs
- add coverage for rejected requeues, accepted retries, exhaustion behavior, and stalled in-review tasks that should not be deadlocked by rejected limbo recoveries
Files changed:
.../completion-handoff-limbo.test.ts | 126 ++++++++++++++++-----
.../in-review-stall-deadlock-disposition.test.ts | 43 +++++++
packages/engine/src/runtimes/in-process-runtime.ts | 2 +-
packages/engine/src/self-healing.ts | 42 ++++---
4 files changed, 170 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-6070
Fusion-Task-Lineage: 9634dc24-6045-4ee2-baec-d6e1d71a46b1
Keep workflow editing usable on mobile while preserving related dashboard controls.
- allow the standalone project selector to expose a Manage Projects action in single-project layouts
- improve the mailbox resize handle contrast for better visibility
- make the workflow editor canvas and React Flow surface shrink and fill correctly without mobile horizontal overflow
- add CSS contract coverage for desktop and mobile workflow editor width behavior
Files changed:
packages/dashboard/app/components/Header.tsx | 4 +++-
packages/dashboard/app/components/MailboxModal.css | 2 +-
.../dashboard/app/components/ProjectSelector.tsx | 15 +++--
.../app/components/WorkflowNodeEditor.css | 28 +++++++++
.../__tests__/WorkflowNodeEditor.css.test.ts | 66 ++++++++++++++++++++++
5 files changed, 109 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6034
Fusion-Task-Lineage: e7a784ff-188a-4538-a2be-f75484f10aa4
Wait for the workflow editor to finish hydrating before exercising the inline rename flow.
- wait for the Save action and rendered column inputs before clicking the workflow name strip
- switch the workflow name click to a synchronous lookup once the editor is stable
- preserve the dirty-rename cancel assertion while removing the hydration race from the test
Files changed:
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6061
Fusion-Task-Lineage: 3c7d781c-c1de-4c8f-9c15-670d5bf8193f
Restore the chat manager API suite to the dashboard curated quality gate.
- move `chat-manager.test.ts` back into the curated dashboard API quality project
- remove the temporary chat-manager quarantine and broad vitest excludes that kept it out of coverage
- stabilize chat-manager timing/subscriber tests with fake timers and explicit unsubscribe cleanup
- align the agent import route mock so the rescued suite uses the expected CLI settings stub
Files changed:
$(git diff --cached --stat)
Fusion-Task-Id: FN-6069
Fusion-Task-Lineage: e70e7817-9fe6-4e80-8b53-8f99c6214941
Keep the dashboard curated inventory guard aligned with the current dashboard test surface.
- add the newly required @fusion/core exports to the agent import route test mock
- teach the test inventory script to request file-only vitest listings for dashboard curated checks
- extend the dashboard curated skiplist with the pre-existing chat manager exclusion
Files changed:
packages/dashboard/src/__tests__/routes-agent-import.test.ts | 3 +++
scripts/check-test-inventory.mjs | 5 +++--
scripts/lib/dashboard-curated-skiplist.json | 4 ++++
3 files changed, 10 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6066
Fusion-Task-Lineage: 51e3c42c-d642-4873-8201-636a420d0991
Adjust the reliability test to match the queued advisory retry path.
- update the plan-review UNAVAILABLE assertion to expect the task to requeue instead of fail
- assert the advisory path clears the error while incrementing the retry counter
- keep coverage that pending review should not record the executor review-pending failure
Files changed:
packages/engine/src/__tests__/reliability-interactions/executor-pending-review-skip-retry.test.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6065
Fusion-Task-Lineage: 1ef13146-f19b-4735-9ec5-3f00eff6e575
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
Make the mobile workflow editor easier to use by collapsing competing panels and updating coverage.
- add a mobile inspector toggle that collapses node details and re-expands on node selection
- default the templates palette to collapsed on mobile and tighten mobile toolbar/layout styling to avoid overlap
- remove the stale workflow-id preselection path from the editor and align workflow edge/mobile regression coverage
- drop the unused modal prop wiring so the editor API matches the merged implementation
Files changed:
packages/dashboard/app/components/AppModals.tsx | 1 -
.../app/components/WorkflowNodeEditor.css | 61 +++++++++
.../app/components/WorkflowNodeEditor.tsx | 63 +++++++---
.../__tests__/WorkflowNodeEditor.css.test.ts | 21 ++++
.../__tests__/WorkflowNodeEditor.test.tsx | 139 +++++++++++----------
5 files changed, 200 insertions(+), 85 deletions(-)
Fusion-Task-Id: FN-6058
Fusion-Task-Lineage: d037832f-8bd8-4e3d-b31b-e30cd9752838
Keep GitHub import previews fully readable and scrollable on mobile while preserving desktop truncation.
- allow the active mobile preview pane to size and scroll correctly within the modal
- show full issue and pull request bodies on mobile while keeping desktop previews truncated
- add regression coverage for mobile scrolling, no-description fallbacks, and mobile/desktop body rendering
Files changed:
packages/dashboard/app/components/GitHubImportModal.css | 18 +++
packages/dashboard/app/components/GitHubImportModal.tsx | 18 ++-
packages/dashboard/app/components/__tests__/GitHubImportModal.test.tsx | 160 +++++++++++++++++++++
3 files changed, 190 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6044
Fusion-Task-Lineage: 43b6e686-a34f-4fec-9929-b4d28c12ac7a
Open the board workflow editor directly to the selected workflow, including on mobile.
- pass the selected workflow id from the board toolbar through app modal state into the workflow editor
- preselect the requested workflow when loading workflows, while preserving settings/create entry points and mobile fallback behavior
- cover the new workflow targeting behavior in board, modal manager, and workflow editor tests and document the mobile editor flow
Files changed:
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/App.tsx | 4 +-
packages/dashboard/app/components/AppModals.tsx | 1 +
packages/dashboard/app/components/Board.tsx | 6 +-
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 13 ++++-
packages/dashboard/app/components/__tests__/Board.test.tsx | 4 ++
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 68 ++++++++++++++++++++++
packages/dashboard/app/hooks/__tests__/useModalManager.test.ts | 42 +++++++++++++
packages/dashboard/app/hooks/useModalManager.ts | 16 +++--
Fusion-Task-Id: FN-6037
Fusion-Task-Lineage: e983e699-5376-434f-af03-39ce5a300029
Prefer the origin remote when preselecting GitHub imports in the dashboard modal.
- default the GitHub import modal to the origin remote when multiple remotes are available
- keep the remote picker unselected when multiple remotes exist without an origin entry
- expand dashboard tests to cover origin defaults for issues, pull requests, and mobile flows
Files changed:
.../dashboard/app/components/GitHubImportModal.tsx | 16 ++--
.../__tests__/GitHubImportModal.test.tsx | 95 ++++++++++++++++------
2 files changed, 77 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-6043
Fusion-Task-Lineage: b03b621d-757a-422c-b31c-ca0c34c3c168
- align triage prompt templates on impacted-first verification
- guard verification max lifetime when timeout is disabled
- share idle semaphore leak recovery across scheduler and triage
Fusion-Task-Id: FN-6043