## Summary
Task image artifacts can now complete the full loop: agents and chat
flows can register base64 image bytes, and task details can display
those artifacts with an expandable preview instead of leaving them as
undiscoverable metadata.
This keeps binary payloads on the existing managed artifact storage
path, validates that base64 payloads are real non-empty image data, and
documents the new `dataBase64` field for engine-tool callers. The task
details artifacts gallery now treats image cards as expandable while
leaving document, audio, video, and generic artifact cards on their
existing behavior.
## Validation
- `pnpm --filter @fusion/dashboard exec vitest run
app/components/__tests__/TaskDocumentsTab.test.tsx
src/routes/__tests__/artifacts-route-integration.test.ts
--silent=passed-only --reporter=dot`
- `pnpm --filter @fusion/engine exec vitest run
src/__tests__/agent-artifact-tools.test.ts --silent=passed-only
--reporter=dot`
---
[](https://github.com/EveryInc/compound-engineering-plugin)

<!-- stage-review-badge-begin -->
---
<a href="https://stagereview.app/Runfusion/Fusion/pull/1821">
<picture>
<source media="(prefers-color-scheme: dark)"
srcset="https://stagereview.app/assets/gh-open-in-stage-dark.svg">
<img src="https://stagereview.app/assets/gh-open-in-stage-light.svg"
alt="Open in Stage">
</picture>
</a>
<!-- stage-review-badge-end -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added inline base64 (`dataBase64`) support for registering image
artifacts from agent tools, including task-scoped chat registration.
* Task details now allow expanding image media artifacts in a preview
lightbox with accessible keyboard interaction.
* **Bug Fixes**
* Improved verification for media streaming by validating raw binary
responses; added HTTP 200/404 coverage for image endpoints.
* **Documentation**
* Updated `fn_artifact_register` tool documentation to include the
optional `dataBase64` parameter.
* **Tests**
* Added coverage for base64 validation/error handling and lightbox
expand/close behavior (including Escape and Tab focus trapping).
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- Adds a fail-closed resolver for explicit review checkout metadata.
- Routes both in-session step reviews and graph step reviews through the
validated checkout when present.
- Keeps existing workspace per-repo review behavior when no explicit
checkout is configured.
## Verification
- `corepack pnpm check:changesets` — pass
- `corepack pnpm lint` — pass
- `corepack pnpm build` — pass
- `corepack pnpm --filter @fusion/engine exec vitest run
src/__tests__/reviewer-workspace.test.ts --reporter=dot --no-color` —
pass, 11 tests
## Note
- Full `corepack pnpm test` on current main is blocked by existing
workflow gate expectation drift covered separately by PR #1822; this
branch avoids duplicating those commits.
<!-- stage-review-badge-begin -->
---
<a href="https://stagereview.app/Runfusion/Fusion/pull/1823">
<picture>
<source media="(prefers-color-scheme: dark)"
srcset="https://stagereview.app/assets/gh-open-in-stage-dark.svg">
<img src="https://stagereview.app/assets/gh-open-in-stage-light.svg"
alt="Open in Stage">
</picture>
</a>
<!-- stage-review-badge-end -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Review steps now correctly run in the intended external checkout when
one is provided.
* Read-only reviewers now use the validated review workspace path
instead of defaulting to the task worktree.
* Added regression coverage to ensure review execution uses the expected
checkout location.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Current Gate status
`Gate` is failing on current `origin/main` before these PR changes. I
reproduced the same engine-core failures directly on `origin/main`
(`task-pipeline-smoke.test.ts` and
`workflow-graph-executor-parity.test.ts`, caused by the new
`completion-summary` / `post-merge-verification` default workflow
nodes). The PR-local review feedback is addressed and focused validation
passes; the remaining Gate failure should be fixed in the upstream
workflow-test drift PR, not copied into this PR branch.
## Summary
- Mocks `git remote get-url origin` for dashboard PR lifecycle tests via
`execFileSync`, matching the production repository resolver.
- Keeps the missing-repository error covered for cases where no project
remote is resolvable.
- Tightens dashboard PR lifecycle assertions so PR status checks use the
resolved owner/repo.
## Verification
- `corepack pnpm build` — pass
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot --no-color` — pass, 86 tests
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts -t
"processPullRequestMergeTask|PR-first auto-merge queue"
--silent=passed-only --reporter=dot --no-color` — pass, 7 tests
- Clean rebuilt stale bundled plugin dist, then `corepack pnpm --filter
@runfusion/fusion exec vitest run --changed
24d78816a0 --passWithNoTests
--silent=passed-only --reporter=dot --no-color` — pass, 75 files / 1186
tests
- `corepack pnpm check:changesets` — pass
- `corepack pnpm lint` — pass
- `corepack pnpm typecheck` — pass
No changeset: test-only fixture coverage; no package runtime behavior
changed.
## CI note
The current Gate failure is the pre-existing engine-core workflow
expectation drift fixed by PR #1822. Lint, Typecheck, Build, CodeRabbit,
and Greptile passed on this PR.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Tests**
* Expanded dashboard and pull request merge coverage to verify
repository detection and merge-status handling across merge lifecycle
paths.
* Added a failure-path assertion for when the app can’t determine the
current repository, ensuring the operation stops and surfaces the
expected error.
* Improved assertions for auto-merge and manual merge flows to confirm
the correct repository lookup occurs in each scenario.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Current Gate status
`Gate` is failing on current `origin/main` before these PR changes. I
reproduced the same engine-core failures directly on `origin/main`
(`task-pipeline-smoke.test.ts` and
`workflow-graph-executor-parity.test.ts`, caused by the new
`completion-summary` / `post-merge-verification` default workflow
nodes). The PR-local review feedback is addressed and focused validation
passes; the remaining Gate failure should be fixed in the upstream
workflow-test drift PR, not copied into this PR branch.
## Summary
- Waits for the task store's secrets database handle to close during
shutdown before returning.
- Updates workflow gate expectations for the current built-in lifecycle
nodes.
- Adds a patch changeset for the published CLI package.
## Test Plan
- `corepack pnpm install`
- `corepack pnpm check:changesets`
- `corepack pnpm lint`
- `corepack pnpm build`
- `corepack pnpm test`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved shutdown behavior so task-store cleanup now waits for secrets
storage to close before finishing.
* Reduced the chance of teardown race conditions and incomplete cleanup
during app shutdown.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Record skill-backed workflow nodes into workflowStepResults and teach task progress surfaces to include those graph-node records without re-showing disabled optional workflow checks.
- classify image artifact support as a minor feature changeset
- reject non-image, empty, and signature-mismatched dataBase64 payloads
- trap keyboard focus in the task image lightbox
- assert media streaming with raw image bytes
Fusion-Task-Id: FN-7143
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Keep the Workflow simple-editor tab bar contained while preserving horizontal touch scrolling.
- Clamp the mobile tab strip to the editor width and make it the horizontal scroll owner.
- Preserve intrinsic tab button widths and pan gestures for narrow touch viewports.
- Add CSS, component, and shared overflow regression coverage for the full six-tab strip.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7236-workflow-mobile-tab-scroll.md | 7 +++
.../dashboard-overflow-containment.test.tsx | 32 ++++++++++++-
.../app/components/WorkflowNodeEditor.css | 32 ++++++++++++-
.../__tests__/WorkflowNodeEditor.css.test.ts | 29 ++++++++++++
.../__tests__/WorkflowNodeEditor.test.tsx | 55 +++++++++++++++++++++-
5 files changed, 152 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7236
Fusion-Task-Lineage: 1601d4c2-2039-4410-809c-7dcdfea04301
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Mobile task details now participate in history navigation so native swipe-back dismisses or unwinds the detail modal.
- Push a navigation entry whenever task detail opens through the app-level modal path.
- Restore the previous task detail snapshot when backing out of nested detail opens before closing the modal.
- Add mobile swipe-back coverage for board, list, dock, nested, and explicit close surfaces.
- Include a patch changeset for the published Fusion CLI package.
Files changed:
.changeset/fn-7232-swipe-back-task-detail.md | 7 +
packages/dashboard/app/App.tsx | 5 +-
packages/dashboard/app/components/AppModals.tsx | 26 +-
.../__tests__/TaskDetail.swipe-back.test.tsx | 572 +++++++++++++++++++++
packages/dashboard/vitest.config.ts | 1 +
5 files changed, 605 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7232
Fusion-Task-Lineage: 0291d01c-2008-490c-b0d1-0f0641fbd18c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Raise task-detail chat tool-call typography while preserving compact collapsed rows.
- Increase task chat tool summary, kicker, label, and detail text to the base spacing font token.
- Add CSS regression coverage to prevent the smaller calc font size from returning across desktop, mobile, and narrow hosts.
- Include the TaskChatTab suite in the dashboard chat quality test lane and add a patch changeset.
Files changed:
.changeset/fn-7240-task-chat-tool-font.md | 7 ++++++
packages/dashboard/app/components/TaskChatTab.css | 11 ++++++----
.../app/components/__tests__/TaskChatTab.test.tsx | 25 +++++++++++++++++++---
packages/dashboard/vitest.config.ts | 2 ++
4 files changed, 38 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7240
Fusion-Task-Lineage: 4d3ed287-27b7-4107-bc42-0119d5a4f1e9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Expose Plan Review, Code Review, and Browser Verification optional groups across engineering built-ins, with Quick Fix defaulting all three off and Compound Engineering keeping CE code review inside the shared optional toggle.
Fusion-Task-Id: FN-7224
Classify write-capable graph nodes before handler dispatch and let executor adapters fulfill the declared worktree requirement, keeping custom-node execution out of lifecycle decision making.
Fusion-Task-Id: FN-7224