gsxdsm
ed5417a341
FN-7529: fix desktop header search test
...
Update the App test to assert the open desktop search panel state after rerender.\n\n- Avoid re-clicking the desktop search toggle after the non-mobile panel stays open across rerender.\n- Assert the branch-filter selects directly while the search panel remains rendered.\n\nFiles changed:\n packages/dashboard/app/components/__tests__/App.test.tsx | 9 +++++++--\n 1 file changed, 7 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7529
Fusion-Task-Lineage: 1495f872-d262-4ea4-83f2-5a53ecf7a202
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:57:20 -07:00
gsxdsm
2cc84b5177
FN-7513: require planner confirmation for risky side effects
...
Require explicit approval before planner recovery runs merge, PR, destructive, or external-service actions.
- Add pure planner side-effect classification and confirmation request modeling in core.
- Route merge/PR recovery decisions to await confirmation instead of autonomous dispatch.
- Persist pending confirmation requests and only execute approved controller actions.
- Cover confirmation gating with core and engine regression tests and document the policy.
Files changed:
.changeset/fn-7513-planner-confirmation-gate.md | 7 +
docs/architecture.md | 85 ++++++++-
docs/settings-reference.md | 2 +-
.../src/__tests__/planner-confirmation.test.ts | 125 +++++++++++++
.../core/src/__tests__/planner-recovery.test.ts | 14 +-
packages/core/src/index.ts | 7 +
packages/core/src/planner-confirmation.ts | 141 ++++++++++++++
packages/core/src/planner-recovery.ts | 103 ++++++++---
...lanner-recovery-controller-confirmation.test.ts | 205 +++++++++++++++++++++
packages/engine/src/index.ts | 5 +
packages/engine/src/planner-recovery-controller.ts | 204 +++++++++++++++++++-
packages/engine/src/project-engine.ts | 44 +++++
12 files changed, 913 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7513
Fusion-Task-Lineage: 1e3c6640-8a4f-41f6-89dd-41eb9b675b2b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:51:09 -07:00
gsxdsm
3b52a4d2d9
FN-7527: fix desktop server switching redirects
...
Route desktop shell server switches through the live runtime/profile state.
- Replace separate local/remote redirect effects with a shared resolver that uses localRuntime/baseUrl and active remote profiles.
- Remove the dead localServer shell state field and document the local/remote switch navigation behavior.
- Add regression coverage for desktop shell redirect targets and include a patch changeset.
Files changed:
.changeset/fn-7527-desktop-switch-server-navigation.md | 7 +
docs/native-shell.md | 2 +-
packages/dashboard/app/App.tsx | 44 ++---
packages/dashboard/app/components/__tests__/App.test.tsx | 1 -
packages/dashboard/app/types/native-shell.d.ts | 13 +-
packages/dashboard/app/utils/__tests__/appLifecycle.test.ts | 180 +++++++++++++++++++++
packages/dashboard/app/utils/appLifecycle.ts | 70 ++++++++
7 files changed, 280 insertions(+), 37 deletions(-)
Fusion-Task-Id: FN-7527
Fusion-Task-Lineage: a0fe5cbc-120b-4a56-b791-48306223a636
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:43:59 -07:00
gsxdsm
87a700cd4d
FN-7506: add scoped settings reset actions
...
Add a Settings footer reset flow for scoped menu and project-wide defaults.
- Add Reset Settings dialog actions for the active settings menu and all project settings.
- Track section-owned settings keys in a shared scope-aware registry and reuse it for save/reset validation.
- Cover modal/mobile reset behavior, registry invariants, docs, i18n strings, and a release changeset.
Files changed:
.changeset/fn-7506-settings-reset.md | 7 +
docs/dashboard-guide.md | 12 +
.../dashboard/app/components/SettingsModal.css | 33 +++
.../dashboard/app/components/SettingsModal.tsx | 215 +++++++++++++++++-
.../__tests__/SettingsModal.general.test.tsx | 145 ++++++++++++
.../components/__tests__/settings-mobile.test.tsx | 37 +++-
.../settings/__tests__/section-keys.test.ts | 171 ++++++++++++++
.../app/components/settings/save-split.ts | 9 +-
.../app/components/settings/section-keys.ts | 246 +++++++++++++++++++++
packages/i18n/locales/en/app.json | 11 +
packages/i18n/locales/zh-CN/app.json | 11 +
11 files changed, 886 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7506
Fusion-Task-Lineage: a627e820-fe3b-42c5-adf2-97469bbe7a3b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:36:01 -07:00
gsxdsm
81f2053921
FN-7512: add bounded planner recovery
...
Adds bounded autonomous planner recovery decisions and dispatch so overseer observations can safely nudge stuck planning stages.
- Add pure core recovery policy with per-stage attempt limits and no-op fallbacks for disallowed or exhausted cases.
- Add engine controller wiring to inject guidance, retry steps, request targeted fixes, and emit recovery audit events.
- Register the planner recovery controller in project engine lifecycle and document the autonomous recovery behavior.
- Cover core decisions and controller dispatch with targeted tests, plus a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7512-planner-bounded-recovery.md | 7 +
docs/architecture.md | 62 ++++++
.../core/src/__tests__/planner-recovery.test.ts | 116 +++++++++++
packages/core/src/index.ts | 12 ++
packages/core/src/planner-recovery.ts | 222 +++++++++++++++++++++
.../__tests__/planner-recovery-controller.test.ts | 163 +++++++++++++++
packages/engine/src/index.ts | 20 ++
packages/engine/src/planner-recovery-controller.ts | 195 ++++++++++++++++++
packages/engine/src/project-engine.ts | 66 ++++++
9 files changed, 863 insertions(+)
Fusion-Task-Id: FN-7512
Fusion-Task-Lineage: aad3849d-090e-497d-ae5c-34ec7ca96c3d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:19:02 -07:00
gsxdsm
4baa4c43c5
FN-7505: show defaults in settings descriptions
...
Expose settings defaults directly in dashboard help text so operators can see baseline values while editing settings.
- Add default-value wording across global and project settings descriptions and locale strings.
- Document the dashboard/default-reference alignment and add a changeset for the published CLI package.
- Add coverage that every visible settings field includes its default in helper text and update existing assertions.
Files changed:
.changeset/fn-7505-settings-default-descriptions.md | 7 +
docs/dashboard-guide.md | 3 +
docs/settings-reference.md | 3 +
.../__tests__/SettingsModal.general.test.tsx | 2 +-
.../settings/sections/AgentPermissionsSection.tsx | 4 +-
.../settings/sections/AppearanceSection.tsx | 4 +-
.../settings/sections/BackupsSection.tsx | 13 +-
.../settings/sections/CommandsSection.tsx | 4 +-
.../settings/sections/ExperimentalSection.tsx | 2 +-
.../settings/sections/GeneralSection.tsx | 26 +-
.../settings/sections/GlobalGeneralSection.tsx | 25 +-
.../settings/sections/GlobalModelsSection.tsx | 24 +-
.../settings/sections/McpServersCard.tsx | 1 +
.../components/settings/sections/MemorySection.tsx | 12 +-
.../components/settings/sections/MergeSection.tsx | 37 +-
.../settings/sections/ModelPricingSection.tsx | 2 +-
.../settings/sections/NodeRoutingSection.tsx | 3 +-
.../settings/sections/NodeSyncSection.tsx | 6 +-
.../settings/sections/NotificationsSection.tsx | 14 +-
.../settings/sections/ProjectModelsSection.tsx | 11 +-
.../settings/sections/PromptsSection.tsx | 2 +-
.../components/settings/sections/RemoteSection.tsx | 7 +-
.../settings/sections/ResearchGlobalSection.tsx | 15 +-
.../settings/sections/ResearchProjectSection.tsx | 16 +-
.../settings/sections/ScheduledEvalsSection.tsx | 7 +-
.../settings/sections/SchedulingSection.tsx | 20 +-
.../settings/sections/WorktreesSection.tsx | 14 +-
.../sections/__tests__/AppearanceSection.test.tsx | 4 +-
.../MergeSection.legacy-automerge-cleanup.test.tsx | 2 +-
.../settings-default-descriptions.test.tsx | 573 +++++++++++++++++++++
packages/i18n/locales/en/app.json | 261 ++++++----
31 files changed, 914 insertions(+), 210 deletions(-)
Fusion-Task-Id: FN-7505
Fusion-Task-Lineage: 7688caf2-2a95-4401-8b27-9da4b46ecfcd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:09:29 -07:00
gsxdsm
12a6d1bc6a
FN-7511: add planner overseer stage monitoring
...
Add records-only planner overseer monitoring across in-flight task lifecycle stages.
- Add a PlannerOverseerMonitor with normalized observations and deterministic watched-stage resolution.
- Wire ProjectEngine to poll in-progress and in-review tasks, gated by effective planner oversight level.
- Document the monitoring seam and add focused coverage plus a release changeset.
Files changed:
.changeset/fn-7511-planner-overseer-monitoring.md | 7 +
docs/architecture.md | 26 ++
docs/workflow-steps.md | 2 +
.../engine/src/__tests__/planner-overseer.test.ts | 294 ++++++++++++++++++
packages/engine/src/index.ts | 12 +
packages/engine/src/planner-overseer.ts | 338 +++++++++++++++++++++
packages/engine/src/project-engine.ts | 93 +++++-
7 files changed, 771 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7511
Fusion-Task-Lineage: 81b616cf-47e9-4769-b02d-fc7ebd3fcb2f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:55:25 -07:00
gsxdsm
0689250097
FN-7510: default planner oversight to autonomous
...
Enable full planner steering/control by default while preserving explicit workflow and task opt-outs.
- Document that planner oversight resolves as task override, workflow setting, then autonomous default.
- Add regression coverage for built-in workflow defaults, stored workflow overrides, and per-task overrides.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/fn-7510-oversight-default.md | 7 ++
docs/workflow-steps.md | 9 ++-
.../plannerOversightLevel-default.test.ts | 79 ++++++++++++++++++++++
3 files changed, 93 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7510
Fusion-Task-Lineage: 2dbf8273-4239-4754-9713-e089f75be930
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:38:14 -07:00
gsxdsm
aa757bc1a3
FN-7509: add per-task planner oversight overrides
...
Add core support for tasks to carry a planner oversight override that can supersede workflow settings.
- Add nullable plannerOversightLevel task storage, schema migration, store update/create/archive plumbing, and mesh replication support.
- Export planner oversight level types/defaults and an effective-level resolver with task-over-workflow precedence.
- Document override precedence and add regression coverage for migration, persistence, updates, and resolution.
- Add a minor changeset for the published Fusion package.
Files changed:
.../fn-7509-per-task-planner-oversight-override.md | 7 ++
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/db.test.ts | 45 +++++++++++++
packages/core/src/__tests__/store-update.test.ts | 75 ++++++++++++++++++++++
.../__tests__/workflow-settings-resolver.test.ts | 28 ++++++++
packages/core/src/db.ts | 17 ++++-
packages/core/src/index.ts | 5 +-
packages/core/src/mesh-task-replication.ts | 2 +
packages/core/src/store.ts | 15 ++++-
packages/core/src/types.ts | 23 +++++++
packages/core/src/workflow-settings-resolver.ts | 28 ++++++++
11 files changed, 240 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7509
Fusion-Task-Lineage: 41695cc5-34d2-4079-9e34-a8fb40f961fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:32:09 -07:00
gsxdsm
4707eb5be0
FN-7526: guard plan auto-approval routing
...
Adds regression coverage ensuring project auto-approve-all sends eligible plans to todo without weakening independent gates.
- Cover Plan Review retry routing when workflow-stored requirePlanApproval is overridden by project auto-approve-all.
- Verify release authorization and Workflow Plan Review still block independently under auto-approve-all.
- Add refinement and self-healing routing coverage plus a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7526-plan-auto-approve.md | 7 ++
.../self-healing-starved-refinement.test.ts | 61 +++++++++
.../__tests__/triage-refinement-routing.test.ts | 54 ++++++++
packages/engine/src/__tests__/triage.test.ts | 139 +++++++++++++++++++++
packages/engine/src/triage.ts | 3 +
5 files changed, 264 insertions(+)
Fusion-Task-Id: FN-7526
Fusion-Task-Lineage: 642d7856-d546-423b-bf10-68c28e205e21
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:25:18 -07:00
gsxdsm
9f24b507fc
FN-7507: prioritize topmost dashboard shortcut dismissal
...
Refine dashboard keyboard shortcut behavior and coverage for configurable popup handling.
- Factor App Escape dismissal into a pure helper that closes one topmost surface at a time.
- Prioritize popped-out tasks ahead of Quick Chat, Terminal, and fixed dashboard modals.
- Add regression coverage for configurable shortcut bindings, editable focus guards, default-prevented events, and Escape ordering.
- Update dashboard shortcut documentation and release-note wording.
Files changed:
.changeset/fn-7494-keyboard-shortcuts.md | 4 +-
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/App.tsx | 110 +++++++++-----
.../app/__tests__/App.keyboard-shortcuts.test.tsx | 158 +++++++++++++++++++++
.../app/utils/__tests__/keyboardShortcuts.test.ts | 1 +
5 files changed, 236 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7507
Fusion-Task-Lineage: 804986ef-ec6c-4404-a168-6d154f75b118
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:08:38 -07:00
gsxdsm
2f23d2260d
FN-7494: add configurable dashboard shortcuts
...
Add configurable dashboard keyboard shortcuts for opening Quick Chat and Terminal.
- Add global settings defaults, schemas, persistence, and Settings UI controls for dashboard shortcuts.
- Register safe document-level shortcut handling with editable-target guards and Escape popup dismissal.
- Normalize shortcut strings, detect disabled/conflicting bindings, and document operator behavior.
- Cover shortcut parsing, dashboard listener behavior, and settings persistence with tests.
Files changed:
.changeset/fn-7494-keyboard-shortcuts.md | 7 +
docs/dashboard-guide.md | 14 ++
.../core/src/__tests__/global-settings.test.ts | 20 +++
.../core/src/__tests__/settings-defaults.test.ts | 10 ++
.../core/src/__tests__/settings-parity.test.ts | 10 ++
packages/core/src/__tests__/store-settings.test.ts | 10 ++
packages/core/src/settings-schema.ts | 8 +
packages/core/src/types.ts | 12 ++
packages/dashboard/app/App.tsx | 52 ++++++
.../dashboard/app/components/SettingsModal.css | 21 +++
.../dashboard/app/components/SettingsModal.tsx | 11 ++
.../__tests__/SettingsModal.general.test.tsx | 63 ++++++++
.../app/components/settings/save-split.ts | 1 +
.../settings/sections/GlobalGeneralSection.tsx | 38 +++++
.../useDashboardKeyboardShortcuts.test.tsx | 101 ++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 8 +-
.../app/hooks/useDashboardKeyboardShortcuts.ts | 66 ++++++++
.../app/utils/__tests__/keyboardShortcuts.test.ts | 76 +++++++++
packages/dashboard/app/utils/keyboardShortcuts.ts | 175 +++++++++++++++++++++
19 files changed, 702 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7494
Fusion-Task-Lineage: 30445f4d-c0c5-4657-bd79-fc2acaf3c37d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 11:38:42 -07:00
gsxdsm
68f5153e17
FN-7508: add planner oversight workflow setting
...
Declare a workflow-native planner oversight level with release notes and docs.
- Add the plannerOversightLevel enum setting with Off, Observe, Steer, and Autonomous recovery values.
- Export the oversight settings catalog and include it in built-in workflow defaults.
- Cover consistency, resolver defaults, and catalog membership with core tests.
- Document the workflow setting and add the published package changeset.
Files changed:
.../fn-7508-planner-oversight-level-setting.md | 7 +++++
docs/settings-reference.md | 8 ++++--
docs/workflow-steps.md | 17 +++++++-----
.../builtin-workflow-settings-triage.test.ts | 32 ++++++++++++++++++++++
.../src/__tests__/settings-consistency.test.ts | 4 ++-
.../__tests__/workflow-settings-resolver.test.ts | 1 +
packages/core/src/builtin-workflow-settings.ts | 26 ++++++++++++++++++
packages/core/src/index.ts | 1 +
8 files changed, 86 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7508
Fusion-Task-Lineage: 1adc7ce6-9e0e-475e-956a-ee36edae0cdc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 11:26:31 -07:00
gsxdsm
2797803c0b
FN-7503: add agent log timing metrics
...
Record and surface request first-token latency and tool processing duration in task logs.
- Add optional agent log timing fields and persist them in file-backed task logs.
- Track Time To First Token from the first visible model output per agent logger request.
- Track FIFO tool durations for tool result and error rows without storing sensitive payloads.
- Render TTFT and duration badges in task chat and agent log viewers with regression coverage.
- Document the new persisted timing fields and add a patch changeset for the CLI package.
Files changed:
.changeset/fn-7503-agent-log-timing.md | 7 ++
docs/storage.md | 1 +
.../src/__tests__/agent-log-file-store.test.ts | 35 ++++++
.../src/__tests__/store-agent-log-file.test.ts | 28 +++++
packages/core/src/agent-log-file-store.ts | 19 ++++
packages/core/src/store.ts | 13 +++
packages/core/src/types.ts | 4 +
.../dashboard/app/components/AgentLogViewer.css | 33 ++++++
.../dashboard/app/components/AgentLogViewer.tsx | 39 ++++++-
packages/dashboard/app/components/TaskChatTab.css | 23 +++-
packages/dashboard/app/components/TaskChatTab.tsx | 17 ++-
.../__tests__/AgentLogViewer.rendering.test.tsx | 24 +++++
.../app/components/__tests__/TaskChatTab.test.tsx | 18 ++++
packages/engine/src/__tests__/agent-logger.test.ts | 120 ++++++++++++++++++---
packages/engine/src/agent-logger.ts | 97 ++++++++++++++---
15 files changed, 446 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-7503
Fusion-Task-Lineage: 7e62034f-4c35-420d-a670-3f7f4a7948df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
b0208c140a
FN-7500: restore terminal clipboard shortcuts
...
Restore terminal copy and paste shortcut handling across integrated and embedded sessions.
- Handle Ctrl/Cmd+V by reading clipboard text and forwarding it once to the active PTY or attach channel.
- Preserve Ctrl/Cmd+C selection copy behavior while leaving no-selection interrupts available to the shell.
- Document the exact-once terminal paste behavior and add a patch changeset.
- Cover successful, missing, rejected, and empty clipboard paste paths in terminal tests.
Files changed:
.changeset/fn-7500-terminal-shortcuts.md | 7 +++
docs/dashboard-guide.md | 4 +-
.../dashboard/app/components/SessionTerminal.tsx | 24 ++++++++++-
.../dashboard/app/components/TerminalModal.tsx | 23 ++++++++-
.../components/__tests__/SessionTerminal.test.tsx | 43 ++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 50 +++++++++++++++++++-
6 files changed, 132 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7500
Fusion-Task-Lineage: 8e87fa22-c0b7-402d-aeef-322cbd852529
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
a2d6349bb8
FN-7504: keep mobile chat composer above keyboard chrome
...
Keeps the mobile Chat composer visible when iOS keyboard accessory chrome is open.
- Add ChatView-local keyboard accessory clearance for iOS keyboard-active composer padding.
- Reset the clearance when keyboard tracking is suppressed or torn down, without adding persistent thread transforms.
- Cover empty, streaming, room, and Android mobile composer behavior with regression tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.../fn-7504-mobile-chat-composer-keyboard.md | 7 +
packages/dashboard/app/components/ChatView.css | 4 +
packages/dashboard/app/components/ChatView.tsx | 10 ++
.../components/__tests__/ChatView.mobile.test.tsx | 191 +++++++++++++++++++++
4 files changed, 212 insertions(+)
Fusion-Task-Id: FN-7504
Fusion-Task-Lineage: 4e7ed36e-e7d5-4cd1-934b-3b0f19ed6615
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
7d8a1b8831
FN-7502: add pinned terminal layout
...
Adds a persisted pinned terminal mode that places the terminal below the dashboard instead of overlaying it.
- Add a project-scoped below display mode with pin/unpin header controls and resize support.
- Render below-mode terminal in the dashboard flow while preserving overlay behavior for docked, floating, and mobile modes.
- Move terminal utility actions into the header so controls remain available across layouts.
- Document the new terminal pin control and add release-note coverage plus regression tests.
Files changed:
.changeset/fn-7502-terminal-below-layout.md | 7 +
docs/dashboard-guide.md | 16 +-
packages/dashboard/app/App.tsx | 22 +-
packages/dashboard/app/components/AppModals.tsx | 14 --
.../dashboard/app/components/ProjectSelector.css | 12 +
.../dashboard/app/components/TerminalModal.css | 108 ++++++---
.../dashboard/app/components/TerminalModal.tsx | 246 +++++++++++----------
.../components/__tests__/TerminalModal.test.tsx | 100 ++++++++-
8 files changed, 351 insertions(+), 174 deletions(-)
Fusion-Task-Id: FN-7502
Fusion-Task-Lineage: bb1b5e22-d19f-4af1-aa34-4213bc712384
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
d2e3134746
FN-7499: require before-after task summaries
...
Require generated task specs to summarize the requested before-to-after transformation near the top.
- Add a Before → After Transformation section to standard and fast planning prompt templates.\n- Document the new task definition section and cover it with prompt regression tests.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/fn-7499-before-after-transformation.md | 7 +++++++\n docs/task-management.md | 1 +\n packages/core/src/__tests__/agent-prompts.test.ts | 17 +++++++++++++++\n packages/core/src/agent-prompts.ts | 25 +++++++++++++++++++----\n packages/engine/src/__tests__/triage.test.ts | 20 ++++++++++++++++++\n 5 files changed, 66 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7499
Fusion-Task-Lineage: d049b5d6-a4bc-40dd-831d-04a11f9dc2cf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
e8dc2ae6d1
FN-7498: show original task prompts in Plan tab
...
Display the initial task prompt separately from the generated plan in task details.
- Add a read-only Original prompt section above generated PROMPT.md content in task detail Plan views.
- Preserve plain-text formatting and responsive wrapping for original prompts while leaving plan edit/revision controls scoped to generated prompts.
- Cover modal, embedded, empty-state, CSS, docs, and release-note behavior.
Files changed:
.changeset/fn-7498-original-task-prompt.md | 7 ++
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/TaskDetailModal.css | 30 +++++
.../dashboard/app/components/TaskDetailModal.tsx | 18 +++
...lModal.inline-editing-and-integrations.test.tsx | 127 ++++++++++++++++++++-
5 files changed, 182 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7498
Fusion-Task-Lineage: df83c73d-d731-4ba4-942b-bd93ec1b9712
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
61c8bdc117
FN-7497: keep accepted chat streams waiting
...
Keep accepted-but-silent chat streams waiting so late responses can reconcile without false timeout failures.
- Stop aborting accepted chat streams when the first SSE event timer fires without content.
- Cover desktop, mobile, planner chat, reattach, hook, and SSE parser paths for late accepted responses.
- Add a patch changeset for the chat first-event timeout fix.
Files changed:
.changeset/fn-7497-chat-first-event-timeout.md | 7 +++
.../app/api/__tests__/legacy-chat-stream.test.ts | 27 ++++++--
packages/dashboard/app/api/legacy.ts | 8 ++-
.../__tests__/ChatView.core-interactions.test.tsx | 41 +++++++++++++
.../__tests__/TaskPlannerChatTab.test.tsx | 71 ++++++++++++++++++++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 41 +++++++++++++
6 files changed, 188 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7497
Fusion-Task-Lineage: bb53793d-dc78-4a25-af22-ed1c62b73094
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
efa8105036
FN-7495: add settings search
...
Add a searchable Settings navigation that filters visible sections by setting names and keywords.
- Add a Settings search field with clear and empty-state affordances for desktop and mobile layouts.
- Filter only the already-visible Settings sections while preserving matching group headers and mobile section labels.
- Add searchable section metadata, localized labels, tests, docs, and a release changeset.
Files changed:
.changeset/fn-7495-settings-search.md | 7 +
docs/dashboard-guide.md | 5 +
.../dashboard/app/components/SettingsModal.css | 97 +++++-
.../dashboard/app/components/SettingsModal.tsx | 346 ++++++++++++++++-----
.../__tests__/SettingsModal.general.test.tsx | 71 +++++
.../components/__tests__/settings-mobile.test.tsx | 25 ++
.../settings/sections/McpServersCard.tsx | 2 +-
packages/i18n/locales/en/app.json | 11 +
8 files changed, 475 insertions(+), 89 deletions(-)
Fusion-Task-Id: FN-7495
Fusion-Task-Lineage: 1d703059-6156-4d20-afbd-3cdb64e3e9f3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
5689346afc
FN-7490: fix post-merge push target resolution
...
Fix post-merge push settings so direct merges use the configured push target reliably.
- Resolve remote-only push targets from the merge integration branch, including detached-head merge worktrees.
- Clear hidden stale Push Remote values when Push to remote after merge is disabled while preserving persisted enabled values.
- Add dashboard, API, and merger regression coverage plus operator documentation and a patch changeset.
Files changed:
.changeset/fn-7490-push-to-remote-setting.md | 7 ++
docs/settings-reference.md | 6 +-
.../dashboard/app/components/SettingsModal.tsx | 5 ++
.../SettingsModal.scheduling-merge.test.tsx | 59 +++++++++++-
.../components/__tests__/settings-mobile.test.tsx | 30 ++++++-
.../src/__tests__/routes-settings.test.ts | 28 ++++++
.../src/__tests__/merger-prompt-and-utils.test.ts | 100 ++++++++++++++++++++-
packages/engine/src/merger.ts | 13 ++-
8 files changed, 238 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7490
Fusion-Task-Lineage: 774515bc-ea8b-427d-89ac-8d047f0273d4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
8668a053dc
FN-7491: add workflow toggle for proactive triage splitting
...
Add a workflow-scoped policy switch so operators can keep large triage tasks intact unless subtask splitting is explicitly requested.
- Define triageProactiveSubtaskSplittingEnabled with default-on workflow settings, display formatting, and prompt rendering.
- Preserve mandatory breakIntoSubtasks behavior while disabling automatic oversized-task decomposition when the setting is false.
- Cover the new policy in core, engine, and dashboard tests plus settings/workflow docs and a changeset.
Files changed:
.changeset/FN-7491-triage-splitting-setting.md | 7 +++
docs/settings-reference.md | 6 +++
docs/workflow-steps.md | 10 ++--
packages/core/src/__tests__/agent-prompts.test.ts | 17 ++++--
.../builtin-workflow-settings-triage.test.ts | 23 ++++++++
packages/core/src/agent-prompts.ts | 27 ++--------
packages/core/src/builtin-workflow-settings.ts | 44 ++++++++++++++++
.../__tests__/WorkflowSettingsPanel.test.tsx | 53 +++++++++++++++++++
.../app/components/workflow-setting-display.ts | 10 ++++
.../__tests__/triage-threshold-settings.test.ts | 28 ++++++++++
packages/engine/src/__tests__/triage.test.ts | 61 +++++++++++++++++++---
11 files changed, 250 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-7491
Fusion-Task-Lineage: c982455a-685c-4ce2-8e33-6d1a7bb9d154
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
b42be87ad1
FN-7493: keep task popups on board layer
...
Keep task-detail popups below global utility windows while preserving Activity menu visibility.
- Route ordinary task-detail FloatingWindow instances through a lower task-detail z-index band.
- Emit and consume popup geometry-change signals so root-portaled Activity menus stay attached during drag and resize.
- Extend dashboard tests and docs for popup layering and Activity dropdown behavior.
Files changed:
.changeset/fn-7493-task-popup-layer.md | 7 +++
docs/dashboard-guide.md | 8 ++-
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 4 ++
.../App.taskDetailFloatingGeometry.test.tsx | 45 +++++++++++++-
.../dashboard/app/components/FloatingWindow.tsx | 31 ++++++++--
.../dashboard/app/components/TaskDetailModal.css | 3 +
.../dashboard/app/components/TaskDetailModal.tsx | 27 ++++++++-
.../components/__tests__/FloatingWindow.test.tsx | 32 +++++++++-
.../FloatingWindowStack.cross-type.test.tsx | 48 ++++++++++++---
.../TaskDetailModal.task-activity-chat.test.tsx | 68 ++++++++++++++++++++++
.../app/components/floatingWindowStack.ts | 22 +++++--
12 files changed, 272 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-7493
Fusion-Task-Lineage: 5f1ec72c-f8dc-44ee-b303-319e0faac0f9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:19 -07:00
gsxdsm
978cdda77c
FN-7492: show active triage plan review progress
...
Show triage task cards when Plan Review is actively running.
- Render the existing progress affordance for triage cards only when unified progress has an active item.
- Keep enabled-but-idle workflow steps hidden to avoid false active indicators and empty progress shells.
- Cover running, idle, and empty triage progress states in TaskCard tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.../FN-7492-task-card-plan-review-progress.md | 7 +++
packages/dashboard/app/components/TaskCard.tsx | 7 ++-
.../app/components/__tests__/TaskCard.test.tsx | 73 ++++++++++++++++++++++
3 files changed, 86 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7492
Fusion-Task-Lineage: 582aea40-8a14-4571-9a7c-e770bc2ab1fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:19 -07:00
gsxdsm
82493e0f62
FN-7488: allow source-free task artifacts to complete
...
Teach fn_task_done to honor explicit source-free task-artifact contracts without weakening ordinary commit requirements.
- Detect PROMPT-declared gitignored .fusion/tasks-only delivery contracts after completed steps.
- Keep zero-commit refusals for mixed tracked source, docs, config, test, or changeset scope.
- Document the completion contract in executor guidance and architecture notes.
- Add regression coverage for allowed source-free artifacts and refused mixed-scope deliveries.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7488-source-free-completion.md | 7 ++
docs/architecture.md | 2 +-
packages/core/src/agent-prompts.ts | 6 ++
.../__tests__/executor-task-done-invariant.test.ts | 120 +++++++++++++++++++++
packages/engine/src/executor.ts | 61 ++++++++---
5 files changed, 183 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7488
Fusion-Task-Lineage: adbf1146-4513-4531-bdd8-ccecbeb42a63
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:19 -07:00
gsxdsm
821a63e447
fix(desktop): stop Windows Terminal popup — worktrunk 'wt' name collision ( #1889 )
...
Follow-up to #1883 (merged). The Windows Terminal "Help"/version dialogs
on Windows were **not** caused by the embedded terminal (already
guarded) — the real trigger is the **worktrunk integration**.
## Root cause
Worktrunk's CLI is named `wt` (`WORKTRUNK_BINARY_NAME = "wt"`), which
collides with **Windows Terminal** (`wt.exe`, an App Execution Alias
under `%LOCALAPPDATA%\Microsoft\WindowsApps`, on PATH by default on
Windows 11). Worktrunk resolution runs `where wt` → finds Windows
Terminal → runs `"wt.exe" --version` to probe it → **launches Windows
Terminal**, popping the native "Windows Terminal 1.24.11321.0" dialog.
This fired automatically because the Settings UI fetched
`/api/worktrunk/status` on mount even when worktrunk wasn't in use.
## Fix
1. **Don't probe worktrunk automatically** — `useWorktrunkInstallStatus`
only auto-fetches status when the integration is **enabled** (user
opt-in). A plain Settings/dashboard mount no longer probes.
2. **Engine invariant guard** — `probeWorktrunk` refuses to `exec` a
resolved `wt` that is the Windows Terminal alias, covering every
resolution surface (cached/override/PATH/install/settings-route).
Basename is computed host-independently so the guard holds on POSIX CI
hosts too.
3. The #1883 frontend terminal-auto-create guard is retained as
defense-in-depth.
## Tests
- `worktrunk-installer.test.ts` — `probeWorktrunk` returns `{ok:false}`
for a `WindowsApps\wt.exe` path **without** calling exec; still probes a
genuine `wt` elsewhere; `resolveWorktrunkBinary` never execs `--version`
against a Windows Terminal PATH hit.
- `useWorktrunkInstallStatus.test.ts` — no fetch on mount unless
`enabled`.
Report updated with corrected root cause + Symptom Verification +
Surface Enumeration.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Resolved an issue where Windows Terminal “Help” dialogs could appear
when opening the dashboard or Settings on Windows.
* Worktrunk status checks are now gated behind integration enablement
and re-verified on save when turning it on.
* Added an engine safeguard to prevent probing/launching the Windows
Terminal alias during version checks.
* **Tests**
* Expanded coverage for Windows Terminal collision detection and for
opt-in behavior (including enablement toggles) in the status hook.
* **Documentation**
* Updated desktop release notes with the corrected root cause,
mitigations, and verification details.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-04 08:48:12 -07:00
gsxdsm
7ecf5e2b9c
fix: resolve main-branch CI test failures
...
Two failures surfaced in the full-suite run on main (28697507894):
1. dashboard session-reconnect.test.ts — real bug. The planning
"replays buffered events" test hung at the 15s timeout because
FN-7444 (planning summary deepening checkpoint) now holds the
completed summary behind a mandatory checkpoint question instead
of finalizing on the agent's "complete" payload. The stream route
never observed session.summary and subscribed forever. Fix: respond
to the deepening checkpoint with the reserved proceed option so
finalizePendingSummary runs, session.summary is set, and the
summary/complete events are buffered for SSE replay. Reproduced
locally (15s hang) and verified green (4/4).
2. cli extension.test.ts — loaded-lane CI flake. The built-dist-barrel
fn_task_list test timed out at 5000ms under 4-shard contention while
passing locally (~1.2s body) and in 3 of the 4 surrounding runs.
Root cause is in-test dist-barrel recompilation inside the default
5s timeout (vi.resetModules + vi.importActual of the full core dist
+ fresh dynamic import), the same signature rescued in
FN-6483/FN-6705/FN-6795/FN-6839. Quarantined on sight per the
flaky-test rule (ledger + matching vitest exclude) rather than
widening the timeout or loosening assertions; the sibling
source-@fusion/core test covers the identical truncation invariant.
2026-07-04 00:26:49 -07:00
gsxdsm
6b19e36ca1
Address PR review feedback ( #1889 )
...
- probeWorktrunk: also refuse a bare wt/wt.exe override on Windows (resolves to
Windows Terminal via PATH), and tighten the package-dir match from a broad
'windowsterminal' substring to 'microsoft.windowsterminal' so a genuine
worktrunk under an unrelated *windowsterminal* folder is still probed.
- Fix worktrunk enable deadlock/save-race: probe status when the user views the
Worktrees section (not gated on 'enabled', which deadlocked since the toggle is
disabled until status==installed), and re-verify on Save so a fast enable+save
can't silently persist enabled:false. Hook 'refresh' now returns the fetched
status and is exposed.
- Tests: bare-wt refusal, forward-slash Windows Terminal path, unrelated
windowsterminal-folder is probed, and a rerender enabled false->true probe-once
transition; update SettingsModal mocks for the new refresh().
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 23:16:58 -07:00
gsxdsm
89123997b9
fix(desktop): stop Windows Terminal popup — real cause is worktrunk 'wt' name collision
...
The 1882/1883 terminal-auto-create guard fixed the wrong subsystem; the
embedded terminal was already guarded. The actual trigger: worktrunk's CLI is
named 'wt', colliding with Windows Terminal (wt.exe) on PATH, so probing it with
'wt --version' launched Windows Terminal and popped its native version dialog —
fired automatically by the Settings worktrunk-status fetch on mount.
- useWorktrunkInstallStatus: only auto-fetch /api/worktrunk/status when the
integration is enabled (user opt-in), never on a plain Settings/dashboard mount.
- probeWorktrunk: refuse to exec a resolved 'wt' that is the Windows Terminal
alias (WindowsApps / WindowsTerminal package dir), covering every resolution
surface (cached/override/PATH/install/settings-route). Basename computed
host-independently so the guard holds when the build host is POSIX.
- Tests for both guards; report updated with corrected root cause + Symptom
Verification + Surface Enumeration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 22:51:48 -07:00
gsxdsm
1a5f7e3b52
fix: add missing vitest aliases and mock export for CI test failures
...
Three root causes behind CI run 28695362549 failures:
1. droid-cli: 8 tests fail with 'Failed to resolve entry for
@fusion-plugin-examples/droid-runtime'. The droid-cli vitest config
had no source alias for the droid-runtime plugin, so Vite tried to
resolve non-existent dist/ exports.
2. CLI: multiple tests fail with 'Failed to resolve entry for
@fusion-plugin-examples/roadmap'. The CLI vitest config was missing
source aliases for the roadmap plugin (., /server, /roadmap-suggestions).
3. CLI: 73 bin.test.ts tests fail with 'No runTaskImportFromGitLab export
is defined on the ../commands/task.js mock'. The GitLab import command
was added to bin.ts and task.ts but the bin.test.ts mock was not
updated to include the new export.
2026-07-03 22:40:36 -07:00
gsxdsm
20184acdfd
FN-7486: fix no-diff merge recovery ownership checks
...
Fix no-op task branch recovery by recognizing canonical branches with no unique diff before rejecting inherited foreign trailers.
- Add no-diff ownership classification for already-merged detection when canonical task branches inherit another task's landed commit.
- Teach self-healing and branch-misbound recovery to ignore foreign branch-tip trailers only for branches proven to have no unique task diff.
- Skip synthetic verify:fast typechecks for JavaScript alias packages without tsconfig files and cover the behavior with tests.
- Add regression coverage and a patch changeset for the recovery fix.
Files changed:
.changeset/fn-7486-merge-recovery-noop-ownership.md | 7 ++
.../already-merged-detector.real-git.test.ts | 68 +++++++++++++++++
.../self-healing-already-merged.real-git.test.ts | 89 ++++++++++++++++++++--
packages/engine/src/already-merged-detector.ts | 88 +++++++++++++++------
packages/engine/src/self-healing.ts | 61 +++++++++++++--
scripts/__tests__/verify-fast.test.mjs | 16 +++-
scripts/verify-fast.mjs | 15 +++-
7 files changed, 303 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7486
Fusion-Task-Lineage: 4185c6ed-9731-4ffc-b033-34bf0c3a83ad
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 22:04:45 -07:00
gsxdsm
b42ba9f515
FN-7485: keep Activity menu open on mobile iOS
...
Keep the task-detail Activity view picker usable during mobile iOS opening taps.
- Add a short visualViewport opening guard for the root-portaled Activity views menu while preserving normal close behavior afterward.
- Reset menu position and guard state consistently on outside click, Escape, selection, task changes, and tab toggles.
- Cover the iOS visualViewport echo, portal/CSS contract, and documentation plus a patch changeset.
Files changed:
.changeset/activity-menu-ios.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/TaskDetailModal.tsx | 68 +++++++---
.../__tests__/TaskDetailModal.css.test.ts | 9 +-
.../TaskDetailModal.task-activity-chat.test.tsx | 141 ++++++++++++++++++++-
5 files changed, 210 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7485
Fusion-Task-Lineage: 291331c4-453c-481b-b991-41f57db23e3b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:48:30 -07:00
gsxdsm
0f05156cb7
FN-7482: recover retryable review remediation failures
...
Recover retryable Code Review remediation failures so review tasks do not remain stranded after graph restarts.
- Route retryable pre-merge remediation graph failures back through the existing fix-pass handoff when durable failed gate evidence remains.
- Let self-healing revive parked Code Review and browser-verification remediation failures while excluding Plan Review replan failures and exhausted numeric caps.
- Document the remediation recovery behavior and add targeted executor/self-healing regression coverage.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7482-code-review-remediation.md | 7 ++
docs/workflow-steps.md | 7 +-
.../__tests__/executor-graph-requeue-gate.test.ts | 129 ++++++++++++++++++++-
packages/engine/src/__tests__/self-healing.test.ts | 129 +++++++++++++++++++++
packages/engine/src/executor.ts | 101 ++++++++++++++++
packages/engine/src/self-healing.ts | 24 +++-
6 files changed, 387 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7482
Fusion-Task-Lineage: 0f178ab6-308e-4587-b5f3-be4e621799a0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
34d071deef
FN-7484: update manual routine callback assertions
...
Refresh routine runner server tests for the live manual trigger callback contract.
- Add a shared helper that asserts manual routine triggers receive live progress callbacks.
- Update global and project routine run/trigger route expectations for the two-argument triggerManual signature.
Files changed:
packages/dashboard/src/__tests__/server.test.ts | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7484
Fusion-Task-Lineage: a8592349-d204-4b91-a004-4d53f56b0692
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
b4b1f6d7ae
FN-7476: fix desktop engine availability banner
...
Treat desktop embedded engine managers as automation-capable during startup so the dashboard avoids false remediation.
- Report process-level engine availability when a modern manager can lazily start or is starting project engines.\n- Keep project-scoped status details on /api/engine/status while hiding the dashboard-only unavailable banner in desktop mode.\n- Add dashboard health polling, banner, server health, and changeset coverage for the desktop false-banner regression.\n\nFiles changed:\n .changeset/fn-7476-desktop-engine-banner.md | 7 +++++++\n .../dashboard/__tests__/DashboardBanners.test.tsx | 18 ++++++++++++++++\n .../app/hooks/__tests__/useDashboardHealth.test.ts | 24 +++++++++++++++++++++-\n packages/dashboard/src/__tests__/server.test.ts | 24 ++++++++++++++++++----\n packages/dashboard/src/server.ts | 9 +++++---\n 5 files changed, 74 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-7476
Fusion-Task-Lineage: d54a9872-252b-44c5-9c6d-6168b65118c7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
e8b73623d4
FN-7477: clarify desktop remote server setup
...
Clarifies the desktop Connection Manager so local mode is distinct from adding saved remote servers.
- Split the desktop local server card from the remote server profile flow and keep the editor closed until adding or editing a remote.
- Add desktop-specific remote server copy, accessible labels with profile URLs, and responsive styling for the revised layout.
- Update Connection Manager tests, native shell docs, localized strings, resource types, and the Fusion changeset.
Files changed:
.changeset/fn-7477-connection-manager-clarity.md | 7 +
docs/native-shell.md | 5 +-
.../components/NativeShellConnectionManager.css | 65 ++++++---
.../components/NativeShellConnectionManager.tsx | 153 ++++++++++++--------
.../NativeShellConnectionManager.test.tsx | 156 +++++++++++++++------
packages/i18n/locales/en/app.json | 15 +-
packages/i18n/locales/es/app.json | 15 +-
packages/i18n/locales/fr/app.json | 15 +-
packages/i18n/locales/ko/app.json | 15 +-
packages/i18n/locales/zh-CN/app.json | 15 +-
packages/i18n/locales/zh-TW/app.json | 15 +-
packages/i18n/src/resources.d.ts | 13 +-
12 files changed, 334 insertions(+), 155 deletions(-)
Fusion-Task-Id: FN-7477
Fusion-Task-Lineage: adc2df09-d713-4ccd-8fb6-20a32c6a553e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
a2b09f277d
FN-7479: route dock task clicks to popups
...
Make right-dock task list clicks follow the task popup preference.
- Thread popup routing into the right-dock Tasks list while preserving embedded dock detail when popups are disabled.
- Cover popup-enabled and popup-disabled dock list behavior with controller tests.
- Update settings copy, operator docs, and release notes for the expanded popup setting scope.
Files changed:
.changeset/fn-7479-right-dock-task-popup.md | 7 ++
docs/dashboard-guide.md | 7 +-
docs/settings-reference.md | 4 +-
packages/dashboard/app/App.tsx | 2 +-
.../app/components/__tests__/RightDock.test.tsx | 129 +++++++++++++++++++++
.../settings/sections/AppearanceSection.tsx | 4 +-
.../app/components/useRightDockController.tsx | 21 +++-
7 files changed, 163 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7479
Fusion-Task-Lineage: 953f6a77-8cb9-409e-be4b-f1dbdc6e1b42
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
50cdab17b9
FN-7474: add GitHub onboarding action choices
...
Add first-run onboarding paths for GitHub OAuth and GitHub CLI setup while preserving existing GitHub warning behavior.
- Add a GitHub onboarding action model for OAuth, authenticated gh CLI, unauthenticated gh CLI, missing gh CLI, and skip states.
- Render in-flow GitHub OAuth connection, gh auth login guidance, and gh CLI install guidance with mobile styling and coverage.
- Update onboarding docs, locale resources, and the release changeset as a minor user-facing feature.
- Preserve the one-day GitHub warning-delay copy and dashboard OAuth browser behavior docs from main.
Files changed:
.changeset/fn-7474-github-onboarding-actions.md | 7 +
docs/dashboard-guide.md | 2 +-
docs/getting-started.md | 2 +-
packages/cli/vitest.config.ts | 12 ++
.../app/components/ModelOnboardingModal.css | 68 ++++++++-
.../app/components/ModelOnboardingModal.tsx | 153 +++++++++++++++++++--
.../__tests__/ModelOnboardingModal.test.tsx | 101 +++++++++++++-
packages/dashboard/vitest.config.ts | 20 +++
packages/i18n/locales/en/app.json | 11 +-
packages/i18n/locales/es/app.json | 11 +-
packages/i18n/locales/fr/app.json | 11 +-
packages/i18n/locales/ko/app.json | 11 +-
packages/i18n/locales/zh-CN/app.json | 11 +-
packages/i18n/locales/zh-TW/app.json | 11 +-
packages/i18n/src/resources.d.ts | 11 +-
15 files changed, 413 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7474
Fusion-Task-Lineage: c06d3db5-da4b-43f7-8b74-a41f6a041029
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:46:59 -07:00
gsxdsm
ced783ea79
FN-7473: open desktop Anthropic OAuth in browser
...
Route desktop OAuth popups to the system browser while preserving Anthropic subscription login polling.\n\n- Add Electron window-open handling that keeps internal Fusion navigation in-app and external http(s) OAuth URLs in the system browser.\n- Cover Anthropic Subscription polling so login-in-progress states do not show a false incomplete-login toast.\n- Document desktop OAuth browser handoff behavior and add a patch changeset.\n\nFiles changed:\n .../fn-7473-desktop-anthropic-oauth-browser.md | 7 ++\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 2 +-\n .../__tests__/SettingsModal.models-auth.test.tsx | 76 ++++++++++++++++++++++\n .../desktop/src/__tests__/main-integration.test.ts | 2 +\n .../desktop/src/__tests__/main-local-mode.test.ts | 3 +-\n .../desktop/src/__tests__/main.integration.test.ts | 2 +\n packages/desktop/src/__tests__/main.test.ts | 54 ++++++++++++++-\n packages/desktop/src/main.ts | 60 +++++++++++++++++-\n 9 files changed, 203 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7473
Fusion-Task-Lineage: 3d6b0acd-536c-4f7d-8c6b-35eb519b46bb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
315f3bc32c
FN-7470: show Git prerequisite during onboarding
...
Add Git availability checks to the first-run GitHub onboarding flow so missing host prerequisites are visible before project setup.
- Probe the server-host Git CLI with a bounded core helper and expose status through the auth status API.
- Render ready/missing Git prerequisite guidance in the GitHub onboarding step with install instructions and localized strings.
- Cover the probe, auth route, and onboarding UI states with regression tests, docs, and a changeset.
Files changed:
.changeset/fn-7470-git-onboarding.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/getting-started.md | 2 +-
packages/core/src/__tests__/git-cli-status.test.ts | 83 +++++++++++++++++++++
packages/core/src/git-cli-status.ts | 56 ++++++++++++++
packages/core/src/index.ts | 7 ++
packages/dashboard/app/api/legacy.ts | 8 ++
.../app/components/ModelOnboardingModal.css | 59 +++++++++++++++
.../app/components/ModelOnboardingModal.tsx | 53 ++++++++++++-
.../__tests__/ModelOnboardingModal.test.tsx | 87 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 62 ++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 13 +++-
packages/i18n/locales/en/app.json | 11 ++-
packages/i18n/locales/es/app.json | 44 ++++++++++-
packages/i18n/locales/fr/app.json | 44 ++++++++++-
packages/i18n/locales/ko/app.json | 44 ++++++++++-
packages/i18n/locales/zh-CN/app.json | 44 ++++++++++-
packages/i18n/locales/zh-TW/app.json | 44 ++++++++++-
packages/i18n/src/resources.d.ts | 9 +++
19 files changed, 661 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7470
Fusion-Task-Lineage: 56d6f118-0d82-4f89-bcaa-b01e72a1bf8b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
50786f29d4
FN-7475: delay GitHub setup warnings
...
Delay dashboard GitHub setup warnings until the project grace period expires while keeping AI setup warnings immediate.
- Add per-project GitHub warning delay state and persistence.
- Route dashboard GitHub warnings to Settings → Authentication with a Connect GitHub action.
- Hide non-actionable GitHub-only warnings in the New Task modal and update localized copy, docs, and tests.
Files changed:
.changeset/fn-7475-github-setup-warning.md | 7 ++
docs/dashboard-guide.md | 6 +
packages/dashboard/app/App.tsx | 11 +-
packages/dashboard/app/components/NewTaskModal.tsx | 8 +-
.../app/components/SetupWarningBanner.css | 10 ++
.../app/components/SetupWarningBanner.tsx | 18 ++-
.../app/components/__tests__/NewTaskModal.test.tsx | 46 ++++++-
.../__tests__/SetupWarningBanner.test.tsx | 40 ++++++
.../app/components/dashboard/DashboardBanners.tsx | 3 +
.../dashboard/__tests__/DashboardBanners.test.tsx | 125 ++++++++++++++++++-
.../dashboard/app/components/dashboard/types.ts | 1 +
.../__tests__/useGithubSetupWarningDelay.test.ts | 134 +++++++++++++++++++++
.../app/hooks/useGithubSetupWarningDelay.ts | 96 +++++++++++++++
packages/dashboard/app/utils/projectStorage.ts | 1 +
packages/i18n/locales/en/app.json | 5 +-
packages/i18n/locales/es/app.json | 5 +-
packages/i18n/locales/fr/app.json | 5 +-
packages/i18n/locales/ko/app.json | 5 +-
packages/i18n/locales/zh-CN/app.json | 5 +-
packages/i18n/locales/zh-TW/app.json | 5 +-
packages/i18n/src/resources.d.ts | 127 +++++++++++++------
21 files changed, 606 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-7475
Fusion-Task-Lineage: 5bf1fffa-b58c-42a1-b170-367a4c20eaaf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
0900a38630
FN-7478: add local server desktop switch option
...
Restore the desktop connection manager's local server destination alongside saved remotes.
- Add a Local Server card for desktop-shell switching with active state handling.
- Switch remote profile selection into remote mode before activating the profile.
- Cover desktop local/remote switching behavior with tests and localized labels.
- Document the switch-server local option and add the published package changeset.
Files changed:
.changeset/fn-7478-local-server-switch-option.md | 7 +++
docs/native-shell.md | 3 +-
.../components/NativeShellConnectionManager.css | 19 ++++++
.../components/NativeShellConnectionManager.tsx | 55 ++++++++++++++---
.../NativeShellConnectionManager.test.tsx | 71 ++++++++++++++++++++--
packages/i18n/locales/en/app.json | 5 +-
packages/i18n/locales/es/app.json | 5 +-
packages/i18n/locales/fr/app.json | 5 +-
packages/i18n/locales/ko/app.json | 5 +-
packages/i18n/locales/zh-CN/app.json | 5 +-
packages/i18n/locales/zh-TW/app.json | 5 +-
packages/i18n/src/resources.d.ts | 3 +
12 files changed, 168 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-7478
Fusion-Task-Lineage: 86a94faa-4799-46cc-aaed-b7901ee9698c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
52dbc0e65e
FN-7472: quit Windows desktop runtime on window close
...
Ensure Windows Desktop treats window close as application shutdown.
- Allow Windows BrowserWindow close events to proceed so Electron emits quit lifecycle hooks.
- Keep non-Windows close-to-tray behavior while documenting platform-specific close semantics.
- Cover native, renderer, tray, and runtime cleanup paths with desktop tests.
Files changed:
.changeset/fn-7472-windows-desktop-close-quits.md | 7 ++
packages/desktop/README.md | 10 +-
packages/desktop/src/__tests__/ipc.test.ts | 9 ++
packages/desktop/src/__tests__/main.test.ts | 76 ++++++++++++++-
packages/desktop/src/__tests__/tray.test.ts | 110 +++++++++++++++++++++-
packages/desktop/src/main.ts | 8 ++
packages/desktop/src/tray.ts | 4 +
7 files changed, 214 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7472
Fusion-Task-Lineage: c007e20f-37b9-435e-861d-1665e2691bc9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
b800f7d0df
FN-7469: select newly created project directories
...
Project setup now targets folders immediately after they are created from the directory picker.
- Add an opt-in DirectoryPicker mode that selects the API-returned created folder path.
- Enable the mode for setup wizard and project setup forms while preserving other picker behavior.
- Clear wizard path errors on path changes and document the setup behavior.
- Cover created-folder selection and default-picker preservation with dashboard tests.
Files changed:
.../fn-7469-select-created-project-directory.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/getting-started.md | 1 +
.../dashboard/app/components/DirectoryPicker.tsx | 16 +++-
.../dashboard/app/components/SetupProjectForm.tsx | 1 +
.../dashboard/app/components/SetupWizardModal.tsx | 3 +-
.../components/__tests__/DirectoryPicker.test.tsx | 101 +++++++++++++++++----
.../components/__tests__/SetupProjectForm.test.tsx | 10 ++
.../components/__tests__/SetupWizardModal.test.tsx | 43 ++++++++-
9 files changed, 162 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7469
Fusion-Task-Lineage: 1883262f-3fdf-4583-9bb0-e9435039e17d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:20 -07:00
gsxdsm
d16c8b429b
FN-7468: expand onboarding quick-start providers
...
Expand onboarding provider setup so practical first-run choices and advanced controls stay anchored to quick start.
- Add OpenRouter to the curated quick-start provider set and ordering.
- Move advanced/all-provider and custom-provider controls under the quick-start provider section.
- Cover provider ordering, split Anthropic behavior, nested advanced controls, and empty states in onboarding tests.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/fn-7468-onboarding-quick-providers.md | 7 ++
.../app/components/ModelOnboardingModal.tsx | 88 ++++++++--------
.../__tests__/ModelOnboardingModal.test.tsx | 116 +++++++++++++++++++--
.../components/__tests__/onboarding-flow.test.tsx | 17 +--
4 files changed, 173 insertions(+), 55 deletions(-)
Fusion-Task-Id: FN-7468
Fusion-Task-Lineage: 744d8a9f-d03d-4909-a00a-00bbae4e59c7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:20 -07:00
gsxdsm
9dc248eae2
FN-7471: fix desktop update version fallback
...
Use packaged runtime metadata so desktop update checks do not compare npm releases against an unresolved current version.
- Resolve @fusion/desktop package metadata as a fallback when dashboard code runs from a desktop deployment.
- Fail closed when the current version is the 0.0.0 sentinel in both update-check paths.
- Cover CLI, desktop, and unresolved-version update-check behavior with regression tests.
- Add a patch changeset for the published Fusion CLI package.
Files changed:
.changeset/fn-7471-desktop-update-version.md | 7 ++
.../src/__tests__/cli-package-version.test.ts | 59 +++++++++++++++-
.../src/__tests__/update-check-route.test.ts | 78 +++++++++++++++++++++-
.../dashboard/src/__tests__/update-check.test.ts | 15 +++++
packages/dashboard/src/cli-package-version.ts | 37 +++++++++-
packages/dashboard/src/server.ts | 12 +++-
packages/dashboard/src/update-check.ts | 15 +++++
7 files changed, 216 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7471
Fusion-Task-Lineage: ee633b8c-766b-43f3-855d-3ce7abd41550
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:20 -07:00
gsxdsm
c39d1ea281
fix: add @fusion-plugin-examples/cursor-runtime vitest aliases
...
runtime-provider-probes.ts imports probeCursorBinary from
@fusion-plugin-examples/cursor-runtime, but neither the dashboard nor CLI
vitest configs had source aliases for this package. Without the aliases,
Vite tried to resolve the package's dist/ exports which don't exist in a
source checkout, causing every dashboard test that transitively imports
the runtime provider to fail with 'Failed to resolve entry for package'.
This broke 48 dashboard test files in CI run 28561416741 after the cursor
runtime plugin was added without updating the vitest configs.
2026-07-03 13:23:37 -07:00
gsxdsm
843f365452
chore(release): v0.55.0
...
Version bump via changesets.
2026-07-03 13:10:20 -07:00
gsxdsm
e5cbc71205
FN-7466: split runtime lifecycle tests into seams
...
Split the runtime lifecycle coverage into focused seam tests while trimming the in-process runtime suite.
- Add dedicated EphemeralWorkerManager tests for task-worker ownership, reuse, cleanup, and deletion paths.
- Cover heartbeat scheduler lifecycle event registration without starting the full runtime.
- Remove migrated lifecycle scenarios from the expensive in-process runtime test file.
Files changed:
.../src/__tests__/ephemeral-worker-manager.test.ts | 438 +++++++++
.../src/__tests__/heartbeat-scheduler.test.ts | 147 +++
.../runtimes/__tests__/in-process-runtime.test.ts | 1030 +-------------------
3 files changed, 597 insertions(+), 1018 deletions(-)
Fusion-Task-Id: FN-7466
Fusion-Task-Lineage: 8493f7b6-91b2-4e7d-9ab6-9fa9cf52441f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 13:08:16 -07:00