Align dashboard behavior and test expectations for the backfill-2 suite.
- restore the mobile agent delete action for idle, paused, and error states
- update the settings routing test to match the current Scheduling & Capacity button label
- make the EventSource mock behave like a constructed instance in the agents mobile tests
- expect the board mobile render flow to register the pageshow listener
Files changed:
packages/dashboard/app/components/AgentsView.tsx | 11 +++++++++++
.../components/__tests__/SettingsModalNodeRouting.test.tsx | 2 +-
.../app/components/__tests__/agents-view-mobile.test.tsx | 11 +++++++----
.../components/__tests__/board-mobile-initial-render.test.tsx | 2 +-
4 files changed, 20 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6090
Fusion-Task-Lineage: 19e880fe-dea7-4d51-b8e0-97fa184bb5ed
Make quick task entry open with its controls visible by default.
- default the quick entry textarea and disclosure controls to the expanded state
- update quick entry component tests to assert the new default-expanded behavior and collapse toggle flow
- tighten App settings-button selection to avoid collisions with quick-entry control labels
Files changed:
.../__tests__/quick-entry-expanded-height.test.tsx | 24 +--
.../dashboard/app/components/QuickEntryBox.tsx | 6 +-
.../app/components/__tests__/App.test.tsx | 8 +-
.../components/__tests__/QuickEntryBox.test.tsx | 174 ++++++++++-----------
4 files changed, 103 insertions(+), 109 deletions(-)
Fusion-Task-Id: FN-6081
Fusion-Task-Lineage: 37cce52f-170c-4f2a-b340-33bbe225f610
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
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
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
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
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
Swap the workflow toolbar actions so editing appears before creation.
- move the workflow editor pencil button ahead of the new workflow plus button in the board toolbar
- add assertions covering the full toolbar order when both actions are present
- add coverage for cases where only one workflow toolbar action is available
Files changed:
packages/dashboard/app/components/Board.tsx | 22 +++++++--------
packages/dashboard/app/components/__tests__/Board.test.tsx | 33 ++++++++++++++++++++++
2 files changed, 44 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-6038
Fusion-Task-Lineage: 4fb28d7c-3261-4d45-9363-2b340e4aea35
Keep mobile dashboard content aligned with the visible bottom-bar stack.
- include ICB bottom-offset compensation in mobile project content padding
- publish nav height from measured tab boxes with a safe fallback for unresolved safe-area padding
- add a mobile bottom-space regression test and include it in the dashboard UI shard
Files changed:
.../__tests__/mobile-bottom-space-layout.test.ts | 118 +++++++++++++++++++++
packages/dashboard/app/components/MobileNavBar.css | 7 +-
packages/dashboard/app/components/MobileNavBar.tsx | 31 +++++-
packages/dashboard/vitest.config.ts | 1 +
4 files changed, 151 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6032
Fusion-Task-Lineage: bcbf54e2-c089-40c5-b33c-35c39d981443
Quarantine the flaky dashboard chat manager test and keep it out of active API lanes.
- record packages/dashboard/src/__tests__/chat-manager.test.ts in the quarantine ledger with the current failure context and quarantine date
- exclude the quarantined chat-manager test from dashboard API backfill coverage so existing missions surface an explicit no-backfill decision
- exclude the quarantined chat-manager test from the broad dashboard API project so its status stays visible without destabilizing the suite
Files changed:
packages/dashboard/vitest.config.ts | 3 ++-
scripts/lib/test-quarantine.json | 8 +++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6012
Fusion-Task-Lineage: 34014c45-486e-443d-ae47-a1d301a396e1
Add first-load loading states so task activity and agent log views do not flash empty states.
- show a loading status row in the task detail Activity tab while detail history is still loading
- keep agent logs in a loading state until the active task/project context has completed its initial fetch
- add accessible loading markup, regression tests, and dashboard guide documentation for the new behavior
Files changed:
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/AgentLogViewer.css | 18 +++
.../dashboard/app/components/AgentLogViewer.tsx | 2 +-
.../dashboard/app/components/TaskDetailModal.css | 17 +++
.../dashboard/app/components/TaskDetailModal.tsx | 7 +-
.../components/__tests__/AgentLogViewer.test.tsx | 3 +-
.../components/__tests__/TaskDetailModal.test.tsx | 144 +++++++++++++++++++++
.../app/hooks/__tests__/useAgentLogs.test.ts | 74 +++++++++++
packages/dashboard/app/hooks/useAgentLogs.ts | 14 +-
9 files changed, 276 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6040
Fusion-Task-Lineage: cd4b8f7f-63cd-4d75-be00-d362e915f4e8
Expose default workflow model lane overrides directly in project settings.
- load and persist default workflow model lane overrides from the active project workflow
- add inline workflow lane status, reset, save, and advanced policy actions in project model settings
- add CSS contract and modal coverage for the workflow model action row spacing and placement
Files changed:
.../dashboard/app/components/SettingsModal.css | 20 ++
.../components/__tests__/SettingsModal.test.tsx | 20 +-
.../SettingsModal.workflow-model-lane-css.test.ts | 24 ++
.../settings/sections/ProjectModelsSection.tsx | 245 ++++++++++++++++++++-
4 files changed, 298 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-6027
Fusion-Task-Lineage: 981a5f01-f4b7-467e-9e2f-4ac8e4ed40fb
Open triage task details with long title or description text expanded by default.
- initialize and reset the task detail description expansion state from the task column
- keep manual Show more and Show less toggles working for the current task
- add rendering coverage for triage defaults, fallbacks, task switches, and icon mocks
Files changed:
packages/dashboard/app/components/TaskDetailModal.tsx | 6 +-
packages/dashboard/app/components/__tests__/TaskDetailModal.rendering.test.tsx | 154 +++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.test-helpers.ts | 11 ++
3 files changed, 168 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6039
Fusion-Task-Lineage: b3bd4911-58ae-4592-9dad-e9164081a4d9
Use the shared model picker for workflow lane settings instead of raw provider/model text entry.
- replace built-in workflow model provider/model string fields with combined dropdown controls in the Values tab
- fetch available models and save or clear paired provider/model workflow values together, including fallback lanes
- add regression coverage for dropdown rendering, selection, clearing, empty registries, and paired-key validation errors
- update dashboard and settings documentation to describe the shared workflow model picker behavior
Files changed:
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 22 +-
packages/dashboard/app/components/WorkflowSettingsPanel.tsx | 241 +++++++++++++++++++--
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 133 +++++++++++-
4 files changed, 369 insertions(+), 31 deletions(-)
Fusion-Task-Id: FN-6026
Fusion-Task-Lineage: 7f41120f-f764-4011-9aa5-a323e0aa64d6
Keep the workflow editor mobile-first selection flow usable and improve tap targets on phones.
- start the mobile workflow editor on the workflow list with no preselected workflow and show a select-a-workflow prompt
- keep mobile list/editor stage transitions in sync after create, duplicate, import, and delete actions
- increase workflow editor mobile touch targets and padding without changing desktop sizing
- add regression coverage for mobile viewport selection behavior and CSS touch-target scoping
- update the dashboard guide to document the mobile workflow editor behavior
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/WorkflowNodeEditor.css | 56 +++++++++++++++++-
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 24 ++++++--
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 36 ++++++++++++
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 68 ++++++++++++++++++++++
Fusion-Task-Id: FN-6033
Fusion-Task-Lineage: c9da29ef-c099-4e14-8671-24995106c78c
Align the chat stop button sizing with the send control and lock it with CSS coverage.
- set \.chat-input-stop width and height to 36px to match \.chat-input-send
- add a ChatView autosize test that asserts send and stop button dimension parity
Files changed:
packages/dashboard/app/components/ChatView.css | 4 ++--
.../__tests__/ChatView.chat-input-autosize.test.tsx | 12 ++++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6020
Fusion-Task-Lineage: d429f847-c32a-4fab-b214-215d8854ed5c
Keep summarization and PR metadata model selection on project settings while leaving workflow lanes on the workflow.
- restore the project summarization model lane in Project Models and replace per-phase workflow lanes with a workflow-settings redirect stub
- remove moved workflow model keys from project settings defaults/save paths and update settings docs/tests for the restored project lane behavior
- make PR metadata generation resolve its model from the title summarizer settings lane instead of task planning settings
Files changed:
docs/settings-reference.md | 4 +-
.../core/src/__tests__/settings-migration.test.ts | 18 +-
.../core/src/__tests__/settings-parity.test.ts | 17 +-
packages/core/src/__tests__/store-settings.test.ts | 54 ++--
.../core/src/__tests__/task-creation-hook.test.ts | 10 +-
packages/core/src/builtin-workflow-settings.ts | 24 --
packages/core/src/settings-schema.ts | 13 +-
.../components/__tests__/SettingsModal.test.tsx | 11 +-
.../app/components/settings/save-split.ts | 11 +-
.../settings/sections/ProjectModelsSection.tsx | 330 +++------------------
.../src/__tests__/pr-metadata-generator.test.ts | 25 +-
packages/dashboard/src/pr-metadata-generator.ts | 4 +-
12 files changed, 140 insertions(+), 381 deletions(-)
Fusion-Task-Id: FN-5994
Fusion-Task-Lineage: f7f6f1ff-5d06-4d16-b46d-644eb219e7c1
Fix the chat-manager race so the rescued dashboard test can run reliably again.
- wait for the first hanging prompt to be created before asserting generation-slot state in the chat-manager isolation test
- remove the dashboard chat-manager test from Vitest excludes so it runs in both backfill and default dashboard API projects
- clear the chat-manager entry from the flaky-test quarantine ledger after rescuing the test
Files changed:
packages/dashboard/src/__tests__/chat-manager.test.ts | 16 +++++++++++-----
packages/dashboard/vitest.config.ts | 3 +--
scripts/lib/test-quarantine.json | 8 +-------
3 files changed, 13 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-6017
Fusion-Task-Lineage: 5e3bd9ad-3502-4956-bab2-fa7b36f8bcab