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
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
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
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
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
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
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
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
4be9275747
FN-7463: refresh test feedback baseline docs
...
Refresh the weekly test feedback-loop baseline and carry operator notes through the reporting helper.
- Add the 2026-W27 baseline snapshot with updated gate, pnpm test, quarantine, and slowest-test data.
- Refresh the published Markdown summary and trend table for #leads.
- Preserve operator notes in Markdown and printed leads summaries, with regression coverage for notes and empty live quarantine ledgers.
Files changed:
docs/test-feedback-loop-baseline.md | 52 +++++-----
docs/test-feedback-loop-baselines.json | 113 ++++++++++++++++++++++
scripts/__tests__/test-feedback-baseline.test.mjs | 72 +++++++++++++-
scripts/test-feedback-baseline.mjs | 10 +-
4 files changed, 219 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7463
Fusion-Task-Lineage: 2279c412-5371-41dd-81d1-7fc397bb349a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
d9ef51492d
FN-7462: show mobile chat conversation titles
...
Mobile direct-chat dropdowns now identify sessions by conversation title instead of model-name text.
- Render the mobile session trigger with the conversation title or Untitled while preserving the provider logo.
- Remove mobile trigger model-tag styling and assert the model badge stays out of the compact header.
- Document the mobile Chat dropdown behavior and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7462-mobile-chat-dropdown-title.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 8 -----
packages/dashboard/app/components/ChatView.tsx | 8 +++--
.../__tests__/ChatView.core-contracts.test.tsx | 25 +++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 39 +++++++++++++++++++++-
6 files changed, 72 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7462
Fusion-Task-Lineage: 6a6e2ac3-ecca-4076-81c5-b4e4a65eb286
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
00afb22bcb
FN-7458: default startup theme mode to system
...
Default fresh dashboard startup and appearance reset to System mode while keeping Shadcn Ember as the color theme.
- Set global themeMode defaults and Settings fallback props to system.
- Resolve pre-hydration web and desktop startup from prefers-color-scheme, including invalid cache and fallback paths.
- Update Appearance reset behavior, focused theme tests, docs, and the release changeset.
Files changed:
.changeset/fn-7458-system-theme-default.md | 7 ++
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 4 +-
.../core/src/__tests__/global-settings.test.ts | 17 +++-
packages/core/src/__tests__/store-settings.test.ts | 6 +-
packages/core/src/settings-schema.ts | 6 +-
.../app/__tests__/index-html-theme-link.test.ts | 18 ++++
.../dashboard/app/components/SettingsModal.tsx | 8 +-
.../dashboard/app/components/ThemeSelector.tsx | 6 +-
.../components/__tests__/ThemeDropdown.test.tsx | 9 +-
.../components/__tests__/ThemeSelector.test.tsx | 2 +-
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 111 ++++++++++++++++++++-
packages/dashboard/app/hooks/useTheme.ts | 21 +++-
packages/dashboard/app/index.html | 13 ++-
packages/desktop/src/renderer/index.html | 13 ++-
15 files changed, 211 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-7458
Fusion-Task-Lineage: fb6184b4-9a6a-4131-9f97-f8cd12ef904c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
7300bf54ce
FN-7460: disable WebKit text scaling in terminals
...
Disable WebKit terminal text scaling so iPhone Safari preserves exact xterm cell metrics.
- Set terminal xterm host subtrees to disable text-size adjustment instead of pinning it at 100%.
- Update terminal CSS contract coverage for modal and session terminal surfaces.
- Document the real-iPhone recurrence and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7460-ios-terminal-spacing.md | 7 +++++++
.../ui-bugs/xterm-async-font-remeasure-paste-dedupe.md | 7 ++++---
packages/dashboard/app/__tests__/terminal-input.test.ts | 14 +++++++-------
packages/dashboard/app/components/SessionTerminal.css | 7 +++++--
packages/dashboard/app/components/TerminalModal.css | 9 ++++++---
.../app/components/__tests__/TerminalModal.test.tsx | 7 +++++++
6 files changed, 36 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-7460
Fusion-Task-Lineage: 00542017-457b-40b8-9139-084218bc3533
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
95325201a6
FN-7459: remember task popup geometry
...
Remember task-detail popup geometry so operators can reuse one positioned window across tasks.
- Share a stable persisted geometry key for task-detail FloatingWindow instances while keeping per-task window identity.
- Add regression coverage for shared task popup geometry, malformed persisted data fallback, and isolated non-task windows.
- Document desktop/tablet popup geometry persistence and add a release changeset.
Files changed:
.changeset/fn-7459-task-popup-geometry.md | 7 ++
docs/dashboard-guide.md | 5 +-
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 5 +
.../App.taskDetailFloatingGeometry.test.tsx | 111 +++++++++++++++++++++
.../dashboard/app/components/FloatingWindow.tsx | 2 +-
.../components/__tests__/FloatingWindow.test.tsx | 83 ++++++++++++++-
7 files changed, 210 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7459
Fusion-Task-Lineage: 84674283-024f-4ed5-b7a0-6dade1b77f8b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
f9733341b5
FN-7453: add GitLab enablement controls
...
Add a settings-controlled GitLab enablement path while preserving saved GitLab configuration.
- Add project and global GitLab enable settings with collapsible Settings UI for URL and token controls.
- Gate GitLab auth, import loading, and import actions when GitLab integration is disabled.
- Preserve global GitLab values separately during global settings saves and document the new behavior.
- Cover enablement resolution, settings save behavior, disabled import UI, and GitLab route/auth gating with tests.
Files changed:
.changeset/fn-7453-gitlab-enable-disclosure.md | 7 ++
docs/dashboard-guide.md | 7 ++
docs/gitlab-parity-inventory.md | 1 +
docs/settings-reference.md | 4 ++
docs/task-management.md | 6 +-
packages/core/src/__tests__/gitlab-config.test.ts | 17 ++++-
.../core/src/__tests__/settings-parity.test.ts | 18 +++--
packages/core/src/gitlab-config.ts | 15 ++++-
packages/core/src/index.ts | 2 +-
packages/core/src/settings-schema.ts | 2 +
packages/core/src/types.ts | 5 ++
.../app/__tests__/settings-save-split.test.ts | 20 +++---
.../dashboard/app/components/GitHubImportModal.tsx | 43 +++++++++---
.../dashboard/app/components/SettingsModal.css | 77 +++++++++++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 34 ++++++++-
.../__tests__/GitHubImportModal.test.tsx | 19 ++++++
.../__tests__/SettingsModal.general.test.tsx | 78 ++++++++++++++++++++++
.../SettingsModal.scheduling-merge.test.tsx | 7 +-
.../app/components/settings/save-split.ts | 5 +-
.../settings/sections/GeneralSection.tsx | 36 ++++++----
.../settings/sections/GlobalGeneralSection.tsx | 71 ++++++++++++--------
.../components/settings/sections/MergeSection.tsx | 44 +++++++-----
.../dashboard/src/__tests__/gitlab-auth.test.ts | 20 ++++++
.../dashboard/src/__tests__/routes-gitlab.test.ts | 11 +++
packages/dashboard/src/gitlab-auth.ts | 11 ++-
25 files changed, 458 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-7453
Fusion-Task-Lineage: 81fbd39d-675f-49d6-8d13-b7fcb4d25658
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 19:01:09 -07:00
gsxdsm
1430a42dd8
FN-7455: fix mobile direct chat header alignment
...
Keep the mobile direct-chat header on a single left-aligned row without losing accessible context.
- Hide the direct-chat ViewHeader title shell from layout while preserving the accessible Chat heading.
- Keep the back button first and the active session switcher beside it on a non-wrapping mobile row.
- Extend mobile chat coverage for long duplicate session titles, Bot fallback labels, and the CSS layout contract.
- Document the updated mobile Chat header behavior and add a patch changeset.
Files changed:
.changeset/fn-7455-mobile-chat-header-layout.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 17 +++--
packages/dashboard/app/components/ChatView.tsx | 4 +-
.../components/__tests__/ChatView.mobile.test.tsx | 80 ++++++++++++++++++++--
5 files changed, 98 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7455
Fusion-Task-Lineage: fe14b542-ff6a-437b-ad89-8011c2b3c299
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 18:11:49 -07:00
gsxdsm
765218f80f
FN-7449: include chat token usage in dashboard totals
...
Chat token usage now contributes to Command Center token analytics totals alongside task execution usage.
- Add durable chat token usage rows and persistence hooks for assistant and room messages.
- Aggregate chat usage into token totals, time series, provider/model groups, CSV export, and dashboard counts.
- Cover chat token persistence and analytics with core and dashboard tests.
- Document the expanded dashboard token usage behavior and add a changeset for the published package.
Files changed:
.changeset/fn-7449-chat-token-totals.md | 7 +
docs/dashboard-guide.md | 4 +-
.../core/src/__tests__/token-analytics.test.ts | 146 ++++++++++++++++++
packages/core/src/chat-store.ts | 105 +++++++++++++
packages/core/src/chat-types.ts | 37 +++++
packages/core/src/db.ts | 52 ++++++-
packages/core/src/index.ts | 3 +
packages/core/src/token-analytics.ts | 167 +++++++++++++++++----
.../__tests__/CommandCenter.test.tsx | 4 +-
.../components/command-center/areas/TokensArea.tsx | 4 +
.../src/__tests__/chat-manager-cli-send.test.ts | 40 +++++
.../dashboard/src/__tests__/chat-manager.test.ts | 100 ++++++++++++
.../src/__tests__/command-center-csv.test.ts | 2 +
packages/dashboard/src/chat.ts | 110 +++++++++++++-
packages/dashboard/src/command-center-csv.ts | 3 +
15 files changed, 745 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7449
Fusion-Task-Lineage: f2bacbb6-93b9-4874-b431-2049981b66c1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 15:00:40 -07:00
gsxdsm
dfb6e5270d
FN-7443: add bundled Linear import plugin
...
Add a plugin-owned Linear importer that creates Fusion tasks from Linear issues.
- Add the fusion-plugin-linear-import package with settings, Linear GraphQL client, import routes, tools, and dashboard UI.
- Bundle and register the Linear import plugin in the CLI and dashboard plugin view registry.
- Document bundled plugin authoring details and cover duplicate detection, routes, tools, UI, and packaging with tests.
Files changed:
.changeset/fn-7443-linear-import-plugin.md | 7 +
docs/PLUGIN_AUTHORING.md | 7 +
docs/task-management.md | 2 +
packages/cli/src/__tests__/bundle-output.test.ts | 22 ++
.../__tests__/bundled-plugin-install.test.ts | 29 +++
packages/cli/src/plugins/bundled-plugin-install.ts | 1 +
.../cli/src/plugins/staged-bundled-plugin-ids.ts | 1 +
packages/cli/tsup.config.ts | 8 +
.../__tests__/registerBundledPluginViews.test.tsx | 9 +-
.../app/plugins/registerBundledPluginViews.ts | 18 ++
.../app/types/plugin-dashboard-views.d.ts | 9 +
.../src/__tests__/routes-plugin-registry.test.ts | 5 +
.../runtime-plugin-alias-regression.test.ts | 12 +
packages/dashboard/src/registry-manifest.json | 10 +
packages/dashboard/vite.config.ts | 8 +
packages/dashboard/vitest.config.ts | 8 +
plugins/fusion-plugin-linear-import/README.md | 75 ++++++
plugins/fusion-plugin-linear-import/manifest.json | 48 ++++
plugins/fusion-plugin-linear-import/package.json | 38 +++
.../scripts/copy-css.mjs | 11 +
.../src/LinearImportView.css | 167 +++++++++++++
.../src/LinearImportView.tsx | 263 +++++++++++++++++++++
.../src/__tests__/LinearImportView.test.tsx | 124 ++++++++++
.../src/__tests__/import-linear.test.ts | 78 ++++++
.../src/__tests__/linear-client.test.ts | 81 +++++++
.../src/__tests__/routes.test.ts | 90 +++++++
.../src/__tests__/tools.test.ts | 79 +++++++
.../src/dashboard-interop.d.ts | 13 +
.../src/dashboard-view.tsx | 10 +
.../src/import-linear.ts | 154 ++++++++++++
plugins/fusion-plugin-linear-import/src/index.ts | 45 ++++
.../src/linear-client.ts | 247 +++++++++++++++++++
plugins/fusion-plugin-linear-import/src/routes.ts | 149 ++++++++++++
.../fusion-plugin-linear-import/src/settings.ts | 68 ++++++
plugins/fusion-plugin-linear-import/src/tools.ts | 138 +++++++++++
plugins/fusion-plugin-linear-import/tsconfig.json | 14 ++
.../fusion-plugin-linear-import/vitest.config.ts | 40 ++++
pnpm-lock.yaml | 40 ++++
pnpm-workspace.yaml | 1 +
39 files changed, 2128 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7443
Fusion-Task-Lineage: a016a9d4-84a4-4a0b-b9b6-b9a2886da49a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 14:31:16 -07:00
gsxdsm
1d6011c3a6
FN-7450: collapse mobile chat header rows
...
Collapse the mobile direct chat header into the shared top row.
- Move the mobile direct-thread back button and session switcher into ViewHeader actions.
- Hide the redundant mobile thread header while preserving desktop thread identity and context details.
- Update mobile chat styling, docs, changeset, and header contract tests for the single-row layout.
Files changed:
.changeset/fn-7450-mobile-chat-header.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ChatView.css | 53 +++++-
packages/dashboard/app/components/ChatView.tsx | 197 +++++++++++----------
.../__tests__/ChatView.core-contracts.test.tsx | 48 ++---
.../components/__tests__/ChatView.mobile.test.tsx | 76 ++++++--
6 files changed, 256 insertions(+), 128 deletions(-)
Fusion-Task-Id: FN-7450
Fusion-Task-Lineage: c266a9b8-7fb1-410e-9c35-adad4c6a2d47
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 14:09:35 -07:00
gsxdsm
8d7abb8c33
FN-7447: fix Android terminal mobile viewport sizing
...
Fix Android keyboard-open terminal layout by sizing mobile shells from the visual viewport.
- Track visualViewport width in the terminal modal and mobile keyboard detection.
- Apply keyboard-constrained mobile terminal sizing even when CSS media queries see a wider layout viewport.
- Cover Android visualViewport width behavior with modal, session terminal, and hook regressions.
- Document the fix pattern and add a patch changeset for the published Fusion package.
Files changed:
.../fn-7447-android-mobile-terminal-spacing.md | 7 ++
...ndroid-mobile-terminal-visual-viewport-width.md | 26 ++++++++
.../dashboard/app/components/TerminalModal.css | 21 +++++-
.../dashboard/app/components/TerminalModal.tsx | 8 +++
.../__tests__/SessionTerminal.mobile.test.tsx | 40 +++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 76 ++++++++++++++++++++++
.../app/hooks/__tests__/useMobileKeyboard.test.ts | 38 +++++++++++
packages/dashboard/app/hooks/useMobileKeyboard.ts | 10 ++-
8 files changed, 222 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7447
Fusion-Task-Lineage: c01faf0f-842e-4632-bf8f-ae54070c3bf8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:51:25 -07:00
gsxdsm
5984f327d3
FN-7445: add Project Files creation and search controls
...
Improve the Project Files browser with first-class creation actions and recursive file search.
- Add visible create-file and create-folder buttons for Files — Project while keeping compact controls for embedded pickers.
- Add debounced recursive project file search with loading, retry, empty, and path-context result states.
- Cover project files creation and search behavior in dock, modal, and file browser tests.
- Document the new Project Files controls and add a release changeset.
Files changed:
.changeset/fn-7445-project-files-create-search.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/DockFilesView.tsx | 1 +
packages/dashboard/app/components/FileBrowser.css | 88 +++++++++++++
packages/dashboard/app/components/FileBrowser.tsx | 145 ++++++++++++++++++++-
.../dashboard/app/components/FileBrowserModal.tsx | 1 +
.../components/__tests__/DockFilesView.test.tsx | 34 +++--
.../app/components/__tests__/FileBrowser.test.tsx | 109 ++++++++++++++++
.../components/__tests__/FileBrowserModal.test.tsx | 52 ++++++++
9 files changed, 426 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-7445
Fusion-Task-Lineage: 41510def-4900-42ee-beab-b67f28dfeaee
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:44:41 -07:00
gsxdsm
ec0256f7e5
FN-7444: add planning summary deepening checkpoint
...
Planning Mode now holds completed summaries behind a mandatory deepening prompt before finalization.
- Add shared constants and persistence for pending planning summaries.
- Insert the “Would you like to go deeper?” checkpoint with proceed, themed, and custom-topic responses.
- Update modal handling, API formatting, docs, changeset, and regression coverage for persisted and streamed planning flows.
Files changed:
.changeset/fn-7444-planning-deepening-checkpoint.md | 7 +
docs/dashboard-guide.md | 4 +
packages/core/src/index.ts | 2 +-
packages/core/src/types.ts | 12 +
packages/dashboard/app/components/PlanningModeModal.tsx | 25 ++-
packages/dashboard/app/components/__tests__/PlanningModeModal.planning-flow.test.tsx | 193 +++++++++++++++-
packages/dashboard/src/__tests__/planning-interview-formatters.test.ts | 79 ++++++-
packages/dashboard/src/__tests__/routes-planning.test.ts | 207 ++++++++++++++++-
packages/dashboard/src/__tests__/session-persistence-roundtrip.test.ts | 74 +++++-
packages/dashboard/src/ai-session-store.ts | 2 +
packages/dashboard/src/planning.ts | 249 ++++++++++++++++++---
packages/dashboard/src/test/mockCoreEngine.ts | 2 +
12 files changed, 815 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7444
Fusion-Task-Lineage: 43ee1853-558b-4168-b52c-ebcc4ece4521
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:38:02 -07:00
gsxdsm
25fecd7843
FN-7442: return GitHub issue actions to list
...
Return successful GitHub issue import and close flows to the issue list.
- Clear the selected GitHub issue and switch mobile preview back to the list after successful import or close actions.
- Preserve the selected preview on failures so users can retry with the existing error affordance.
- Add regression coverage for desktop and mobile import/close success and failure navigation states.
- Document the post-import list reset behavior and add a patch changeset.
Files changed:
.changeset/fn-7442-github-import-return-list.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/GitHubImportModal.tsx | 20 +-
.../__tests__/GitHubImportModal.test.tsx | 210 +++++++++++++++++++--
4 files changed, 218 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7442
Fusion-Task-Lineage: e334a7c1-68de-48f7-be31-b036ba741685
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:30:08 -07:00
gsxdsm
72adb5231a
FN-7441: add sidebar rename controls for chat conversations
...
Add an explicit sidebar rename affordance for direct Chat conversations while preserving existing rename paths.
- Add edit buttons beside delete controls on direct chat session rows and wire them to the existing rename dialog.
- Keep sidebar action spacing and accessibility labels stable across desktop and mobile layouts.
- Cover sidebar, context-menu, and mobile switcher rename behavior with ChatView tests.
- Document the sidebar rename entry point and add the published package changeset.
Files changed:
.changeset/fn-7441-chat-conversation-rename.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 51 ++++-----
packages/dashboard/app/components/ChatView.tsx | 54 ++++++---
.../__tests__/ChatView.core-interactions.test.tsx | 122 +++++++++++++++++++++
.../components/__tests__/ChatView.mobile.test.tsx | 72 ++++++++++++
6 files changed, 264 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-7441
Fusion-Task-Lineage: 39a2c393-dd85-4362-9472-58bb137b906c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:23:13 -07:00
gsxdsm
91fb53f3c7
FN-7440: add agent update tool
...
Add a Fusion extension tool for updating existing agent configuration in place.
- Register fn_agent_update with editable agent fields, validation, and non-ephemeral guards.
- Enforce org-scoped authorization for agent callers and privileged manager-clearing semantics for operators.
- Cover update success, hierarchy denial, cycle prevention, and runtime/instruction edits in extension tests.
- Document the new tool in agent and Fusion skill references and add a published package changeset.
Files changed:
.changeset/fn-7440-agent-update-tool.md | 7 +
docs/agents.md | 21 +-
package.json | 1 +
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 21 ++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../src/__tests__/extension-agent-update.test.ts | 351 +++++++++++++++++++++
packages/cli/src/extension.ts | 230 ++++++++++++++
pnpm-lock.yaml | 1 +
9 files changed, 628 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7440
Fusion-Task-Lineage: a6f4c928-5a63-4cf1-aa0b-4e38b536e965
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:16:07 -07:00
gsxdsm
aa8f1f32ee
FN-7438: recover stale branch-group references
...
Recover branch-group detail views after restarts and let operators clear stale per-task group context safely.
- Add Task Detail stale branch-group recovery UI that clears only the current task via the assign API.
- Verify durable branch groups and members survive TaskStore/API restarts, while stale references can be reset without losing unrelated metadata.
- Improve integration-branch fallback diagnostics for repositories that use non-origin remotes.
- Document the recovery path, durable branch-group storage expectations, and release the fix as a patch.
Files changed:
.../fn-7438-branch-group-restart-recovery.md | 7 ++
docs/dashboard-guide.md | 5 +-
docs/settings-reference.md | 2 +-
docs/storage.md | 2 +-
.../core/src/__tests__/branch-group-store.test.ts | 43 +++++++++++-
.../dashboard/app/components/BranchGroupCard.css | 9 +++
.../dashboard/app/components/BranchGroupCard.tsx | 49 +++++++++++++-
.../dashboard/app/components/TaskDetailModal.tsx | 14 +++-
.../components/__tests__/BranchGroupCard.test.tsx | 40 +++++++++++
.../components/__tests__/TaskDetailModal.test.tsx | 11 ++-
.../src/__tests__/routes-branch-groups.test.ts | 79 +++++++++++++++++++++-
.../src/__tests__/integration-branch.test.ts | 41 +++++++++++
packages/engine/src/integration-branch.ts | 54 ++++++++++++++-
13 files changed, 343 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7438
Fusion-Task-Lineage: 09ef3dc3-8319-49a7-9f4d-c95a3e069d39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:07:16 -07:00
gsxdsm
e5be9242d7
FN-7435: suppress misleading Anthropic re-login banner
...
Suppress the global Anthropic Subscription re-login warning when another Anthropic auth path can run agents.
- Hide expired Anthropic Subscription OAuth from the urgent dashboard banner when Anthropic API Key or Claude CLI auth is active.
- Preserve unrelated expired OAuth provider warnings and keep Settings documentation clear that Subscription remains expired until re-login.
- Add regression coverage for CLI, API-key, fallback-missing, and unrelated-provider banner visibility cases.
- Add a patch changeset for the user-facing banner fix.
Files changed:
.changeset/fn-7435-anthropic-subscription-banner.md | 7 +++
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 4 +-
packages/dashboard/app/components/OAuthReloginBanner.tsx | 31 ++++++++++--
packages/dashboard/app/components/__tests__/OAuthReloginBanner.test.tsx | 59 ++++++++++++++++++++--
5 files changed, 91 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7435
Fusion-Task-Lineage: 04462f77-a1e4-402d-97b2-dd47778398df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 12:10:13 -07:00
gsxdsm
b493a1e9e5
FN-7434: show task status badges in document groups
...
Show task completion metadata directly in Documents task group headers.
- Render task status badges for task document groups when column metadata is available.
- Preserve non-interactive status metadata in collapsed and mobile task group headers.
- Cover done, non-done, archived, custom, and legacy task document status cases.
- Document the Documents view status badge behavior and add a patch changeset.
Files changed:
.changeset/fn-7434-document-task-status.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/DocumentsView.css | 16 ++-
.../dashboard/app/components/DocumentsView.tsx | 31 ++++-
.../components/__tests__/DocumentsView.test.tsx | 148 +++++++++++++++++++++
5 files changed, 199 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7434
Fusion-Task-Lineage: b04161b3-c052-4eee-b9ed-5760eb9b7a4e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 12:00:58 -07:00