Commit Graph

7623 Commits

Author SHA1 Message Date
gsxdsm
07d5262a83 FN-6208: sync workflow settings across nodes
Synchronize workflow setting values through node settings sync.

- Include workflow settings in settings payloads, diffs, status responses, and API types.
- Apply inbound and pulled workflow settings through the TaskStore while ignoring rejected setting ids.
- Add core, route, hook, API, and Nodes view coverage for workflow settings sync behavior.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/loud-nodes-sync.md                      |   5 +
 packages/core/src/__tests__/central-core.test.ts   |  37 ++++
 packages/core/src/central-core.ts                  |  13 +-
 packages/core/src/types.ts                         |   4 +
 packages/dashboard/app/__tests__/api-node.test.ts  |   4 +-
 packages/dashboard/app/api-node.ts                 |   3 +
 .../app/components/__tests__/NodesView.test.tsx    |   8 +-
 .../hooks/__tests__/useNodeSettingsSync.test.ts    |  33 +++-
 .../dashboard/app/hooks/useNodeSettingsSync.ts     |   4 +-
 .../__tests__/routes-nodes-sync-contract.test.ts   |  18 +-
 .../src/__tests__/routes-nodes-sync.test.ts        | 191 ++++++++++++++++++++-
 .../src/routes/register-settings-memory-routes.ts  |   7 +-
 .../register-settings-sync-inbound-routes.ts       |  73 +++++++-
 .../src/routes/register-settings-sync-routes.ts    | 128 ++++++++++++--
 14 files changed, 488 insertions(+), 40 deletions(-)

Fusion-Task-Id: FN-6208

Fusion-Task-Lineage: 9b5e7e56-6287-4bc5-966a-2bcc2ba292a7
2026-06-11 09:21:23 -07:00
gsxdsm
648d3598e0 FN-6206: quarantine flaky engine tests
Move undocumented flaky engine tests into the formal quarantine path.

- add quarantine ledger entries for flaky engine test files observed under concurrent/full-suite load
- exclude the quarantined engine test files from vitest projects so they no longer run in gate and reliability pools
- remove the undocumented it.skip markers by quarantining at the file/config level instead

Files changed:
 .../__tests__/merger-file-scope-invariant.test.ts  |  4 ++--
 .../src/__tests__/project-engine-manager.test.ts   |  2 +-
 packages/engine/vitest.config.ts                   | 10 ++++++++--
 scripts/lib/test-quarantine.json                   | 23 +++++++++++++++++++++-
 4 files changed, 33 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6206

Fusion-Task-Lineage: 8d88725e-1e92-4a06-aaa6-be34287e613a
2026-06-11 09:21:23 -07:00
gsxdsm
74c63a75d0 FN-6205: skip custom providers in settings save split
Prevent the settings save split from serializing custom provider definitions through the global or project patch paths.

- skip `customProviders` when building global settings patches
- skip `customProviders` when building project settings patches
- add a regression test that keeps custom providers out of both serialized patches

Files changed:
 .../app/__tests__/settings-save-split.test.ts      | 24 ++++++++++++++++++++++
 .../app/components/settings/save-split.ts          |  4 ++++
 2 files changed, 28 insertions(+)

Fusion-Task-Id: FN-6205

Fusion-Task-Lineage: 84c3f42b-c621-44ff-b977-ecd3a6729e04
2026-06-11 09:21:23 -07:00
gsxdsm
82b89bd695 Merge pull request #1577 from Runfusion/feature/workflow-owned-merge-s04-builtin-ir-regions
refactor(workflow): S04 built-in merge retry recovery IR regions
2026-06-11 07:55:41 -07:00
gsxdsm
3e06bc6c69 Merge pull request #1576 from Runfusion/feature/workflow-owned-merge-s03-generic-scheduler-claim
refactor(workflow): S03 generic scheduler claim path
2026-06-11 07:54:57 -07:00
gsxdsm
6261f99184 Merge pull request #1575 from Runfusion/feature/workflow-owned-merge-s02-merge-request-projection
refactor(workflow): S02 merge request projection onto work items
2026-06-11 07:51:58 -07:00
gsxdsm
46db9a7759 Merge pull request #1571 from Runfusion/feature/workflow-owned-merge-retry-scheduling-plan
refactor(workflow): add workflow-owned merge migration slice
2026-06-11 07:50:32 -07:00
gsxdsm
045a74d249 chore(release): v0.41.0
Version bump via changesets.
2026-06-10 19:05:55 -07:00
gsxdsm
4151a19e84 feat: bump pi coding agent to 0.79.1 for Claude Fable 5 support
Update @earendil-works/pi-coding-agent and @earendil-works/pi-ai from
^0.78.0 to ^0.79.1 across cli, engine, and dashboard. This brings in
Claude Fable 5 (claude-fable-5) on the Anthropic and Amazon Bedrock
providers.

Fusion's model picker is registry-driven (/api/models -> pi ModelRegistry,
filtered by provider, not model id), so Fable surfaces automatically for
users with Anthropic or Claude CLI auth configured — no Fusion-side model
list change needed.

Verified: all core packages typecheck clean against 0.79.1; boot smoke
(fn --help, /api/health 200, clean shutdown) passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 18:51:36 -07:00
gsxdsm
f0d6d70a32 chore(release): v0.40.1
Version bump via changesets.
2026-06-10 18:08:04 -07:00
gsxdsm
e62847bd06 fix smoke test 2026-06-10 18:06:51 -07:00
gsxdsm
9f38b0d090 chore(release): v0.40.0
Version bump via changesets.
2026-06-10 17:58:39 -07:00
gsxdsm
0b299ee5fc FN-6201: move Authentication after General in settings
Move Authentication into the Global settings group after General.

- remove the standalone Account header from the settings sidebar
- place Authentication immediately after Global General in the Global group
- update the section inventory comments to match the new grouping, including runtime sections

Files changed:
 packages/dashboard/app/components/SettingsModal.tsx | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6201

Fusion-Task-Lineage: 4cae66aa-43c5-4436-957b-4059915c2884
2026-06-10 12:10:02 -07:00
gsxdsm
d75f861f24 FN-6199: harden AI merge worktree cleanup
Guarantee AI merge clean-room worktrees are pruned on merge completion and swept by task state.

- prune pre-existing same-task AI merge temp worktrees before starting a new merge and audit cleanup outcomes
- add task-aware tempdir sweep rules with a short grace period for done or archived tasks and immediate cleanup for deleted tasks
- extend merger and self-healing coverage and document the updated stale worktree policy

Files changed:
 .changeset/ai-merge-cleanup-sweep.md               |   5 +
 docs/architecture.md                               |   2 +-
 packages/engine/src/__tests__/merger-ai-cleanup.test.ts | 109 ++++++++++++++++++--
 packages/engine/src/__tests__/self-healing-tempdir-sweep.test.ts   | 112 ++++++++++++++++++++-
 packages/engine/src/merger-ai.ts                   |  63 ++++++++++++
 packages/engine/src/self-healing.ts                |  26 ++++-
 6 files changed, 300 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6199

Fusion-Task-Lineage: 659cc52f-0994-4315-a187-6c865bbe3983
2026-06-10 10:57:02 -07:00
gsxdsm
747bbf51f1 FN-6194: fix archived GitHub issue reconciliation
Handle archived task transitions consistently for linked GitHub issues.

- close tracked and source issues when archived tasks should land closed, including not_planned vs completed reasons
- reopen linked issues when archived tasks move back to done or active work resumes
- extend dashboard reconciler and state coverage to include archived tasks and source issue handling

Files changed:
 .../__tests__/github-source-issue-close.test.ts    | 70 +++++++++++++++++++++-
 .../__tests__/github-tracking-reconciler.test.ts   | 60 ++++++++++++++++++-
 .../src/__tests__/github-tracking-state.test.ts    | 10 +++-
 .../dashboard/src/github-source-issue-close.ts     | 32 ++++++----
 .../dashboard/src/github-tracking-reconciler.ts    | 14 +++--
 packages/dashboard/src/github-tracking-state.ts    |  4 ++
 6 files changed, 167 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6194

Fusion-Task-Lineage: 867527a0-6eb9-416e-b1eb-d690fa029d60
2026-06-10 10:34:36 -07:00
gsxdsm
5c42ff1314 FN-6198: unquarantine self-healing db corruption test
Restore the self-healing DB corruption test to the default engine suite.

- remove the engine vitest exclude for self-healing-db-corruption.test.ts
- clear the quarantine ledger entry for the restored test

Files changed:
 packages/engine/vitest.config.ts | 1 -
 scripts/lib/test-quarantine.json | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

Fusion-Task-Id: FN-6198

Fusion-Task-Lineage: 2466b040-956d-4138-89d5-137d1721081c
2026-06-10 10:00:21 -07:00
gsxdsm
b6243d68fe FN-6197: suppress tab-resume fetch errors in dashboard
Keep cached dashboard data visible while reconnecting after transient tab-resume fetch failures.

- detect likely tab suspension and visibility-resume fetch errors across dashboard data hooks
- suppress transient "Failed to fetch" errors when cached project and node data already exist
- show a "Connecting…" executor status state instead of surfacing raw resume-time fetch errors
- add dashboard tests covering visibility suspension handling and executor reconnect rendering
- add a patch changeset for the published CLI package

Files changed:
 .changeset/tame-tab-resume-fetch.md                |   5 +
 packages/dashboard/app/App.tsx                     |  16 ++-
 .../dashboard/app/components/ExecutorStatusBar.css |  19 ++-
 .../dashboard/app/components/ExecutorStatusBar.tsx |  12 ++
 .../__tests__/ExecutorStatusBar.test.tsx           |  20 ++-
 .../dashboard/app/hooks/__tests__/useNodes.test.ts | 149 ++++++++++++++++++++-
 .../app/hooks/__tests__/useProjects.test.ts        |  72 +++++++++-
 .../hooks/__tests__/visibilitySuspension.test.ts   |  13 ++
 packages/dashboard/app/hooks/useExecutorStats.ts   |  15 ++-
 .../dashboard/app/hooks/useManagedDockerNodes.ts   |  25 +++-
 packages/dashboard/app/hooks/useMeshState.ts       |  25 +++-
 packages/dashboard/app/hooks/useNodes.ts           |  25 +++-
 packages/dashboard/app/hooks/useProjectHealth.ts   |  18 ++-
 packages/dashboard/app/hooks/useProjects.ts        |  27 +++-
 packages/dashboard/app/hooks/useUsageData.ts       |  24 +++-
 .../dashboard/app/hooks/visibilitySuspension.ts    |   4 +
 16 files changed, 435 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-6197

Fusion-Task-Lineage: 834f56d8-8391-414f-8cbd-7e626c5724d0
2026-06-10 09:21:48 -07:00
gsxdsm
d9d67fb7ff FN-6196: gate compound engineering built-in workflow on plugin install
Hide the compound engineering built-in workflow unless its plugin is installed.

- mark builtin:compound-engineering as plugin-gated and exclude it from default enabled built-ins
- filter workflow listing and lookup through plugin installation state, clearing cached definitions on plugin register/unregister
- add coverage for plugin-gated workflow helpers, workflow visibility, and task workflow selection behavior

Files changed:
 .../fn-6196-compound-workflow-plugin-gate.md       |  5 ++
 .../core/src/__tests__/builtin-workflows.test.ts   | 53 +++++++++++++++++++---
 packages/core/src/builtin-workflows.ts             | 16 ++++++-
 packages/core/src/index.ts                         |  2 +
 packages/core/src/store.ts                         | 45 ++++++++++++++++--
 5 files changed, 108 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6196

Fusion-Task-Lineage: aa8fec55-941c-47b8-a203-13799e547d8e
2026-06-10 09:00:24 -07:00
gsxdsm
f7ae18a49f fix: make mobile workflow node details full height 2026-06-10 08:37:01 -07:00
gsxdsm
ae63cd9008 FN-6195: isolate and quarantine flaky db-corruption test
Stop the self-healing DB corruption test from leaking into unrelated tmpdir state while quarantining the known flake.

- mock node:os tmpdir usage so the test runs inside a per-test sandbox and cleans it up after each case
- add the flaky self-healing DB corruption test to the engine default exclude list
- record the quarantine entry and failure context in scripts/lib/test-quarantine.json

Files changed:
 .../__tests__/self-healing-db-corruption.test.ts   | 22 ++++++++++++++++++++++
 packages/engine/vitest.config.ts                   |  1 +
 scripts/lib/test-quarantine.json                   |  8 +++++++-
 3 files changed, 30 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6195

Fusion-Task-Lineage: 60f7f6ca-d14d-42b4-b47e-0644a25e64ae
2026-06-10 08:25:31 -07:00
gsxdsm
bbf3de97a0 FN-6193: guard merger settings lookup for deleted tasks
Keep AI merge commit finalization running when the task disappears during settings resolution.

- fall back to a synthetic task stub before merging effective settings in runAiAgentForCommit
- add an engine regression test covering deleted-task settings degradation
- add a patch changeset for the published CLI package

Files changed:
 .changeset/fn-6193-merger-deleted-task.md          |  5 +++
 .../src/__tests__/merger-settings-degrade.test.ts  | 43 ++++++++++++++++++++++
 packages/engine/src/merger.ts                      |  3 +-
 3 files changed, 50 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6193

Fusion-Task-Lineage: 1d63d24e-1321-450c-95c9-ffc058fd8387
2026-06-10 08:07:25 -07:00
gsxdsm
529851a8fe FN-6191: unquarantine WorkflowNodeEditor inspector test
Rescue the WorkflowNodeEditor quarantine by waiting for inspector fields before asserting.

- make the foreach inspector Mode assertion wait for the panel to finish rendering
- wait for the code node Source and Timeout inputs before editing them to avoid the inspector race
- remove WorkflowNodeEditor.test.tsx from the dashboard quarantine config and ledger

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

Fusion-Task-Id: FN-6191

Fusion-Task-Lineage: 57fb1dcc-3e50-4ba1-8488-fcff204c1d76
2026-06-10 07:11:19 -07:00
gsxdsm
49fdd8f41f FN-6190: replace remaining raw rgba styles with color-mix tokens
Tokenize the last non-token dashboard rgba() styles and guard them with regression coverage.

- replace remaining modal, sidebar, tooltip, dependency dropdown, and refine menu raw rgba() usages in styles.css with color-mix() design tokens
- align overlay, background, and shadow treatments with existing semantic CSS variables instead of hard-coded rgba() values
- add a CSS fixture regression test that bans non-:root raw rgba() usage and verifies the converted selectors stay tokenized

Files changed:
 .../__tests__/styles-css-rgba-tokenization.test.ts | 122 +++++++++++++++++++++
 packages/dashboard/app/styles.css                  |  14 +--
 2 files changed, 129 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6190

Fusion-Task-Lineage: 478465a7-8ec4-4482-8e1c-478d86c1ac08
2026-06-10 06:48:56 -07:00
gsxdsm
f79adafcc1 FN-6189: add moved-task coverage to GitHub delete test
Extend the delete-flow regression test to cover tasks that pass through active workflow states before completion.

- move the tracked task through todo and in-progress before marking it done
- verify the delete-path close behavior still uses the linked GitHub issue after those state transitions

Files changed:
 packages/dashboard/src/__tests__/github-tracking-delete.test.ts | 2 ++
 1 file changed, 2 insertions(+)

Fusion-Task-Id: FN-6189

Fusion-Task-Lineage: 986497ff-c45c-4c0b-9d50-87d9f6570bf1
2026-06-10 06:21:51 -07:00
gsxdsm
7e903494ec FN-6186: tokenized dashboard accent text colors
Add a dashboard CSS hygiene scan and align accent text colors with the CTA text token.

- add a dashboard CSS hygiene regression scan for recent component styles
- assert tokenized focus styles, mobile breakpoints, and no raw hex or rgba colors in scanned CSS
- replace hardcoded white text with var(--cta-text) in background task, pull request, task card, and task field accent surfaces

Files changed:
 .../app/__tests__/css-hygiene-scan.test.ts         | 191 +++++++++++++++++++++
 .../app/components/BackgroundTasksIndicator.css    |   2 +-
 .../dashboard/app/components/PullRequestView.css   |   2 +-
 packages/dashboard/app/components/TaskCard.css     |   2 +-
 .../dashboard/app/components/TaskFieldsSection.css |   2 +-
 5 files changed, 195 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6186

Fusion-Task-Lineage: c579bcda-01f9-4495-bf59-78d1dfef816c
2026-06-10 06:02:12 -07:00
gsxdsm
4032a35a2f FN-6188: harden AI merge temp worktree cleanup
Improve AI merge temp worktree cleanup and add recovery coverage.

- audit AI merge clean-room cleanup success and failure paths, including stderr/code details
- sweep stale fusion-ai-merge temp directories from tmpdir() during self-healing with active-session safeguards
- document the native temp-dir sweep behavior and add merge cleanup/self-healing regression tests

Files changed:
 docs/architecture.md                               |   1 +
 .../engine/src/__tests__/merger-ai-cleanup.test.ts | 169 +++++++++++++++++
 .../__tests__/self-healing-tempdir-sweep.test.ts   | 200 +++++++++++++++++++++
 packages/engine/src/merger-ai.ts                   |  54 +++++-
 packages/engine/src/run-audit.ts                   |  26 +++
 packages/engine/src/self-healing.ts                | 105 +++++++++++
 6 files changed, 551 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6188

Fusion-Task-Lineage: eae9bcdc-9765-4104-85dc-81bb50445e99
2026-06-10 05:13:40 -07:00
gsxdsm
af0be9dd32 FN-6184: log forwarded vitest wrapper signals
Improve dashboard vitest wrapper diagnostics so transient SIGTERM handling is easier to trace.

- track the last signal and reason forwarded from the heap wrapper to the vitest process group
- log when the wrapper receives SIGINT or SIGTERM and when timeout shutdown escalates
- extend wrapper tests to assert process-group leadership and emitted diagnostic stderr

Files changed:
 .../scripts/__tests__/run-vitest-with-heap.test.ts | 25 +++++++++++++++++++---
 .../dashboard/scripts/run-vitest-with-heap.mjs     | 19 ++++++++++++----
 2 files changed, 37 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6184

Fusion-Task-Lineage: b276d88e-a22d-4fdf-a533-c4b0aa4e199d
2026-06-10 01:23:59 -07:00
gsxdsm
fc9f6fe271 FN-6185: replace dashboard rgba fallbacks with color-mix
Convert remaining dashboard component rgba() fallbacks to color-mix() and extend the audit to cover the touched stylesheets.

- replace rgba() fallback colors with color-mix() in language selector, pull request, workflow, and settings component CSS
- expand the dashboard color tokenization audit to include the newly cleaned component stylesheets
- make the audit resolve settings component CSS from nested paths so SettingsFieldRow coverage works

Files changed:
 .../dashboard-component-color-tokenization.test.ts | 31 ++++++++++++++++------
 .../dashboard/app/components/LanguageSelector.css  |  2 +-
 .../dashboard/app/components/PullRequestView.css   | 20 +++++++-------
 .../app/components/WorkflowFieldsPanel.css         |  2 +-
 .../app/components/WorkflowNodeEditor.css          |  4 +--
 .../app/components/WorkflowSettingsPanel.css       |  2 +-
 .../app/components/settings/SettingsFieldRow.css   |  2 +-
 7 files changed, 39 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-6185

Fusion-Task-Lineage: b1938669-5ebb-4569-864b-bd64543ec843
2026-06-10 01:10:11 -07:00
gsxdsm
1c69ea78be FN-6173: fix CLI stale constructor mocks and plugin SDK shims
Tighten CLI retry behavior and restore constructor-safe test/runtime wiring.

- move CLI merge retries back to todo before clearing retry metadata so resets persist
- add a plugin SDK runtime shim for @fusion/core board actions and alias it in the CLI bundle
- harden CLI daemon, serve, dashboard, research, and task tests against stale non-constructible mocks
- add a patch changeset for the published CLI package

Files changed:
 .changeset/fn-6173-cli-fixes.md                    |   5 +
 packages/cli/src/__tests__/task-retry.test.ts      |   4 +-
 packages/cli/src/commands/__tests__/daemon.test.ts | 182 ++++++++++--------
 .../cli/src/commands/__tests__/dashboard.test.ts   |  69 ++++---
 .../cli/src/commands/__tests__/research.test.ts    |  27 ++-
 packages/cli/src/commands/__tests__/serve.test.ts  | 204 ++++++++++++---------
 packages/cli/src/commands/__tests__/task.test.ts   |  61 +++---
 packages/cli/src/commands/task.ts                  |  15 +-
 packages/cli/src/plugin-sdk-core-runtime-shim.ts   |  33 ++++
 packages/cli/tsup.config.ts                        |   7 +
 10 files changed, 385 insertions(+), 222 deletions(-)

Fusion-Task-Id: FN-6173

Fusion-Task-Lineage: 50bdbadd-39f7-4b43-bcf8-3891271917db
2026-06-10 01:07:48 -07:00
gsxdsm
5b5cd77021 FN-6177: remove queued-concurrency scheduler audit
Remove the write-only queued-concurrency scheduler audit and its stale documentation.

- delete scheduler:dispatch-queued-concurrency audit emission and memo bookkeeping
- keep queued concurrency log dedupe coverage while removing audit-specific scheduler test assertions
- update architecture docs to describe queued concurrency diagnostics as log output only

Files changed:
 docs/architecture.md                            |  4 +-
 packages/engine/src/__tests__/scheduler.test.ts | 33 ----------------
 packages/engine/src/scheduler.ts                | 51 -------------------------
 3 files changed, 2 insertions(+), 86 deletions(-)

Fusion-Task-Id: FN-6177

Fusion-Task-Lineage: e4516b41-5525-4e26-9602-772302d63f3d
2026-06-10 00:39:22 -07:00
gsxdsm
5e35385594 FN-6183: preserve mobile mailbox scroll on refresh
Keep the mobile mailbox list anchored after refreshes and SSE updates.

- capture the mobile mailbox content scroll position before inbox, outbox, agent, and approval reloads
- restore the saved scroll position after refreshed mailbox data renders and wire the content container through a ref
- allow vertical scrolling in the mailbox view content area and cover the SSE refresh behavior with a mobile regression test

Files changed:
 packages/dashboard/app/components/MailboxModal.css |  3 +-
 packages/dashboard/app/components/MailboxView.tsx  | 58 +++++++++++++++++++---
 .../app/components/__tests__/MailboxView.test.tsx  | 35 +++++++++++++
 3 files changed, 89 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6183

Fusion-Task-Lineage: ea8be80b-4834-4b77-96cd-254e6b0b0795
2026-06-10 00:25:10 -07:00
gsxdsm
c9d48fb750 FN-6180: fix stale dashboard asset reload handling
Prevent rebuilt dashboard tabs from reusing stale cached assets after a deploy.

- revalidate service-worker asset requests against the network before falling back to cache and bump the cache version
- suppress repeated version-change reloads for the same remote build and cover the new behavior with dashboard tests
- update engine heartbeat test expectations for summarized task creation metadata and add the published package changeset

Files changed:
 .changeset/fn-blank-page-service-worker-assets.md  |  3 ++
 packages/dashboard/app/__tests__/pwa.test.ts       | 11 ++++++
 packages/dashboard/app/__tests__/versionCheck.test.ts   | 28 ++++++++++++++
 packages/dashboard/app/public/sw.js                | 37 +++++++++++++++++-
 packages/dashboard/app/versionCheck.ts             | 45 ++++++++++++++++++++++
 packages/engine/src/__tests__/heartbeat-executor.test.ts |  3 +-
 packages/engine/src/__tests__/heartbeat-session-prompt.test.ts |  7 +++-
 7 files changed, 131 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6180

Fusion-Task-Lineage: 4f07e5f0-56c7-4241-8719-f576dfd8613e
2026-06-10 00:20:35 -07:00
gsxdsm
17363928e9 FN-6178: hide chat sidebar when tablet keyboard opens
Keep the chat sidebar from crowding tablet chat while the software keyboard is open.

- extend mobile keyboard detection so tablet chat can react to visual viewport keyboard changes
- hide the chat sidebar and resize handle while the tablet keyboard is open, then restore prior visibility when it closes
- add regression coverage for tablet keyboard behavior plus desktop and mobile guardrails

Files changed:
 packages/dashboard/app/components/ChatView.tsx     |  39 +++++-
 packages/dashboard/app/components/__tests__/ChatView.mobile-render.test.tsx      | 139 ++++++++++++++++++++-
 packages/dashboard/app/hooks/useMobileKeyboard.ts  |   7 +-
 3 files changed, 171 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-6178

Fusion-Task-Lineage: 7acdb76a-135f-4b9c-ab50-708eec03b2c6
2026-06-10 00:16:35 -07:00
gsxdsm
de7b1109e2 FN-6179: fix tablet nodes overlay stacking
Prevent the NodesView tablet overlay from letting underlying content bleed through.

- make the tablet nodes management overlay fixed, fullscreen, and scrollable with the app background
- add a regression test that asserts the tablet overlay media query and rule properties
- add a patch changeset for the published CLI package bundle

Files changed:
 .changeset/fn-6179-tablet-nodes-overlay.md         |  5 +++++
 packages/dashboard/app/components/NodesView.css    | 12 ++++++++++-
 .../app/components/__tests__/NodesView.test.tsx    | 23 ++++++++++++++++++++--
 3 files changed, 37 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6179

Fusion-Task-Lineage: 9455b38e-c32f-4865-917a-a06c1cb38840
2026-06-09 23:52:37 -07:00
gsxdsm
9b88c0e307 FN-6176: update workflow-definition-store tests for builtin PR fragment
Adjust workflow-definition-store expectations to include the built-in PR fragment.

- expect builtin:pr-workflow in fragment-filtered workflow definition results
- allow built-in workflow entries to be either workflow or fragment kinds
- verify fragment filtering and cache regression coverage include the PR lifecycle built-in

Files changed:
 packages/core/src/__tests__/workflow-definition-store.test.ts | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6176

Fusion-Task-Lineage: fca73dec-060c-4935-9f03-67299d99983f
2026-06-09 23:43:24 -07:00
gsxdsm
e326c5e8db FN-6174: remove overlap priority inversion audit
Remove the unused scheduler overlap-priority inversion audit path.

- drop the scheduler memoization and audit emission for overlap-priority inversion blockers
- delete the reliability interaction test that only covered the removed audit behavior
- update architecture documentation to note the audit removal and keep the overlap deferral rule

Files changed:
 docs/architecture.md                               |   3 +-
 packages/engine/src/__tests__/reliability-interactions/scheduler-overlap-priority-inversion.test.ts   | 212 ---------------------
 packages/engine/src/scheduler.ts                   |  51 -----
 3 files changed, 1 insertion(+), 265 deletions(-)

Fusion-Task-Id: FN-6174

Fusion-Task-Lineage: 3062b405-1f1d-473d-a02f-09a1077376c0
2026-06-09 23:37:31 -07:00
gsxdsm
b84f416e07 FN-6175: stabilize TerminalModal mobile tab regression tests
Harden TerminalModal mobile keyboard regression coverage against async tab setup and xterm mock issues.

- add missing xterm terminal mock methods used by mobile tab interactions
- replace anonymous constructor mock implementations with named function mocks for Terminal and FitAddon
- wait for second-session callbacks before simulating viewport and keyboard transitions in mobile tab-switch tests

Files changed:
 packages/dashboard/app/components/__tests__/TerminalModal.test.tsx | 48 ++++++++++++++++++----
 1 file changed, 39 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6175

Fusion-Task-Lineage: fc95f3d6-586a-475c-a226-be1a57c88ff4
2026-06-09 23:32:57 -07:00
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