Commit Graph

8893 Commits

Author SHA1 Message Date
gsxdsm
bb810d6f33 FN-6394: relax non-progress userPaused assertion
Update the non-progress churn reliability test to match the Move-Task contract for never-user-paused tasks.

- Treat undefined userPaused as not user-paused instead of requiring false.
- Document why engine rebounds should not write userPaused for never-user-paused tasks.

Files changed:
 .../src/__tests__/reliability-interactions/non-progress-churn.test.ts | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6394

Fusion-Task-Lineage: 59554c89-4e32-490f-88eb-d22ee7fdca31
2026-06-13 16:30:28 -07:00
gsxdsm
8a53871de2 FN-6388: enable quick-entry GitHub tracking overrides
Allow quick entry to override GitHub tracking regardless of the project default.

- Send explicit githubTracking overrides whenever the quick-entry toggle is changed.
- Keep the GitHub toggle usable when settings are loading or default tracking is off.
- Cover off-default opt-in, opt-out, label, and reset behavior in QuickEntryBox tests.
- Document the quick-entry GitHub icon as a per-task tracking override.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/app/components/QuickEntryBox.tsx     |  27 ++---
 .../components/__tests__/QuickEntryBox.test.tsx    | 118 ++++++++++++++++++---
 3 files changed, 110 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-6388

Fusion-Task-Lineage: f46ef738-ccd6-48cc-8919-9c2de7ecb4e3
2026-06-13 16:30:28 -07:00
gsxdsm
14ed177d89 FN-6389: restore mobile board column swiping
Restore horizontal touch panning for mobile board columns while keeping document-level drift containment.

- Opt board columns, column headers, and column bodies back into combined horizontal and vertical panning on mobile.
- Apply the same touch-action allowance to workflow and multi-lane column scrollers.
- Add CSS regression coverage for mobile board swipe targets, overscroll containment, and proximity snap behavior.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6389-mobile-board-column-swipe.md    |   5 +
 .../__tests__/board-mobile-column-swipe.test.ts    | 123 +++++++++++++++++++++
 packages/dashboard/app/components/Lane.css         |   4 +
 packages/dashboard/app/styles.css                  |   7 ++
 4 files changed, 139 insertions(+)

Fusion-Task-Id: FN-6389

Fusion-Task-Lineage: 0d337b43-34b1-4ccd-a9d9-d25cc9326945
2026-06-13 16:30:28 -07:00
gsxdsm
537cc2ab7f FN-6387: clamp long task detail titles
Clamp long task-detail headings to two lines with an explicit expand control.

- Replace character-count title truncation with measured two-line CSS clamping.
- Add overflow detection so the Show more/Show less toggle only appears when the heading actually wraps past two lines.
- Update task detail rendering tests for triage, non-triage, editing, summarize, chat-expanded, desktop, and mobile title surfaces.

Files changed:
 .../dashboard/app/components/TaskDetailModal.css   |  10 +
 .../dashboard/app/components/TaskDetailModal.tsx   | 111 ++++-
 .../__tests__/TaskDetailModal.rendering.test.tsx   | 441 +++++++++------------
 3 files changed, 261 insertions(+), 301 deletions(-)

Fusion-Task-Id: FN-6387

Fusion-Task-Lineage: 8c1b860c-8fe7-4f91-89e1-b387dbd7320e
2026-06-13 16:30:28 -07:00
gsxdsm
df4939a656 FN-6385: add dashboard overflow regression coverage
Add a shared mobile and tablet overflow-containment safety net for dashboard surfaces.\n\n- Add viewport overflow regression coverage for board, task detail, workflow editor, simple workflow editor, and Activity Log surfaces.\n- Cover mobile, tablet, and landscape-phone breakpoints across empty and populated states.\n- Stabilize related dashboard tests with viewport and DOM cleanup helpers.\n- Document the targeted overflow-containment test command.\n\nFiles changed:\n docs/testing.md                                    |   6 +\n .../dashboard-overflow-containment.test.tsx        | 435 +++++++++++++++++++++\n .../app/components/__tests__/App.test.tsx          |   4 +-\n .../components/__tests__/FileBrowserModal.test.tsx |   9 +\n .../components/__tests__/GitManagerModal.test.tsx  |   2 +\n .../__tests__/MobileWorkflowGraphView.css.test.ts  |   9 +-\n .../__tests__/PlanningModeModal.autosize.test.tsx  |   2 +\n .../__tests__/PlanningModeModal.initial.test.tsx   |   2 +\n .../PlanningModeModal.planning-flow.test.tsx       |   2 +\n .../components/__tests__/SettingsModal.test.tsx    |   2 +\n .../__tests__/SettingsModal.testMode.test.tsx      |   6 +-\n .../__tests__/SettingsModal.worktrunk.test.tsx     |   6 +-\n .../__tests__/WorkflowNodeEditor.css.test.ts       |   4 +-\n 13 files changed, 479 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6385

Fusion-Task-Lineage: 8335a9c6-279a-4962-b855-ea459ba9eb0a
2026-06-13 16:30:28 -07:00
gsxdsm
ee6d7acec8 FN-6375: include attachment paths in recovery prompts
Workflow context-limit recovery prompts now direct agents to read task attachments from the project root.

- Pass the project root into reduced workflow step prompts so attachment directories can be absolute when available.
- Replace the autonomous-agent "ask for context" wording with direct file-reading guidance for attachments.
- Cover root-aware, fallback, placement, and context-limit recovery attachment prompt behavior.
- Add a patch changeset for the published Fusion package.

Files changed:
 .../fn-6375-workflow-attachment-recovery-prompt.md |  5 ++
 .../src/__tests__/step-session-executor.test.ts    | 70 +++++++++++++++++++---
 packages/engine/src/step-session-executor.ts       |  8 ++-
 3 files changed, 72 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6375
Fusion-Task-Lineage: ed9a5367-1623-49cb-9c7f-116c59ce5117
2026-06-13 16:30:28 -07:00
gsxdsm
d1bea16f3a Merge pull request #1578 from Runfusion/feature/workflow-owned-merge-s05-runtime-work-item-driver
refactor(workflow): S05 runtime work-item driver
2026-06-13 16:15:11 -07:00
gsxdsm
3098478d9e Merge origin/main: align merge-region visited nodes with collapse refactor
main's workflow-graph-executor now collapses the merge-policy region
(merge-gate, branch-group-*, merge-attempt) into a single synthetic
`merge` node. Reconcile the S05 work-item-driver test's visitedNodeIds
assertion to match, and union the `observed` recording-primitive fields
from both branches (executedTasks + merge attempt/run/workflow ids).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 15:47:01 -07:00
gsxdsm
6626fe2598 Merge pull request #1673 from Runfusion/fix/appimage-local-runtime-root
fix: root local runtime at home dir, not process.cwd()
2026-06-13 15:38:20 -07:00
gsxdsm
69ddee0d92 Merge pull request #1671 from plarson/fix/ce-recover-stale-active-sessions
fix(ce): recover stale active sessions
2026-06-13 14:52:27 -07:00
gsxdsm
43c54290a9 chore(release): v0.42.0
Version bump via changesets.
2026-06-13 12:11:05 -07:00
gsxdsm
59411c7054 FN-6381: expose simple workflow editor controls at every width
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
2026-06-13 12:00:58 -07:00
gsxdsm
eea33639ee FN-6378: contain mobile board overscroll
Contain horizontal overscroll on mobile kanban board scrollers so iOS edge drags do not rubber-band columns off screen.

- Add horizontal overscroll containment to board, workflow column, and lane column scrollers while preserving proximity snap scrolling.
- Add CSS fixture regression coverage for mobile/base board and lane overscroll containment.
- Document the iOS horizontal overscroll containment root cause and fix.

Files changed:
 ...-board-ios-horizontal-overscroll-containment.md | 64 +++++++++++++++++++++
 .../board-mobile-overscroll-containment.test.ts    | 65 ++++++++++++++++++++++
 packages/dashboard/app/components/Lane.css         |  2 +
 packages/dashboard/app/styles.css                  |  1 +
 4 files changed, 132 insertions(+)

Fusion-Task-Id: FN-6378

Fusion-Task-Lineage: 70b4852b-feb0-42b5-81ba-13bfd143e0bc
2026-06-13 11:53:44 -07:00
gsxdsm
eb607c6ffd FN-6377: make tablet modals touch-resizable
Enable shared resize handles for modals on tablet and desktop while keeping mobile sheets full-screen.

- Add a pointer-driven resize grip to useModalResizePersist with debounced persistence and mobile cleanup.
- Widen the task-detail modal tablet default to 96vw / 1024px.
- Cover resize behavior and tablet width expectations with dashboard tests.
- Document the shared modal resize pattern and add the published package changeset.

Files changed:
 .changeset/FN-6377-tablet-resizable-modals.md      |   5 +
 docs/dashboard-guide.md                            |   2 +-
 .../task-detail-modal-tablet-width.test.ts         |   4 +-
 .../dashboard/app/components/TaskDetailModal.css   |   4 +-
 .../hooks/__tests__/useModalResizePersist.test.tsx | 218 +++++++++++++++++++++
 .../dashboard/app/hooks/useModalResizePersist.ts   | 140 ++++++++++---
 packages/dashboard/app/styles.css                  |  36 ++++
 7 files changed, 382 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-6377

Fusion-Task-Lineage: ecc12aa4-f881-4476-a69b-13d34a73e263
2026-06-13 11:46:53 -07:00
gsxdsm
97a49ac196 FN-6382: unquarantine stabilized flaky tests
Restore quarantined tests by fixing their flaky harness seams instead of extending the deletion ratchet.

- Mark active Vitest worker roots and skip live worker roots during prune cleanup.
- Make bubblewrap backend coverage deterministic with an injectable runner and restore it to the engine gate.
- Remove rescued core and bubblewrap tests from the quarantine ledger and Vitest excludes.

Files changed:
 .../core/src/__test-utils__/vitest-teardown.ts     | 10 +++++-
 packages/core/vitest.config.ts                     |  8 +----
 .../__tests__/sandbox/bubblewrap-backend.test.ts   | 29 +++++++++------
 packages/engine/src/sandbox/bubblewrap-backend.ts  |  9 +++--
 packages/engine/vitest.config.ts                   |  1 -
 scripts/__tests__/test-changed.test.mjs            | 23 ++++++++++++
 scripts/lib/test-quarantine.json                   | 34 ++----------------
 scripts/test-changed.mjs                           | 41 ++++++++++++++++++++++
 8 files changed, 102 insertions(+), 53 deletions(-)

Fusion-Task-Id: FN-6382

Fusion-Task-Lineage: 018dc7ac-1ef1-495e-a5fd-96ea44fcd43b
2026-06-13 11:39:37 -07:00
gsxdsm
6fff41817a FN-6372: start refinements from done task chat
Done-task chat messages now create refinement tasks while preserving steering behavior elsewhere.

- Route completed-task Chat composer submissions through refineTask and show the created task ID.
- Keep non-done task sends on the existing steering-comment path with queued/live session copy.
- Cover refinement success, failure rollback, send lifecycle, and routing surfaces in TaskChatTab tests.
- Document the completed-task refinement behavior in the dashboard guide.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |  45 +++---
 .../app/components/__tests__/TaskChatTab.test.tsx  | 152 ++++++++++++++++++++-
 3 files changed, 177 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-6372

Fusion-Task-Lineage: 201f3a5e-e951-4f70-8b92-8d270e3181de
2026-06-13 11:30:45 -07:00
gsxdsm
88e25dc9f4 FN-6365: prevent mobile document horizontal panning
Contain the mobile dashboard document viewport while preserving intended inner horizontal scrollers.

- Lock mobile html/body/#root and fullscreen overlay chrome to the viewport inline axis.
- Default mobile touch handling to vertical-only panning and opt board/code/table scrollers back into horizontal gestures.
- Add CSS fixture regression coverage plus a solution note for mobile horizontal pan containment.

Files changed:
 docs/solutions/ui-bugs/mobile-horizontal-pan-document-viewport-containment.md |  62 +++++++++++
 packages/dashboard/app/__tests__/mobile-horizontal-pan-containment.test.ts    | 116 +++++++++++++++++++++
 packages/dashboard/app/styles.css                                            |  47 +++++++--
 3 files changed, 219 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6365

Fusion-Task-Lineage: 4673da28-1438-4ea5-b32c-25bc52285273
2026-06-13 11:22:07 -07:00
gsxdsm
4838c86b8c FN-6370: add expandable task chat modal
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
2026-06-13 11:14:06 -07:00
gsxdsm
0d882b4350 FN-6383: add branch canonicalization unit coverage
Expand executor tests around canonical Fusion branch naming behavior.

- Cover standard, lowercase, and case-only variant task IDs.
- Document current prefix behavior for branch-name inputs and malformed edge cases.
- Pin lowercase-only behavior without trimming or slugifying task ID text.

Files changed:
 .../executor-branch-canonicalization.test.ts       | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Fusion-Task-Id: FN-6383

Fusion-Task-Lineage: cb43e67d-2cb3-4e08-8ea3-eaa7939ae037
2026-06-13 11:08:56 -07:00
gsxdsm
0856d3d3fd FN-6380: widen Activity Log tablet layout
Widen the Activity Log modal at tablet widths so header controls stay reachable.

- Add component-scoped tablet CSS that widens only the Activity Log modal.
- Allow the Activity Log header and action controls to wrap while keeping close pinned right.
- Cover the tablet-only layout contract with a CSS regression test.

Files changed:
 .../__tests__/activity-log-tablet-layout.test.ts   | 73 ++++++++++++++++++++++
 packages/dashboard/app/components/ScriptsModal.css | 49 +++++++++++++++
 2 files changed, 122 insertions(+)

Fusion-Task-Id: FN-6380
Fusion-Task-Lineage: ae7cf5a6-c69d-4756-a4fa-1e4346b9c077
2026-06-13 11:03:30 -07:00
Phil Larson
65a4c51c98 fix(ce): recover stale active sessions
Recover persisted Compound Engineering active/launching sessions that outlived their live agent handles on plugin load and session reads.
2026-06-13 10:59:32 -07:00
gsxdsm
1c20a7e82d FN-6379: prevent workflow editor sidebar horizontal scrolling
Clamp the workflow editor left sidebar and its children so long content cannot create horizontal scroll.

- Hide horizontal overflow on desktop and list-stage sidebar layouts while preserving vertical scrolling.\n- Allow nested sidebar sections, lists, palette controls, and code snippets to shrink or wrap within the sidebar.\n- Add CSS contract coverage for the sidebar overflow behavior across desktop and mobile list-stage layouts.\n\nFiles changed:\n .../app/components/WorkflowNodeEditor.css          | 25 ++++++++++++\n .../__tests__/WorkflowNodeEditor.css.test.ts       | 47 ++++++++++++++++++++++\n 2 files changed, 72 insertions(+)

Fusion-Task-Id: FN-6379

Fusion-Task-Lineage: 9da54129-faaf-4a81-906b-d76e9746b426
2026-06-13 10:58:16 -07:00
gsxdsm
6e9f2a384d FN-6369: make task chat send control icon-only
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
2026-06-13 10:51:31 -07:00
gsxdsm
f68775a5a6 FN-6376: preserve user-paused tasks during recovery
Ensure automated resume and recovery paths leave user-paused tasks paused.

- Skip user-paused tasks when cascading agent resume and approval-decision unpauses.
- Preserve userPaused during stuck-task recovery and log skipped recoveries for user-paused tasks.
- Add regression coverage across engine heartbeat, self-healing, and dashboard route surfaces.
- Document the invariant and add a patch changeset.

Files changed:
 .changeset/fn-6376-user-paused-stays-paused.md     |  5 ++++
 docs/architecture.md                               |  1 +
 .../src/__tests__/routes-agent-runs.test.ts        |  4 +++
 .../src/__tests__/routes-approval.test.ts          | 26 +++++++++++++++--
 .../src/routes/register-agent-runtime-routes.ts    |  2 +-
 .../src/routes/register-approval-routes.ts         |  2 +-
 .../src/__tests__/heartbeat-executor.test.ts       | 28 ++++++++++++++++++
 packages/engine/src/__tests__/self-healing.test.ts | 33 +++++++++++++++++++++-
 packages/engine/src/agent-heartbeat.ts             |  3 +-
 packages/engine/src/self-healing.ts                | 12 ++++++--
 10 files changed, 108 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6376
Fusion-Task-Lineage: efa00cb1-58e1-496a-919b-69867f8bff3c
2026-06-13 10:44:01 -07:00
gsxdsm
b90f966a98 FN-6374: fix workflow board tablet fill height
Keep workflow-mode board columns stretched through the tablet viewport.

- Preserve a definite height chain from the workflow board wrapper to the column rows.
- Ensure workflow columns stretch and keep internal overflow ownership at tablet widths.
- Extend board layout tests to cover workflow-mode empty and populated tablet states.
- Document the footer-safe workflow fill-height invariant.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/Lane.css         |  12 ++
 .../__tests__/board-mobile-initial-render.test.tsx | 121 ++++++++++++++++++++-
 3 files changed, 129 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6374
Fusion-Task-Lineage: 9b7042cf-c8bc-4d69-8599-42dafc333b15
2026-06-13 10:36:24 -07:00
gsxdsm
38007db549 FN-6364: reset iOS mobile viewport on restore
Recover stale iOS document scroll after returning to the Fusion dashboard.

- Add an iOS-only restore hook that clears orphaned body offsets and scrolls the document back to the origin when unlocked.
- Wire the restore reset from the dashboard app shell for mobile layouts.
- Cover visible/page-show restores, platform no-ops, active-lock guards, and orphaned style cleanup.
- Document the mobile restore drift solution for future regressions.

Files changed:
 .../mobile-ios-restore-document-scroll-drift.md    |  59 ++++++++++
 packages/dashboard/app/App.tsx                     |   4 +-
 .../hooks/__tests__/useMobileScrollLock.test.ts    | 121 ++++++++++++++++++++-
 .../dashboard/app/hooks/useMobileScrollLock.ts     |  61 +++++++++++
 4 files changed, 243 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6364

Fusion-Task-Lineage: 9243cab8-5fbb-4332-ac4d-aabefde4161c
2026-06-13 10:29:24 -07:00
gsxdsm
422833045c FN-6359: add latest jump control to task chat
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
2026-06-13 10:20:11 -07:00
gsxdsm
fb102a86d5 FN-6362: reset mobile keyboard restore metrics
Reset mobile keyboard restore sampling so collapsed viewports clear stale keyboard-open metrics.

- Add a restore-specific sampling path for visibilitychange/pageshow that can reset the viewport baseline and bypass the impossible-sample hold once.
- Preserve the existing in-session impossible-sample guard and tail polling behavior for normal focus/resize updates.
- Cover iOS restore, stale offset drift, genuinely open restored keyboards, and Android-style shrink reset cases.
- Document the mobile keyboard restore stale viewport fix for future UI debugging.

Files changed:
 .../mobile-keyboard-restore-stale-viewport.md      |  59 ++++++++
 .../app/hooks/__tests__/useMobileKeyboard.test.ts  | 160 +++++++++++++++++++++
 packages/dashboard/app/hooks/useMobileKeyboard.ts  |  75 +++++++---
 3 files changed, 275 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-6362

Fusion-Task-Lineage: 3919d892-b2d5-419a-abeb-84ac298ca2d5
2026-06-13 10:14:11 -07:00
gsxdsm
1fddc7ace7 FN-6373: fix script test lane enumeration
Align script-test infrastructure with the current quality-test runner and AGENTS invariants.

- Expand run-quality-tests delegator scripts to concrete package quality lanes for dashboard shard planning.
- Cover grouped delegator expansion and non-delegating fallback behavior in ci-test-shard tests.
- Remove obsolete AGENTS button-freeze anchors from the invariant test.

Files changed:
 scripts/__tests__/agents-md-invariants.test.mjs |  2 --
 scripts/__tests__/ci-test-shard.test.mjs        | 32 +++++++++++++++++++++++++
 scripts/ci-test-shard.mjs                       | 28 ++++++++++++++++++++++
 3 files changed, 60 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6373

Fusion-Task-Lineage: 5d833e17-c483-4a5b-818d-ae2f86a45084
2026-06-13 10:01:01 -07:00
gsxdsm
2974f7e878 FN-6358: compact task chat tool-call entries
Tighten the task-detail chat tool-call presentation while documenting the denser layout.

- Reduce spacing and typography weight for collapsed tool-call summaries and expanded entry cards.
- Assert compact tool-call classes in TaskChatTab tests for paired and standalone result entries.
- Update the dashboard guide to describe compact summaries and dense expanded cards.

Files changed:
 docs/dashboard-guide.md                             |  2 +-
 packages/dashboard/app/components/TaskChatTab.css   | 21 ++++++++++++---------
 .../app/components/__tests__/TaskChatTab.test.tsx   | 18 ++++++++++++++++--
 3 files changed, 29 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6358

Fusion-Task-Lineage: 83cbf328-c062-4032-a2e7-e3550f386557
2026-06-13 09:55:49 -07:00
gsxdsm
73be9f8c5d FN-6371: retry stale test worker pruning
Adds bounded retry handling so stale Fusion test temp roots are reclaimed instead of leaking after transient removal failures.

- Share prefix-scoped pruning between isolated HOME and worker temp roots.
- Retry rm-rf on transient busy/non-empty failures and treat ENOENT as successful cleanup.
- Warn once with bounded child diagnostics after persistent prune failures.
- Cover worker and home pruning retry, failure, and ENOENT behavior in script tests.

Files changed:
 scripts/__tests__/test-changed.test.mjs | 118 ++++++++++++++++++++++++++++++++
 scripts/test-changed.mjs                |  84 ++++++++++++++---------
 2 files changed, 168 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-6371

Fusion-Task-Lineage: a81e6849-5eb0-4bc0-8030-9f8eaed4e35a
2026-06-13 09:49:23 -07:00
gsxdsm
e0ec3d1fbd FN-6368: route task chat steering to active sessions
Ensure task chat messages reach the live execution surface instead of waiting for a future session.

- Track seen steering comments for legacy, step-session, and workflow-step execution paths.
- Forward new task chat steering to active step sessions and workflow step sessions, including parallel step handles.
- Remove misleading inactive-session composer copy and cover the steering paths with regression tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6368-steering-running-session.md     |   5 +
 packages/dashboard/app/components/TaskChatTab.tsx  |  12 +-
 .../app/components/__tests__/TaskChatTab.test.tsx  |  18 +-
 .../src/__tests__/executor-step-session.test.ts    | 108 ++++++++++++
 .../engine/src/__tests__/executor-test-helpers.ts  |   3 +
 .../src/__tests__/step-session-executor.test.ts    |  40 +++++
 packages/engine/src/executor.ts                    | 186 ++++++++++++++-------
 packages/engine/src/step-session-executor.ts       |  16 ++
 8 files changed, 312 insertions(+), 76 deletions(-)

Fusion-Task-Id: FN-6368

Fusion-Task-Lineage: 610a6185-b136-4fea-a4bd-ea78ab5aab47
2026-06-13 09:41:20 -07:00
gsxdsm
00282fbf20 FN-6357: document external integration evidence format
Document the labeled provenance evidence layout expected by spec validation.

- Add an AGENTS.md example for required external integration evidence fields.
- Expand contributing guidance with accepted labels, URL expectations, and checksum rules.
- Add a regression test that keeps the documented example aligned with the evidence gate.

Files changed:
 AGENTS.md                                          | 14 ++++++++
 docs/contributing.md                               | 28 ++++++++++++++++
 .../src/__tests__/docs-evidence-example.test.ts    | 37 ++++++++++++++++++++++
 3 files changed, 79 insertions(+)

Fusion-Task-Id: FN-6357

Fusion-Task-Lineage: 788260ed-d5cf-4592-b117-40af5c45e0a1
2026-06-13 09:18:58 -07:00
gsxdsm
550e9edd46 FN-6367: fix constructible CLI test mocks
Update CLI test mocks so Vitest-spied constructors remain new-able under current mock semantics.

- Add constructible mock wrappers for TaskStore and related CLI test constructor mocks.
- Replace arrow-function constructor mock implementations with function-based implementations.
- Bring task retry fixture data in line with the graph resume retry counter shape.

Files changed:
 .../cli/src/__tests__/experiment-finalize.test.ts   | 19 +++++++++++++++++--
 .../__tests__/extension-experiment-finalize.test.ts | 19 +++++++++++++++++--
 packages/cli/src/__tests__/plugin-dev.test.ts       | 19 +++++++++++++++++--
 packages/cli/src/__tests__/project-resolver.test.ts | 17 ++++++++++++++++-
 packages/cli/src/__tests__/task-plan.test.ts        | 17 ++++++++++++++++-
 packages/cli/src/__tests__/task-steer.test.ts       | 17 ++++++++++++++++-
 packages/cli/src/__tests__/update-cache.test.ts     | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/agent.test.ts   | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/backup.test.ts  | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/db.test.ts      | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/desktop.test.ts |  4 +++-
 packages/cli/src/commands/__tests__/init.test.ts    | 17 ++++++++++++++++-
 .../src/commands/__tests__/memory-backup.test.ts    | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/message.test.ts | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/node.test.ts    | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/plugin.test.ts  | 19 +++++++++++++++++--
 packages/cli/src/commands/__tests__/project.test.ts | 21 ++++++++++++++++++---
 packages/cli/src/commands/__tests__/serve.test.ts   | 17 ++++++++++++++++-
 .../src/commands/__tests__/settings-export.test.ts  | 17 ++++++++++++++++-
 .../src/commands/__tests__/settings-import.test.ts  | 17 ++++++++++++++++-
 .../cli/src/commands/__tests__/settings.test.ts     | 17 ++++++++++++++++-
 packages/cli/src/commands/__tests__/task.test.ts    |  2 ++
 22 files changed, 331 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-6367
Fusion-Task-Lineage: d900dfe0-e286-4175-a5ba-7c319e2527b0
2026-06-13 09:14:02 -07:00
gsxdsm
63f1e097a2 FN-6366: fix desktop Vitest constructor mocks
Stabilize the desktop Vitest suite under Vitest 4.1.8 while keeping dashboard builds complete.

- Convert Electron constructor mocks to constructable function implementations for BrowserWindow, Tray, Notification, and LocalRuntimeManager.\n- Assert local runtime initialization uses the mocked home directory in desktop main-process tests.\n- Build dashboard runtime plugin packages before the desktop dashboard build.

Files changed:\n packages/desktop/scripts/workspace-tools.ts        | 15 ++++++++++++++\n packages/desktop/src/__tests__/deep-link.test.ts   |  4 +++-\n .../desktop/src/__tests__/main-integration.test.ts | 23 ++++++++++++++--------\n .../desktop/src/__tests__/main-local-mode.test.ts  | 19 ++++++++++++++----\n .../desktop/src/__tests__/main.integration.test.ts | 21 ++++++++++++--------\n packages/desktop/src/__tests__/main.test.ts        | 13 +++++++++---\n packages/desktop/src/__tests__/native.test.ts      |  6 ++++--\n 7 files changed, 75 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-6366

Fusion-Task-Lineage: 4e4ccdbc-845f-47d9-a565-cc5d659cf089
2026-06-13 09:01:39 -07:00
gsxdsm
3a0e3d558f FN-6363: stabilize memory insight AI mock
Stabilizes memory extraction and audit route tests by restoring the expected createFnAgent mock behavior.\n\n- Add a focused helper that returns structured insight extraction output from the mocked AI session.\n- Reset the mock around memory extract and audit tests so earlier route tests cannot leak incompatible behavior.\n\nFiles changed:\n .../src/__tests__/routes-settings.test.ts          | 28 ++++++++++++++++++++++\n 1 file changed, 28 insertions(+)

Fusion-Task-Id: FN-6363

Fusion-Task-Lineage: d4b93c51-3d30-4a97-90e9-72e2dd660501
2026-06-13 08:55:33 -07:00
gsxdsm
e305b1aa4c FN-6361: respect paused tasks during triage planning
Keep triage planning from advancing or continuing work after a task is paused.

- Abort active triage sessions and reviewer subagents when task updates mark the task paused.
- Skip approved-spec recovery and final approved-spec transitions while a task remains paused.
- Add regression coverage for paused planning, pause-driven aborts, and published package changeset metadata.

Files changed:
 .changeset/pause-triage-planning.md                |   5 +
 .../src/__tests__/triage-pause-abort.test.ts       | 237 +++++++++++++++++++++
 packages/engine/src/triage.ts                      |  57 +++++
 3 files changed, 299 insertions(+)

Fusion-Task-Id: FN-6361
Fusion-Task-Lineage: 33d849d5-1461-49ae-9fe0-be98b534ac35
2026-06-13 08:38:59 -07:00
gsxdsm
6941b7af1e FN-6354: allow idle task chat messages
Task-detail Chat now accepts guidance even when no steerable session is active and queues it for the next run.

- Keep the task chat composer enabled whenever there is draft text and no send is in flight.
- Replace the blocking no-session hint with active-session versus queued-for-next-session copy.
- Extend TaskChatTab coverage across idle, paused, inactive CLI, and send-in-flight states.
- Quarantine the unrelated flaky dashboard settings route test observed during broad verification.

Files changed:
 packages/dashboard/app/components/TaskChatTab.tsx  |  21 ++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 135 +++++++++++++++++----
 packages/dashboard/vitest.config.ts                |   5 +-
 scripts/lib/test-quarantine.json                   |   5 +
 4 files changed, 133 insertions(+), 33 deletions(-)

Fusion-Task-Id: FN-6354

Fusion-Task-Lineage: b0f0d033-bb4d-4eaa-a15d-f06b82643ade
2026-06-13 08:20:31 -07:00
gsxdsm
10972bbdce FN-6360: clean up leaked test worker temp roots
Ensure test isolation removes stale worker temp roots after interrupted or busy Vitest runs.

- Add bounded retry cleanup for Vitest worker roots during teardown.
- Prune orphaned fusion-test-workers-* directories before changed-test isolation checks.
- Cover worker-root retry and pruning behavior with targeted tests.

Files changed:
 .../core/src/__test-utils__/vitest-teardown.ts     | 50 ++++++++++--
 .../vitest-teardown-worker-root-cleanup.test.ts    | 88 ++++++++++++++++++++++
 scripts/__tests__/test-changed.test.mjs            | 33 ++++++++
 scripts/test-changed.mjs                           | 32 ++++++++
 4 files changed, 196 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6360

Fusion-Task-Lineage: d537941d-dd58-403a-a82e-f0aeee9c1eb0
2026-06-13 08:11:46 -07:00
gsxdsm
95b91c1f72 FN-6355: add deterministic docs index test script
Expose the docs README index suite as a focused CLI test lane and document its deterministic invocation.

- Add a package script for running only the docs README index Vitest file.
- Lock the package-config contract around the new script and dashboard quality runner expectations.
- Clarify the CI shard docs to pass Vitest shard flags without a bare separator.

Files changed:
 docs/contributing.md                              |  2 +-
 packages/cli/package.json                         |  1 +
 packages/cli/src/__tests__/package-config.test.ts | 37 ++++++++++++++++++-----
 3 files changed, 31 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6355

Fusion-Task-Lineage: 2a02bc5f-2407-4bad-8aed-afa519826ce7
2026-06-13 07:38:54 -07:00
gsxdsm
29e31fda35 FN-6352: update README feature coverage
Refresh the README to reflect current Fusion workflow, provider, and merge capabilities.

- Document optional workflow steps, workflow-native policy settings, and workflow model lanes.
- Expand provider coverage with Google Generative AI and custom provider setup.
- Clarify smart merge controls and engineer-role backlog auto-claim behavior.

Files changed:
 README.md | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6352

Fusion-Task-Lineage: aa32887a-1d51-4da3-b701-e6d79a173428
2026-06-13 07:08:08 -07:00
gsxdsm
66591ec11c FN-6333: add legacy auto-merge cleanup surfaces
Expose operator controls for auditing and clearing legacy auto-merge stamps.

- Add CLI dry-run, apply, and JSON modes for legacy auto-merge stamp cleanup.
- Add dashboard maintenance endpoints and a Settings → Merge cleanup panel.
- Document the cleanup workflow and cover CLI, route, and UI behavior with tests.

Files changed:
 .changeset/fn-6333-legacy-automerge-cleanup.md     |   5 +
 docs/cli-reference.md                              |   4 +
 docs/dashboard-guide.md                            |   6 ++
 docs/settings-reference.md                         |   2 +-
 packages/cli/src/__tests__/bin.test.ts             |  10 ++
 .../cli/src/__tests__/pr-automerge-cleanup.test.ts | 107 ++++++++++++++++++++
 packages/cli/src/bin.ts                            |  14 ++-
 packages/cli/src/commands/pr.ts                    |  41 ++++++++
 .../components/settings/sections/MergeSection.tsx  | 109 ++++++++++++++++++++
 .../MergeSection.legacy-automerge-cleanup.test.tsx | 110 +++++++++++++++++++++
 .../legacy-automerge-stamps-routes.test.ts         |  76 ++++++++++++++
 packages/dashboard/src/routes.ts                   |  36 +++++++
 12 files changed, 517 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6333
Fusion-Task-Lineage: 55a3fa22-e0ba-4996-bfce-cad31c71177d
2026-06-13 06:12:09 -07:00
gsxdsm
bffae81a98 FN-6277: track and reconcile legacy auto-merge stamps
Track legacy auto-merge stamp provenance and add safe operator cleanup.

- Add autoMergeProvenance storage and migration support so user overrides can be distinguished from legacy review-entry stamps.
- Mark existing ambiguous in-review autoMerge=true tasks as legacy stamps without changing behavior, and expose a dry-run/apply reconciliation API to clear them safely.
- Emit a non-mutating advisory when global auto-merge is disabled while legacy stamped review tasks remain.
- Cover migration, persistence, reconciliation, movement, merge resolution, and advisory behavior with regression tests and docs.

Files changed:
 .../fn-6277-legacy-automerge-stamp-cleanup.md      |   5 +
 docs/architecture.md                               |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/__tests__/db-migrate.test.ts     |  30 ++--
 packages/core/src/__tests__/db.test.ts             |  44 +++---
 packages/core/src/__tests__/goals-schema.test.ts   |   2 +-
 packages/core/src/__tests__/insight-store.test.ts  |  10 +-
 .../legacy-automerge-stamp-reconcile.test.ts       | 144 +++++++++++++++++++
 .../src/__tests__/merge-request-record.test.ts     |   2 +-
 packages/core/src/__tests__/mission-store.test.ts  |   2 +-
 packages/core/src/__tests__/run-audit.test.ts      |   4 +-
 .../core/src/__tests__/store-merge-queue.test.ts   |   2 +-
 packages/core/src/__tests__/store-movement.test.ts |  14 ++
 packages/core/src/__tests__/task-documents.test.ts |   2 +-
 packages/core/src/__tests__/task-merge.test.ts     |  16 ++-
 packages/core/src/db.ts                            |  10 +-
 packages/core/src/index.ts                         |   1 +
 packages/core/src/store.ts                         | 157 ++++++++++++++++++++-
 packages/core/src/task-merge.ts                    |   8 +-
 packages/core/src/types.ts                         |  10 +-
 .../automerge-toggle-legacy-advisory.test.ts       | 128 +++++++++++++++++
 packages/engine/src/project-engine.ts              |  68 ++++++++-
 22 files changed, 593 insertions(+), 70 deletions(-)

Fusion-Task-Id: FN-6277

Fusion-Task-Lineage: 22d36519-f2ba-4ca7-8a09-12fc803c9a5b
2026-06-13 05:06:05 -07:00
gsxdsm
7eafa91dd7 FN-6350: accept labeled external integration evidence
Relax the spec-review evidence detector so complete labeled Markdown evidence passes validation.

- Scan dedicated External Integration Evidence sections alongside existing prompt sections.
- Recognize labeled repo, docs, release/download, CLI name, and checksum evidence with flexible Markdown formatting.
- Add regression coverage for FN-6349-style evidence blocks and triage reviewer handoff.

Files changed:
 ...alidation-external-integration-evidence.test.ts | 51 +++++++++++++++++++
 ...triage-review-spec-external-integration.test.ts | 40 ++++++++++++++-
 .../external-integration-evidence.ts               | 59 +++++++++++++++++++---
 3 files changed, 143 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6350

Fusion-Task-Lineage: 7d0d9a0a-1f51-41db-9434-d15496293c2c
2026-06-13 04:54:59 -07:00
gsxdsm
30e747bebc FN-6351: add plugin scaffold dev toolchain dependencies
Ensure standalone plugin scaffolds declare the tools required by their generated config and scripts.

- Add @types/node, TypeScript, and Vitest dev dependencies to generated standalone plugin package manifests.
- Cover scaffold dependency ranges, script/tool alignment, scoped plugin names, and tsconfig types in plugin scaffold tests.
- Add a patch changeset documenting the scaffold dependency fix.

Files changed:
 .changeset/FN-6351-plugin-scaffold-devdeps.md      | 16 +++++++++++++++
 packages/cli/src/__tests__/plugin-scaffold.test.ts | 24 ++++++++++++++++++++--
 packages/cli/src/commands/plugin-scaffold.ts       |  6 ++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6351

Fusion-Task-Lineage: 4134d7cb-b493-49a7-abe1-154a875aec0e
2026-06-13 04:44:51 -07:00
gsxdsm
2a37ee4e59 FN-6341: settle cli-agent re-entry test promise
Stabilize the cli-agent re-entry regression test by awaiting the original run after the replacement session succeeds.

- Keep the first cli-agent run promise instead of dropping it with void.
- Assert the active task session still points at the first PTY before simulating re-entry.
- Kill and await the first session at the end so no hub or store work outlives teardown.

Files changed:
 packages/engine/src/__tests__/cli-agent-executor.test.ts | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6341

Fusion-Task-Lineage: 3e365f21-0d05-496a-adec-aa782aa83503
2026-06-13 04:06:17 -07:00
gsxdsm
9b17355018 FN-6348: align roadmap schema-version test with core
Updates the roadmap store schema-version expectation to match the current core migration level.

- Rename the schema-version test from 114 to 116.
- Assert the roadmap store database schema version is 116 after init.

Files changed:
 .../fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6348

Fusion-Task-Lineage: 0db4a46d-1d75-4eb1-bfeb-0483eeddb689
2026-06-13 03:42:47 -07:00
gsxdsm
12621aaf60 FN-6335: record zero-step built-in workflow defaults
Record stepless built-in workflow defaults so zero-step selections survive task creation.\n\n- Return an explicit workflow selection for built-in workflows that compile to zero steps.\n- Cover both normal and reserved-id task creation for coding and interpreter-deferred stepwise defaults.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/FN-6335-zero-step-workflow-defaults.md     |  5 +++++\n packages/core/src/__tests__/builtin-workflows.test.ts | 14 ++++++++++++++\n packages/core/src/store.ts                            |  4 +++-\n 3 files changed, 22 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6335

Fusion-Task-Lineage: 521ef05d-bef7-4d26-9f6a-592363f522d1
2026-06-13 03:37:41 -07:00
gsxdsm
35554e674e FN-6347: keep chat composer visible on mobile
Keep the task detail chat layout constrained so mobile users can always reach the composer.

- Give the chat tab a fill-height flex layout with transcript-only scrolling.
- Apply chat-specific modal body and section classes alongside the agent log layout.
- Cover mobile chat layout behavior with component tests and document the modal contract.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6347-chat-input-visible.md           |  5 ++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.css  |  8 ++-
 .../dashboard/app/components/TaskDetailModal.css   | 29 +++++++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  4 +-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 36 ++++++++++
 .../TaskDetailModal.attachments-and-tabs.test.tsx  | 76 ++++++++++++++++++++++
 7 files changed, 155 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6347

Fusion-Task-Lineage: 37250539-d38e-4826-9c31-8b0279844883
2026-06-13 03:32:59 -07:00
gsxdsm
06e1ee7565 FN-6334: rescue db recovery corruption test
Rescues the database recovery corruption test by reducing its fixture size and removing its quarantine.

- Reduce recovery test fixture rows so sqlite3 .recover is not overfed while still corrupting a B-tree page.
- Re-enable packages/core/src/__tests__/db.test.ts in the core Vitest config.
- Remove the db recovery test entry from the quarantine ledger.

Files changed:
 packages/core/src/__tests__/db.test.ts | 5 +++--
 packages/core/vitest.config.ts         | 1 -
 scripts/lib/test-quarantine.json       | 5 -----
 3 files changed, 3 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6334

Fusion-Task-Lineage: c4555976-fe98-4f25-a1b5-e70bfd991b16
2026-06-13 03:26:52 -07:00