Commit Graph

8639 Commits

Author SHA1 Message Date
gsxdsm
1c875f1704 FN-6172: fix skill diagnostics logger assertion
Update the skill diagnostics test to assert against the structured logger surface that now emits the diagnostics output.

- spy on piLog.log instead of piLog.warn in the structured logger diagnostics test
- keep the existing [skills] and [executor] assertions while matching the current logging path

Files changed:
 packages/engine/src/__tests__/pi-create-fn-agent.test.ts | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6172

Fusion-Task-Lineage: e52023f7-6c18-435d-b2c6-bd7f7024b75f
2026-06-09 23:26:13 -07:00
gsxdsm
827b7d934d FN-6171: move GitHub tracking below prompt details
Move the task detail modal's GitHub tracking section to render after the prompt/spec content.

- relocate the GitHub tracking section in TaskDetailModal so it appears beneath prompt details in read mode
- preserve the existing GitHub tracking controls, status, and expand/collapse behavior while changing only section order
- add a regression test that asserts the prompt content appears before the GitHub tracking section

Files changed:
 .../dashboard/app/components/TaskDetailModal.tsx   | 274 ++++++++++-----------
 ...lModal.inline-editing-and-integrations.test.tsx |  28 +++
 2 files changed, 165 insertions(+), 137 deletions(-)

Fusion-Task-Id: FN-6171

Fusion-Task-Lineage: dac8ac54-655d-4403-9e7d-6aad446da793
2026-06-09 23:21:46 -07:00
gsxdsm
d7e14542a9 FN-6170: make mobile nodes view fullscreen
Make the mobile Nodes screen open as a full-screen overlay above the header and nav.

- add a mobile-only fixed fullscreen overlay style for the nodes management panel
- preserve safe-area spacing and scroll behavior while keeping the overlay above mobile navigation
- add a NodesView regression test that asserts the mobile overlay CSS contract and close control rendering

Files changed:
 .changeset/fn-6170-mobile-nodes-fullscreen.md      |  5 +++
 packages/dashboard/app/components/NodesView.css    | 11 +++++
 .../app/components/__tests__/NodesView.test.tsx    | 52 ++++++++++++++++++++++
 3 files changed, 68 insertions(+)

Fusion-Task-Id: FN-6170

Fusion-Task-Lineage: 16995d9f-6b5e-4f15-9367-7eccbd3153d0
2026-06-09 23:16:11 -07:00
gsxdsm
3f6e1c6e40 FN-6169: open script commands in a new terminal tab
Open fresh tabs for follow-up script launches instead of reusing the current terminal.

- track whether an initial command arrived with modal open versus after the terminal was already active
- create a new terminal tab for later script commands, wait for that tab to become active, then send the command there
- expand TerminalModal coverage for first-open versus follow-up script execution and clarify modal-manager script handoff expectations

Files changed:
 packages/dashboard/app/components/TerminalModal.tsx     |  80 ++++++++++-
 .../components/__tests__/TerminalModal.test.tsx    | 150 ++++++++++++++++++---
 .../app/hooks/__tests__/useModalManager.test.ts    |   4 +-
 3 files changed, 207 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-6169

Fusion-Task-Lineage: a7e57a9b-dc3a-432f-bff1-195b62555852
2026-06-09 23:03:51 -07:00
gsxdsm
49cfa7fe88 FN-6165: fix builtin workflow prompt expansion
Keep builtin workflow prompts expandable while preserving read-only behavior.

- move the builtin-disabled fieldset so the prompt expand control stays clickable
- mark inline and fullscreen builtin prompt textareas read-only instead of disabling them
- add coverage for desktop and mobile builtin prompt expansion behavior in WorkflowNodeEditor

Files changed:
 .../app/components/WorkflowNodeEditor.tsx          |  7 +++
 .../__tests__/WorkflowNodeEditor.test.tsx          | 61 ++++++++++++++++++++++
 2 files changed, 68 insertions(+)

Fusion-Task-Id: FN-6165

Fusion-Task-Lineage: 02b1dd9f-6034-46a4-8790-75f1170ddb84
2026-06-09 22:49:35 -07:00
gsxdsm
7960789d37 FN-6167: fix stale mobile modal navigation history
Keep modal history entries in sync so mobile swipe-back reliably closes reopened task detail views.

- add removeNav support to navigation history and ignore self-triggered popstate callbacks
- route modal and overlay programmatic close handlers through navigation-aware wrappers
- add regression coverage for close-and-reopen mobile detail flows and document the stale stack bug

Files changed:
 .../navigation-history-stale-modal-stack.md        |  85 +++++++++++++
 packages/dashboard/app/App.tsx                     |  35 ++++--
 packages/dashboard/app/components/AppModals.tsx    | 137 +++++++++++++++++----
 .../app/components/__tests__/AppModals.test.tsx    |   5 +-
 .../__tests__/navigation-history.test.tsx          | 113 ++++++++++++++++-
 .../hooks/__tests__/useNavigationHistory.test.ts   |  98 +++++++++++++++
 .../dashboard/app/hooks/useNavigationHistory.ts    |  55 ++++++++-
 7 files changed, 494 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-6167

Fusion-Task-Lineage: 086d60ba-7e3d-4e83-b9b4-37ec49b06393
2026-06-09 22:44:30 -07:00
gsxdsm
1b7e52ea99 FN-6168: expose workflow routing in triage
Add workflow discovery, selection, and investigation-task routing guidance to triage.

- document workflow routing guidance in standard and fast triage prompts
- add workflow list/select tools to triage sessions for task specification
- pass workflow_id and noCommitsExpected through fn_task_create for child tasks
- cover prompt/tool availability and child-task routing in triage tests
- add a changeset and workflow docs for triage workflow selection behavior

Files changed:
 .changeset/fn-6168-triage-workflow-routing.md |  5 ++
 docs/workflow-steps.md                        |  2 +
 packages/engine/src/__tests__/triage.test.ts  | 93 +++++++++++++++++++++++++++
 packages/engine/src/triage.ts                 | 27 ++++++++
 4 files changed, 127 insertions(+)

Fusion-Task-Id: FN-6168

Fusion-Task-Lineage: acfcebd5-bb9c-42ba-90a0-e9bcb90216b3
2026-06-09 22:34:34 -07:00
gsxdsm
4d7c51d526 FN-6164: route agent task title summarization through the store
Ensure agent-created tasks use store-managed title summarization before creation hooks fire.

- resolve a store-managed summarizer when task creation explicitly requests summarization
- defer the task-created hook until store summarization finishes and persists the generated title
- stop agent tools from wiring ad hoc summarizer callbacks and pass resolved settings through to createTask
- update core and engine tests to cover store-managed summarization, hook deferral, and inherited settings expectations

Files changed:
 packages/core/src/__tests__/store-create.test.ts  | 83 +++++++++++++++++++++++
 packages/core/src/store.ts                        |  7 +-
 packages/engine/src/__tests__/agent-tools.test.ts | 70 +++++++++----------
 packages/engine/src/__tests__/triage.test.ts      | 12 +++-
 packages/engine/src/agent-tools.ts                | 10 +--
 5 files changed, 136 insertions(+), 46 deletions(-)

Fusion-Task-Id: FN-6164

Fusion-Task-Lineage: f8da7bd7-b5d4-4505-98ed-60c19d82904c
2026-06-09 22:18:48 -07:00
gsxdsm
c27c321a8b FN-6160: fix mobile quick-entry touch handling
Let mobile Quick Entry actions rely on native tap-to-click behavior again.

- remove the manual quick-entry action button click dispatch on touchend
- switch mobile quick-entry action buttons to touch-action: manipulation
- update QuickEntryBox mobile touch tests and add a patch changeset for @runfusion/fusion

Files changed:
 .changeset/tiny-mobile-clicks.md                           |  5 +++++
 packages/dashboard/app/components/QuickEntryBox.css        |  4 ++--
 packages/dashboard/app/components/QuickEntryBox.tsx        |  9 ---------
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx        | 14 +++++++++++++-
 4 files changed, 20 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6160

Fusion-Task-Lineage: a8c13f7e-fb86-4087-a516-a6e16dac2092
2026-06-09 22:13:54 -07:00
gsxdsm
e883a8df01 FN-6166: allow retry for stranded in-review tasks
Handle in-review tasks with status none as retryable when execution or merge retry state is stranded.

- treat in-review tasks with status "none" plus incomplete execution or prior merge attempts as retryable across the CLI, extension, and dashboard routes
- send stranded execution retries back to todo with preserved progress and keep stranded merge retries in-review while clearing merge retry state
- add CLI, extension, and dashboard regression coverage and publish a patch changeset for @runfusion/fusion

Files changed:
 .changeset/fuzzy-ravens-retry.md                   |   5 +
 packages/cli/src/__tests__/extension.test.ts       | 147 +++++++++++++++++++++
 packages/cli/src/commands/__tests__/task.test.ts   | 147 +++++++++++++++++++--
 packages/cli/src/commands/task.ts                  |  59 ++++++++-
 packages/cli/src/extension.ts                      |  39 ++++--
 packages/dashboard/src/__tests__/routes-tasks-ops.test.ts         | 134 +++++++++++++++++++
 packages/dashboard/src/routes/register-task-workflow-routes.ts    |  30 +++--
 7 files changed, 528 insertions(+), 33 deletions(-)

Fusion-Task-Id: FN-6166

Fusion-Task-Lineage: cf78b180-ded4-4b6f-8e98-35e6f309e1d4
2026-06-09 22:11:21 -07:00
gsxdsm
5a353317c4 Readme update and settings cleanup 2026-06-09 21:43:45 -07:00
gsxdsm
a5393b1126 FN-6162: keep mobile workflow editor full screen
Keep the mobile workflow editor stage from stretching the canvas wrapper and shrinking the full-screen view.

- adjust the mobile editor-stage canvas wrapper flex rule to avoid consuming the full stage height
- extend the WorkflowNodeEditor mobile CSS contract test to lock the updated flex behavior

Files changed:
 packages/dashboard/app/components/WorkflowNodeEditor.css                | 2 +-
 .../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts   | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6162

Fusion-Task-Lineage: b09d3317-cf22-4fbf-a732-9f4829c1cfd8
2026-06-09 21:36:53 -07:00
gsxdsm
4435ca2c54 FN-6158: handle Codex auth-tier model incompatibility
Gracefully recover from unsupported Codex model selections on ChatGPT-account auth tiers.

- detect Codex and general model-auth-tier incompatibility errors as retryable model-selection failures
- trigger configured fallback models during session creation and prompt-time retries, with actionable operator guidance when no fallback works
- document the expanded fallback behavior and add engine regression coverage plus a CLI changeset

Files changed:
 .changeset/fn-6158-model-compatibility-fallback.md |   5 +
 docs/settings-reference.md                         |   2 +-
 .../pi-prompt-session-and-check-recursion.test.ts  |  25 ++++
 packages/engine/src/__tests__/pi.test.ts           | 136 ++++++++++++++++++++-
 .../src/__tests__/transient-error-detector.test.ts |  24 ++++
 packages/engine/src/pi.ts                          |  21 +++-
 packages/engine/src/transient-error-detector.ts    |  24 ++++
 7 files changed, 234 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6158
Fusion-Task-Lineage: 3e91f647-40f1-4296-afa4-40861310e1c1
2026-06-09 21:16:42 -07:00
gsxdsm
1c49ae6b7c FN-6153: fix mobile quick-entry toggle touch handling
Prevent mobile quick-entry action taps from being swallowed by browser touch gestures.

- apply a mobile touch-action override to quick-entry action containers and their descendants
- keep the existing mobile button sizing while removing the redundant per-button touch-action rule
- add a regression test that inspects the mobile CSS rule covering quick-entry action controls

Files changed:
 .changeset/quick-entry-mobile-touch.md                  |  5 +++++
 packages/dashboard/app/components/QuickEntryBox.css     |  8 ++++----
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 17 +++++++++++++++++
 3 files changed, 26 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6153

Fusion-Task-Lineage: e915bb06-2c45-4d96-b719-2b7efcf6f986
2026-06-09 21:12:37 -07:00
gsxdsm
235ad8f9ad FN-6156: rescue board workflow toolbar test
Rescue the dashboard board workflow toolbar coverage and rotate the active quarantine.

- wait for the workflow toolbar itself before asserting board workflow actions in Board.test.tsx
- remove Board.test.tsx from the dashboard vitest quarantine list
- quarantine WorkflowNodeEditor.test.tsx with an updated ledger entry for the newly observed flake

Files changed:
 packages/dashboard/app/components/__tests__/Board.test.tsx | 4 ++--
 packages/dashboard/vitest.config.ts                        | 4 +++-
 scripts/lib/test-quarantine.json                           | 4 ++--
 3 files changed, 7 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6156

Fusion-Task-Lineage: c91c3542-fdec-426a-8e63-3edb3f5d34e5
2026-06-09 20:55:22 -07:00
gsxdsm
dd27a633c5 FN-6157: stabilize WorkflowNodeEditor U8 authoring test
Guard the U8 authoring workflow test against editor hydration races.

- wait for the workflow column panel before opening the Code palette
- wait for the code node to render before reading the TypeScript source textarea
- document the flake class to align this test with the existing palette-add race fix

Files changed:
 .../dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6157

Fusion-Task-Lineage: 4009cbb5-8217-4eae-8889-e047ec31bee3
2026-06-09 20:52:46 -07:00
gsxdsm
59ee449ba1 FN-6155: render prompt fullscreen editor in a portal
Keep the workflow prompt expander usable in the fullscreen editor across desktop and mobile.

- render the expanded prompt and gate editor in a document-body portal instead of reusing the inline inspector container
- keep the inline prompt textarea compact while wiring fullscreen edits, focus, and collapse controls through the portal overlay
- extend workflow node editor coverage for desktop and mobile fullscreen expand, collapse, Escape, empty prompt, and edit persistence flows

Files changed:
 packages/dashboard/app/components/WorkflowNodeEditor.tsx          |  81 +++++++------
 packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx          | 127 +++++++++++++++++++--
 2 files changed, 164 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-6155

Fusion-Task-Lineage: 5d0a6367-932a-4fbc-bded-ebad3073d1a6
2026-06-09 20:41:49 -07:00
gsxdsm
a2b1f73794 FN-6152: reset dashboard route test mocks between cases
Tighten dashboard route tests by resetting shared request and mock state between cases.

- add default request headers and per-test chat SSE mock cleanup to prevent state leakage
- restore mocked globals after GitHub review-refresh and settings route tests
- clear secrets sync remote-fetch mock history before each test run

Files changed:
 packages/dashboard/src/__tests__/chat-routes.test.ts         | 10 ++++++++++
 packages/dashboard/src/__tests__/routes-github.test.ts       |  4 ++++
 packages/dashboard/src/__tests__/routes-secrets-sync.test.ts |  1 +
 packages/dashboard/src/__tests__/routes-settings.test.ts     |  4 ++++
 4 files changed, 19 insertions(+)

Fusion-Task-Id: FN-6152

Fusion-Task-Lineage: c7db7cf2-ea2e-4c76-9fc5-5679cc708fe3
2026-06-09 20:29:11 -07:00
gsxdsm
7901607b68 FN-6154: let the mobile node editor fill the screen
Let the mobile workflow node editor inspector use the full available height.

- remove the mobile inspector max-height cap so the editor stage can expand full screen
- update the WorkflowNodeEditor mobile CSS contract test to assert the new max-height rule
- quarantine the unrelated flaky dashboard Board test and record it in the quarantine ledger

Files changed:
 packages/dashboard/app/components/WorkflowNodeEditor.css          | 1 +
 .../app/components/__tests__/WorkflowNodeEditor.css.test.ts       | 1 +
 packages/dashboard/vitest.config.ts                               | 2 +-
 scripts/lib/test-quarantine.json                                  | 8 +++++++-
 4 files changed, 10 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6154

Fusion-Task-Lineage: 14928ad1-dc84-461b-9adf-b5ee079e3b0d
2026-06-09 20:21:58 -07:00
gsxdsm
edde74d568 FN-6146: harden dashboard test mocks and request helper
Stabilize dashboard tests against constructor and request-harness edge cases.

- update dashboard route and service tests to use constructor-safe mock implementations and reset targeted spies between cases
- make the test request helper resume its mock socket, always report successful writes, and preserve end callbacks
- tighten board workflow route assertions around explicit workflow-column flag disabling and cache-bounded slim task snapshots

Files changed:
 .../__tests__/auth-middleware-integration.test.ts  |  4 ++--
 .../src/__tests__/browse-directory-routes.test.ts  |  4 ++--
 packages/dashboard/src/__tests__/chat.test.ts      |  3 ++-
 .../src/__tests__/discovery-routes.test.ts         |  4 ++--
 .../src/__tests__/docker-node-routes.test.ts       |  4 ++--
 .../__tests__/experiment-routes.finalize.test.ts   |  2 +-
 .../src/__tests__/github-issue-comment.test.ts     |  4 ++--
 .../dashboard/src/__tests__/github-poll.test.ts    |  4 ++--
 .../__tests__/github-source-issue-close.test.ts    |  4 ++--
 .../github-source-issue-reconciler.test.ts         |  4 ++--
 .../src/__tests__/github-tracking-comments.test.ts |  4 ++--
 .../src/__tests__/github-tracking-delete.test.ts   |  4 ++--
 .../src/__tests__/github-tracking-hook.test.ts     |  4 ++--
 ...ithub-tracking-periodic-reconcile-sweep.test.ts | 12 +++++-----
 .../__tests__/github-tracking-reconciler.test.ts   |  4 ++--
 .../src/__tests__/github-tracking-state.test.ts    |  4 ++--
 .../src/__tests__/github-tracking-unlink.test.ts   |  4 ++--
 .../src/__tests__/github-tracking.test.ts          |  4 ++--
 .../dashboard/src/__tests__/mesh-routes.test.ts    |  4 ++--
 .../dashboard/src/__tests__/node-routes.test.ts    |  4 ++--
 .../src/__tests__/pi-extensions-routes.test.ts     | 10 ++++-----
 .../src/__tests__/plugin-routes.routes.test.ts     |  4 ++--
 .../dashboard/src/__tests__/plugin-routes.test.ts  |  4 ++--
 .../__tests__/project-pause-resume-routes.test.ts  |  4 ++--
 .../dashboard/src/__tests__/project-routes.test.ts |  4 ++--
 .../dashboard/src/__tests__/routes-agents.test.ts  |  4 ++--
 .../dashboard/src/__tests__/routes-auth.test.ts    |  6 +++--
 .../src/__tests__/routes-automation.test.ts        |  4 ++--
 .../dashboard/src/__tests__/routes-git.test.ts     |  4 ++--
 .../dashboard/src/__tests__/routes-github.test.ts  |  4 ++--
 .../src/__tests__/routes-planning-tracking.test.ts |  1 +
 .../src/__tests__/routes-planning.test.ts          |  4 ++--
 .../dashboard/src/__tests__/routes-proxy.test.ts   |  8 +++----
 .../src/__tests__/routes-settings.test.ts          |  4 ++--
 .../dashboard/src/__tests__/routes-system.test.ts  |  7 ++++--
 .../src/__tests__/routes-tasks-ops.test.ts         |  4 ++--
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  4 ++--
 .../src/__tests__/session-resume-history.test.ts   |  1 +
 .../dashboard/src/__tests__/setup-routes.test.ts   |  8 +++----
 .../shared-branch-group-entry-points.test.ts       |  4 ++--
 .../routes/__tests__/board-workflows-route.test.ts | 26 +++++++++++++---------
 .../src/routes/__tests__/custom-providers.test.ts  |  4 ++--
 .../routes/__tests__/docker-node-routes.test.ts    |  4 ++--
 .../__tests__/register-docker-node-routes.test.ts  |  6 ++---
 .../register-docker-provisioning-routes.test.ts    | 10 ++++-----
 packages/dashboard/src/test-request.ts             |  7 ++++--
 46 files changed, 126 insertions(+), 109 deletions(-)

Fusion-Task-Id: FN-6146

Fusion-Task-Lineage: 989e9da3-92ed-43bd-a505-6114de4f1120
2026-06-09 20:08:18 -07:00
gsxdsm
03f1701cdf FN-6150: deflake workflow editor save tests
Wait for workflow editor hydration before exercising save and rename flows.

- wait for the Save action and column inputs to render before editing workflow names
- switch the rename clicks to synchronous lookups after hydration to avoid async race flakiness
- keep the coverage focused on the existing save-and-close and dirty-switch scenarios

Files changed:
 .../app/components/__tests__/WorkflowNodeEditor.test.tsx          | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6150

Fusion-Task-Lineage: 98044a22-3f07-4a58-ad61-19ba6b372565
2026-06-09 19:36:50 -07:00
gsxdsm
477c8f1e03 FN-6149: tokenize bare hex colors in dashboard CSS
Replace hard-coded dashboard hex colors with semantic tokens and guard the cleanup with regression coverage.

- swap bare hex colors in ScriptsModal.css for semantic custom properties
- swap bare hex colors in SettingsSyncLog.css for semantic custom properties
- add regression coverage for bare hex literals outside var() fallbacks in audited dashboard CSS
- add a patch changeset for @runfusion/fusion

Files changed:
 .changeset/fn-6149-css-tokenization.md               |  5 +++++
 .../dashboard-component-color-tokenization.test.ts   | 20 ++++++++++++++++++++
 packages/dashboard/app/components/ScriptsModal.css   |  4 ++--
 .../dashboard/app/components/SettingsSyncLog.css     |  4 ++--
 4 files changed, 29 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6149

Fusion-Task-Lineage: 3a3ae466-7e53-484a-8785-c15a7f83aca7
2026-06-09 18:49:02 -07:00
gsxdsm
4c9d6839bc FN-6148: add mobile GitHub toggle touch coverage
Expand QuickEntryBox mobile touch coverage for the GitHub tracking toggle.

- preserve the mobile quick-entry render helper return value for create payload assertions
- add touch tests for GitHub toggle pressed state, SVG touch targets, submitted overrides, and primary styling
- verify mobile touch can disable GitHub tracking before quick task submission

Files changed:
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 63 +++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6148

Fusion-Task-Lineage: 4a577bc3-bf98-4821-aba2-0c66b99f1e1f
2026-06-09 18:38:40 -07:00
gsxdsm
784f3080a8 FN-6148: fix first click of GitHub tracking icon on mobile
The shared delegated touch handler on .quick-entry-actions already uses
closest("button") to resolve taps that land on child SVG elements — delivered
via FN-6145. This changeset documents the fix scoped to the GitHub tracking
toggle and adds explicit regression test coverage for that control.

Fusion-Task-Id: FN-6148

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:24:06 -07:00
gsxdsm
1b68107eea FN-6147: polish simple editor mobile button states
Polish simple workflow editor controls for clearer mobile interaction.

- add hover, focus, and active states to simple editor graph buttons and mobile tab/add controls
- replace hard-coded simple editor spacing with shared spacing tokens for node labels and edge chips
- add CSS contract tests covering the new button state and spacing rules

Files changed:
 .../app/components/MobileWorkflowGraphView.css     |  57 +++++++++++-
 .../app/components/WorkflowNodeEditor.css          |  37 ++++++++
 .../__tests__/MobileWorkflowGraphView.css.test.ts  | 100 +++++++++++++++++++++
 3 files changed, 191 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6147

Fusion-Task-Lineage: 5ef4baeb-ccad-4811-aada-a195ecf8d754
2026-06-09 17:56:24 -07:00
gsxdsm
f26cfe0cb0 FN-6145: fix mobile quick-entry touch targets
Preserve quick-entry mobile touch behavior for Fast and Priority controls.

- treat action touch targets as generic Elements so nested SVG taps still resolve to their parent buttons
- add mobile touch-action styling for quick-entry action buttons to improve tap handling
- extend QuickEntryBox mobile tests to cover Fast toggle, Priority picker, and SVG touch targets

Files changed:
 packages/dashboard/app/components/QuickEntryBox.css     |   5 +
 packages/dashboard/app/components/QuickEntryBox.tsx     |   2 +-
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    | 117 +++++++++++++++++----
 3 files changed, 102 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-6145

Fusion-Task-Lineage: 2af1c142-25ba-41a8-ba4f-c58e38cc870a
2026-06-09 17:50:46 -07:00
gsxdsm
4f8097000c FN-6144: make mobile node editor inspector fill available height
Let the mobile workflow node editor use the full available screen height.

- replace the mobile inspector max-height cap with flex sizing so the editor stage can expand full screen
- preserve mobile inspector scrolling by setting a zero min-height in the stacked layout
- update the mobile CSS contract test to assert the new flex-based sizing rules

Files changed:
 packages/dashboard/app/components/WorkflowNodeEditor.css               | 3 ++-
 .../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6144

Fusion-Task-Lineage: 49d06acb-17c6-40fd-9c6d-3af98ddf8f6e
2026-06-09 17:24:49 -07:00
gsxdsm
99661c17fd FN-6143: add fullscreen prompt editor toggle
Add a fullscreen expand/collapse control for workflow prompt editing.

- add inline maximize/minimize controls for workflow prompt and gate editors
- style the fullscreen prompt overlay with responsive spacing and textarea sizing
- cover expand/collapse behavior with prompt-editor tests and add the published package changeset
- keep the mobile send-back promote action visible in task cards

Files changed:
 .changeset/fn-6143-workflow-prompt-fullscreen.md   |   5 +
 packages/dashboard/app/components/TaskCard.css     |   1 +
 packages/dashboard/app/components/WorkflowNodeEditor.css          |  77 ++++++++++++++++
 packages/dashboard/app/components/WorkflowNodeEditor.tsx          |  58 ++++++++++--
 packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx          | 102 +++++++++++++++++++++
 5 files changed, 234 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6143

Fusion-Task-Lineage: 787a33e3-a6fe-44c4-9cb8-c24b3e86e935
2026-06-09 16:49:59 -07:00
gsxdsm
d67f61d03e FN-6135: remove workflow toolbar collapse toggle
Simplify the workflow board toolbar by removing its collapse state and persistence.

- remove the workflow toolbar collapse toggle, handlers, and scoped localStorage persistence from Board
- drop collapse-specific workflow toolbar styling and mobile collapsed-layout rules
- replace collapse-focused board tests with assertions that the toolbar renders without a collapse affordance
- remove the unused workflow toolbar storage key and update project storage expectations

Files changed:
 packages/dashboard/app/components/Board.tsx        | 129 +++++---------
 packages/dashboard/app/components/Lane.css         |  36 ----
 .../app/components/__tests__/Board.test.tsx        | 187 +++------------------
 .../app/utils/__tests__/projectStorage.test.ts     |   3 +-
 packages/dashboard/app/utils/projectStorage.ts     |   1 -
 5 files changed, 60 insertions(+), 296 deletions(-)

Fusion-Task-Id: FN-6135

Fusion-Task-Lineage: 11c17edf-bbed-4ec5-a06e-00a2537ffac1
2026-06-09 16:02:08 -07:00
gsxdsm
733489b010 Agent 2026-06-09 15:59:00 -07:00
gsxdsm
cca7a61c4f FN-6142: fix mobile visibility restore scroll anchoring
Restore pinned mobile chat scroll position when visibility-driven refetch hooks fire.

- re-anchor mobile chat to the bottom during visibility/pageshow refetch capture when the user was pinned
- tighten ChatView visibility restore regression tests to assert the synchronous re-anchor path directly
- remove the ChatView rooms test quarantine and restore the dashboard include list entry

Files changed:
 packages/dashboard/app/components/ChatView.tsx          |  6 +++++-
 .../app/components/__tests__/ChatView.rooms.test.tsx    | 17 ++++++++---------
 .../app/components/__tests__/ChatView.test.tsx          |  7 ++++---
 packages/dashboard/vitest.config.ts                     |  2 +-
 scripts/lib/test-quarantine.json                        |  8 +-------
 5 files changed, 19 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-6142

Fusion-Task-Lineage: 2974cf0d-5512-4b24-ab0c-2d2fb63fd41a
2026-06-09 15:52:34 -07:00
gsxdsm
a57167e96a FN-6140: downgrade missing skill diagnostics to info
Reduce noise from missing requested skill messages in agent logs.

- change missing requested skill diagnostics from warning to info in the skill resolver
- update engine tests to expect info-level logging for unresolved requested skills
- preserve the built-in fusion fallback behavior without emitting not-found diagnostics

Files changed:
 packages/engine/src/__tests__/pi.test.ts           |  6 ++--
 packages/engine/src/__tests__/skill-resolver.test.ts    | 42 +++++++++++-----------
 packages/engine/src/skill-resolver.ts              |  2 +-
 3 files changed, 25 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-6140

Fusion-Task-Lineage: 3d2efdcd-8c6d-4fda-b5cb-b85421ac755e
2026-06-09 15:50:53 -07:00
gsxdsm
b7a56cc399 FN-6141: stop treating benign workflow-graph exits as failures
Treat already-finalized or paused workflow-graph exits as benign instead of failure-worthy.

- log info-level benign messages when workflow graph runs end after a task is paused or has already advanced out of in-progress
- keep true in-progress graph failures on the existing failed-and-handoff path with failure logging
- add executor recovery coverage for todo, in-review, done, paused, and genuine failure cases
- add a patch changeset for the published CLI package

Files changed:
 .changeset/fn-6141-benign-graph-exit.md            |   5 +
 .../engine/src/__tests__/executor-recovery.test.ts | 137 ++++++++++++++++++++-
 packages/engine/src/executor.ts                    |  23 ++--
 3 files changed, 150 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-6141

Fusion-Task-Lineage: 8d29159a-8d7a-4e84-b05a-fe83f6ccbb78
2026-06-09 15:27:57 -07:00
gsxdsm
2fe12ad261 FN-6139: remove unused _baseSha parameter
Remove the unused _baseSha parameter from branch authority checks.

- delete the unused optional _baseSha parameter from isBranchAuthoritativeForTask
- keep branch authority behavior unchanged while simplifying the function signature

Files changed:
 packages/engine/src/branch-conflicts.ts | 1 -
 1 file changed, 1 deletion(-)

Fusion-Task-Id: FN-6139

Fusion-Task-Lineage: 349144fd-2f4a-4a19-a13f-14b2786e97ef
2026-06-09 15:21:39 -07:00
gsxdsm
fbc2c37d40 FN-6137: convert PR lifecycle built-in to fragment
Convert the built-in PR lifecycle into a reusable fragment instead of a selectable task workflow.

- mark builtin:pr-workflow as a fragment and exclude fragments from default-enabled built-ins
- hide built-in fragments from the General settings workflow toggles
- update core and dashboard tests to assert fragment behavior and reject task selection of the PR lifecycle fragment
- add a changeset for the published CLI package

Files changed:
 .changeset/pr-lifecycle-fragment.md                |  5 +++++
 .../core/src/__tests__/builtin-workflows.test.ts   | 24 ++++++++++++++++------
 packages/core/src/builtin-workflows.ts             |  7 ++++---
 packages/core/src/store.ts                         |  2 +-
 .../__tests__/WorkflowNodeEditor.test.tsx          |  3 ++-
 .../settings/sections/GeneralSection.tsx           |  4 +++-
 6 files changed, 33 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6137

Fusion-Task-Lineage: d959ba3b-2e50-4c9b-a1fa-161776939403
2026-06-09 15:19:26 -07:00
gsxdsm
ceec6fa1e4 FN-6138: log missing skill patterns at info level
Downgrade configured-skill pattern misses from warnings to informational diagnostics.

- change missing allowed-skill pattern diagnostics from warning to info in the skill resolver
- update skill resolver tests to expect informational diagnostics and piLog.log output

Files changed:
 packages/engine/src/__tests__/skill-resolver.test.ts | 21 ++++++++++-----------
 packages/engine/src/skill-resolver.ts               |  2 +-
 2 files changed, 11 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6138

Fusion-Task-Lineage: 4bb7ddf8-5ae8-46c6-8fec-b4940a1bb39f
2026-06-09 15:17:02 -07:00
gsxdsm
916031acf1 FN-6125: hide duplicate agent prompts in CE transcript
Remove structured question echoing so CE transcripts only show the user-facing answer flow.

- stop rendering stored agent question control records as transcript bubbles while keeping question metadata for answer label lookup
- remove the now-unused transcript question styling
- update CE transcript tests to assert hidden structured question turns and preserved answer rendering

Files changed:
 plugins/fusion-plugin-compound-engineering/src/dashboard/CeFlow.tsx          |  9 ---------
 plugins/fusion-plugin-compound-engineering/src/dashboard/CompoundEngineeringView.css |  3 ---
 plugins/fusion-plugin-compound-engineering/src/dashboard/__tests__/CeFlow.test.tsx   | 16 ++++++++++++++--
 3 files changed, 14 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-6125

Fusion-Task-Lineage: 5cfec24a-8c46-4983-8fa5-77da821ac0ca
2026-06-09 15:14:24 -07:00
gsxdsm
b5d19bd480 FN-6134: extend surface-enumeration gates to UI affordance changes
Apply the surface-enumeration review gate to UI affordance add/remove work across triage, review, tests, and docs.

- require triage prompts to add Surface Enumeration guidance for UI affordance add/remove tasks in standard and fast modes
- tighten reviewer guidance to block single-surface UI affordance coverage and leftover shell cleanup gaps
- expand engine prompt tests to cover the new UI affordance gate wording
- document the shared checklist and motivating incidents in AGENTS.md and docs/testing.md

Files changed:
 AGENTS.md                                      |  3 +++
 docs/testing.md                                |  6 +++++-
 packages/engine/src/__tests__/reviewer.test.ts | 26 ++++++++++++++++++++++++--
 packages/engine/src/__tests__/triage.test.ts   | 19 ++++++++++++++++++-
 packages/engine/src/reviewer.ts                |  5 +++--
 packages/engine/src/triage.ts                  | 24 ++++++++++++++----------
 6 files changed, 67 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6134

Fusion-Task-Lineage: 0bc733eb-d160-48cc-817d-69138290faec
2026-06-09 15:12:26 -07:00
gsxdsm
dfb037edd8 FN-6133: fix workflow toolbar toggle accessibility
Replace the empty workflow toolbar icon toggle with an accessible text control.

- move workflow toolbar collapse/expand handling into shared click and keyboard callbacks
- make the expanded toolbar itself clickable while rendering a focusable "Workflow" label in collapsed mode
- update toolbar styling and Board tests to cover keyboard toggling, single-workflow cases, and the absence of empty icon buttons

Files changed:
 packages/dashboard/app/components/Board.tsx        |  51 ++++++++---
 packages/dashboard/app/components/Lane.css         |  19 +++-
 .../app/components/__tests__/Board.test.tsx        | 100 +++++++++++++++++++--
 3 files changed, 147 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6133

Fusion-Task-Lineage: 6dd217a0-ede0-424a-8ab7-cdde39d2b6ce
2026-06-09 15:05:25 -07:00
gsxdsm
0b589e1f2b FN-6131: move quick entry save and toggles to top
Reorder the Quick Entry action row so the primary create controls appear first.

- move Save, Fast, GitHub, and Priority controls to the start of the Quick Entry actions row
- preserve the existing priority picker behavior while relocating its trigger and portal markup
- update QuickEntryBox tests to assert the new DOM order and keep focus-coverage stable after the reorder

Files changed:
 packages/dashboard/app/components/QuickEntryBox.tsx     | 225 +++++++++++----------
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    |  47 +++--
 2 files changed, 145 insertions(+), 127 deletions(-)

Fusion-Task-Id: FN-6131

Fusion-Task-Lineage: d95401b9-4440-4c55-ad32-94df7d0c33fe
2026-06-09 15:02:53 -07:00
gsxdsm
7f08845ed5 FN-6130: make compound engineering theme colors dark-mode aware
Align compound engineering dashboard colors with the active theme tokens.

- replace hardcoded and legacy compound engineering CSS colors with dashboard theme tokens
- switch dimmed text treatments from opacity to explicit theme-aware text tokens for light and dark mode
- add regression coverage for token usage in compound engineering styles
- keep branch authority checks compatible with the optional base SHA argument

Files changed:
 packages/engine/src/branch-conflicts.ts            |   1 +
 .../src/dashboard/CompoundEngineeringView.css      | 106 +++++++++++----------
 .../src/dashboard/__tests__/theme-tokens.test.ts   |  97 +++++++++++++++++++
 3 files changed, 153 insertions(+), 51 deletions(-)

Fusion-Task-Id: FN-6130

Fusion-Task-Lineage: 00adc217-0649-4b4f-9b9b-92c551f02926
2026-06-09 14:56:26 -07:00
gsxdsm
e78203e7fb FN-6128: preserve textarea focus on mobile quick-entry buttons
Prevent mobile quick-entry touches from stealing focus from the task textarea.

- intercept touch interactions on quick-entry action buttons before the browser refocuses them
- restore textarea focus after touch-triggered quick-entry actions complete
- avoid autofocus in the deps search input when the textarea is already focused
- add mobile regression coverage across the full quick-entry action button surface, including disabled buttons

Files changed:
 packages/dashboard/app/components/QuickEntryBox.tsx     |  32 +++++-
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    | 123 +++++++++++++++++++++
 2 files changed, 153 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6128

Fusion-Task-Lineage: 598e6ba5-6e83-426c-9bf2-dd2ac4215092
2026-06-09 14:51:22 -07:00
gsxdsm
5f1fe3f57b FN-6132: remove unused base SHA from branch authority check
Fix the branch authority helper and caller so the squash merge stays lint-clean.

- drop the unused `baseSha` parameter from `isBranchAuthoritativeForTask`
- update the merger authority probe to call the helper with the remaining arguments

Files changed:
 packages/engine/src/branch-conflicts.ts | 1 -
 packages/engine/src/merger.ts           | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

Fusion-Task-Id: FN-6132
Fusion-Task-Lineage: c8d8352d-67f7-498b-8b6d-254375d42417
2026-06-09 14:45:15 -07:00
gsxdsm
6aa17b0444 FN-6129: right-align promote action on task cards
Keep the promote action pinned to the right edge of task card action rows.

- add `margin-left: auto` to the promote action send-back button styling
- preserve right alignment for the mobile action row breakpoint
- add TaskCard coverage for solo and multi-action mobile layouts

Files changed:
 packages/dashboard/app/components/TaskCard.css     |  5 +++
 packages/dashboard/app/components/__tests__/TaskCard.test.tsx     | 40 ++++++++++++++++++++++
 2 files changed, 45 insertions(+)

Fusion-Task-Id: FN-6129
Fusion-Task-Lineage: 70aed0c1-b007-4a71-9755-04535b630888
2026-06-09 14:40:44 -07:00
gsxdsm
576ff7768a fix(FN-6131): stop failing on foreign branch attribution
Treat foreign task-attributed commits in branch ranges as informational instead of blocking worktree acquisition or branch authority checks.

Fusion-Task-Id: FN-6131
2026-06-09 14:32:13 -07:00
gsxdsm
6ec0e2bfb8 fix(FN-6117): correct stacked branch diff counts
Filter active task diff displays to commits attributed to the current task when a branch range includes foreign task commits. This keeps task cards and Changes tabs from showing inherited branch stacks as task-owned file changes.

Fusion-Task-Id: FN-6117
2026-06-09 14:32:13 -07:00
gsxdsm
0b7549a534 FN-6126: enable workflow experimental flags by default
Turn on the workflow rollout flags by default and update docs/tests for the new opt-out behavior.

- default workflowColumns, workflowGraphExecutor, workflowInterpreterDualObserve, and workflowInterpreterAuthoritative to enabled in global settings
- update workflow docs and concepts to describe explicit flag-off overrides instead of default-off rollout gating
- remove redundant demo/test setup that manually enabled workflow columns and keep characterization coverage for both enabled and disabled states
- add a changeset for the published CLI package documenting the default-on workflow rollout

Files changed:
 .changeset/fn-6126-workflow-flags-default-on.md                |  5 +++++
 CONCEPTS.md                                                    |  4 ++--
 demo/seed.ts                                                   |  1 -
 docs/workflow-steps.md                                         | 10 +++++-----
 packages/core/src/__tests__/move-task-characterization.test.ts |  4 +---
 packages/core/src/settings-schema.ts                           |  7 ++++++-
 packages/core/src/types.ts                                     |  4 +++-
 packages/core/src/workflow-columns-settings.ts                 |  4 ++--
 8 files changed, 24 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-6126

Fusion-Task-Lineage: 334283a6-e80a-42d0-bf66-68f88a12e287
2026-06-09 14:10:01 -07:00
gsxdsm
19f8d86152 FN-6124: add dashboard bundle version polling reload
Add periodic bundle version polling so open dashboard tabs refresh after new deployments.

- add a production polling interval to version checks for visible dashboard tabs
- clear installed polling when version-check state resets to avoid duplicate timers in tests/runtime
- expand versionCheck coverage for poll-triggered mismatch detection, cooldown behavior, and cleanup

Files changed:
 packages/dashboard/app/__tests__/versionCheck.test.ts | 115 +++++++++++++++++++++
 packages/dashboard/app/versionCheck.ts             |  27 ++++-
 2 files changed, 140 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6124

Fusion-Task-Lineage: a211fc03-06fd-4142-8878-98ac60b70c13
2026-06-09 14:07:27 -07:00
gsxdsm
c780470378 FN-6127: stabilize dashboard test mocks and isolation
Keep dashboard component tests isolated and aligned with current shared mocks.

- restore the original WebSocket after SessionTerminal tests and switch xterm addon mocks to constructor-shaped fakes
- add missing lucide-react Workflow and Check icon mocks for TaskDetailModal helper coverage
- add a dedicated TaskDetailModal mock coverage test to catch future transitive icon mock gaps

Files changed:
 packages/dashboard/app/components/__tests__/SessionTerminal.mobile.test.tsx       |  5 ++++-
 packages/dashboard/app/components/__tests__/SessionTerminal.test.tsx              | 13 ++++++++-----
 packages/dashboard/app/components/__tests__/TaskDetailModal.mock-coverage.test.ts | 21 +++++++++++++++++++++
 packages/dashboard/app/components/__tests__/TaskDetailModal.test-helpers.ts       |  2 ++
 4 files changed, 35 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6127

Fusion-Task-Lineage: fde5d7d6-5211-40da-9437-a3219378ce68
2026-06-09 13:57:21 -07:00
gsxdsm
30ba1f005a FN-6119: open CE docs in built-in file viewer
Expose the dashboard file viewer to plugin views and wire Compound Engineering artifacts to it.

- add an openFile callback to the dashboard plugin view context and pass through the app host implementation
- switch Compound Engineering artifact Open actions to the built-in file viewer with matching styling and coverage
- document the new plugin context capability and add a published changeset for the CLI package

Files changed:
 .changeset/ce-docs-built-in-viewer.md              |  5 +++
 docs/PLUGIN_AUTHORING.md                           |  2 +-
 packages/dashboard/app/App.tsx                     |  1 +
 packages/dashboard/app/plugins/types.ts            |  2 ++
 .../src/dashboard-interop.d.ts                     |  1 +
 .../src/dashboard/CompoundEngineeringView.css      | 16 +++++++++
 .../src/dashboard/CompoundEngineeringView.tsx      | 24 +++++++-------
 .../__tests__/CompoundEngineeringView.test.tsx     | 38 ++++++++++++++++++++++
 8 files changed, 76 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6119

Fusion-Task-Lineage: 8feb461c-b1d2-4059-9aa1-ffc756d15196
2026-06-09 13:54:59 -07:00