gsxdsm
34be333a2a
FN-7426: add GitLab lifecycle automation
...
Add GitLab lifecycle automation for comments and source item state changes.
- Add GitLab REST helpers for posting notes and closing or reopening issues and merge requests.
- Register GitLab source-comment, tracking-comment, tracking-state, and source-close services with multi-project lifecycle wiring.
- Add project settings, documentation, tests, and a changeset for GitLab completion comments and auto-close behavior.
Files changed:
.changeset/fn-7426-gitlab-lifecycle.md | 7 ++
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 5 +-
packages/core/src/settings-schema.ts | 3 +
packages/core/src/types.ts | 10 +++
.../src/__tests__/gitlab-issue-comment.test.ts | 37 +++++++++
.../__tests__/gitlab-source-issue-close.test.ts | 29 +++++++
.../src/__tests__/gitlab-tracking-comments.test.ts | 31 +++++++
.../src/__tests__/gitlab-tracking-state.test.ts | 42 ++++++++++
packages/dashboard/src/__tests__/gitlab.test.ts | 18 ++++
.../register-git-github.gitlab-lifecycle.test.ts | 54 ++++++++++++
packages/dashboard/src/gitlab-issue-comment.ts | 62 ++++++++++++++
packages/dashboard/src/gitlab-lifecycle.ts | 58 +++++++++++++
.../dashboard/src/gitlab-source-issue-close.ts | 45 ++++++++++
packages/dashboard/src/gitlab-tracking-comments.ts | 77 +++++++++++++++++
packages/dashboard/src/gitlab-tracking-state.ts | 97 ++++++++++++++++++++++
packages/dashboard/src/gitlab.ts | 30 +++++++
.../dashboard/src/routes/register-git-github.ts | 23 +++++
19 files changed, 630 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7426
Fusion-Task-Lineage: a46bd11f-96ef-4291-ab41-829007fa057a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
91737b1831
FN-7433: add explicit onboarding git setup modes
...
Expose explicit git setup choices in first-run onboarding and project registration.
- Add setup wizard modes for existing repositories, new git initialization, and remote cloning with mode-specific hints and validation.
- Extend project registration to accept gitSetupMode while preserving legacy cloneUrl-only behavior.
- Cover init and clone validation paths with dashboard tests, localized copy, docs, and a published package changeset.
Files changed:
.changeset/fn-7433-onboarding-git-setup.md | 7 +
docs/dashboard-guide.md | 10 ++
docs/getting-started.md | 10 +-
packages/dashboard/app/api/legacy.ts | 1 +
.../dashboard/app/components/SetupWizardModal.css | 77 +++++++++-
.../dashboard/app/components/SetupWizardModal.tsx | 159 ++++++++++++++-------
.../components/__tests__/SetupWizardModal.test.tsx | 107 +++++++++++++-
.../dashboard/src/__tests__/project-routes.test.ts | 98 +++++++++++++
.../src/routes/register-project-routes.ts | 25 +++-
packages/i18n/locales/en/app.json | 23 ++-
packages/i18n/locales/es/app.json | 25 +++-
packages/i18n/locales/fr/app.json | 25 +++-
packages/i18n/locales/ko/app.json | 25 +++-
packages/i18n/locales/zh-CN/app.json | 25 +++-
packages/i18n/locales/zh-TW/app.json | 25 +++-
15 files changed, 538 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7433
Fusion-Task-Lineage: 022c25c2-3c2d-4e47-aa8c-02525caad672
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
b8e126eeaf
FN-7425: add GitLab tracking metadata to tasks
...
Persist GitLab tracking metadata and surface it across task APIs and dashboard views.
- add task-store schema, migration, and update helpers for linked GitLab items and stale state
- expose validated GitLab tracking updates through task workflow routes and legacy task payloads
- render GitLab badges, detail-panel metadata, open/unlink actions, styling, i18n strings, and docs
- cover persistence, route validation, task card badges, and task detail interactions with tests
- add a patch changeset for the published Fusion package
Files changed:
.changeset/fn-7425-gitlab-tracking.md | 7 ++
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 3 +
packages/core/src/__tests__/db-migrate.test.ts | 29 +++++
.../src/__tests__/store-gitlab-tracking.test.ts | 138 +++++++++++++++++++++
packages/core/src/db.ts | 10 +-
packages/core/src/gitlab-tracking.ts | 10 ++
packages/core/src/index.ts | 3 +-
packages/core/src/store.ts | 135 +++++++++++++++++++-
packages/core/src/types.ts | 49 ++++++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/components/GitLabBadge.tsx | 33 +++++
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskCardBadge.tsx | 15 ++-
.../dashboard/app/components/TaskDetailModal.css | 47 +++++--
.../dashboard/app/components/TaskDetailModal.tsx | 134 +++++++++++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 49 ++++++++
.../TaskDetailModal.gitlab-tracking.test.tsx | 121 ++++++++++++++++++
.../__tests__/TaskDetailModal.test-helpers.ts | 1 +
packages/dashboard/app/styles.css | 9 ++
.../src/__tests__/routes-tasks-ops.test.ts | 136 ++++++++++++++++++++
packages/dashboard/src/gitlab.ts | 24 +++-
packages/dashboard/src/routes/register-gitlab.ts | 1 +
.../src/routes/register-task-workflow-routes.ts | 106 +++++++++++++++-
packages/i18n/locales/en/app.json | 31 +++++
packages/i18n/src/resources.d.ts | 31 +++++
26 files changed, 1106 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7425
Fusion-Task-Lineage: 9b5e6005-7284-402e-995c-553be2275eff
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
865dec235b
FN-7424: add GitLab task imports
...
Adds GitLab-backed task import flows across the CLI, extension, API, and dashboard.
- Add GitLab client normalization, provenance, duplicate detection, and import routes for project issues, group issues, and merge requests.
- Extend the dashboard import modal with a GitLab provider, resource tabs, previews, imported-state detection, and import actions.
- Add CLI and extension task import commands plus usage event/gating classifications and operator documentation.
- Cover GitLab fetch/import behavior with dashboard, CLI, and gating tests.
Files changed:
.changeset/fn-7424-gitlab-imports.md | 7 +
docs/cli-reference.md | 11 +-
docs/gitlab-parity-inventory.md | 10 +-
docs/task-management.md | 6 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 60 ++++
.../skill/fusion/references/fusion-capabilities.md | 6 +
packages/cli/src/__tests__/extension.test.ts | 6 +
.../__tests__/task-command-gitlab-import.test.ts | 97 ++++++
packages/cli/src/bin.ts | 25 +-
packages/cli/src/commands/task.ts | 58 ++++
packages/cli/src/extension.ts | 106 +++++++
packages/core/src/__tests__/usage-events.test.ts | 2 +
packages/core/src/types.ts | 7 +
packages/core/src/usage-events.ts | 3 +
packages/dashboard/app/api/legacy.ts | 52 ++++
.../dashboard/app/components/GitHubImportModal.css | 41 +++
.../dashboard/app/components/GitHubImportModal.tsx | 143 ++++++++-
.../__tests__/GitHubImportModal.test.tsx | 33 ++
packages/dashboard/src/__tests__/gitlab.test.ts | 56 ++++
.../dashboard/src/__tests__/routes-gitlab.test.ts | 99 ++++++
packages/dashboard/src/gitlab.ts | 334 +++++++++++++++++++++
packages/dashboard/src/index.ts | 15 +
packages/dashboard/src/routes.ts | 2 +
packages/dashboard/src/routes/register-gitlab.ts | 192 ++++++++++++
.../engine/src/__tests__/agent-action-gate.test.ts | 4 +
.../gating-classifications-provisioning.test.ts | 13 +-
.../src/__tests__/gating-classifications.test.ts | 6 +
packages/engine/src/gating-classifications.ts | 9 +
29 files changed, 1388 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7424
Fusion-Task-Lineage: 8012425c-21d5-4b20-adb7-07d2e5aa1cef
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
fafe4c9d9f
FN-7423: add GitLab access token settings
...
Add GitLab access-token configuration and auth resolution for future HTTP API integrations.
- Add personal, project, and group GitLab token settings at project and global scope.
- Resolve configured tokens with GITLAB_TOKEN fallback and PRIVATE-TOKEN metadata without requiring glab.
- Document required GitLab scopes and update parity handoff notes.
- Cover settings save splitting, parity, modal rendering, and auth resolution with tests.
Files changed:
.changeset/fn-7423-gitlab-access-tokens.md | 7 ++
docs/gitlab-parity-inventory.md | 10 +-
docs/settings-reference.md | 6 +-
docs/task-management.md | 2 +-
.../core/src/__tests__/settings-parity.test.ts | 28 +++--
packages/core/src/index.ts | 2 +-
packages/core/src/settings-schema.ts | 4 +
packages/core/src/types.ts | 17 ++-
.../app/__tests__/settings-save-split.test.ts | 69 ++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 2 +
.../SettingsModal.scheduling-merge.test.tsx | 57 ++++++++++
.../app/components/settings/save-split.ts | 6 +-
.../settings/sections/GlobalGeneralSection.tsx | 18 ++-
.../components/settings/sections/MergeSection.tsx | 22 ++++
.../dashboard/src/__tests__/gitlab-auth.test.ts | 99 +++++++++++++++++
packages/dashboard/src/gitlab-auth.ts | 123 +++++++++++++++++++++
16 files changed, 449 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7423
Fusion-Task-Lineage: f14ae52b-b730-44b0-8bad-54945c61d009
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:33 -07:00
gsxdsm
abb1917999
FN-7419: add Cursor CLI binary path override
...
Add a global Cursor CLI binary path override that is validated before enabling or probing Cursor routing.
- Add global settings schema/types and API support for storing a trimmed Cursor CLI binary path override.
- Surface a Settings Authentication control to save, clear, and test the Cursor CLI binary path.
- Probe configured Cursor binaries before PATH fallbacks and expose diagnostics for status/routes.
- Cover settings, route, dashboard, and cursor runtime behavior with focused tests and documentation.
Files changed:
.changeset/fn-7419-cursor-cli-binary-path.md | 7 ++
docs/cursor-cli-contract.md | 33 ++++--
docs/settings-reference.md | 2 +
.../core/src/__tests__/cursor-cli-settings.test.ts | 34 ++++++
packages/core/src/settings-schema.ts | 6 +
packages/core/src/types.ts | 8 ++
packages/dashboard/app/api/legacy.ts | 17 ++-
.../app/components/CursorCliProviderCard.css | 37 +++++-
.../app/components/CursorCliProviderCard.tsx | 78 ++++++++++++-
.../__tests__/ModelOnboardingModal.test.tsx | 4 +
.../__tests__/SettingsModal.general.test.tsx | 2 +
.../__tests__/SettingsModal.models-auth.test.tsx | 75 ++++++++++++
.../SettingsModal.remote-notifications.test.tsx | 2 +
.../SettingsModal.scheduling-merge.test.tsx | 2 +
.../__tests__/SettingsModal.test-harness.tsx | 3 +
.../dashboard/src/__tests__/routes-auth.test.ts | 130 ++++++++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 69 +++++++++--
.../src/__tests__/probe.test.ts | 61 +++++++++-
.../src/__tests__/process-manager.test.ts | 10 ++
.../src/__tests__/provider.test.ts | 57 +++++++++
plugins/fusion-plugin-cursor-runtime/src/probe.ts | 39 +++++--
.../fusion-plugin-cursor-runtime/src/provider.ts | 15 ++-
plugins/fusion-plugin-cursor-runtime/src/types.ts | 3 +
23 files changed, 655 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7419
Fusion-Task-Lineage: 2c192a37-a1db-41a9-99f5-a480ed311d9c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:33 -07:00
gsxdsm
7302d22b9d
FN-7421: document GitLab parity inventory
...
Document the GitLab parity implementation inventory and guardrails for downstream work.
- Add a GitLab parity inventory covering import, tracking, comments, auto-close, auth, CLI/tools, Command Center, and signals surfaces.
- Link the inventory from existing settings, signals, and task-management documentation.
- Add a documentation contract test for required GitLab assumptions and explicit exclusions.
Files changed:
docs/gitlab-parity-inventory.md | 106 +++++++++++++++++++++
docs/settings-reference.md | 3 +
docs/signals-connectors.md | 2 +
docs/task-management.md | 2 +
.../gitlab-parity-inventory-documentation.test.ts | 70 ++++++++++++++
5 files changed, 183 insertions(+)
Fusion-Task-Id: FN-7421
Fusion-Task-Lineage: 3b16cb60-11d6-4dc5-a374-23e515dc8b31
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:32 -07:00
gsxdsm
306e516e3b
FN-7417: prevent Windows Terminal startup popups
...
Prevent embedded terminal startup from surfacing recurring native Windows Terminal popups.
- Keep Windows embedded terminal detection on supported shell processes instead of Windows Terminal hosts.
- Convert Windows PTY spawn failures into actionable inline guidance with explicit Retry behavior.
- Cover desktop/mobile terminal guidance, bootstrap retry loops, API error payloads, and Windows shell selection with regression tests.
- Document Windows embedded terminal behavior and add a patch changeset.
Files changed:
.changeset/FN-7417-windows-terminal-popup.md | 7 ++
docs/dashboard-guide.md | 2 +
.../components/__tests__/TerminalModal.test.tsx | 31 ++++++++
.../hooks/__tests__/useTerminalSessions.test.ts | 26 ++++++-
.../dashboard/app/hooks/useTerminalSessions.ts | 18 ++++-
.../src/__tests__/routes-automation.test.ts | 31 +++++++-
.../src/__tests__/terminal-service.test.ts | 86 ++++++++++++++++++++++
packages/dashboard/src/terminal-service.ts | 32 ++++++--
8 files changed, 222 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7417
Fusion-Task-Lineage: edeb7743-c106-47e8-9506-6edaad821cfb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:31 -07:00
gsxdsm
85809103cd
FN-7413: configure agent permissions across lifetimes
...
Enable explicit capability grants and runtime permission policies for both durable and ephemeral agents.
- Persist normalized agent capability grants and leave missing permission policies to inherit project defaults at runtime.
- Apply action and tool approval gates to permanent agents, ephemeral agents, and fallback task workers.
- Add Agent Detail controls, translations, docs, tests, and a changeset for cross-lifetime agent permissions.
Files changed:
.changeset/fn-7413-agent-permissions.md | 7 ++
docs/agents.md | 12 ++--
docs/settings-reference.md | 11 ++-
packages/core/src/__tests__/agent-store.test.ts | 65 +++++++++++++----
packages/core/src/agent-store.ts | 31 ++++++---
packages/core/src/types.ts | 10 +--
.../dashboard/app/components/AgentDetailView.css | 48 +++++++++++++
.../dashboard/app/components/AgentDetailView.tsx | 81 +++++++++++++++++++++-
.../settings/sections/AgentPermissionsSection.tsx | 2 +-
.../dashboard/src/__tests__/routes-agents.test.ts | 8 +--
.../src/routes/register-agent-core-routes.ts | 32 ++++++---
.../src/__tests__/heartbeat-executor.test.ts | 14 +++-
packages/engine/src/agent-heartbeat.ts | 17 ++---
packages/engine/src/executor.ts | 57 +++++++--------
packages/i18n/locales/en/app.json | 12 +++-
packages/i18n/locales/es/app.json | 12 +++-
packages/i18n/locales/fr/app.json | 12 +++-
packages/i18n/locales/ko/app.json | 12 +++-
packages/i18n/locales/zh-CN/app.json | 12 +++-
packages/i18n/locales/zh-TW/app.json | 12 +++-
20 files changed, 363 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7413
Fusion-Task-Lineage: bc004572-bde8-4d33-bb27-e941a5bc8884
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:31 -07:00
gsxdsm
377eee64af
FN-7410: allow archived task deletion
...
Allow archived task snapshots to be deleted while preserving soft-delete tombstones.
- Restore cold archived snapshots into the tasks table before applying delete tombstones.
- Remove archive snapshots after deletion and preserve allowResurrection semantics.
- Cover archived deletion through store, API, UI menu, docs, and changeset updates.
Files changed:
.changeset/fn-7410-delete-archived-tasks.md | 7 ++
docs/task-management.md | 3 +-
.../core/src/__tests__/soft-delete-tasks.test.ts | 129 +++++++++++++++++++++
packages/core/src/store.ts | 25 +++-
.../components/__tests__/TaskContextMenu.test.tsx | 19 +++
.../src/__tests__/routes-tasks-ops.test.ts | 24 ++++
6 files changed, 204 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7410
Fusion-Task-Lineage: fa7d9983-e62c-4849-89d8-1ae5f6134815
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:30 -07:00
gsxdsm
f8ff0e6f5c
test: fix remaining CI full-suite failures after graph cutover
...
Missing mock export (5 files, 17 tests):
- reviewer-prompt-single-source, plan-review-unavailable-recovery,
triage-fast-mode-workflow-variant, triage-stuck-requeue-preserve-draft,
restart.integration: add formatModelMarkerDetails to the ../pi.js mock.
Production code calls this after resolving an agent session, but the test
mocks were missing the export, causing all reviewer/triage/restart paths
to throw before reaching finalization assertions.
Outdated worktree assertions (2 files, 5 tests):
- worktree-acquisition-backend, worktree-acquisition-worktrunk: update
assertions for the new git symbolic-ref origin/HEAD resolution call and
the appended start point in git worktree add (worktree isolation fix).
Stale workflow compiler tests (1 file, 2 tests):
- workflow-routes: FN-7360 removed the linear compiler /compile endpoint
and made parseWorkflowIr the sole validity gate. Branching custom
workflows are now valid on the graph interpreter. Updated the two stale
tests that asserted 422 for branching IR to assert 201/200 instead.
2026-07-02 07:41:15 -07:00
gsxdsm
855061db5f
fix: harden workflow graph cutover paths and migrate cutover-era tests
...
Production fixes:
- executor.ts: add safeLogEntry() wrapper so synchronous throws from
store.logEntry don't abort pause/abort/finalize control flow.
- workflow-authoritative-driver.ts: pass built-in auxiliary custom nodes
(task-summary nodes, bypassable optional-groups) through as success
instead of throwing.
Test migrations for graph-native runtime (cherry-picked from closed PR #1869 ):
- executor-prompt: two-party barrier for global-pause disposal test.
- executor-task-done-invariant: assert merge-node boundary moveTask.
- workflow-graph-merge-region-collapse: updated for merge-region node shapes.
- executor-worktree/worktree-liveness/implicit-task-done-budget: graph-aware.
- CLI extension tests: shared engine-workflow-authoring-mock helper.
- Dashboard/desktop/reliability tests: cutover-aware assertion updates.
2026-07-02 07:32:47 -07:00
gsxdsm
1a523e7d1b
FN-7407: enable done-task planner refinements
...
Enable planner chat on completed tasks and let clear follow-up requests create refinements.
- Allow task-planner chat sessions for done tasks while keeping archived tasks blocked.
- Add a task-scoped refinement tool that creates follow-up tasks only from completed source tasks.
- Render refinement creation, pending, and failure states in the planner chat transcript.
- Extend planner-chat context, route, manager, and component tests for done-task chat and refinement behavior.
- Document the completed-task planner chat behavior and add a patch changeset.
Files changed:
.changeset/fn-7407-done-planner-chat.md | 7 ++
docs/dashboard-guide.md | 5 +-
.../app/components/TaskPlannerChatTab.tsx | 50 +++++++-
.../__tests__/TaskPlannerChatTab.test.tsx | 66 ++++++++++-
.../dashboard/src/__tests__/chat-manager.test.ts | 126 ++++++++++++++++++++-
.../dashboard/src/__tests__/chat-routes.test.ts | 41 ++++++-
.../__tests__/task-planner-chat-context.test.ts | 5 +-
packages/dashboard/src/chat.ts | 66 ++++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 9 +-
.../dashboard/src/task-planner-chat-context.ts | 5 +-
10 files changed, 360 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-7407
Fusion-Task-Lineage: b3214d89-a59c-4682-b5cd-98d7d6cc09e2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 23:44:05 -07:00
gsxdsm
b7c6443a7b
Restore Claude Sonnet 5 in the picker + address PR review feedback ( #1862 )
...
Sonnet 5 had disappeared from every surface: pi-ai 0.79.9 (the installed
version) lacks it, and FN-7374 removed the static row expecting the live
registry to carry it. Live-verified that claude-sonnet-5 returns 200 on
api.anthropic.com/v1 with a raw ANTHROPIC_API_KEY and runs via the Claude
CLI (it 403s on subscription-OAuth /v1 — scope-gated; runtime fallback
applies). Note: pi-ai 0.80.3 ships sonnet-5 natively, so this SUPPLEMENTAL
row dedupes once the install catches up.
- core: re-add claude-sonnet-5 to SUPPLEMENTAL_ANTHROPIC_PROVIDER_REGISTRATION
and restore its static pricing (revert FN-7374); update pricing tests.
- engine/dashboard tests: flip the FN-7374 "withheld" assertions to the
restored "advertised" behavior.
PR feedback:
- Trim the two FNXC comments (auth-storage.ts, pi.ts) to concise
requirement prose per coding guidelines (CodeRabbit).
- Replace the now-inert getApiKey mock in two subscription routing tests
with a clarifying note (Greptile).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 16:19:03 -07:00
gsxdsm
a1af5de609
fix(anthropic): restore direct OAuth execution for Claude subscriptions
...
Claude subscription (Max/Pro) chats regressed to 404/502/429 because
FN-7396 rerouted subscription OAuth to a /v1-based `anthropic-subscription`
runtime provider — reintroducing issue #1857 that FN-7391 had fixed. Both
routed the OAuth token to api.anthropic.com/v1, the surface that broke.
Proven in code that v0.51.0 (working) sent subscription OAuth directly to
/v1 via pi-ai's built-in `anthropic` provider (Claude Code impersonation:
Bearer + anthropic-beta oauth headers), NOT through the CLI. Restore that:
- auth-storage: getApiKey("anthropic") resolves subscription/legacy OAuth
again (raw API key still wins), so the built-in provider gets the token.
- pi.ts: remove the runtime reroute and the /v1 `anthropic-subscription`
execution provider so anthropic/* selections stay on the built-in provider.
- register-model-routes: advertise `anthropic` for OAuth users so direct
OAuth is selectable in the picker.
Three independent surfaces, no rerouting: direct OAuth, raw ANTHROPIC_API_KEY
(precedence), and explicit pi-claude-cli.
Fixes #1857
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 15:40:16 -07:00
gsxdsm
9c2a264322
FN-7398: restore Anthropic model selection
...
Restore Anthropic model selector discovery across API-key, OAuth subscription, and Claude CLI flows.
- Read injected auth storage when building /api/models so Settings connection state feeds model availability.
- Keep Anthropic subscription OAuth separate from direct Anthropic API-key rows while allowing enabled Claude CLI models to appear.
- Add regression coverage for selector rendering, stale empty catalog refresh, and authenticated model-route filtering.
- Document the restored Anthropic provider surfaces and add a patch changeset.
Files changed:
.changeset/fn-7398-anthropic-model-selector.md | 7 ++
docs/settings-reference.md | 4 +-
.../components/__tests__/ModelSelectorTab.test.tsx | 105 +++++++++++++++++
.../app/hooks/__tests__/useModelsCache.test.ts | 40 +++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 125 ++++++++++++++++++++-
.../dashboard/src/routes/register-model-routes.ts | 60 +++++++++-
6 files changed, 333 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-7398
Fusion-Task-Lineage: 5d1b1b8e-9b8b-40fe-b76f-7d6142e0e21f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
19e59ec6c8
FN-7396: separate Anthropic OAuth routing paths
...
Separate Anthropic subscription OAuth execution from raw API-key and Claude CLI routing.
- Route subscription-backed Anthropic selections through a dedicated anthropic-subscription provider instead of raw anthropic API-key storage or implicit CLI execution.
- Preserve Anthropic OAuth refresh, status, usage, and re-login banner behavior across separated and legacy credential rows.
- Add dashboard and engine coverage for OAuth subscription auth, raw API-key isolation, and explicit Claude CLI routing.
- Document the separated Anthropic subscription, API-key, and CLI surfaces and add a release changeset.
Files changed:
.../fn-7396-anthropic-oauth-cli-api-paths.md | 7 ++
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 12 ++-
.../__tests__/OAuthReloginBanner.test.tsx | 118 +++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 29 +++++
packages/dashboard/src/__tests__/usage.test.ts | 109 ++++++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 20 +++-
packages/dashboard/src/usage.ts | 21 +++-
packages/engine/src/__tests__/auth-storage.test.ts | 65 ++++++++++++
.../src/__tests__/pi-create-fn-agent.test.ts | 55 ++++++++--
packages/engine/src/auth-storage.ts | 61 +++++++++--
packages/engine/src/pi.ts | 70 ++++++++----
12 files changed, 521 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-7396
Fusion-Task-Lineage: f5f42a40-b855-46ad-b2ae-3509e903f286
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
1ccef81950
FN-7393: add planner chat task metrics access
...
Planner chat can now answer read-only task usage and timing questions with scoped metrics context.
- Add a task-scoped metrics tool for token, cost, runtime, timing-event, workflow-step, and per-model usage summaries.
- Wire planner chat to expose the metrics tool only for task-detail planner sessions.
- Cover metric aggregation, stale pricing uncertainty, chat tool routing, and planner context behavior with dashboard tests.
- Document planner chat metrics support and add a published package changeset.
Files changed:
.changeset/fn-7393-planner-metrics.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 153 +++++++
.../__tests__/task-planner-chat-metrics.test.ts | 243 +++++++++++
packages/dashboard/src/chat.ts | 61 ++-
.../dashboard/src/task-planner-chat-context.ts | 5 +-
.../dashboard/src/task-planner-chat-metrics.ts | 445 +++++++++++++++++++++
7 files changed, 912 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7393
Fusion-Task-Lineage: aed7574e-67cf-49af-982f-dfd4620ebe0a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
4beae7130d
FN-7392: suppress hidden planner chat unread badges
...
Suppress hidden task-planner chat replies from triggering the global unread badge while preserving opt-in common-feed behavior.
- Enrich chat message SSE payloads with session agent metadata and task chat common-feed visibility.
- Ignore hidden `task-planner:` assistant events in the chat unread badge hook.
- Cover hidden, visible, and legacy payload behavior with dashboard SSE and hook tests.
- Document the unread badge scope and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7392-planner-chat-unread.md | 7 +
docs/dashboard-guide.md | 2 +-
.../app/components/__tests__/App.test.tsx | 55 ++++++++
.../app/hooks/__tests__/useChatUnreadBadge.test.ts | 110 ++++++++++++++++
packages/dashboard/app/hooks/useChatUnreadBadge.ts | 32 ++++-
packages/dashboard/src/__tests__/sse.test.ts | 141 ++++++++++++++++++++-
packages/dashboard/src/sse.ts | 36 +++++-
7 files changed, 378 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7392
Fusion-Task-Lineage: 13fd5c51-eefa-4088-979b-005c8b217f89
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
bfe5ceddc8
FN-7389: dedupe Claude CLI Sonnet 5 models
...
Keep Claude Sonnet 5 visible only through eligible provider catalogs without duplicate picker rows.
- Dedupe API model rows by provider/model after registry and supplemental catalog merges.
- Cover Claude CLI Sonnet 5 visibility, disabled-toggle filtering, and duplicate suppression in API tests.
- Add dropdown coverage for stale direct-Anthropic favorite shells when Claude CLI Sonnet 5 is selected.
- Add a patch changeset for the model picker fix.
Files changed:
.changeset/fn-7389-sonnet-5-model-list.md | 7 +++++
.../__tests__/CustomModelDropdown.test.tsx | 33 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 15 ++++++++--
.../dashboard/src/routes/register-model-routes.ts | 12 ++++++++
4 files changed, 65 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7389
Fusion-Task-Lineage: d41b422e-60f9-46c3-9c6f-d115a86e9e2a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:33 -07:00
gsxdsm
775ff5fb9c
FN-7391: route Anthropic subscription chats through Claude CLI
...
Keep Anthropic OAuth subscription credentials away from the direct /v1 provider while preserving raw API-key routing.
- Treat direct anthropic auth as raw API-key-only in auth storage and model discovery.
- Re-route persisted anthropic model selections to the Claude CLI provider when no raw Anthropic API key is configured.
- Add regression coverage for OAuth-only routing, raw API-key preservation, and provider list separation.
- Document the distinct raw API key, OAuth subscription, and Claude CLI routes.
Files changed:
.../fn-7391-anthropic-subscription-cli-routing.md | 7 ++
docs/settings-reference.md | 2 +-
.../dashboard/src/__tests__/routes-auth.test.ts | 74 ++++++++++++++
.../dashboard/src/routes/register-model-routes.ts | 27 +++++-
packages/engine/src/__tests__/auth-storage.test.ts | 108 +++++++--------------
.../src/__tests__/pi-create-fn-agent.test.ts | 100 +++++++++++++++++++
packages/engine/src/auth-storage.ts | 45 ++++-----
packages/engine/src/pi.ts | 61 ++++++++++++
8 files changed, 319 insertions(+), 105 deletions(-)
Fusion-Task-Id: FN-7391
Fusion-Task-Lineage: d1fecc2d-7f31-408c-bf65-0e65b7fd88b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:33 -07:00
gsxdsm
14bb7a3707
feat(FN-7360): remove legacy workflow step engine
...
The step execution engine was already gone (runWorkflowSteps deleted,
workflow_steps table dropped in migration 132). This removes what remained:
the linear step compiler (compileWorkflowToSteps/validateLinearity/
WorkflowCompileError), which survived only as a validator + step-preview
generator.
parseWorkflowIr/validateV2 (which accepts branching graphs) is now the sole
workflow validity gate at save/select/refine and in the graph task runner.
Custom branching workflows are now selectable and run on the graph
interpreter instead of being rejected as non-linear.
- core: delete workflow-compiler.ts; rework store.validateWorkflowCompilable
onto parseWorkflowIr; move MERGE_REGION_NODE_KINDS into
workflow-lifecycle-validation; retag workflow-steps-to-ir as legacy lowering
- engine: drop the compiler double-validation in workflow-graph-task-runner
- dashboard: remove POST /api/workflows/:id/compile + client wrapper; drop the
interpreterOnly response field and editor banner; no post-save compile check
- i18n: remove the orphaned workflowNodes.interpreterOnly key across locales
- tests: reframe two workflow-selection tests whose premise inverted; fix a
pre-existing red in builtin-lead-generation (completion-summary node)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 11:28:03 -07:00
gsxdsm
869974cd5a
FN-7383: refresh workflows after chat authoring
...
Chat-authored workflow changes now propagate immediately to workflow selectors and editors.
- Emit workflow lifecycle SSE events when chat, planner, or room workflow tools create, update, select, configure, or delete workflows.
- Force-refresh board workflow caches and the workflow editor list when workflow lifecycle events arrive.
- Add cross-surface tests for chat workflow creation visibility and room/chat workflow tool event behavior.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7383-chat-workflow-authoring.md | 7 +++
.../workflow-selection-cross-surface.test.tsx | 23 +++++++++
packages/dashboard/app/api/legacy.ts | 9 ++--
.../app/components/WorkflowNodeEditor.tsx | 23 ++++++++-
.../app/hooks/__tests__/useBoardWorkflows.test.ts | 27 +++++++---
packages/dashboard/app/hooks/useBoardWorkflows.ts | 22 +++++---
.../utils/__tests__/boardWorkflowsCache.test.ts | 12 ++++-
.../dashboard/app/utils/boardWorkflowsCache.ts | 14 +++++
.../dashboard/src/__tests__/chat-manager.test.ts | 44 ++++++++++++++--
.../dashboard/src/__tests__/chat.rooms.test.ts | 44 ++++++++++++++++
packages/dashboard/src/chat.ts | 59 +++++++++++++++++++---
11 files changed, 255 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7383
Fusion-Task-Lineage: ebe4c982-214b-402f-b829-a58ace19ffe0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 11:12:59 -07:00
gsxdsm
427ce04a6f
FN-7374: stop advertising Claude Sonnet 5 statically
...
Stop Fusion from statically offering Claude Sonnet 5 when account availability is unknown.
- Remove the supplemental direct Anthropic Claude Sonnet 5 model registration and static pricing row.
- Keep Claude CLI supplemental metadata from force-adding Sonnet 5 while preserving other extra Claude models.
- Update model registry, pricing, adapter, and provider tests to expect unavailable or upstream-only Sonnet 5 handling.
- Add a patch changeset for the operator-facing fix.
Files changed:
.changeset/fn-7374-anthropic-sonnet-5-404.md | 7 ++++++
packages/core/src/__tests__/model-pricing.test.ts | 20 +++++++---------
packages/core/src/anthropic-models.ts | 24 +++----------------
packages/core/src/model-pricing.ts | 11 ++-------
.../dashboard/src/__tests__/routes-auth.test.ts | 13 ++++++----
.../src/__tests__/pi-create-fn-agent.test.ts | 28 ++++++----------------
.../src/cli-agent/adapters/__tests__/pi.test.ts | 6 ++---
packages/pi-claude-cli/index.ts | 13 ++--------
.../src/__tests__/process-manager.test.ts | 4 ++--
.../pi-claude-cli/src/__tests__/provider.test.ts | 12 ++--------
10 files changed, 44 insertions(+), 94 deletions(-)
Fusion-Task-Id: FN-7374
Fusion-Task-Lineage: 9c498bb4-c4c1-4dd8-ae80-869dfb1d4c2c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:23:39 -07:00
gsxdsm
a9e2baa9f8
FN-7367: link imported GitHub issues to tracking
...
Imported GitHub issues can now adopt their source issue as the tracking issue without changing ordinary task defaults.
- Add the project-scoped githubLinkImportedIssuesToTracking setting with docs, Settings UI, and defaults.
- Honor the import-only setting across dashboard, CLI, and extension GitHub issue import paths.
- Cover saved settings and import tracking behavior with CLI, dashboard, and parity tests.
- Add a minor changeset for the published CLI package.
Files changed:
.changeset/fn-7367-github-import-tracking.md | 7 +++
docs/settings-reference.md | 3 +-
packages/cli/src/__tests__/extension.test.ts | 73 ++++++++++++++++++++++
.../task-command-github-import-tracking.test.ts | 16 +++++
packages/cli/src/commands/__tests__/task.test.ts | 28 +++++++++
packages/cli/src/commands/task.ts | 45 +++++++------
packages/cli/src/extension.ts | 45 +++++++------
.../core/src/__tests__/settings-parity.test.ts | 4 ++
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 6 ++
.../app/__tests__/settings-save-split.test.ts | 19 ++++++
.../dashboard/app/components/SettingsModal.tsx | 6 ++
.../__tests__/SettingsModal.general.test.tsx | 59 +++++++++++++++++
.../__tests__/SettingsModal.test-harness.tsx | 1 +
.../settings/sections/GeneralSection.tsx | 9 +++
.../dashboard/src/__tests__/routes-github.test.ts | 45 +++++++++++++
.../dashboard/src/routes/register-git-github.ts | 7 +++
17 files changed, 325 insertions(+), 49 deletions(-)
Fusion-Task-Id: FN-7367
Fusion-Task-Lineage: 43671cdf-7e0d-4b7a-9ba2-54c9a367dfec
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:50:57 -07:00
gsxdsm
12ee9a92d2
FN-7361: add exact tool permission overrides
...
Add exact tool-name permission overrides for permanent agent tool usage.
- Add persisted toolRules policy support with normalization, project-default inheritance, and escalation comparison.
- Enforce exact tool dispositions before category rules in engine gating and permanent-agent decisions.
- Extend the permission editor, agent/settings routes, translations, docs, and tests for fine-grained tool controls.
Files changed:
.changeset/fn-7361-tool-permissions.md | 7 +
docs/agents.md | 18 ++-
docs/settings-reference.md | 12 +-
.../agent-permission-policy-resolution.test.ts | 58 +++++++-
.../src/__tests__/agent-permission-policy.test.ts | 17 +++
...settings-schema-agent-permission-policy.test.ts | 6 +-
packages/core/src/agent-permission-policy.ts | 87 ++++++++++--
packages/core/src/index.ts | 2 +-
packages/core/src/types.ts | 19 ++-
.../dashboard/app/components/AgentDetailView.tsx | 17 +--
.../app/components/AgentPermissionPolicyEditor.css | 59 +++++++-
.../app/components/AgentPermissionPolicyEditor.tsx | 156 ++++++++++++++++++++-
.../__tests__/AgentPermissionPolicyEditor.test.tsx | 92 +++++++++++-
.../settings/sections/AgentPermissionsSection.tsx | 6 +-
.../dashboard/src/__tests__/routes-agents.test.ts | 79 +++++++++++
.../src/__tests__/routes-settings.test.ts | 21 +++
.../src/routes/register-agent-core-routes.ts | 37 +++--
.../agent-action-gate-project-default.test.ts | 34 +++++
.../engine/src/__tests__/agent-action-gate.test.ts | 43 ++++++
.../src/__tests__/gating-classifications.test.ts | 55 ++++++++
packages/engine/src/agent-action-gate.ts | 17 ++-
packages/engine/src/permanent-agent-gating.ts | 11 +-
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 +-
28 files changed, 878 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-7361
Fusion-Task-Lineage: 006e4311-91a5-4792-9a54-feaba892129a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:45:30 -07:00
gsxdsm
4805182d0c
FN-7369: add custom answers to Planning Mode confirms
...
Planning Mode confirm prompts can now preserve a user-authored Other answer instead of forcing Yes or No.
- Add an Other option with a textarea to confirm-style Planning Mode questions.
- Submit confirm Other answers with the shared `_other` payload and render them in agent/history formatting.
- Cover confirm Other behavior in modal flow and formatter tests.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7369-confirm-other.md | 7 ++
.../dashboard/app/components/PlanningModeModal.css | 10 ++
.../dashboard/app/components/PlanningModeModal.tsx | 74 +++++++++---
.../PlanningModeModal.planning-flow.test.tsx | 125 +++++++++++++++++++++
.../planning-interview-formatters.test.ts | 27 +++++
packages/dashboard/src/planning.ts | 10 +-
6 files changed, 234 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7369
Fusion-Task-Lineage: 67b4d943-8ff3-4502-bca1-7e74eb95ac06
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:24:50 -07:00
gsxdsm
fed60ecff6
FN-7364: hide task chats from common feed by default
...
Hide task-detail planner chats from the common Chat feed unless a project opts in.
- Add a project setting and Settings UI toggle for showing populated task chats in the common feed.
- Filter task-planner sessions on chat list routes and avoid stale cached/SSE planner rows in the Chat hook.
- Cover default-hidden and opt-in behavior with route, hook, settings, and parity tests.
- Document the Chat feed behavior and include a patch changeset.
Files changed:
.changeset/fn-7364-task-chat-feed-setting.md | 7 ++
docs/dashboard-guide.md | 2 +
.../core/src/__tests__/settings-parity.test.ts | 8 +++
packages/core/src/settings-schema.ts | 5 ++
packages/core/src/types.ts | 5 ++
.../__tests__/SettingsModal.general.test.tsx | 18 +++++
.../settings/sections/GeneralSection.tsx | 9 +++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 65 +++++++++++++++++
packages/dashboard/app/hooks/useChat.ts | 22 ++++--
.../dashboard/src/__tests__/chat-routes.test.ts | 82 +++++++++++++++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 13 +++-
11 files changed, 227 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7364
Fusion-Task-Lineage: 79a0706c-ba7f-4417-b88b-c5282ae7877c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:50:29 -07:00
gsxdsm
62c58402ff
fix(workflow): raise step review timeout default
2026-07-01 08:22:04 -07:00
gsxdsm
1f3a15ec1c
FN-7360: fix Windows desktop runtime packaging
...
Fix packaged Windows desktop startup by preserving Node-safe runtime dependencies and dashboard registry assets.
- Externalize Electron main/preload npm packages so CommonJS updater dependencies load natively.
- Load the dashboard plugin registry manifest through file IO and copy it into dashboard server dist from all build paths.
- Split Windows NSIS and portable artifact names and verify required Electron runtime resources in CI.
- Cover the packaging/runtime invariants with desktop and dashboard regression tests.
Files changed:
.changeset/fn-7360-desktop-windows.md | 7 +++
.github/workflows/desktop-windows.yml | 21 ++++++++
packages/dashboard/package.json | 2 +-
.../src/__tests__/plugin-registry-dist.test.ts | 32 ++++++++++++
.../src/__tests__/routes-plugin-registry.test.ts | 10 ++--
packages/dashboard/src/plugin-routes.ts | 27 +++++++++-
packages/desktop/README.md | 5 +-
packages/desktop/electron-builder.yml | 9 ++++
packages/desktop/scripts/build.ts | 29 ++++++++--
packages/desktop/scripts/workspace-tools.ts | 4 ++
.../desktop/src/__tests__/build-bundling.test.ts | 61 ++++++++++++++++++++++
.../src/__tests__/electron-builder-config.test.ts | 15 ++++++
packages/desktop/src/__tests__/ipc.test.ts | 15 ++++++
.../desktop/src/__tests__/local-runtime.test.ts | 20 +++++++
14 files changed, 247 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7360
Fusion-Task-Lineage: a2d88130-c24f-43e2-932a-1e174b6afa35
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:01:59 -07:00
gsxdsm
62c4aae038
FN-7358: recover Sonnet 5 chat fallbacks
...
Recover Sonnet 5 chat sends by applying configured fallback models and clearer failure context.
- Allow explicit dashboard chat model selections to use the configured fallback on retryable provider/model failures.
- Preserve selected provider/model context in no-fallback chat errors so operators can identify unavailable models.
- Expand provider not-found detection and regression coverage for Anthropic Sonnet 5 404 payloads.
- Document fallback behavior and add the published package changeset.
Files changed:
.changeset/fn-7358-sonnet-5-response-failed.md | 7 +++
docs/settings-reference.md | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 71 +++++++++++++++++++---
packages/dashboard/src/chat.ts | 67 +++++++++++++++++---
packages/engine/src/__tests__/pi.test.ts | 71 +++++++++++++++++++++-
.../src/__tests__/transient-error-detector.test.ts | 4 ++
packages/engine/src/pi.ts | 4 +-
packages/engine/src/transient-error-detector.ts | 4 +-
8 files changed, 208 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7358
Fusion-Task-Lineage: 095a3218-1d4a-4ccb-a8c9-c9f81822b084
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
2eb6edb2fc
fix: keep dashboard available after planning failures ( #1846 )
...
## Summary
- keep malformed planning-session responses persisted as retryable error
state instead of deleting the session
- add `fn dashboard --supervise` to restart unexpected dashboard exits
with bounded exponential backoff
- document the supervised-dashboard run mode and add a patch changeset
## Test Plan
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/session-error-recovery.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/server.test.ts -t "returns health OK independently"
--silent=passed-only --reporter=dot`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm build`
- `corepack pnpm test:gate`
Note: a full `server.test.ts` run also exposes four existing
routine-runner expectation failures unrelated to this change; the added
health check passes when run by name.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added dashboard supervised mode via a new `--supervise` option, with
automatic restarts using a bounded restart budget and exponential
backoff.
* **Bug Fixes**
* Planning sessions now persist as retryable error states when AI output
can’t be parsed, preventing session loss.
* Improved reliability so `GET /api/health` remains available during
these planning error states.
* **Documentation**
* Documented “Dashboard Availability &amp; Supervised Mode”,
including health-check guidance and operational guardrails.
* **Tests**
* Added test coverage for supervised restart behavior, health during
planning errors, and ensuring no unhandled rejections on parse failures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-01 07:26:24 -07:00
gsxdsm
4a1a04303f
fix(FN-7344): hide stall badges during active agent logs
2026-06-30 23:45:03 -07:00
gsxdsm
519f158400
FN-7345: Persist remote access settings saves
...
Remote Access settings now save from the main Settings dialog without requiring tunnel startup.
- Map flattened Remote Access form fields into the canonical global remoteAccess payload during section saves.
- Preserve provider, token, and lifecycle branches while saving Tailscale accept-routes and remember-running options.
- Cover the UI save flow, split helper, API route contract, docs, and release note.
Files changed:
.changeset/fn-7345-remote-settings-windows.md | 7 +
docs/dashboard-guide.md | 1 +
.../app/__tests__/settings-save-split.test.ts | 56 ++++++++
.../SettingsModal.remote-notifications.test.tsx | 144 +++++++++++++++++++++
.../app/components/settings/save-split.ts | 103 +++++++++++++++
.../src/__tests__/routes-remote-access.test.ts | 54 ++++++++
6 files changed, 365 insertions(+)
Fusion-Task-Id: FN-7345
Fusion-Task-Lineage: 9d1eb7f7-7e13-4070-af7d-eb6c6a41fe44
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 23:45:02 -07:00
gsxdsm
7d2bd9794e
FN-7337: make planner chats lazy and archive-scoped
...
Task planner chats now stay out of global chat history until a user interacts and are retained until task archive.
- Load task planner chat tabs with lookup-only resume before any user send.
- Show task-planner sessions in global Chat only after messages exist, including SSE refresh handling.
- Keep interacted planner chats for done tasks while deleting task-scoped planner sessions on archive.
- Cover chat store deletion, planner tab behavior, route filtering, and chat-list refresh with regression tests.
Files changed:
.changeset/fn-7337-planner-chat-retention.md | 7 ++
docs/dashboard-guide.md | 4 +-
packages/core/src/__tests__/chat-store.test.ts | 44 +++++++++
packages/core/src/chat-store.ts | 22 +++++
packages/dashboard/app/api/legacy.ts | 35 ++++++-
.../app/components/TaskPlannerChatTab.tsx | 13 ++-
.../__tests__/TaskPlannerChatTab.test.tsx | 91 +++++++++++++-----
.../dashboard/app/hooks/__tests__/useChat.test.ts | 41 ++++++++
packages/dashboard/app/hooks/useChat.ts | 15 ++-
.../dashboard/src/__tests__/chat-routes.test.ts | 105 +++++++++++++++++++++
.../dashboard/src/routes/register-chat-routes.ts | 17 +++-
packages/dashboard/src/server.ts | 10 +-
packages/engine/src/runtimes/in-process-runtime.ts | 8 ++
13 files changed, 378 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-7337
Fusion-Task-Lineage: 7ef9ed8f-af2e-4fa9-a2b6-0e8c8a805d5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 23:45:01 -07:00
Phil Larson
9432339363
fix: keep dashboard available after planning failures
2026-06-30 23:35:27 -07:00
gsxdsm
cb0d38a0c6
FN-7313: add guarded planner chat steering
...
Task-detail planner chat now turns only clear task change requests into persisted steering comments while keeping ambiguous requests in clarification flow.
- Add a scoped planner-chat steering tool with task-bound persistence and richer result details.
- Refresh task details and show steering confirmation, pending, and error states in the planner chat transcript.
- Expand planner chat prompt guidance and tests for clear steering, ambiguous clarification, and ordinary status questions.
- Add a published Fusion changeset for the new task chat steering behavior.
Files changed:
.changeset/fn-7313-task-chat-steering.md | 7 ++
.../dashboard/app/components/TaskDetailModal.tsx | 1 +
.../app/components/TaskPlannerChatTab.css | 28 +++++
.../app/components/TaskPlannerChatTab.tsx | 96 ++++++++++++++++-
.../__tests__/TaskPlannerChatTab.test.tsx | 72 ++++++++++++-
.../dashboard/src/__tests__/chat-manager.test.ts | 120 +++++++++++++++++++++
packages/dashboard/src/chat.ts | 32 +++++-
7 files changed, 347 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7313
Fusion-Task-Lineage: 29da54cc-c379-4fe5-8419-be3acc712495
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 19:15:11 -07:00
gsxdsm
ddfd841b53
FN-7312: send task context to planner chat
...
Send bounded task state into task-detail planner chat so status and progress questions can be answered in context.
- Build reusable server-side planner chat context from task metadata, dependencies, steps, comments, activity, source, and review state.
- Pass and validate the task id on planner chat sends to keep sessions scoped to the current task.
- Update planner chat copy, docs, tests, and changeset coverage for task-aware status/progress questions.
Files changed:
.changeset/fn-7312-task-planner-chat-context.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/api/legacy.ts | 5 +-
.../app/components/TaskPlannerChatTab.tsx | 5 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 22 ++
.../dashboard/src/__tests__/chat-manager.test.ts | 17 +-
.../dashboard/src/__tests__/chat-routes.test.ts | 76 +++++
.../__tests__/task-planner-chat-context.test.ts | 165 +++++++++++
packages/dashboard/src/chat.ts | 92 +-----
.../dashboard/src/routes/register-chat-routes.ts | 11 +-
.../dashboard/src/task-planner-chat-context.ts | 326 +++++++++++++++++++++
11 files changed, 634 insertions(+), 96 deletions(-)
Fusion-Task-Id: FN-7312
Fusion-Task-Lineage: 90cf0fe3-3984-4a67-bb44-fce492c256eb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 18:51:41 -07:00
gsxdsm
a186dccaf6
test(auth): stub auth route CLI probes
2026-06-30 18:39:52 -07:00
gsxdsm
db7b46f60f
FN-7310: add task planner chat tab
...
Add a dedicated task-detail Chat surface for planner-model conversations separate from Activity steering.
- Add task-scoped planner chat session creation and routing with planning-model overrides.
- Render a new top-level Chat tab next to Activity, including streaming responses, tool-call cards, and retry/error states.
- Cover planner chat tab ordering, session reuse, route validation, manager dispatch, and dashboard documentation.
Files changed:
.changeset/fn-7310-planner-chat.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/api/legacy.ts | 35 +++
.../dashboard/app/components/TaskDetailModal.tsx | 40 ++-
.../app/components/TaskPlannerChatTab.css | 149 ++++++++++
.../app/components/TaskPlannerChatTab.tsx | 322 +++++++++++++++++++++
...etailModal.responsive-and-dependencies.test.tsx | 13 +-
.../__tests__/TaskDetailModal.test-helpers.ts | 3 +
.../components/__tests__/TaskDetailModal.test.tsx | 58 ++++
.../__tests__/TaskPlannerChatTab.test.tsx | 193 ++++++++++++
.../dashboard/src/__tests__/chat-manager.test.ts | 65 +++++
.../dashboard/src/__tests__/chat-routes.test.ts | 106 +++++++
packages/dashboard/src/chat.ts | 132 ++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 68 +++++
14 files changed, 1181 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7310
Fusion-Task-Lineage: a276c356-599e-4495-9879-472d157d95e5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 17:20:42 -07:00
gsxdsm
7f3bd80dbe
FN-7297: include ephemeral agents in activity stats
...
Count ephemeral task-worker runs in dashboard activity analytics so active-agent stats reflect task execution.
- Include agentRuns agent ids alongside usage_events when computing active-agent range totals and daily series.
- Preserve distinct per-agent counting across both activity sources and handle missing agentRuns tables.
- Cover activity analytics, API route fixtures, and Command Center UI expectations for run-only task workers.
- Document the Command Center activity semantics and add a patch changeset for the published CLI bundle.
Files changed:
.changeset/fn-7297-ephemeral-activity.md | 7 ++
docs/dashboard-guide.md | 5 +-
.../core/src/__tests__/activity-analytics.test.ts | 70 ++++++++++++--
packages/core/src/activity-analytics.ts | 101 ++++++++++++++++++---
.../__tests__/CommandCenter.test.tsx | 32 ++++++-
.../register-command-center-routes.test.ts | 47 +++++++++-
6 files changed, 234 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7297
Fusion-Task-Lineage: 51e46b3c-64f3-4546-954f-97d82b8426fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 13:30:28 -07:00
gsxdsm
2335a07620
FN-7291: add Claude Sonnet 5 Anthropic support
...
Adds Claude Sonnet 5 to Anthropic model catalogs, pricing, and pi execution paths.
- Register supplemental direct Anthropic model metadata for Claude Sonnet 5 with deduping.
- Surface the model through dashboard model routes and engine session creation for non-Claude-CLI pi sessions.
- Add Claude CLI provider metadata, pricing coverage, tests, and a published package changeset.
Files changed:
.changeset/fn-7291-sonnet-5-anthropic.md | 7 ++
packages/core/src/__tests__/model-pricing.test.ts | 28 +++++
packages/core/src/anthropic-models.ts | 127 +++++++++++++++++++++
packages/core/src/index.ts | 7 ++
packages/core/src/model-pricing.ts | 13 ++-
.../dashboard/src/__tests__/routes-auth.test.ts | 67 +++++++++++
packages/dashboard/src/routes.ts | 6 +-
.../dashboard/src/routes/register-model-routes.ts | 5 +-
.../src/__tests__/pi-create-fn-agent.test.ts | 67 +++++++++++
.../src/cli-agent/adapters/__tests__/pi.test.ts | 16 +++
packages/engine/src/pi.ts | 2 +
packages/pi-claude-cli/index.ts | 13 +++
.../src/__tests__/process-manager.test.ts | 4 +-
.../pi-claude-cli/src/__tests__/provider.test.ts | 31 ++++-
14 files changed, 384 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7291
Fusion-Task-Lineage: 6494fce8-4101-47f5-9137-306408fd7920
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 13:20:27 -07:00
gsxdsm
5f67c85fea
FN-7285: add workflow icons and trim built-in labels
...
Adds workflow icon metadata while preserving readable workflow names without built-in suffixes.
- Store and validate compact plain-text workflow icons across core APIs, imports, exports, tools, and analytics.
- Render Fusion marks for built-in workflows and custom text icons beside existing workflow labels on board, switcher, detail, and editor surfaces.
- Update workflow editor creation/copy flows, docs, release notes, and tests for icon metadata and shorter built-in names.
Files changed:
.changeset/fn-7285-workflow-icons.md | 7 ++
docs/dashboard-guide.md | 12 +--
.../cli/skill/fusion/references/extension-tools.md | 2 +
.../core/src/__tests__/builtin-workflows.test.ts | 8 +-
packages/core/src/__tests__/db-migrate.test.ts | 7 +-
.../core/src/__tests__/workflow-analytics.test.ts | 15 +--
.../__tests__/workflow-definition-store.test.ts | 31 ++++++
packages/core/src/builtin-workflows.ts | 20 ++--
packages/core/src/db.ts | 11 +-
packages/core/src/index.ts | 4 +
packages/core/src/store.ts | 24 ++++-
packages/core/src/workflow-analytics.ts | 7 +-
packages/core/src/workflow-definition-types.ts | 31 ++++++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/Board.tsx | 18 ++--
packages/dashboard/app/components/Column.tsx | 2 +-
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskDetailModal.tsx | 20 ++--
packages/dashboard/app/components/WorkflowIcon.css | 42 ++++++++
packages/dashboard/app/components/WorkflowIcon.tsx | 49 +++++++++
.../app/components/WorkflowNodeEditor.css | 32 ++++++
.../app/components/WorkflowNodeEditor.tsx | 113 ++++++++++++++++-----
.../dashboard/app/components/WorkflowSwitcher.css | 9 ++
.../dashboard/app/components/WorkflowSwitcher.tsx | 15 ++-
.../dashboard/app/components/WorktreeGroup.tsx | 2 +-
.../app/components/__tests__/Board.test.tsx | 12 +--
.../app/components/__tests__/Lane.test.tsx | 6 +-
.../__tests__/WorkflowNodeEditor.test.tsx | 57 +++++++++--
.../components/__tests__/WorkflowSwitcher.test.tsx | 68 ++++++++-----
.../__tests__/board-mobile-initial-render.test.tsx | 2 +-
.../__tests__/CommandCenter.test.tsx | 4 +-
.../command-center/areas/WorkflowArea.tsx | 2 +
.../areas/__tests__/WorkflowArea.test.tsx | 6 +-
.../settings/sections/GeneralSection.tsx | 6 +-
.../register-command-center-routes.test.ts | 2 +-
.../__tests__/workflow-import-export.test.ts | 32 +++++-
packages/dashboard/src/routes/board-workflows.ts | 6 +-
.../src/routes/register-workflow-routes.ts | 32 +++++-
packages/engine/src/__tests__/agent-tools.test.ts | 4 +-
packages/engine/src/agent-tools.ts | 6 +-
40 files changed, 590 insertions(+), 145 deletions(-)
Fusion-Task-Id: FN-7285
Fusion-Task-Lineage: 0fa689a2-f19d-4d1b-9a40-cc0b2181200a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 12:21:25 -07:00
gsxdsm
04f06e6b70
FN-7269: preserve workflow settings and prompts across import
...
Workflow exports now carry project-specific settings and prompt overrides through import.
- Add settingValues and promptOverrides to workflow export envelopes and client API types.\n- Restore imported setting values and prompt overrides onto the freshly created workflow with validation and rollback on failure.\n- Cover custom and built-in workflow round-trips plus invalid restore-map rejection cases.\n- Document portable workflow exports and add a patch changeset.\n\nFiles changed:\n ...7269-workflow-export-import-settings-prompts.md | 7 ++\n docs/workflow-editor.md | 4 +-\n packages/dashboard/app/api/legacy.ts | 10 +-\n .../__tests__/workflow-import-export.test.ts | 113 ++++++++++++++++++++-\n .../src/routes/register-workflow-routes.ts | 86 +++++++++++++++-\n 5 files changed, 210 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7269
Fusion-Task-Lineage: 718f42d0-c72d-4818-8f8c-979d01e960af
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:28:33 -07:00
gsxdsm
b5da5d310a
FN-7263: refresh custom provider model lists
...
Refresh persisted custom-provider model lists from saved endpoints and expose manual refresh controls.
- Add dashboard API helpers and routes to refresh one or all custom-provider model lists while preserving concurrent settings edits.
- Start background model refresh from serve, dashboard, and daemon startup paths after the server begins listening.
- Add Settings UI refresh actions, row-level status messaging, styles, docs, and regression coverage for refresh behavior.
Files changed:
.changeset/fn-7263-custom-provider-model-refresh.md | 7 +
docs/dashboard-guide.md | 6 +-
docs/settings-reference.md | 2 +-
packages/cli/src/commands/__tests__/daemon.test.ts | 59 +++++
.../cli/src/commands/__tests__/dashboard.test.ts | 51 ++++
packages/cli/src/commands/__tests__/serve.test.ts | 59 ++++-
packages/cli/src/commands/daemon.ts | 39 +++-
packages/cli/src/commands/dashboard.ts | 10 +
packages/cli/src/commands/serve.ts | 11 +-
.../app/__tests__/api-custom-providers.test.ts | 43 ++++
packages/dashboard/app/api/legacy.ts | 11 +
.../app/components/CustomProvidersSection.css | 41 +++-
.../app/components/CustomProvidersSection.tsx | 68 +++++-
.../__tests__/CustomProvidersSection.test.tsx | 227 ++++++++++++++++++
packages/dashboard/src/index.ts | 6 +
.../__tests__/custom-provider-routes.test.ts | 255 ++++++++++++++++++++
.../src/routes/__tests__/custom-providers.test.ts | 12 +
.../src/routes/register-custom-provider-routes.ts | 259 ++++++++++++++++-----
18 files changed, 1101 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-7263
Fusion-Task-Lineage: 60ee0637-ac85-409f-a376-c01f4bc8e8c5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:23:09 -07:00
gsxdsm
3e0391eada
FN-7267: expose MCP tools to planning sessions
...
Expose configured MCP session tools to read-only planning and mission lanes while keeping other read-only sessions locked down.
- Add an explicit allowMcpToolsInReadonly option to createFnAgent and apply it only to connected MCP tools.
- Opt planning, streaming planning, mission, milestone, and slice interview sessions into read-only MCP tools.
- Expand regression coverage for MCP forwarding, read-only filtering, and session tool disposal behavior.
- Document the read-only MCP opt-in model and add a published package changeset.
Files changed:
.changeset/fn-7267-planning-mission-mcp.md | 7 +++
docs/mcp.md | 4 +-
.../src/__tests__/mcp-lane-forwarding.test.ts | 4 ++
.../dashboard/src/milestone-slice-interview.ts | 4 ++
packages/dashboard/src/mission-interview.ts | 4 ++
packages/dashboard/src/planning.ts | 4 ++
.../src/__tests__/mcp-surface-coverage.test.ts | 25 +++++++-
.../src/__tests__/pi-create-fn-agent.test.ts | 67 ++++++++++++++++++++++
.../src/__tests__/pi-mcp-session-tools.test.ts | 6 +-
.../workflow-step-readonly-allowlist.test.ts | 17 +++++-
packages/engine/src/pi.ts | 17 +++++-
packages/engine/src/workflow-step-tool-policy.ts | 15 ++++-
12 files changed, 163 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7267
Fusion-Task-Lineage: 8d9cac1a-edcc-453d-bda1-9abb58de7f86
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 00:09:36 -07:00
gsxdsm
46232118e1
FN-7253: add worktree picker to terminal sessions
...
Terminal sessions can now start from a selected safe project worktree.
- Add a Terminal modal worktree selector with searchable branch/path context and responsive styling.
- Thread worktree selection through session hooks, terminal routes, and terminal service creation.
- Centralize safe git worktree discovery and reuse it from git and terminal routes.
- Cover the picker, hook behavior, service worktree validation, and route wiring with tests.
- Document the terminal worktree picker and add a release changeset.
Files changed:
.changeset/fn-7253-terminal-worktree-picker.md | 7 +
docs/dashboard-guide.md | 13 +-
.../dashboard/app/components/TerminalModal.css | 189 +++++++++++++++-
.../dashboard/app/components/TerminalModal.tsx | 190 ++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 169 +++++++++++++++
.../hooks/__tests__/useTerminalSessions.test.ts | 237 ++++++++++++++++++++-
.../dashboard/app/hooks/useTerminalSessions.ts | 59 +++--
.../src/__tests__/routes-automation.test.ts | 37 ++--
.../src/__tests__/terminal-service.test.ts | 125 +++++++++++
packages/dashboard/src/git-worktree-safety.ts | 113 ++++++++++
.../dashboard/src/routes/register-git-github.ts | 54 +----
.../src/routes/register-messaging-scripts.ts | 1 +
.../src/routes/register-terminal-routes.ts | 1 +
packages/dashboard/src/terminal-service.ts | 66 ++++--
14 files changed, 1157 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7253
Fusion-Task-Lineage: 6a0c0b4f-74cc-42b3-8bbd-2ca94c4c26d9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 00:03:37 -07:00
gsxdsm
ea0707c573
FN-7264: add opt-in absolute file-browser paths
...
Add an opt-in project setting that lets the workspace file browser use slash-prefixed absolute paths while preserving existing confined defaults.
- Add the allowAbsoluteFileBrowserPaths project setting, docs, and changeset release note.
- Thread absolute-path validation through workspace file-browser listing, editing, file operations, and downloads without widening other path APIs.
- Add Settings UI controls and keep settings-specific file pickers project-relative.
- Cover absolute-path browsing, percent-literal paths, root navigation, and settings picker behavior with tests.
Files changed:
.changeset/fn-7264-absolute-file-browser-paths.md | 7 +
docs/settings-reference.md | 3 +
.../core/src/__tests__/settings-parity.test.ts | 8 +
packages/core/src/settings-schema.ts | 5 +
packages/core/src/types.ts | 5 +
.../app/__tests__/settings-sections.test.tsx | 41 +++++
packages/dashboard/app/components/FileBrowser.tsx | 26 ++-
.../dashboard/app/components/FileBrowserModal.tsx | 7 +
.../dashboard/app/components/SettingsModal.tsx | 34 +++-
.../components/__tests__/FileBrowserModal.test.tsx | 18 ++
.../__tests__/SettingsModal.general.test.tsx | 17 ++
.../settings/sections/GeneralSection.tsx | 9 +
.../__tests__/useWorkspaceFileBrowser.test.ts | 18 ++
.../dashboard/app/hooks/useWorkspaceFileBrowser.ts | 20 ++-
.../dashboard/src/__tests__/file-service.test.ts | 199 ++++++++++++++++++++-
packages/dashboard/src/file-service.ts | 129 ++++++++-----
16 files changed, 489 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-7264
Fusion-Task-Lineage: ec71facd-0345-4490-a3df-244b98e24c2d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 23:17:49 -07:00
gsxdsm
cfd9d5b32e
test(FN-7249): cover phantom worktree recovery
2026-06-29 22:30:23 -07:00
gsxdsm
480d4d03fd
FN-7254: add worktree commit history targets
...
Allow Git Manager users to inspect commits and diffs from registered worktrees without changing mutation targets.
- Add read-only worktreePath targeting to Git commit list and commit diff APIs with registered-worktree validation.
- Add a Commits history target selector and Worktrees "View commits" shortcuts that clear stale diff state when targets change.
- Document the read-only scope and cover API, UI, responsive layout, and mutation-target invariants with tests.
Files changed:
.changeset/fn-7254-git-manager-worktree-commits.md | 7 +
.changeset/fn-7254-worktree-commit-target-ui.md | 7 +
.changeset/fn-7254-worktree-commits.md | 7 +
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/api/legacy.ts | 15 +-
.../dashboard/app/components/GitManagerModal.tsx | 133 ++++++++++++++--
packages/dashboard/app/components/ScriptsModal.css | 113 ++++++++++++++
.../components/__tests__/GitManagerModal.test.tsx | 167 +++++++++++++++++++++
.../dashboard/src/__tests__/routes-git.test.ts | 34 +++++
.../dashboard/src/routes/register-git-github.ts | 31 +++-
10 files changed, 497 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7254
Fusion-Task-Lineage: 37314175-fef4-4f8d-8268-cf27fee09857
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 20:24:24 -07:00