Render Board task context menus as viewport overlays so column clipping no longer hides actions.
- Portal TaskCard context menus to document.body and position them with viewport coordinates.
- Clamp context menus after render and close them when the task identity or column changes.
- Update TaskCard coverage for overflow escape, keyboard/touch placement, and menu lifecycle behavior.
- Document the overlay behavior and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7362-board-context-menu-overlay.md | 7 +
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/TaskCard.css | 6 +-
packages/dashboard/app/components/TaskCard.tsx | 38 ++--
.../app/components/__tests__/TaskCard.test.tsx | 242 ++++++++++++++++-----
5 files changed, 211 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-7362
Fusion-Task-Lineage: 8f2fc0b1-ad63-402e-a960-6a09cbe9c893
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
## Summary
Workflow node behavior now has explicit engine-owned runner and service
boundaries instead of being concentrated in the default handler factory
and private executor seams. Workflow IR remains declarative: the graph
executor still walks and routes the graph, while node runners and
runtime services own node-kind behavior, primitive construction,
custom-node execution, review invocation, and planning dispatch.
## Design Notes
- Added a `WorkflowNodeRunner` registry that adapts runners to the
existing handler contract while preserving explicit handler override
precedence.
- Moved gate, notify, code, parse-steps, and merge behavior behind
runner modules while keeping compatibility exports from
`workflow-node-handlers.ts`.
- Added service boundaries for runtime primitive creation, custom-node
execution, single-cwd review invocation, and graph planning.
- Preserved fast-mode raw runner compatibility for stepwise built-ins by
skipping executable custom nodes and parsing `PROMPT.md` in memory when
no executor primitive deps are wired.
- Updated concepts and workflow runtime docs so future workflow behavior
has a clear home: IR, runner, primitive provider, runtime service, or
substrate.
## Validation
- `pnpm --filter @fusion/engine exec vitest run ... --silent=passed-only
--reporter=dot` across 20 focused workflow/runtime test files: 166 tests
passed.
- Targeted ESLint on touched workflow files and tests passed.
- `pnpm --filter @fusion/engine exec tsc --noEmit --pretty false`
passed.
- `git diff --check` passed.
- Browser pipeline: skipped by scope; no changed files map to
browser-testable routes.
## Post-Deploy Monitoring & Validation
No additional operational monitoring required. This is an internal
engine refactor with focused tests covering runner dispatch,
primitive-provider compatibility, custom-node service delegation,
review/planning service boundaries, merge behavior, fast-mode raw runner
compatibility, and docs alignment.
Healthy signals: workflow graph runs continue through planning,
parse-steps, optional groups, custom nodes, review, and merge with
existing outcome values. Failure signals: new `parse-steps-unwired`,
custom-node, review, or merge-attempt regressions in engine logs for
previously working built-in workflows. Rollback trigger: repeated
workflow graph task failures attributable to runner/service dispatch
rather than task content or provider errors.
---
[](https://github.com/EveryInc/compound-engineering-plugin)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added engine-owned workflow node runners and dedicated services for
custom-node execution, workflow planning, and step review.
* Exposed a runtime primitive provider abstraction and a node-runner
registry in the public API, including built-in runners for gate, code,
merge, parse-steps, and notify.
* **Bug Fixes**
* Improved fast-mode behavior when runtime capabilities are unavailable
(including optional-group skipping, merge/review handling, and a safe
parse-steps fallback).
* **Tests**
* Expanded coverage for the runner registry integration, custom-node
execution, runtime primitive provider, planning/review, and fast-mode
semantics.
* **Documentation**
* Clarified workflow responsibility boundaries and added glossary
definitions plus a refactor plan.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- keep malformed planning-session responses persisted as retryable error
state instead of deleting the session
- add `fn dashboard --supervise` to restart unexpected dashboard exits
with bounded exponential backoff
- document the supervised-dashboard run mode and add a patch changeset
## Test Plan
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/session-error-recovery.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/server.test.ts -t "returns health OK independently"
--silent=passed-only --reporter=dot`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm build`
- `corepack pnpm test:gate`
Note: a full `server.test.ts` run also exposes four existing
routine-runner expectation failures unrelated to this change; the added
health check passes when run by name.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added dashboard supervised mode via a new `--supervise` option, with
automatic restarts using a bounded restart budget and exponential
backoff.
* **Bug Fixes**
* Planning sessions now persist as retryable error states when AI output
can’t be parsed, preventing session loss.
* Improved reliability so `GET /api/health` remains available during
these planning error states.
* **Documentation**
* Documented “Dashboard Availability &amp; Supervised Mode”,
including health-check guidance and operational guardrails.
* **Tests**
* Added test coverage for supervised restart behavior, health during
planning errors, and ensuring no unhandled rejections on parse failures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Classify structured provider model-not-found payloads as model-selection failures so configured fallback models run when Claude Sonnet 5 is unavailable on an account or API surface.
Keep the mobile Planning Mode New session CTA reachable while saved sessions scroll independently.
- Bound the mobile planning list shell so only the session list scrolls.
- Preserve the sidebar footer as a non-shrinking bottom action in list view.
- Add CSS contract coverage and a changeset for the published CLI package.
Files changed:
.changeset/fn-7348-mobile-planning-new-session.md | 7 ++++++
.../dashboard/app/components/PlanningModeModal.css | 23 +++++++++++++++++
.../__tests__/PlanningModeModal.css.test.ts | 29 ++++++++++++++++++++++
3 files changed, 59 insertions(+)
Fusion-Task-Id: FN-7348
Fusion-Task-Lineage: 0142e539-3e4c-4ac5-9a44-d02bce2c139b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Align footer Engine Controls current-use dots with Command Center slider geometry.
- Mirror Command Center range sizing, touch behavior, and mobile thumb geometry in the footer controls.
- Cover the shared marker geometry contract and pending-cap marker recalculation in EngineControlMenu tests.
- Document the footer/Command Center alignment requirement and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7340-footer-concurrency-dot-alignment.md | 7 ++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/EngineControlMenu.css | 28 ++++++-
packages/dashboard/app/components/__tests__/EngineControlMenu.test.tsx | 85 ++++++++++++++++++++++
4 files changed, 121 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7340
Fusion-Task-Lineage: 5cb4d829-2b70-429c-b9da-0c559fdbf131
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Align Shadcn Ember theme tokens with the Ember palette while preserving shadcn structure.
- Match Shadcn Ember accent text tokens to Ember values in dark and light modes.
- Strengthen regression coverage to compare every Ember-owned color token across both modes.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7339-shadcn-ember-colors.md | 7 +++
.../app/__tests__/shadcn-ember-theme.test.ts | 69 +++++++++++++++-------
packages/dashboard/app/public/theme-data.css | 7 ++-
3 files changed, 60 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7339
Fusion-Task-Lineage: d0c2f0cf-938f-46a4-8da4-9acafc5cc4cf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Board stabilization now avoids resetting the user's horizontal column position during refresh and resize handling.
- Keep mobile stabilization focused on document-level drift instead of forcing #board.scrollLeft back to triage.
- Add regression coverage for board and all-workflows scroll preservation across task refresh, window resize, and visualViewport resize.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7342-board-scroll-reset.md | 7 ++
packages/dashboard/app/components/Board.tsx | 7 +-
.../app/components/__tests__/Board.test.tsx | 109 +++++++++++++++++++++
3 files changed, 121 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7342
Fusion-Task-Lineage: 0aa8b152-5cc0-4f77-93d5-f20faf0a5e19
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Stabilize Planner Chat task detail spacing across expanded and mobile layouts.
- Move Planner Chat body padding to the base selector so expand/collapse only changes height and flex behavior.
- Apply the mobile Planner Chat padding override to the same base body selector.
- Add CSS regression coverage and a patch changeset for the published CLI bundle.
Files changed:
.changeset/planner-chat-stable-spacing.md | 7 ++++
.../dashboard/app/components/TaskDetailModal.css | 11 +++++-
...etailModal.responsive-and-dependencies.test.tsx | 44 ++++++++++++++++++++++
3 files changed, 60 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7333
Fusion-Task-Lineage: 84130908-fabb-433f-a48d-5d9c6649c234
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Renames the task-detail Activity Current segment to Live and makes expansion available across Activity views.
- relabel Activity Current as Live while preserving the legacy internal current segment routing
- move the Activity expand/collapse control to the shared Activity toolbar for Live, Feed, and Raw Logs
- update expanded Activity layout, docs, tests, and release notes for the shared behavior
Files changed:
.changeset/fn-7325-activity-live-expand.md | 7 ++
docs/dashboard-guide.md | 8 +-
packages/dashboard/app/components/TaskChatTab.tsx | 6 +-
.../dashboard/app/components/TaskDetailModal.css | 53 ++++++++++-
.../dashboard/app/components/TaskDetailModal.tsx | 103 ++++++++++++---------
.../app/components/__tests__/TaskChatTab.test.tsx | 12 +--
.../TaskDetailModal.attachments-and-tabs.test.tsx | 90 ++++++++++++++++--
.../__tests__/TaskDetailModal.rendering.test.tsx | 2 +-
.../components/__tests__/TaskDetailModal.test.tsx | 8 +-
9 files changed, 213 insertions(+), 76 deletions(-)
Fusion-Task-Id: FN-7325
Fusion-Task-Lineage: 1aee503b-ace8-4238-a9f9-3e536a43c1f8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
## Summary
- Add a maintainer-facing proposal for a dashboard theme/UI plugin
system
- Frame themes as scoped backend-compatible UI experiments, not just CSS
skins
- Call out selected-project scoping as a prerequisite and immediate bug
class
## Verification
- docs-only proposal; no runtime tests required
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Added a proposal for a dashboard theme and UI plugin system.
* Defines support for multiple dashboard themes/shells sharing the same
backend.
* Describes a stable, project-scoped UI contract, project-scoped API
access, token-based styling, and a theme switcher.
* Documents non-goals, safety boundaries for UI experimentation,
feasibility considerations, and an implementation plan.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->