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
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
c49a933fb0
FN-7428: add GitLab tracking coverage and reconciliation support
...
Add GitLab tracking persistence, analytics, and reconciliation coverage across core, dashboard, and CLI paths.
- Store GitLab tracking and closed-at metadata when importing issues and merge requests from CLI, extension tools, and dashboard routes.
- Add GitLab source-issue analytics, Command Center GitLab signal surfaces, CSV export fields, and a closed-at backfill route.
- Cover GitLab tracking storage, reconciliation, CLI imports, dashboard import UI, route behavior, and Command Center signals with focused tests.
Files changed:
.changeset/fn-7428-gitlab-import-tracking.md | 7 +
.../__tests__/extension-gitlab-tracking.test.ts | 140 ++++++++++++
.../__tests__/task-command-gitlab-import.test.ts | 18 +-
packages/cli/src/commands/task.ts | 1 +
packages/cli/src/extension.ts | 2 +-
.../src/__tests__/gitlab-issue-analytics.test.ts | 243 +++++++++++++++++++++
.../__tests__/gitlab-source-issue-storage.test.ts | 128 +++++++++++
.../store-gitlab-tracking-reconcile.test.ts | 125 +++++++++++
packages/core/src/gitlab-issue-analytics.ts | 227 +++++++++++++++++++
packages/core/src/index.ts | 8 +
packages/core/src/store.ts | 21 +-
.../__tests__/GitHubImportModal.test.tsx | 46 ++++
.../components/__tests__/gitlabTracking.test.tsx | 43 ++++
.../components/command-center/CommandCenter.tsx | 5 +
.../components/command-center/areas/GitlabArea.tsx | 126 +++++++++++
.../areas/__tests__/areas.gitlab-signals.test.tsx | 83 +++++++
.../gitlab-source-issue-reconciler.test.ts | 187 ++++++++++++++++
.../register-command-center-routes.test.ts | 52 +++++
.../__tests__/register-git-gitlab.backfill.test.ts | 116 ++++++++++
.../dashboard/src/__tests__/routes-gitlab.test.ts | 59 +++--
packages/dashboard/src/command-center-csv.ts | 21 ++
.../src/gitlab-source-issue-reconciler.ts | 104 +++++++++
packages/dashboard/src/gitlab.ts | 16 +-
.../src/routes/register-command-center-routes.ts | 25 +++
packages/dashboard/src/routes/register-gitlab.ts | 29 +++
25 files changed, 1800 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-7428
Fusion-Task-Lineage: 7b0ebb5c-c6e7-42a9-a339-b2dd1d4e263a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 12:34:35 -07:00
gsxdsm
1f6befcfa7
FN-7427: add GitLab signal connector
...
Add GitLab webhook ingestion to Command Center Signals.
- Register GitLab as a supported signal provider with shared-token verification.\n- Normalize GitLab issue and merge request webhooks into capped Command Center signals.\n- Update tests, UI labels, docs, and changeset coverage for the new connector.\n\nFiles changed:\n .changeset/fn-7427-gitlab-signals.md | 7 +\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 1 +\n docs/signals-connectors.md | 52 ++++-\n .../core/src/__tests__/signals-analytics.test.ts | 28 ++-\n .../__tests__/CommandCenter.mobile-scroll.test.tsx | 5 +-\n .../__tests__/CommandCenter.tablet-layout.test.tsx | 5 +-\n .../command-center/areas/SignalsArea.tsx | 5 +-\n .../areas/__tests__/areas.github-signals.test.tsx | 12 +-\n .../register-command-center-routes.test.ts | 7 +-\n .../src/__tests__/register-signal-routes.test.ts | 227 ++++++++++++++++++++-\n .../dashboard/src/routes/register-signal-routes.ts | 8 +-\n packages/dashboard/src/signal-source.ts | 23 ++-\n packages/dashboard/src/signal-sources/gitlab.ts | 219 ++++++++++++++++++++\n 14 files changed, 574 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-7427
Fusion-Task-Lineage: cfe94cb7-e9d5-4bec-9fc5-4a7e45b8c95d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:35 -07:00
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
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
573876603f
FN-7422: add GitLab URL configuration
...
Add typed GitLab instance and API URL settings for GitLab.com and self-managed instances.
- Add core GitLab URL defaults, validation, normalization, and project/global inheritance.
- Expose project and global GitLab instance/API URL fields in settings with save-split handling.
- Cover configuration resolution, settings parity, and settings UI save behavior with tests.
- Document the new settings and add a changeset for the published CLI package.
Files changed:
.changeset/fn-7422-gitlab-configuration.md | 7 ++
docs/settings-reference.md | 6 +-
docs/task-management.md | 2 +-
packages/core/src/__tests__/gitlab-config.test.ts | 74 +++++++++++++++++++
.../core/src/__tests__/settings-parity.test.ts | 22 +++++-
packages/core/src/gitlab-config.ts | 79 +++++++++++++++++++++
packages/core/src/index.ts | 4 +-
packages/core/src/settings-schema.ts | 4 ++
packages/core/src/types.ts | 20 ++++++
.../app/__tests__/settings-save-split.test.ts | 53 ++++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 20 ++++++
.../__tests__/SettingsModal.general.test.tsx | 82 ++++++++++++++++++++++
.../app/components/settings/save-split.ts | 6 ++
.../settings/sections/GeneralSection.tsx | 15 ++++
.../settings/sections/GlobalGeneralSection.tsx | 14 ++++
15 files changed, 402 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7422
Fusion-Task-Lineage: 0110b4b6-71b0-4a62-afaf-61af65ebef03
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:33 -07:00
gsxdsm
078099682f
FN-7432: recognize review revision workflow settings
...
Extend the settings consistency guard to treat review revision policy declarations as workflow-native settings.
- Import the review revision workflow settings catalog into the consistency test.
- Validate native workflow catalogs are disjoint from each other and moved-key tombstones.
- Generalize schema/default exclusion assertions for all workflow-native settings.
Files changed:
.../src/__tests__/settings-consistency.test.ts | 51 +++++++++++++++-------
1 file changed, 35 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-7432
Fusion-Task-Lineage: 7a1fbf4e-1576-46bc-9a60-e5eb2e91edd6
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
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
84a40dd82e
chore(release): v0.54.0
...
Version bump via changesets.
2026-07-02 00:22:58 -07:00
gsxdsm
22261b683f
FN-7411: prevent task-bound self deletion
...
Prevent task-bound callers from soft-deleting the task they are currently executing.
- Add a TaskSelfDeleteError guard in TaskStore.deleteTask before mutation or audit emission.
- Pass the current task id through the fn_task_delete audit context so CLI tool calls inherit the store invariant.
- Cover self-delete rejection and cross-task deletion allowance in core and CLI tests.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7411-self-delete-guard.md | 7 +++
.../task-delete-allow-resurrection.test.ts | 48 ++++++++++++++++-
packages/cli/src/extension.ts | 2 +
.../src/__tests__/store-self-delete-guard.test.ts | 60 ++++++++++++++++++++++
packages/core/src/store.ts | 22 +++++++-
5 files changed, 136 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7411
Fusion-Task-Lineage: 50028769-5396-4435-84fb-2ae182315e81
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 23:53:10 -07:00
gsxdsm
40b44e40b9
fix: enforce ephemeralAgentsEnabled across the workflow engine
...
Add TaskExecutor.blockOuterDispatchWhenEphemeralDisabled, gating all three
workflow dispatch paths (graph / authoritative / work-engine) on
ephemeralAgentsEnabled at the top of execute(). Previously the toggle was
enforced only on the legacy scheduler/EphemeralWorkerManager path — whose
onTaskStart spawn refusal is a fire-and-forget callback that runs after
execution begins — so unassigned tasks reaching execute() off a non-scheduler
path still ran. Unassigned tasks are now re-queued for permanent-agent
assignment; permanent-agent-bound tasks still run. Adds regression coverage
across all three entry points.
Also includes the ephemeralAgentsCanCreateTasks project setting (default on)
gating fn_task_create for ephemeral callers in both the pi extension and the
executor task-worker tool.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 21:31:34 -07:00
gsxdsm
7488e0971f
chore(release): v0.53.1
...
Version bump via changesets.
2026-07-01 19:38:51 -07:00
gsxdsm
8bb18d9d61
chore(release): v0.53.0
...
Version bump via changesets.
2026-07-01 18:31:44 -07:00
gsxdsm
dbe637f2c9
FN-7402: publish workflow step activity runs
...
Publish workflow step lifecycle activity so dashboard analytics can count graph-owned execution.
- Emit best-effort agentRuns rows when workflow step sessions start and finish.
- Include task lineage, step metadata, terminal status, and token usage in workflow step activity records.
- Cover workflow step activity analytics and document dashboard Activity/Overview counting behavior.
Files changed:
.changeset/fn-7402-workflow-step-activity.md | 7 +
docs/dashboard-guide.md | 5 +-
.../core/src/__tests__/activity-analytics.test.ts | 44 +++++++
.../src/__tests__/step-session-executor.test.ts | 145 +++++++++++++++++++++
packages/engine/src/step-session-executor.ts | 104 ++++++++++++++-
5 files changed, 300 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7402
Fusion-Task-Lineage: ecb2810d-da05-4fd0-a3bd-da72cae99a31
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 18:27:32 -07:00
gsxdsm
a4049971e5
FN-7401: add Glass Silver dashboard theme
...
Adds a frosted silver/gray dashboard color theme across app, desktop, and release metadata.
- Register glass-silver in shared theme types, selector options, and startup validation hooks.
- Add Glass Silver CSS tokens, swatch styling, and dashboard/desktop stylesheet preload coverage.
- Cover theme registration, dropdown/selector rendering, theme persistence, and CSS token invariants with tests.
- Document the new dashboard theme and publish a minor changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7401-glass-silver-theme.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/core/src/types.ts | 2 +
.../app/__tests__/glass-silver-theme.test.ts | 155 ++++++++++++++++++++
.../dashboard/app/components/ThemeSelector.css | 14 ++
.../components/__tests__/ThemeDropdown.test.tsx | 13 ++
.../components/__tests__/ThemeSelector.test.tsx | 16 +++
packages/dashboard/app/components/themeOptions.ts | 1 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 15 ++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 156 +++++++++++++++++++++
packages/desktop/src/renderer/index.html | 1 +
12 files changed, 383 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7401
Fusion-Task-Lineage: e64f14cc-590e-458b-adf6-7c9baa488157
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 18:01:17 -07:00
gsxdsm
704e891f57
Merge origin/main into feature/fix-triage
...
Resolves the pnpm-lock.yaml conflict. Main's #1865 (review-checkout routing)
auto-merged cleanly with the completion-summary backstop in executor.ts.
Main independently pinned pi-claude-cli's pi-ai/pi-coding-agent to ^0.80.3
(e15489259 ) but kept the top-level `getModels` import, which 0.80.3 removed —
this branch's migration to `getBuiltinModels` from `/providers/all` is retained
as the working fix. Lockfile regenerated against the merged package.json.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 17:11:37 -07:00
gsxdsm
38841695c8
fix: stop triage loop at completion-summary node and i18n object-key crashes ( #1863 )
...
Two distinct v0.52.0 regressions reported in issue #1863 .
1. Triage loop (engine): the best-effort completion-summary graph node is
wired into every built-in workflow with a success-only edge. A thrown
handler exception or a failed summary projection write bypassed the
advisory `!blocking -> success` coercion, terminated the graph at
'completion-summary', and routeGraphFailureToExecutionResume bounced the
in-review task back to todo forever (token usage 0, execution NOT STARTED).
The graph executor now degrades a completion-summary node failure to
success (ensureWorkflowCompletionSummary still backfills task.summary), with
a routeGraphFailureToExecutionResume backstop. Shared isCompletionSummaryNode
predicate exported from @fusion/core.
2. i18n object-key crashes (dashboard): three views called t() with keys that
resolve to nested objects (taskDetail.executionMode, routing.source,
nodes.dockerHost), so i18next returned "returned an object instead of
string" and crashed the render. Added leaf label keys across all locales and
switched the callers.
Tests: engine non-fatal completion-summary regression (fails without the fix),
dashboard invariant guard scanning t("literal") callers against real en/app.json,
and a Stats-panel reproduction against the real bundle.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 16:43:08 -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
f998fe3ffc
FN-7397: pass plugin context to lifecycle hooks
...
Ensure task lifecycle plugin hooks receive a PluginContext when fired through runtime event bridges.
- Append the plugin context for task-created, task-moved, and task-completed hooks when callers only provide raw lifecycle arguments.
- Preserve existing explicit-context hook calls and add coverage for loader and runner lifecycle dispatch paths.
- Cover Compound Engineering sync completion handling so taskStore is available in onTaskCompleted.
Files changed:
.changeset/fn-7397-plugin-hook-context.md | 7 +++
packages/core/src/__tests__/plugin-loader.test.ts | 52 +++++++++++++++++++++-
packages/core/src/plugin-loader.ts | 34 +++++++++++++-
.../engine/src/__tests__/plugin-runner.test.ts | 25 ++++++++++-
.../src/__tests__/sync.test.ts | 29 +++++++++++-
5 files changed, 141 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7397
Fusion-Task-Lineage: 7661714c-cf2a-4f4d-bec1-fc6bc11c0613
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
d7ee6ce87f
fix: tolerate recovered CE question ids ( #1855 )
...
## Summary
- add an opt-in `allowAnswerQuestionIdDrift` flag for interactive AI
sessions
- keep strict question-id validation by default
- enable the tolerance only for Compound Engineering recovered sessions
so persisted session rows can answer after dashboard
restarts/non-deterministic rehydration
## Test Plan
- `corepack pnpm --filter @fusion/engine exec vitest run
src/__tests__/interactive-ai-session.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/engine typecheck`
- `corepack pnpm --filter @fusion-plugin-examples/compound-engineering
build`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved interactive session recovery so persisted answers can
continue after dashboard restarts, even if the question ID changes
during rehydration.
* Keeps strict question-ID validation by default; mismatches still fail
unless drift is explicitly allowed.
* **New Features**
* Added `allowAnswerQuestionIdDrift` option to permit accepting the
persisted question ID during recovered session answering.
* **Tests**
* Added/updated coverage for strict mismatch error behavior and the
successful completion path when drift is enabled.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-01 15:21:17 -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
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
919420e11a
FN-7373: enforce active worktree cap
...
Enforce maxWorktrees at the task-store transition boundary so active execution worktrees cannot exceed the operator cap.
- Reject allocated moves into in-progress when existing active or pending holders already meet maxWorktrees.
- Count in-progress tasks and pending in-progress transitions while excluding the task being moved.
- Cover scheduler and hold-release paths with regression tests and document the hard-cap invariant.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7373-max-worktrees-cap.md | 7 ++
docs/architecture.md | 2 +-
packages/core/src/__tests__/store-movement.test.ts | 80 +++++++++++++++++++++-
packages/core/src/store.ts | 50 ++++++++++++++
packages/engine/src/__tests__/hold-release.test.ts | 52 ++++++++++++++
.../__tests__/scheduler-workflow-cutover.test.ts | 53 ++++++++++++++
6 files changed, 242 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7373
Fusion-Task-Lineage: be4a9649-f6ae-475f-9395-07433e98de5c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:18:32 -07:00
Phil Larson
80b2dafdf7
fix: limit CE question-id drift tolerance to recovery
2026-07-01 10:00:20 -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
Phil Larson
ad8db59374
fix: tolerate recovered CE question ids
2026-07-01 09:41:20 -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
d93fac0cc0
FN-7365: allow task popups on every viewport
...
Broaden board task popup routing so the existing popup setting works outside mobile.
- Route ordinary board-card opens to the task popup on desktop, tablet, and mobile when the popup setting is enabled.
- Rename the Appearance setting copy while preserving the stored openMobileTasksInPopup key for compatibility.
- Update tests, documentation, settings schema comments, and the published package changeset for the all-viewport behavior.
Files changed:
.changeset/fn-7365-task-popups-all-viewports.md | 7 ++++
docs/dashboard-guide.md | 6 ++--
docs/settings-reference.md | 2 +-
packages/core/src/settings-schema.ts | 4 +--
packages/core/src/types.ts | 6 ++--
packages/dashboard/app/App.tsx | 6 ++--
.../__tests__/App.openTasksInRightSidebar.test.ts | 42 +++++++++++++++++-----
.../settings/sections/AppearanceSection.tsx | 5 +--
.../sections/__tests__/AppearanceSection.test.tsx | 10 +++---
9 files changed, 62 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-7365
Fusion-Task-Lineage: 58713922-3ff8-4cc9-8f81-26c1e982819e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:32:29 -07:00
gsxdsm
62c58402ff
fix(workflow): raise step review timeout default
2026-07-01 08:22:04 -07:00
gsxdsm
d4ce6f9319
chore(release): v0.52.0
...
Version bump via changesets.
2026-07-01 00:47:09 -07:00
gsxdsm
4a1a04303f
fix(FN-7344): hide stall badges during active agent logs
2026-06-30 23:45:03 -07:00
gsxdsm
c54b231290
FN-7335: default task details to Activity first
...
Default task detail opens now prioritize Activity while preserving an opt-in Chat-first mode.
- Add a project setting and dashboard plumbing for Chat-first task detail ordering.
- Default non-done task detail opens to Activity/Live while keeping explicit Chat, Activity, and Logs links stable.
- Update Settings, docs, changeset, and regression coverage for Activity-first and Chat-first behavior.
Files changed:
.changeset/activity-first-task-detail.md | 7 +++
docs/dashboard-guide.md | 6 +-
.../core/src/__tests__/settings-defaults.test.ts | 13 ++++
packages/core/src/settings-schema.ts | 5 ++
packages/core/src/types.ts | 5 ++
packages/dashboard/app/App.tsx | 7 ++-
packages/dashboard/app/components/AppModals.tsx | 2 +
packages/dashboard/app/components/ListView.tsx | 3 +
.../dashboard/app/components/SettingsModal.tsx | 6 ++
.../dashboard/app/components/TaskDetailModal.tsx | 71 ++++++++++++++-------
.../TaskDetailModal.attachments-and-tabs.test.tsx | 19 ++++--
...etailModal.responsive-and-dependencies.test.tsx | 2 +-
.../TaskDetailModal.task-activity-chat.test.tsx | 72 +++++++++++++++++++---
.../components/__tests__/TaskDetailModal.test.tsx | 3 +
.../app/components/dashboard/MainContent.tsx | 3 +
.../dashboard/app/components/dashboard/types.ts | 1 +
.../settings/sections/AppearanceSection.tsx | 8 +++
.../sections/__tests__/AppearanceSection.test.tsx | 20 ++++++
.../app/components/useRightDockController.tsx | 2 +
packages/dashboard/app/hooks/useAppSettings.ts | 9 +++
20 files changed, 220 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-7335
Fusion-Task-Lineage: d983c41a-f2f5-4e53-aee4-3ec3a4c057a3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 23:45:01 -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
gsxdsm
e2702bab6b
feat(workflows): add reviewer inline fixes
2026-06-30 18:37:10 -07:00
gsxdsm
211b18b073
FN-7299: make Shadcn Ember the default dashboard theme
...
Set Shadcn Ember as the default dashboard theme while keeping Shadcn Gray available as an alternate.
- Add Shadcn Ember theme metadata, CSS variables, and boot-time defaults for dashboard and desktop shells.
- Update persisted settings types, schema defaults, and theme selection UI to prefer Ember.
- Cover Ember defaults and theme-option ordering with core, hook, and dashboard component tests.
- Add a published package changeset for the operator-facing default theme change.
Files changed:
.changeset/fn-7299-shadcn-ember-default.md | 7 ++
.../core/src/__tests__/global-settings.test.ts | 23 +++-
packages/core/src/__tests__/store-settings.test.ts | 10 +-
packages/core/src/settings-schema.ts | 6 +-
packages/core/src/types.ts | 4 +-
.../app/__tests__/shadcn-ember-theme.test.ts | 107 ++++++++++++++++
.../app/__tests__/shadcn-gray-theme.test.ts | 2 +-
.../dashboard/app/components/ThemeSelector.css | 15 +++
.../dashboard/app/components/ThemeSelector.tsx | 6 +-
.../components/__tests__/ThemeDropdown.test.tsx | 20 ++-
.../components/__tests__/ThemeSelector.test.tsx | 24 +++-
packages/dashboard/app/components/themeOptions.ts | 7 +-
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 18 ++-
packages/dashboard/app/hooks/useTheme.ts | 8 +-
packages/dashboard/app/index.html | 10 +-
packages/dashboard/app/public/theme-data.css | 137 +++++++++++++++++++++
packages/desktop/src/renderer/index.html | 42 ++++++-
17 files changed, 409 insertions(+), 37 deletions(-)
Fusion-Task-Id: FN-7299
Fusion-Task-Lineage: 7e175752-b8fc-4ba9-8534-cb485f6eb18a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 13:43:28 -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
7e74fe3a9b
FN-7293: honor workflow review revision overrides
...
Allow workflow review steps to opt into unbounded or capped revision retries while keeping recovery caps accurate.
- Add workflow settings for Plan Review and Code Review max revisions with display, docs, and changeset coverage.
- Resolve optional-step revision budgets through workflow settings, node overrides, and existing fallback limits.
- Track revision attempts per workflow step and hydrate slim self-healing rows before enforcing retry caps.
- Cover unbounded, capped, per-step, and slim-row recovery behavior with focused tests.
Files changed:
.changeset/fn-7293-unbounded-review-revisions.md | 7 +
docs/settings-reference.md | 12 +-
docs/workflow-editor.md | 4 +-
docs/workflow-steps.md | 3 +-
.../builtin-workflow-settings-triage.test.ts | 28 +++-
.../core/src/__tests__/builtin-workflows.test.ts | 29 ++++-
.../__tests__/workflow-settings-resolver.test.ts | 73 +++++++++++
packages/core/src/builtin-plan-review-group.ts | 6 +-
packages/core/src/builtin-workflow-settings.ts | 30 +++++
packages/core/src/index.ts | 5 +
packages/core/src/workflow-ir-types.ts | 15 ++-
packages/core/src/workflow-ir.ts | 5 +-
packages/core/src/workflow-settings-resolver.ts | 49 ++++++-
.../__tests__/WorkflowSettingsPanel.test.tsx | 52 ++++++++
.../app/components/workflow-setting-display.ts | 18 +++
packages/engine/src/__tests__/self-healing.test.ts | 143 ++++++++++++++++++++-
.../workflow-graph-optional-step-fix.test.ts | 130 ++++++++++++++++++-
packages/engine/src/executor.ts | 77 +++++++++--
packages/engine/src/self-healing.ts | 82 ++++++++++--
packages/engine/src/workflow-graph-executor.ts | 5 +-
20 files changed, 725 insertions(+), 48 deletions(-)
Fusion-Task-Id: FN-7293
Fusion-Task-Lineage: 19ee533f-ab8d-4e20-9a27-9cf0cf6dfec9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 13:12:27 -07:00
gsxdsm
658b3511c7
FN-7293: scope external evidence to per-step review
2026-06-30 12:25:43 -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
f0a15db85c
FN-7286: add productivity duration trends
...
Expose completed-task duration trends in Command Center productivity analytics.
- Add daily average and median active-duration buckets to productivity analytics.
- Render a duration-over-time line chart when qualifying completed-task history exists.
- Extend chart formatting and tests for duration labels, empty trend states, and analytics aggregation.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7286-duration-trend.md | 7 +++
.../src/__tests__/productivity-analytics.test.ts | 50 +++++++++++++++++++++
packages/core/src/productivity-analytics.ts | 39 +++++++++++++++-
.../command-center/areas/ProductivityArea.tsx | 52 +++++++++++++++++++++-
.../areas/__tests__/areas.test-harness.tsx | 16 +++++++
.../command-center/areas/__tests__/areas.test.tsx | 46 +++++++++++++++++++
.../command-center/charts/recharts/LineChart.tsx | 21 +++++++--
7 files changed, 225 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7286
Fusion-Task-Lineage: f9c486d0-dd8c-4736-9e8a-e658b7faecc1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 10:30:57 -07:00
gsxdsm
4441b72bbc
fix(FN-7273): prevent stale step resume regressions
2026-06-30 08:07:40 -07:00
gsxdsm
5ec04ec5cb
fix(FN-7271): keep fast coding tasks from skipping implementation
2026-06-30 07:31:59 -07:00
gsxdsm
ebb805d253
FN-7261: add global modal dismissal setting
...
Add a global dashboard preference that keeps modal backdrop dismissal off by default while allowing operators to opt in.
- Add dismissModalsOnOutsideClick to global settings defaults, schema, docs, and save handling.
- Provide the modal dismissal preference through App and gate shared overlay mouse/touch dismissal on it.
- Expose the preference in Global General settings and update modal dismissal tests.
- Add a changeset for the published CLI package.
Files changed:
.changeset/fn-7261-global-modal-outside-dismiss.md | 7 ++++
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 9 +++++
packages/core/src/settings-schema.ts | 5 +++
packages/core/src/types.ts | 5 +++
packages/dashboard/app/App.tsx | 16 +++++----
.../app/components/AgentErrorDetailsModal.tsx | 4 ++-
.../__tests__/AgentErrorDetailsModal.test.tsx | 28 +++++++++++++++-
.../__tests__/SettingsModal.general.test.tsx | 23 ++++++++++++-
.../app/components/settings/save-split.ts | 1 +
.../settings/sections/GlobalGeneralSection.tsx | 5 +++
.../app/hooks/__tests__/useOverlayDismiss.test.tsx | 38 ++++++++++++++++++----
packages/dashboard/app/hooks/useAppSettings.ts | 5 +++
packages/dashboard/app/hooks/useOverlayDismiss.ts | 36 +++++++++++++++++---
14 files changed, 163 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-7261
Fusion-Task-Lineage: 4fd5195f-c759-46b4-b567-0d5a9d5b92e3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:50:52 -07:00