Default the right-dock task sidebar to active work and make task-detail navigation reversible.
- Filter the dock Tasks list to hide done tasks by default while keeping archived tasks out of the compact sidebar.
- Add a Show Done toggle, updated empty states, and styling for the compact controls.
- Convert the task-detail header arrow into an accessible back button that uses the existing close-detail path.
- Document the sidebar behavior, add a patch changeset, and cover the active/default/back-button flows in tests.
Files changed:
.changeset/fn-7218-task-sidebar-active-list.md | 7 ++
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/DockTaskList.css | 37 +++++++++
packages/dashboard/app/components/DockTaskList.tsx | 53 ++++++++++---
packages/dashboard/app/components/RightDock.tsx | 17 ++++-
.../app/components/__tests__/DockTaskList.test.tsx | 89 ++++++++++++++++++++--
.../app/components/__tests__/RightDock.test.tsx | 69 ++++++++++++-----
7 files changed, 239 insertions(+), 38 deletions(-)
Fusion-Task-Id: FN-7218
Fusion-Task-Lineage: ce8fe55e-a89e-4ca6-940e-2ca06c3c26df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
recoverCompletedTask refused workflow-graph re-entry when the live task
has incomplete plan steps or a remediation bounce is already scheduled.
A pre-merge optional/advisory REVISE reopens steps and schedules a
sendTaskBackForFix bounce; a competing graph re-entry re-passed the
advisory step (budget exhausted), advanced to merge, and looped forever
on the 'task has incomplete steps' gate. Defer to the bounce /
stale-incomplete-review recovery so the executor finishes the steps.
Fusion-Task-Id: FN-7210
Embedded Import Tasks panes now flex to the available viewport height.\n\n- Add a base embedded-body flex rule shared by Issues and Pull Requests.\n- Cover the full-height behavior and non-embedded modal safeguards in CSS tests.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/fn-7208-import-tasks-full-height.md | 7 +++++\n .../dashboard/app/components/GitHubImportModal.css | 4 +++\n .../__tests__/GitHubImportModal.test.tsx | 30 ++++++++++++++++++++++\n 3 files changed, 41 insertions(+)
Fusion-Task-Id: FN-7208
Fusion-Task-Lineage: 483889f2-48db-4c18-a58c-63f9a3661e45
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Task-detail chat now adapts message width to narrow host containers while preserving wide layouts.
- Add a task chat container query that switches narrow hosts to the one-column chat layout.
- Widen user message bubbles to the full host width in right-side and narrow detail panels.
- Cover the CSS behavior with a targeted TaskChatTab regression test and add a patch changeset.
Files changed:
.changeset/fn-7207-task-chat-narrow-width.md | 7 +++++
packages/dashboard/app/components/TaskChatTab.css | 30 ++++++++++++++++++++++
.../app/components/__tests__/TaskChatTab.test.tsx | 23 +++++++++++++++++
3 files changed, 60 insertions(+)
Fusion-Task-Id: FN-7207
Fusion-Task-Lineage: d36fc06d-1e0c-4313-b764-13f31fe09d71
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Narrow chat surfaces now let messages span their constrained container width.
- Add a ChatView container query that makes all message variants full-width in narrow hosts such as Quick Chat popups and the right dock.
- Update the mobile bubble cap to full width while preserving tablet assistant widening and desktop caps.
- Cover the responsive CSS contracts in dashboard tests and document the behavior with a patch changeset.
Files changed:
.changeset/fn-7204-full-width-chat-messages.md | 7 +++++++
docs/dashboard-guide.md | 6 +++---
packages/dashboard/app/components/ChatView.css | 12 +++++++++++-
.../__tests__/ChatView.core-contracts.test.tsx | 20 +++++++++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 4 ++--
5 files changed, 40 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7204
Fusion-Task-Lineage: 19da0d46-f0bf-46e7-9f87-900c5184f378
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Refresh plugin dashboard navigation metadata from the current on-disk manifest so rebuilt plugins do not serve stale view details.
- Resolve the authoritative manifest path from plugin entry directories and package roots.
- Re-read and validate dashboardViews metadata before returning dashboard navigation entries, falling back only when the manifest cannot be used.
- Await refreshed dashboard-view metadata in the dashboard route and cover rebuild/removal cases with tests.
- Add a patch changeset for the published CLI package.
Files changed:
.../FN-7201-plugin-dashboard-view-refresh.md | 7 ++
packages/core/src/__tests__/plugin-loader.test.ts | 114 ++++++++++++++++++++-
packages/core/src/plugin-loader.ts | 94 ++++++++++++++++-
.../dashboard/src/__tests__/plugin-routes.test.ts | 42 +++++++-
packages/dashboard/src/routes.ts | 2 +-
5 files changed, 244 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-7201
Fusion-Task-Lineage: dbdd5575-1999-4c9c-93a4-25eb8f213e07
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Keep Compound Engineering navigation surfaces on the Boxes glyph even when stale plugin metadata is served.
- Route desktop and mobile plugin nav entries through a dashboard-view icon resolver.
- Pin Compound Engineering plugin nav icons to Boxes by plugin id while preserving normal icon fallback behavior for other plugins.
- Align manifest/header icon invariants and add regression coverage for stale Sparkles/Grid3X3 metadata.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/FN-7198-compound-engineering-icon-match.md | 7 +++++++
packages/dashboard/app/components/LeftSidebarNav.tsx | 4 ++--
packages/dashboard/app/components/MobileNavBar.tsx | 6 +++---
.../app/components/__tests__/LeftSidebarNav.test.tsx | 6 +++++-
.../app/components/__tests__/MobileNavBar.test.tsx | 10 +++++++---
.../app/components/__tests__/pluginNavIcon.test.ts | 10 +++++++++-
packages/dashboard/app/components/pluginNavIcon.tsx | 12 ++++++++++++
.../src/__tests__/manifest.test.ts | 14 ++++++++++++++
.../src/dashboard/CompoundEngineeringView.tsx | 3 ++-
9 files changed, 61 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7198
Fusion-Task-Lineage: e910bb82-55a7-4c81-a4fe-947a07b3e308
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Root cause of "the TUI keeps rendering after I get my terminal back": on
quit, dispose() called logSink.releaseConsole() (re-pointing console.* at
the real terminal) and then tui.stop() left the alt-screen and restored the
user's shell. Every log line from the slow engine/mesh/dev-server teardown
that followed then painted over the recovered prompt.
dispose() now calls a new logSink.silence() instead, which drops all sink
and console.* output from quit through process exit. Shutdown-step
diagnostics (timeShutdownStep + the watchdog stall line) are gated behind
FUSION_DEBUG_SHUTDOWN so a normal quit is pristine; the 3s hard-exit
watchdog still guarantees the process dies.
Adds a silence() regression guard to log-sink.test.ts asserting sink
methods and captured console.* both go silent across surfaces.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Give Compound Engineering its own Boxes glyph across plugin navigation and headers.
- Register the Boxes lucide icon for plugin navigation so desktop and mobile sidebars can resolve it.
- Switch the Compound Engineering manifest, plugin definition, and view header from Sparkles to Boxes.
- Update navigation and manifest tests plus the release changeset for the published CLI bundle.
Files changed:
.changeset/FN-7197-compound-engineering-icon.md | 7 +++++++
.../app/components/__tests__/MobileNavBar.test.tsx | 2 +-
.../app/components/__tests__/pluginNavIcon.test.ts | 14 ++++++++++++++
packages/dashboard/app/components/pluginNavIcon.tsx | 7 ++++++-
plugins/fusion-plugin-compound-engineering/manifest.json | 2 +-
.../src/__tests__/manifest.test.ts | 2 +-
.../src/dashboard/CompoundEngineeringView.tsx | 12 +++++++++---
plugins/fusion-plugin-compound-engineering/src/index.ts | 2 +-
8 files changed, 40 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-7197
Fusion-Task-Lineage: 03c67bfa-3e28-4a2a-b15e-b2c3576588c1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Add a markdown preview mode to the Create PR body editor while preserving raw submission text.
- Add a persisted Preview/Edit toggle for the Create PR body field.
- Render body markdown through the shared sanitized markdown pipeline in preview mode.
- Style the preview region and document the modal behavior.
- Cover edit, preview, regenerate, revert, empty/fallback, and submit payload flows.
Files changed:
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/PrCreateModal.css | 24 ++++-
.../dashboard/app/components/PrCreateModal.tsx | 51 +++++++++-
.../components/__tests__/PrCreateModal.test.tsx | 107 +++++++++++++++++++++
4 files changed, 181 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7176
Fusion-Task-Lineage: 82275fb1-f89a-4fa2-9c47-7a7e7982c6cd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Route review revision requests through canonical review data so reviewer-agent feedback can be selected reliably.
- Rebuild /review/address validation from PR review details or direct reviewer-agent logs before matching selected items.
- Preserve addressing state while accepting log-derived reviewer-agent item ids and rejecting mismatched sources.
- Cover reviewer-agent, fallback-log, PR, and invalid-selection paths in dashboard route tests.
- Document that Review revision feedback may come from PR data or reviewer-agent logs.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7186-review-revision-fix.md | 7 ++
docs/dashboard-guide.md | 4 +-
.../dashboard/src/__tests__/routes-tasks.test.ts | 126 +++++++++++++++++----
.../src/routes/register-task-workflow-routes.ts | 76 +++++++++----
4 files changed, 170 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-7186
Fusion-Task-Lineage: 8b0f6e4c-93b1-489c-ab96-5a2541b7c18a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Stabilize the Create PR dialog so metadata hangs and stray clicks no longer block manual PR creation.
- Bound AI metadata generation in the dialog to a 15 second timeout that falls back to manual title/body recovery.
- Keep the floating Create PR shell dismissible only via explicit close actions and default the diff preview collapsed.
- Expand modal tests and dashboard docs for timeout recovery, collapsed preview, and dismissal behavior.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7175-create-pr-dialog-fixes.md | 7 +++
docs/dashboard-guide.md | 6 +-
.../dashboard/app/components/PrCreateModal.tsx | 34 ++++++++++-
.../components/__tests__/PrCreateModal.test.tsx | 65 ++++++++++++++++++++--
4 files changed, 101 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7175
Fusion-Task-Lineage: 675d2212-54a1-465f-a9bf-6af4ba33674a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>