Replace raw dashboard RGB alpha colors with color-mix token expressions and guard the global CSS surface.
- Converted global theme shadow, state, mission, event, and theme-data alpha colors from raw rgba() to color-mix() expressions.
- Added CSS fixture loading for theme-data.css and a regression test banning raw rgb/rgba outside var() fallbacks across global app CSS.
- Documented the stricter dashboard styling rule for global and theme token CSS.
Files changed:
docs/dashboard-guide.md | 2 +-
.../__tests__/global-theme-css-no-raw-rgba.test.ts | 68 +++
packages/dashboard/app/public/theme-data.css | 573 +++++++++++----------
packages/dashboard/app/styles.css | 49 +-
packages/dashboard/app/test/cssFixture.ts | 7 +
5 files changed, 389 insertions(+), 310 deletions(-)
Fusion-Task-Id: FN-6489
Fusion-Task-Lineage: 7c466971-d15c-4382-a24b-1b32eea71974
Enable the task-detail Chat composer to submit messages with standard Enter behavior.
- Submit non-empty task chat drafts on plain Enter while preserving Shift+Enter newline entry and IME composition safety.
- Keep Cmd/Ctrl+Enter as a supported send path through the same handler.
- Document the composer keyboard shortcuts and add dashboard tests for steering, refinement, newline, shortcut, and composition behavior.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/tiny-tasks-chat-enter.md | 5 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.tsx | 13 ++-
.../app/components/__tests__/TaskChatTab.test.tsx | 120 +++++++++++++++++++++
4 files changed, 136 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6415
Fusion-Task-Lineage: 7d200bf6-5130-4fb8-b59c-66bccffe4265
Ensure workflow-mode boards fill the mobile viewport while preserving internal column scrolling.
- Reassert the mobile flex fill chain for project content, workflow board wrappers, and workflow columns.
- Extend mobile board regression coverage across empty/populated workflow states with and without the toolbar.
- Document the workflow board collapse root cause and add a transient temp-dir isolation guard test.
Files changed:
docs/dashboard-guide.md | 1 +
.../ui-bugs/mobile-workflow-board-fill-chain.md | 61 +++++++++++++
.../__tests__/board-mobile-initial-render.test.tsx | 101 +++++++++++++++++++++
packages/dashboard/app/styles.css | 52 +++++++++++
scripts/__tests__/check-test-isolation.test.mjs | 23 +++++
scripts/check-test-isolation.mjs | 12 ++-
6 files changed, 249 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6397
Fusion-Task-Lineage: ddee773d-6d3a-46d1-b1c7-f601a961365e
Styles the simple workflow editor so its mobile-style controls are available and documented across desktop and narrow layouts.
- Move simple editor tab, add, action, and touch-target styling out of the mobile-only media query.
- Cover desktop simple editor affordances for custom and built-in workflows with regression tests.
- Document desktop simple editor tabs and the surfaced workflow action buttons.
Files changed:
docs/dashboard-guide.md | 6 +-
.../app/components/WorkflowNodeEditor.css | 286 +++++++++++----------
.../__tests__/WorkflowNodeEditor.test.tsx | 53 ++++
3 files changed, 201 insertions(+), 144 deletions(-)
Fusion-Task-Id: FN-6381
Fusion-Task-Lineage: fd7f1ada-6e50-4d92-b455-7f38fb46c1e2
Add a full-modal expansion affordance for task-detail chat conversations.
- Add an expand/collapse toolbar button to the task chat tab with accessible labels and icon states.
- Let the task detail modal switch into a chat-expanded layout and reset that state when leaving chat or entering edit mode.
- Cover the chat toggle and layout behavior with dashboard component tests and document the control.
Files changed:
docs/dashboard-guide.md | 1 +
packages/dashboard/app/components/TaskChatTab.css | 22 +++++
packages/dashboard/app/components/TaskChatTab.tsx | 21 ++++-
.../dashboard/app/components/TaskDetailModal.css | 42 +++++++++
.../dashboard/app/components/TaskDetailModal.tsx | 13 ++-
.../app/components/__tests__/TaskChatTab.test.tsx | 37 ++++++++
.../TaskDetailModal.attachments-and-tabs.test.tsx | 100 +++++++++++++++++++++
7 files changed, 233 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6370
Fusion-Task-Lineage: 787300bb-b928-45cf-a5c1-7fed5f375111
Refine the task-detail chat composer so the send action stays narrow and inline with the input.
- Replace the composer placeholder with the steering-focused copy.
- Convert the send button to an accessible icon-only control with loading state labels.
- Keep the send control inline at mobile breakpoints and cover the behavior in tests and docs.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.css | 14 +++++++----
packages/dashboard/app/components/TaskChatTab.tsx | 11 ++++++---
.../app/components/__tests__/TaskChatTab.test.tsx | 27 ++++++++++++++++++++--
4 files changed, 44 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-6369
Fusion-Task-Lineage: b7e0717f-4cba-4380-a08a-e01fc12985e3
Adds an in-transcript control for returning to the newest task chat output after reviewing older messages.
- Track whether the task chat transcript is near the bottom and preserve live-follow behavior.
- Render an accessible sticky Latest button when populated transcripts are scrolled up, including mobile styling.
- Cover empty/loading, desktop, mobile, and click-to-jump behavior in TaskChatTab tests.
- Document the Latest jump affordance in the dashboard guide.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.css | 40 +++++++++++
packages/dashboard/app/components/TaskChatTab.tsx | 40 ++++++++++-
.../app/components/__tests__/TaskChatTab.test.tsx | 82 ++++++++++++++++++++++
4 files changed, 162 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6359
Fusion-Task-Lineage: 9b4a3533-2969-4f0d-a4de-6ba895662726
Task detail chat now renders adjacent text log chunks as continuous bubbles.
- Combine consecutive non-tool, non-thinking chat entries within each agent role group before rendering.
- Preserve tool and thinking segment boundaries while simplifying segment keys for grouped text.
- Add dashboard tests for single, consecutive, and cross-role text bubble behavior.
- Document the text chunk grouping behavior in the dashboard guide.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.tsx | 28 ++++++++-----
.../app/components/__tests__/TaskChatTab.test.tsx | 48 ++++++++++++++++++++++
3 files changed, 66 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-6344
Fusion-Task-Lineage: e88f0383-7d91-4272-8c9b-532a382074d4
Refine task chat transcripts so collapsed tool groups summarize real invocations and expand into paired call/result details.
- Count tool calls by invocation instead of raw tool log rows.
- Show deduped tool names, overflow counts, and error badges in collapsed summaries.
- Pair tool calls with their result or error details when expanded.
- Cover the grouped summary behavior with dashboard tests and documentation.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.css | 36 +++++--
packages/dashboard/app/components/TaskChatTab.tsx | 116 +++++++++++++++++----
.../app/components/__tests__/TaskChatTab.test.tsx | 105 ++++++++++++++++---
4 files changed, 213 insertions(+), 46 deletions(-)
Fusion-Task-Id: FN-6332
Fusion-Task-Lineage: 7c14b76c-dcaa-4227-8393-cb24f99b765d
Task Chat can now steer active assigned sessions while tasks are being reviewed or merged.
- Permit composer steering for in-review reviewing, merging, merging-fix, and fixing statuses when an agent is assigned or checked out.
- Keep paused, user-paused, unassigned, todo, and done tasks disabled with clearer active-session messaging.
- Cover in-review steering and disabled-session states in TaskChatTab tests and update dashboard documentation.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.tsx | 13 +++--
.../app/components/__tests__/TaskChatTab.test.tsx | 61 ++++++++++++++++++++--
3 files changed, 67 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6314
Fusion-Task-Lineage: 42c0f4f7-58f5-4e0c-837f-9f4b7c497fa3
Document how custom providers are configured and surfaced in model pickers.
- Add Custom Providers dashboard guide coverage for adding, editing, deleting, detecting models, and masked API key behavior.
- Explain that saved custom provider models appear in Project Models and workflow model dropdowns.
- Add a stable settings-reference anchor for the customProviders setting.
Files changed:
docs/dashboard-guide.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++
docs/settings-reference.md | 2 +-
2 files changed, 65 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6286
Fusion-Task-Lineage: 79520376-d448-4048-af43-a532fba68853
Keep task detail PR and review affordances synchronized with the current project auto-merge setting.
- Thread the live auto-merge value into task detail modals and list split-pane detail views.
- Prefer the live auto-merge setting over the stale fetched modal snapshot while preserving task-level overrides.
- Cover PR and review tab behavior for auto-merge on/off and document the dashboard behavior.
- Evict flaky engine gate entries and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-6247-automerge-off-modal-stale.md | 5 +
docs/dashboard-guide.md | 1 +
packages/dashboard/app/App.tsx | 3 +-
packages/dashboard/app/components/AppModals.tsx | 2 +
packages/dashboard/app/components/ListView.tsx | 3 +
.../dashboard/app/components/TaskDetailModal.tsx | 4 +-
.../__tests__/TaskDetailModal.create-pr.test.tsx | 171 ++++++++++++++++++++-
packages/engine/vitest.config.ts | 2 -
8 files changed, 182 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6247
Fusion-Task-Lineage: 1321c03a-216d-4b15-bf4f-95621d68c9ae
Persist default workflow model lane edits through the Settings modal's primary save path.
- Register a Project Models section save handler so workflow lane overrides flush before closing Settings.
- Surface typed workflow setting rejections without closing the modal or showing a success toast.
- Remove the separate workflow-model save button and update coverage/docs for the unified save behavior.
Files changed:
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 17 +++++---
.../dashboard/app/components/SettingsModal.tsx | 11 ++++-
.../components/__tests__/SettingsModal.test.tsx | 50 ++++++++++++++++------
.../settings/sections/ProjectModelsSection.tsx | 42 ++++++++++--------
.../app/components/settings/sections/context.ts | 3 ++
6 files changed, 83 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-6225
Fusion-Task-Lineage: 98338f85-c742-46c2-8bdf-f676a6f7e32e
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
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
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
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
Show a one-time GitHub star prompt after a task first reaches done.
- detect task status transitions into done and trigger the prompt only in project view
- add a dismissible GitHub star prompt component plus localStorage-backed persistence hook
- cover the new prompt behavior with component, hook, and transition helper tests
- document the prompt behavior and styling guidance in the dashboard guide
Files changed:
docs/dashboard-guide.md | 3 +
packages/dashboard/app/App.tsx | 21 +++++-
.../dashboard/app/components/GitHubStarPrompt.css | 76 ++++++++++++++++++++++
.../dashboard/app/components/GitHubStarPrompt.tsx | 53 +++++++++++++++
.../app/components/__tests__/App.test.tsx | 12 +++-
.../components/__tests__/GitHubStarPrompt.test.tsx | 40 ++++++++++++
.../hooks/__tests__/useGitHubStarPrompt.test.ts | 64 ++++++++++++++++++
.../dashboard/app/hooks/useGitHubStarPrompt.ts | 46 +++++++++++++
8 files changed, 313 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-5967
Fusion-Task-Lineage: 5fffdf4d-61d8-4ac8-bcf4-8b453b639b28
Make the Create Pull Request modal interactive before AI metadata finishes loading.
- load preflight checks and PR options independently from AI title/body generation with separate loading and error states
- preserve base-branch selection and remediation actions while refreshing preflight or regenerating metadata
- cover the faster modal flow in tests and document the immediate-render behavior in the dashboard guide
Files changed:
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/PrCreateModal.css | 11 +
packages/dashboard/app/components/PrCreateModal.tsx | 357 ++++++++++++++-------
packages/dashboard/app/components/__tests__/PrCreateModal.test.tsx | 110 ++++++-
4 files changed, 355 insertions(+), 126 deletions(-)
Fusion-Task-Id: FN-5954
Fusion-Task-Lineage: 2595d220-ca7a-403c-935c-900034a20c67
Add in-app preflight remediation so Create PR can push task branches without leaving Fusion.
- add a dashboard API route and client helper to push the task branch to origin and recompute PR preflight state
- update the Create Pull Request modal, styles, and tests to surface push-branch remediation alongside AI conflict resolution
- document the flow and add a published CLI changeset plus server coverage for the new push-branch endpoint
Files changed:
.changeset/fn-5950-pr-push-branch.md | 5 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/api/legacy.ts | 19 +++
packages/dashboard/app/components/PrCreateModal.css | 4 +-
packages/dashboard/app/components/PrCreateModal.tsx | 48 +++++-
packages/dashboard/app/components/__tests__/PrCreateModal.test.tsx | 44 ++++++
packages/dashboard/src/__tests__/register-git-github.pr-push-branch.test.ts | 176 +++++++++++++++++++++
packages/dashboard/src/routes/register-git-github.ts | 68 ++++++++
8 files changed, 362 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-5950
Fusion-Task-Lineage: 5a6c5c6a-8f99-44c0-8f54-f0a6ff537ed0
Add docs/solutions/ui-bugs/ learning for the silent animation freeze caused
by transition tokens (duration+easing pairs) used as bare durations, and
update dashboard-guide.md design-token and pitfalls sections to cover the
new --duration-* tokens and the IACVT gotcha.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>