gsxdsm
b09bbbce9c
FN-5848: clarify onboarding and git test expectations
...
Clarifies test expectations around onboarding auto-launch and non-matching integration tips.
- Rename the onboarding marker test to describe central DB gating accurately.
- Assert task-list routing when onboarding is skipped after central DB creation.
- Avoid accidental matching SHA construction in the git advance pending test.
Files changed:
packages/cli/src/__tests__/bin.test.ts | 8 ++++++--
packages/dashboard/src/__tests__/routes-git.test.ts | 3 ++-
2 files changed, 8 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5848
Fusion-Task-Lineage: c730deb9-875d-4371-9d92-f85281bcb658
2026-06-01 19:15:39 -07:00
gsxdsm
3602fb9a23
FN-5839: prevent stale integration-advance sync prompts
...
Treat rewritten integration-branch advances as handled when the working tree is already aligned.
- Add a new `superseded` resolution for unreachable advance SHAs that remain after history rewrites while HEAD matches the local integration tip.
- Update Git status collection logic and route/API status typings to propagate the new resolution state.
- Update Git Manager modal messaging and dismiss behavior so handled `superseded` entries do not show a sync CTA.
- Extend dashboard route and modal tests, and refresh dashboard guide docs for the new classification behavior.
Files changed:
docs/dashboard-guide.md | 5 +--
packages/dashboard/app/api/legacy.ts | 2 +-
.../dashboard/app/components/GitManagerModal.tsx | 6 ++--
.../components/__tests__/GitManagerModal.test.tsx | 5 ++-
.../dashboard/src/__tests__/routes-git.test.ts | 36 ++++++++++++++++++++--
.../dashboard/src/routes/register-git-github.ts | 13 ++++++--
6 files changed, 55 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-5839
Fusion-Task-Lineage: 6b4afb73-587d-4319-8ad8-f1d5d54bc7bf
2026-06-01 11:52:02 -07:00
gsxdsm
4a20aa140e
FN-5838: suppress stale integration-advance action prompts
...
Refine merge-advance status handling so Git Manager only requests action when the checkout is truly behind.
- classify recent integration advances as reachable, orphaned, subsumed, or pending before marking them actionable
- detect subsumed advances by comparing commit patch fingerprints from recent HEAD history
- expose advance resolution metadata in API status payloads and route exports
- update Git Manager UI to count only pending actionable advances, gate Sync Working Tree visibility, and allow dismissing handled orphaned/subsumed rows
- expand dashboard tests and docs to cover stale false-positive scenarios and new resolution behavior
Files changed:
docs/dashboard-guide.md | 6 ++
packages/dashboard/app/api/legacy.ts | 1 +
.../dashboard/app/components/GitManagerModal.tsx | 45 ++++++----
.../components/__tests__/GitManagerModal.test.tsx | 63 ++++++++++++++
.../dashboard/src/__tests__/routes-git.test.ts | 97 +++++++++++++++++++++-
.../dashboard/src/routes/register-git-github.ts | 94 ++++++++++++++-------
6 files changed, 259 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-5838
Fusion-Task-Lineage: 65d1317a-7618-4fff-9875-c845474888ed
2026-06-01 11:05:22 -07:00
gsxdsm
b4230c06b1
FN-5835: reuse imported GitHub source issue tracking
...
Reuse the existing imported source issue record when tracking GitHub work instead of creating duplicate entries.
- update GitHub tracking logic to detect and reuse previously imported source issues
- add/expand dashboard tracking tests to cover duplicate-import and reuse behavior
- add a changeset documenting the FN-5835 tracking fix for @runfusion/fusion
Files changed:
.changeset/fn-5835-source-issue-tracking.md | 5 ++
.../src/__tests__/github-tracking.test.ts | 100 ++++++++++++++++++---
packages/dashboard/src/github-tracking.ts | 32 +++++++
3 files changed, 126 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-5835
Fusion-Task-Lineage: d0827711-8bfb-471c-b2c4-69324da33373
2026-06-01 08:13:36 -07:00
gsxdsm
5af7eeb60b
FN-5823: add shared-branch-group entry-point verification coverage
...
Add end-to-end checks to keep branch entry points aligned with shared-branch-group flow.
- add dashboard integration tests covering shared-branch-group entry behavior across entry points
- update TaskCard branch-group chip rendering to match shared assignment metadata handling
- extend mission store test/docs coverage for shared-branch-group alignment expectations
Files changed:
docs/missions.md | 10 +
packages/core/src/__tests__/mission-store.test.ts | 4 +
packages/dashboard/app/components/TaskCard.tsx | 22 +-
packages/dashboard/src/__tests__/shared-branch-group-entry-points.test.ts | 354 +++++++++++++++++++++
4 files changed, 381 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5823
Fusion-Task-Lineage: 7c06e2d2-0233-4a02-a79e-daecab47f0a9
2026-06-01 06:36:15 -07:00
gsxdsm
e9de195ef5
FN-5822: wire shared branch-group visibility and merge controls
...
Add dashboard and API support for viewing shared branch groups and triggering group merge actions.
- add branch-group API routes and register them in integrated routers
- extend dashboard legacy API client with branch-group fetch and merge-control actions
- add BranchGroupCard UI + styles and surface it in task/detail/subtask views
- add dashboard/API test coverage for branch-group routes and UI integration points
- document branch-group behavior and add a changeset for @runfusion/fusion
Files changed:
.changeset/fn-5822-branch-group-dashboard.md | 5 +
docs/dashboard-guide.md | 31 ++++++
packages/dashboard/app/api/legacy.ts | 54 +++++++++
.../dashboard/app/components/BranchGroupCard.css | 83 ++++++++++++++
.../dashboard/app/components/BranchGroupCard.tsx | 123 +++++++++++++++++++++
.../app/components/SubtaskBreakdownModal.tsx | 3 +
packages/dashboard/app/components/TaskCard.tsx | 19 ++++
.../dashboard/app/components/TaskDetailModal.tsx | 4 +
.../components/__tests__/BranchGroupCard.test.tsx | 96 ++++++++++++++++
.../__tests__/SubtaskBreakdownModal.test.tsx | 1 +
.../app/components/__tests__/TaskCard.test.tsx | 16 ++++
.../components/__tests__/TaskDetailModal.test.tsx | 22 ++++
.../src/__tests__/routes-branch-groups.test.ts | 119 ++++++++++++++++++++
.../src/routes/register-branch-groups-routes.ts | 118 ++++++++++++++++++++
.../src/routes/register-integrated-routers.ts | 13 +++
packages/dashboard/vitest.config.ts | 4 +-
16 files changed, 709 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-5822
Fusion-Task-Lineage: 199c25b8-f6ec-43b4-8fab-509f23fb5ac7
2026-06-01 04:47:19 -07:00
gsxdsm
9c29e2e776
FN-5829: add shared feature branch option for new tasks
...
Allow new tasks to target a shared branch-group feature branch during creation.
- Add branch-group aware branch selection handling in task workflow routes.
- Update store/types/db wiring to support and persist shared feature-branch targeting.
- Extend dashboard task creation UI/tests and route tests to cover the new option.
- Add a changeset for @runfusion/fusion documenting the new CLI/task behavior.
Files changed:
.changeset/fn-5829-shared-feature-branch-option.md | 7 ++
.../src/commands/__tests__/task-lifecycle.test.ts | 2 +-
.../core/src/__tests__/branch-group-store.test.ts | 26 ++++++
packages/core/src/db.ts | 4 +-
packages/core/src/store.ts | 9 +-
packages/core/src/types.ts | 2 +-
packages/dashboard/app/components/NewTaskModal.tsx | 2 +-
packages/dashboard/app/components/TaskForm.tsx | 9 +-
.../app/components/__tests__/NewTaskModal.test.tsx | 37 ++++++++
.../src/__tests__/branch-selection.test.ts | 12 +++
.../dashboard/src/__tests__/mission-e2e.test.ts | 8 +-
.../src/__tests__/routes-planning.test.ts | 6 +-
.../src/__tests__/routes-tasks.test.ts | 102 +++++++++++++++++++++
packages/dashboard/src/routes/branch-selection.ts | 19 +++-
.../src/routes/register-task-workflow-routes.ts | 23 +++--
15 files changed, 242 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5829
Fusion-Task-Lineage: 7d69acc8-19a3-4112-9bf2-5ac7b5e5a929
2026-06-01 03:23:10 -07:00
gsxdsm
3f75f55707
FN-5827: derive per-subtask working branches in shared planning mode
...
Ensure planning subtask creation always assigns distinct per-task working branches while preserving shared merge-target grouping.
- route planning subtask branch assignment through resolveEntryPointBranchAssignment for both direct and merged subtask creation paths
- keep shared assignment mode grouped by branch context while deriving unique working branches from the planning branch
- update modal copy to clarify shared mode semantics (shared merge target + per-task branches)
- adjust planning/tasks route tests to assert derived per-task branch names and shared branch-context metadata
Files changed:
.../app/components/SubtaskBreakdownModal.tsx | 4 +-
.../src/__tests__/routes-planning.test.ts | 51 ++++++++++++++++++----
.../dashboard/src/__tests__/routes-tasks.test.ts | 2 +-
.../src/routes/register-planning-subtask-routes.ts | 18 +++++---
4 files changed, 57 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-5827
Fusion-Task-Lineage: 5d6d162f-b89f-49c5-b962-be41332547fe
2026-06-01 03:13:07 -07:00
gsxdsm
2546065674
FN-5828: route shared mission triage to per-task working branches
...
Ensure mission shared-branch triage creates unique task branches while preserving a single shared merge target.
- Compute branch assignment during mission feature triage with resolveEntryPointBranchAssignment and persist per-task working branches in shared mode.
- Keep shared branch-group initialization tied to the mission merge-target branch for shared assignment flows.
- Update core and dashboard mission triage tests to assert distinct per-task branches under shared strategy and verify branch-group behavior.
- Refresh mission docs to clarify shared vs per-task-derived branch strategy semantics.
Files changed:
docs/missions.md | 8 +--
packages/core/src/__tests__/mission-store.test.ts | 42 +++++++++++++--
packages/core/src/mission-store.ts | 19 ++++---
packages/dashboard/src/__tests__/mission-e2e.test.ts | 63 ++++++++++++++++++++--
4 files changed, 115 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-5828
Fusion-Task-Lineage: 9854ea25-6926-4883-92ae-36a5c0a817c5
2026-06-01 03:09:50 -07:00
gsxdsm
9ba3a8e453
FN-5826: centralize branch assignment derivation
...
Centralize working-branch vs merge-target derivation and reuse it across branch-selection flows.
- add a shared core helper to derive working branch, merge target, and default branch assignment
- export the new helper from @fusion/core and add focused unit coverage for branch-assignment behavior
- update dashboard branch-selection route to consume the shared helper instead of duplicating derivation logic
- extend dashboard branch-selection tests to verify helper-driven branch/merge-target precedence
Files changed:
.../core/src/__tests__/branch-assignment.test.ts | 99 ++++++++++++++++++++++
packages/core/src/branch-assignment.ts | 76 +++++++++++++++++
packages/core/src/index.ts | 11 +++
.../src/__tests__/branch-selection.test.ts | 12 +++
packages/dashboard/src/routes/branch-selection.ts | 39 +++++----
5 files changed, 222 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5826
Fusion-Task-Lineage: ad7c5487-5266-4281-abd6-33784dd7e488
2026-06-01 01:39:59 -07:00
gsxdsm
6ade858235
FN-5824: add MiniMax-M3 support examples
...
Update MiniMax model references to MiniMax-M3 across runtime UI, docs, and tests.
- Update Hermes and OpenClaw model input placeholders to show MiniMax-M3 examples
- Refresh Hermes runtime README and CLI parsing comment examples to MiniMax-M3
- Adjust dashboard usage test expectations from MiniMax-M* to MiniMax-M3
- Add Hermes runtime adapter coverage to ensure MiniMax-M3 is passed through unchanged
Files changed:
packages/dashboard/app/components/HermesRuntimeCard.tsx | 2 +-
packages/dashboard/app/components/OpenClawRuntimeCard.tsx | 2 +-
packages/dashboard/src/__tests__/usage.test.ts | 4 ++--
plugins/fusion-plugin-hermes-runtime/README.md | 2 +-
.../src/__tests__/runtime-adapter.test.ts | 9 +++++++++
plugins/fusion-plugin-hermes-runtime/src/cli-spawn.ts | 2 +-
6 files changed, 15 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-5824
Fusion-Task-Lineage: d9524280-be33-49f8-83d8-ac9b963164f8
2026-06-01 01:35:03 -07:00
gsxdsm
edc5add852
FN-5804: fix planning resume for rehydrated sessions
...
Ensure planning resume routes keep project-scoped task store context after restart rehydration.
- add test helpers to seed and rehydrate planning AI sessions from a mock session store
- cover /api/planning respond, back, and retry resume flows to prevent missing task store/project context regressions
- update planning route expectations for new scoped-store arguments and align session lookup in auto-merge coverage
- include routes-planning in dashboard quality API vitest suite
Files changed:
packages/dashboard/src/__tests__/routes-planning.test.ts | 155 ++++++++++++++++++++-
packages/dashboard/vitest.config.ts | 2 +-
2 files changed, 149 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-5804
Fusion-Task-Lineage: 2a20aa0f-086b-41f8-b69b-f81a00414a96
2026-05-31 23:30:09 -07:00
gsxdsm
a44b6102e3
fix(FN-5804): plumb scopedStore into planning resume routes
...
submitResponse/rewindSession/retrySession all accept a trailing store
arg but the routes omitted it, so sessions rehydrated after a restart
(session.store not persisted) threw 'Planning session has no task store
and cannot be resumed without project context'. Pass scopedStore so
resume-after-restart works.
Fusion-Task-Id: FN-5804
2026-05-31 23:06:30 -07:00
gsxdsm
f6edf4a14f
FN-5802: prevent planning-session double-submit freeze
...
Eliminate the double-submit race so planning sessions no longer get stuck in generating.
- add concurrency guards in planning session state transitions to reject overlapping submits
- tighten planning route handling to avoid duplicate generation kicks for the same session
- expand planning tests to cover race scenarios and ensure session recovery behavior
Files changed:
packages/dashboard/src/__tests__/planning.test.ts | 141 +++++++++++++++++++++
packages/dashboard/src/planning.ts | 92 +++++++++++---
.../src/routes/register-planning-subtask-routes.ts | 4 +-
3 files changed, 219 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-5802
Fusion-Task-Lineage: 0ae4d04a-319f-4c93-9855-214d9292f259
2026-05-31 22:56:07 -07:00
gsxdsm
392a6918b2
FN-5800: fix shared planning branch-group setup context binding
...
Prevent unbound this crashes when shared-branch planning subtasks initialize branch groups.
- call ensureBranchGroupForSource through the store object so method context is preserved
- update the planning routes in both shared-branch creation flows to use the bound store call
- harden the planning routes test mock to rely on this.getBranchGroupBySource and keep branch-group creation behavior realistic
- add regression coverage for creating shared branch groups from subtask breakdown task creation
Files changed:
packages/dashboard/src/__tests__/routes-planning.test.ts | 61 ++++++++++++++++++++--
packages/dashboard/src/routes/register-planning-subtask-routes.ts | 8 +--
2 files changed, 61 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-5800
Fusion-Task-Lineage: c4ce9257-0bd2-4b46-b88a-672992ecd969
2026-05-31 22:02:38 -07:00
gsxdsm
ffadb0c77f
FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks
...
Ensure GitHub issue auto-close reconciliation still processes soft-deleted and archived tracked tasks after restart.
- Add pagination-aware reconcile scanning in core store with combined deleted+archived coverage and hasMore metadata.
- Update dashboard GitHub tracking reconciler and route handling to consume paged reconcile batches safely.
- Expand reconcile tests (core + dashboard) with restart/periodic sweep and source-issue scenarios to lock behavior.
- Add release changeset and dashboard guide note for the reconciliation sweep behavior.
Files changed:
.changeset/fn-5792-github-tracking-sweep.md | 5 +
docs/dashboard-guide.md | 1 +
.../store-github-tracking-reconcile.test.ts | 45 ++++++++-
packages/core/src/store.ts | 32 ++++--
.../github-source-issue-reconciler.test.ts | 22 ++--
...ithub-tracking-periodic-reconcile-sweep.test.ts | 90 +++++++++++++++++
.../__tests__/github-tracking-reconciler.test.ts | 111 +++++----------------
.../dashboard/src/github-tracking-reconciler.ts | 19 ++--
.../dashboard/src/routes/register-git-github.ts | 57 +++++++++--
9 files changed, 257 insertions(+), 125 deletions(-)
Fusion-Task-Id: FN-5792
Fusion-Task-Lineage: 259f07cf-3470-47c7-b47a-86d212d44d52
2026-05-31 17:23:26 -07:00
gsxdsm
06d84905ba
FN-5783: enforce branch-group autoMerge precedence for shared promotions
...
Honor group-level autoMerge precedence when promoting shared branch groups.
- add core/store helpers to preserve branch-group autoMerge overrides and resolve effective precedence against task/project settings
- gate branch-group promotion eligibility in engine merge coordination and emit promotion-gated audit metadata
- update dashboard planning/subtask flows for shared mission triage routing and add reliability/unit coverage
- include docs and changeset updates for branch-group autoMerge precedence behavior
Files changed:
.../fn-5783-branch-group-automerge-precedence.md | 5 +
AGENTS.md | 1 +
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 +
.../core/src/__tests__/branch-group-store.test.ts | 18 ++++
packages/core/src/__tests__/task-merge.test.ts | 18 ++++
packages/core/src/index.ts | 1 +
packages/core/src/mission-store.ts | 13 +++
packages/core/src/store.ts | 17 ++++
packages/core/src/task-merge.ts | 8 ++
.../dashboard/src/__tests__/mission-e2e.test.ts | 98 ++++++++++++++++--
.../src/__tests__/routes-planning.test.ts | 109 ++++++++++++++++++++-
packages/dashboard/src/planning.ts | 1 +
.../src/routes/register-planning-subtask-routes.ts | 28 ++++++
packages/dashboard/src/subtask-breakdown.ts | 1 +
.../branch-group-automerge-precedence.test.ts | 102 +++++++++++++++++++
packages/engine/src/group-merge-coordinator.ts | 31 +++++-
packages/engine/src/merger.ts | 30 ++++--
18 files changed, 466 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-5783
Fusion-Task-Lineage: 74327984-b14f-445c-81cd-5295ee562382
2026-05-31 15:17:11 -07:00
gsxdsm
5c33ab133e
FN-5773: add safe reconcile-done endpoint for shipped mission features
...
Add a guarded API path to reconcile mission features to done after delivery tasks have already shipped.
- add POST /api/missions/features/:featureId/reconcile-done with validation for feature id, task id, task linkage, and terminal task columns (done/archived)
- keep active-work protections by rejecting non-terminal task columns and mismatched existing task links with clear conflict responses
- extend mission API e2e coverage for success and failure cases, including done/archived reconciliation, missing inputs, invalid ids, missing tasks/features, and mismatched links
- document reconcile-done behavior, safety gates, and error semantics in missions docs
Files changed:
docs/missions.md | 31 ++++++
packages/dashboard/src/__tests__/mission-e2e.test.ts | 105 +++++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 59 ++++++++++++
3 files changed, 195 insertions(+)
Fusion-Task-Id: FN-5773
Fusion-Task-Lineage: c638b43f-d66f-479a-82c1-a9378a628ca3
2026-05-31 08:32:01 -07:00
gsxdsm
acad46cc10
FN-5764: expose mission assertion backfill through API and CLI
...
Expose mission assertion backfill controls and run paths across engine, API, and CLI surfaces.
- add mission assertion backfill gating classification and reliability coverage for assertion-linked validation recovery
- add dashboard mission routes plus legacy API coverage and e2e checks for running assertion backfill
- expose new extension tool support and update Fusion skill docs/capability references
- add a changeset for @runfusion/fusion and refresh mission documentation
Files changed:
.changeset/fn-5764-mission-backfill-assertions.md | 9 ++
docs/missions-completion-contract.md | 7 +-
docs/missions.md | 7 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 ++
.../skill/fusion/references/fusion-capabilities.md | 1 +
packages/cli/src/__tests__/extension.test.ts | 41 +++++++
packages/cli/src/extension.ts | 43 +++++++
.../dashboard/app/__tests__/api-missions.test.ts | 44 +++++++
packages/dashboard/app/api/legacy.ts | 34 ++++++
.../dashboard/src/__tests__/mission-e2e.test.ts | 127 +++++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 29 +++++
.../mission-validation-trigger-gap.test.ts | 66 +++++++++++
.../workflow-step-readonly-allowlist.test.ts | 1 +
packages/engine/src/gating-classifications.ts | 1 +
15 files changed, 418 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5764
Fusion-Task-Lineage: b16123c2-7cfe-4b17-a899-4e30044a7a49
2026-05-31 08:32:01 -07:00
gsxdsm
0ffe7f0604
FN-5762: add mission hierarchy delete tools with linked-task guards
...
Add mission delete tooling across core, dashboard routes, and CLI extension surfaces.
- Add `fn_feature_delete`, `fn_slice_delete`, and `fn_milestone_delete` tools to the CLI extension with `force` override support.
- Enforce live-task linkage guards for feature/slice/milestone deletes in mission store logic and expose conflict behavior through mission routes.
- Extend coverage and docs for delete behavior, allowlist/gating metadata, and published Fusion skill/tool references.
Files changed:
.changeset/fn-5762-feature-delete.md | 7 +
docs/missions.md | 15 +++
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 27 ++++
.../skill/fusion/references/fusion-capabilities.md | 3 +
packages/cli/src/__tests__/extension.test.ts | 34 +++++
packages/cli/src/extension.ts | 106 +++++++++++++++
packages/core/src/__tests__/mission-store.test.ts | 146 ++++++++++++++++++++-
packages/core/src/mission-store.ts | 98 ++++++++++++--
.../dashboard/src/__tests__/mission-e2e.test.ts | 62 +++++++--
packages/dashboard/src/mission-routes.ts | 42 +++++-
.../workflow-step-readonly-allowlist.test.ts | 3 +
packages/engine/src/gating-classifications.ts | 3 +
13 files changed, 514 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-5762
Fusion-Task-Lineage: 9c6eceff-dcb4-4a2b-90c6-59cb0228ca6d
2026-05-31 08:32:01 -07:00
gsxdsm
194dfa9387
FN-5758: add cited-goal audit aggregation and runtime route
...
Add end-to-end goal-citation audit trail plumbing across core, engine, CLI, and dashboard.
- extend goal citation extraction with aggregation logic and new core coverage
- expose cited-goal runtime data through dashboard routes with dedicated API tests
- wire goal-citation audit details into engine diagnostics and CLI extension audit expectations
- document the new audit behavior and publish a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5758-goal-citation-audit.md | 9 +++
docs/dashboard-guide.md | 2 +
docs/diagnostics.md | 4 ++
.../__tests__/extension-goal-tools-audit.test.ts | 6 +-
packages/cli/src/extension.ts | 3 +
.../goal-citation-audit-aggregation.test.ts | 63 ++++++++++++++++++
packages/core/src/goal-citation-extractor.ts | 54 ++++++++++++++-
packages/core/src/index.ts | 1 +
.../src/__tests__/routes-run-cited-goals.test.ts | 77 ++++++++++++++++++++++
packages/dashboard/src/routes.ts | 11 ++++
.../src/routes/register-agent-runtime-routes.ts | 49 ++++++++++++++
.../src/__tests__/goal-anchoring-audit.test.ts | 40 +++++++----
packages/engine/src/goal-anchoring-audit.ts | 4 ++
packages/engine/src/goal-injection-diagnostics.ts | 1 +
14 files changed, 308 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5758
Fusion-Task-Lineage: b077c0b7-6ca4-489d-8c36-73d80a2afdb2
2026-05-30 22:53:24 -07:00
gsxdsm
24e0c44b4a
FN-5731: require confirmation before archiving near-duplicate tasks
...
Stop silent near-duplicate auto-archive by routing duplicates through explicit user confirmation in API, engine, and dashboard flows.
- add new near-duplicate confirmation metadata/types and preserve duplicate task rows until confirmation
- update workflow routes and triage logic to return confirmation-required outcomes instead of immediate archive
- add TaskCard and TaskDetailModal UI/actions plus styling and hook updates for confirming or rejecting duplicate handling
- expand dashboard and engine tests and task-management docs to cover the new confirmation path
Files changed:
docs/task-management.md | 14 ++++-
packages/core/src/types.ts | 4 ++
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/components/TaskCard.css | 59 ++++++++++++++++++
packages/dashboard/app/components/TaskCard.tsx | 46 +++++++++++++-
packages/dashboard/app/components/TaskDetailModal.css | 34 +++++++++++
packages/dashboard/app/components/TaskDetailModal.tsx | 71 +++++++++++++++++++++-
packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 71 ++++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.rendering.test.tsx | 68 +++++++++++++++++++++
packages/dashboard/app/hooks/useTasks.ts | 2 +-
packages/dashboard/src/__tests__/routes-tasks-near-duplicate.test.ts | 45 ++++++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 9 ++-
packages/engine/src/__tests__/reliability-interactions/near-duplicate-intake.test.ts | 16 +++--
packages/engine/src/triage.ts | 19 +++---
14 files changed, 433 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5731
Fusion-Task-Lineage: fa004129-7bce-4457-b8c3-ceb9fb953319
2026-05-30 15:52:46 -07:00
gsxdsm
50cdcbf06d
FN-5730: close linked GitHub issues on archived transitions
...
Ensure task archival updates linked GitHub issue state consistently across source columns.
- close linked issues as not_planned when tasks move to archived from non-done columns
- keep done -> archived using completed close reason
- reopen issues whenever tasks leave done, including done -> archived regression coverage updates
Files changed:
.../src/__tests__/github-tracking-state.test.ts | 16 +++++++++++++---
packages/dashboard/src/github-tracking-state.ts | 14 ++++++++++----
2 files changed, 23 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5730
Fusion-Task-Lineage: 0ce031be-be8c-49b8-a944-9b269fda4e00
2026-05-30 13:07:49 -07:00
gsxdsm
16a82cf0ad
FN-5722: suppress __SKIP__ sentinel room replies
...
Treat __SKIP__ room responder outputs as intentional silence so they never appear in persisted or rendered chat history.
- export ROOM_SKIP_SENTINEL and helper detection in chat orchestration
- skip persisting responder outputs that are trimmed-exact __SKIP__ sentinels
- avoid room reply failure errors when responders intentionally skip
- filter sentinel-only room messages in ChatView rendering
- add backend and UI tests covering sentinel suppression and substring pass-through
- document sentinel no-op behavior in dashboard chat room guide
Files changed:
docs/dashboard-guide.md | 1 +
packages/dashboard/app/components/ChatView.tsx | 8 ++-
packages/dashboard/app/components/__tests__/ChatView.rooms.test.tsx | 16 +++++
packages/dashboard/src/__tests__/chat.rooms.test.ts | 80 +++++++++++++++++++++-
packages/dashboard/src/chat.ts | 15 +++-
5 files changed, 116 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-5722
Fusion-Task-Lineage: 242085fc-4b88-46c1-81aa-e398f5276fec
2026-05-30 10:21:49 -07:00
gsxdsm
da3f4aa967
FN-5717: add per-task auto-merge override in new task form
...
Add a New Task form option to override auto-merge behavior per task and wire it through task creation APIs.
- add TaskForm UI state/prop support for enabling or disabling per-task auto-merge override
- pass override values through NewTaskModal and legacy task creation API payloads
- persist and validate settings.autoMerge overrides in task workflow route handling
- add dashboard and route tests covering override defaults and explicit true/false behavior
- document per-task auto-merge override behavior in dashboard and settings docs
Files changed:
docs/dashboard-guide.md | 1 +
docs/settings-reference.md | 2 +-
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/NewTaskModal.tsx | 11 ++++-
packages/dashboard/app/components/TaskForm.tsx | 27 ++++++++++++
.../app/components/__tests__/NewTaskModal.test.tsx | 51 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-tasks.test.ts | 33 ++++++++++++++
.../src/routes/register-task-workflow-routes.ts | 6 +++
8 files changed, 130 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5717
Fusion-Task-Lineage: 3bdbb561-9c6d-4f64-ad4b-ae723e73223e
2026-05-30 10:11:23 -07:00
gsxdsm
4153ad7323
Merge pull request #1176 from plarson/fix/planning-start-failure-isolation
...
fix: dispose failed planning startup agents
2026-05-30 08:41:19 -07:00
Phil Larson
6ba3cbf495
fix: respect dashboard task column filters
2026-05-30 08:29:04 -07:00
Phil Larson
5f3e344b6e
fix: dispose failed planning startup agents
2026-05-30 08:29:02 -07:00
gsxdsm
afc3b4749f
FN-5655: add goal anchoring audit events across lanes
...
Add audit guardrails that track goal anchoring injection across executor, heartbeat, and CLI/dashboard surfaces.
- add a dedicated engine goal-anchoring audit emitter and export it
- emit goal anchoring audit events from executor and heartbeat goal-context injection paths
- extend run-audit wiring and CLI extension output to surface goal anchoring events
- add engine, CLI, and dashboard regression tests for goal-tool and audit event behavior
- document the new audit coverage and include a published changeset entry
Files changed:
.changeset/fn-5655-goal-anchoring-audit.md | 7 ++
docs/architecture.md | 1 +
docs/dashboard-guide.md | 1 +
.../__tests__/extension-goal-tools-audit.test.ts | 65 +++++++++++++++
packages/cli/src/extension.ts | 28 +++++++
.../__tests__/routes-run-audit-goal-events.test.ts | 72 ++++++++++++++++
.../src/__tests__/goal-anchoring-audit.test.ts | 95 ++++++++++++++++++++++
packages/engine/src/agent-heartbeat.ts | 20 +++--
packages/engine/src/executor.ts | 20 +++--
packages/engine/src/goal-anchoring-audit.ts | 89 ++++++++++++++++++++
packages/engine/src/index.ts | 10 +++
packages/engine/src/run-audit.ts | 6 +-
12 files changed, 399 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5655
Fusion-Task-Lineage: f3c10568-4050-42c4-9fe2-b84bf749b89d
2026-05-29 20:05:14 -07:00
gsxdsm
a9d2064f66
FN-5703: forward task:deleted events through in-process runtime
...
Ensure engine-side task deletes propagate through all runtime transports so GitHub tracking cleanup runs consistently.
- extend IPC protocol and child-process runtime/worker plumbing to carry `task:deleted` events
- forward `task:deleted` from in-process runtime through project runtime and project manager dispatch
- add regression coverage for in-process runtime forwarding and GitHub tracking delete handling
Files changed:
.../src/__tests__/github-tracking-delete.test.ts | 29 ++++++++++++++++++
.../src/__tests__/in-process-runtime.test.ts | 34 +++++++++++++++++++++-
packages/engine/src/ipc/ipc-protocol.ts | 14 ++++++++-
packages/engine/src/project-manager.ts | 7 +++++
packages/engine/src/project-runtime.ts | 4 ++-
.../engine/src/runtimes/child-process-runtime.ts | 6 ++++
.../engine/src/runtimes/child-process-worker.ts | 14 +++++++--
packages/engine/src/runtimes/in-process-runtime.ts | 10 ++++++-
8 files changed, 111 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5703
Fusion-Task-Lineage: 1406838b-5abf-4b86-8161-c2dd59f88a9b
2026-05-29 20:05:14 -07:00
gsxdsm
668e3a5099
FN-5679: default new missions to stopped state
...
Ensure mission creation always starts in a stopped planning state with autopilot off.
- Force MissionStore createMission to ignore create-time autopilotEnabled and persist stopped defaults
- Update mission POST route behavior to stop auto-watching on create and keep optional create-time updates scoped
- Add/adjust core and dashboard tests to assert stopped-by-default creation semantics
- Document mission autopilot creation behavior and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5679-missions-default-stopped.md | 7 +++++++
docs/missions.md | 4 +++-
.../mission-factory-parity.integration.test.ts | 6 +++---
packages/core/src/__tests__/mission-store.test.ts | 18 ++++++++++++++++++
packages/core/src/mission-store.ts | 5 +++--
packages/dashboard/src/__tests__/mission-e2e.test.ts | 8 +++++---
packages/dashboard/src/mission-routes.ts | 9 +--------
7 files changed, 40 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-5679
Fusion-Task-Lineage: 05eff3cb-07d8-4b52-ac7f-065979e78816
2026-05-29 15:45:20 -07:00
gsxdsm
0605d13ab5
FN-5675: add mission branch strategy and planning breakdown controls
...
Add mission-level branch strategy support and expose planning breakdown controls across mission flows.
- Extend mission/core data models and store logic to track and persist base-branch strategy metadata.
- Update mission API routes and legacy adapters to read/write new mission branch strategy fields.
- Enhance MissionManager and PlanningModeModal UX to configure branch strategy and planning breakdown behavior.
- Add/adjust coverage across core, dashboard, and roadmap plugin tests for mission branch and planning flow behavior.
- Add a changeset and mission docs updates for the new mission branch strategy behavior.
Files changed:
.changeset/fn-5675-mission-branch-strategy.md | 9 +
docs/missions.md | 13 ++
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
.../src/__tests__/db-mission-base-branch.test.ts | 14 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
packages/core/src/__tests__/mission-store.test.ts | 148 +++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 9 +-
packages/core/src/index.ts | 1 +
packages/core/src/mission-store.ts | 64 ++++--
packages/core/src/mission-types.ts | 9 +
packages/dashboard/app/api/legacy.ts | 23 ++-
.../dashboard/app/components/MissionManager.tsx | 226 +++++++++++++++++++--
.../dashboard/app/components/PlanningModeModal.tsx | 9 +-
.../components/__tests__/MissionManager.test.tsx | 100 +++++++++
.../PlanningModeModal.planning-flow.test.tsx | 91 +++++++++
packages/dashboard/app/components/mission-types.ts | 4 +
.../dashboard/src/__tests__/mission-e2e.test.ts | 49 ++++-
packages/dashboard/src/mission-routes.ts | 41 +++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
25 files changed, 808 insertions(+), 76 deletions(-)
Fusion-Task-Id: FN-5675
Fusion-Task-Lineage: cfd13c13-9eff-4b82-90c3-88505d51bfb2
2026-05-29 15:25:47 -07:00
gsxdsm
bac12d1e28
FN-5695: sync feature assertions for late-added mission features
...
Close the assertion-graph gap by making mission feature assertions store-managed and automatically synchronized.
- add `sourceFeatureId` to contract assertions (types, schema migration, persistence, snapshot restore)
- auto-create/update/delete managed assertions when features are added, edited, or removed in `MissionStore`
- remove duplicate/manual assertion creation from mission routes and rely on centralized store behavior
- expand core, dashboard, engine, and plugin tests plus docs to cover validator behavior for later-added features
Files changed:
docs/missions.md | 11 ++-
docs/storage.md | 2 +-
packages/core/src/__tests__/db-migrate.test.ts | 12 ++--
packages/core/src/__tests__/db.test.ts | 34 ++++-----
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +--
packages/core/src/__tests__/mission-store.test.ts | 82 +++++++++++++++++++---
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 11 ++-
packages/core/src/mission-store.ts | 69 ++++++++++++++++--
packages/core/src/mission-types.ts | 4 ++
.../dashboard/src/__tests__/mission-e2e.test.ts | 70 ++++++++++++------
packages/dashboard/src/mission-routes.ts | 16 +----
.../src/__tests__/mission-execution-loop.test.ts | 46 +++++++++++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
18 files changed, 288 insertions(+), 97 deletions(-)
Fusion-Task-Id: FN-5695
Fusion-Task-Lineage: 337f030c-e883-41aa-b982-13ebe45bd5ee
2026-05-29 13:35:13 -07:00
gsxdsm
0044c23c64
FN-5699: fix github-copilot device-code login callback handling
...
Prevent dashboard auth initiation from crashing when Copilot emits device-code callbacks.
- wire optional auth callbacks (`onDeviceCode`, `onSelect`) through dashboard auth route typing
- capture and return device-code payload from either `onDeviceCode` or parsed Copilot instructions when `/api/auth/login` starts
- guard auth-init promise settlement to avoid double resolve/reject races and normalize async login errors
- add regression coverage for Copilot device-code callback handling in auth route tests
- sync roadmap plugin schema-version test expectation from 94 to 95 to keep suite assertions aligned
Files changed:
.changeset/fn-5699-copilot-device-code-callback.md | 5 ++
packages/dashboard/src/__tests__/routes-auth.test.ts | 21 ++++++++
packages/dashboard/src/routes.ts | 7 +++
packages/dashboard/src/routes/register-auth-routes.ts | 62 +++++++++++++++++-----
plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts | 4 +-
5 files changed, 83 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5699
Fusion-Task-Lineage: 24bf59f2-3b22-4087-96ca-35409fe00895
2026-05-29 11:22:27 -07:00
gsxdsm
91137ecb51
FN-5677: add per-task auto-merge override controls
...
Add dashboard and API support to set or clear per-task auto-merge overrides during review.
- add TaskReviewTab UI controls and styles for selecting or clearing an auto-merge override
- wire legacy dashboard API request handling for task auto-merge override updates
- update task workflow routes to persist override operations
- add dashboard and route tests covering set/clear override behavior
Files changed:
packages/dashboard/app/__tests__/api-tasks.test.ts | 26 +++++++++
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/components/TaskReviewTab.css | 17 ++++++
packages/dashboard/app/components/TaskReviewTab.tsx | 55 +++++++++++++++++-
packages/dashboard/app/components/__tests__/TaskReviewTab.test.tsx | 48 ++++++++++++++++
packages/dashboard/src/__tests__/routes-tasks-ops.test.ts | 65 ++++++++++++++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 7 ++-
7 files changed, 216 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5677
Fusion-Task-Lineage: 4503e605-1190-4a32-8736-dd11eb2756b8
2026-05-29 10:55:25 -07:00
gsxdsm
dbb0804490
FN-5666: exclude base commit from done-task diff ranges
...
Prevent done-task diff endpoints from counting base-commit-only lineage as task-owned changes.
- add base-boundary handling in done-task merge SHA resolution so `baseCommitSha` is excluded by default and only consulted for boundary checks
- short-circuit `/diff` and `/file-diffs` responses to empty results when resolved done-task SHA is at or below `baseCommitSha`
- export and use an ancestry helper to detect base-boundary cases, while preserving normal and rebase range behavior
- extend done-task diff route tests with FN-5666 cases for no-op merge SHA, lineage association at base commit, normal post-base commits, and rebase ranges
- add a patch changeset for `@runfusion/fusion`
Files changed:
.changeset/fn-5666-base-commit-exclusive.md | 5 +
.../src/__tests__/routes-diff-done-tasks.test.ts | 217 ++++++++++++++++++++-
.../src/routes/register-session-diff-routes.ts | 57 +++++-
3 files changed, 273 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-5666
Fusion-Task-Lineage: 782f9875-856a-4d31-9505-0bcd638c9c29
2026-05-29 10:14:06 -07:00
gsxdsm
4fee2c1324
FN-5671: add branch-strategy selection to new task creation
...
Add branch-strategy based task branch handling from modal through task creation routes.
- add branch strategy dropdown + validation in New Task modal and TaskForm, including required branch-name handling for existing/custom-new modes
- send structured branchSelection payload from dashboard API client and cover UI/API behavior with new tests
- add server-side branch selection mode parsing, auto-new branch derivation (fusion/<task-id>-<slug>), and response updates when auto branch is generated
- update engine/worktree and dashboard route tests plus dashboard guide documentation
- add a changeset for @runfusion/fusion patch release
Files changed:
.changeset/fn-5671-branch-strategy-dropdown.md | 7 ++
docs/dashboard-guide.md | 16 +++++
packages/dashboard/app/__tests__/api-tasks.test.ts | 21 ++++++
packages/dashboard/app/api/legacy.ts | 9 +++
packages/dashboard/app/components/NewTaskModal.css | 8 +++
packages/dashboard/app/components/NewTaskModal.tsx | 41 +++++++++---
packages/dashboard/app/components/TaskForm.tsx | 30 ++++++++-
.../app/components/__tests__/NewTaskModal.test.tsx | 77 +++++++++++++++++++---
.../src/__tests__/branch-selection.test.ts | 13 ++++
.../dashboard/src/__tests__/routes-tasks.test.ts | 72 ++++++++++++++++++++
packages/dashboard/src/routes/branch-selection.ts | 45 ++++++++-----
.../src/routes/register-task-workflow-routes.ts | 22 +++++--
.../engine/src/__tests__/worktree-pool.test.ts | 41 ++++++++++++
packages/engine/src/worktree-pool.ts | 2 +-
14 files changed, 361 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-5671
Fusion-Task-Lineage: 7f2e7b68-050d-4a2c-af0b-cb895de35576
2026-05-29 09:44:17 -07:00
gsxdsm
b8c8642cae
FN-5645: fix mission autopilot progression to wait for assertion runs
...
Fusion-Task-Id: FN-5645
Fusion-Task-Lineage: ed9d2045-2bfe-4070-a7e3-caca010e6cc6
2026-05-28 23:58:47 -07:00
gsxdsm
cec191eac3
FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope
...
Fusion-Task-Id: FN-5638
Fusion-Task-Lineage: 6e99c156-5f6c-42e6-bd26-618e08ffd05f
2026-05-28 21:23:48 -07:00
gsxdsm
b2dce7d852
Recovery: Re-land (Close source-imported GitHub issues on ta
2026-05-28 19:49:31 -07:00
gsxdsm
2a3535893b
feat(FN-5622): add goals REST API with store accessor and route handlers
...
Introduces a Goals REST API (`GET/POST/PUT /api/goals` and `GET/PUT /api/goals/:id`) backed by a new `@fusion/core` goal store and typed goal types, including comprehensive route and store test coverage. Documentation on architecture and storage is updated to reflect the new domain, and a changeset
Fusion-Task-Id: FN-5622
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
Fusion-Task-Id: FN-5622
2026-05-28 10:32:16 -07:00
gsxdsm
e84673c632
feat(FN-5618): handle deleted source issues in TaskCard
...
Implements source issue delete handling in the task dashboard, including prompt-based user interaction for source-linked issues, new GitHub tracking state logic in `packages/dashboard/src/github-tracking-state.ts`, and corresponding test coverage, with documentation added to `docs/task-management.md
Fusion-Task-Id: FN-5618
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
Fusion-Task-Id: FN-5618
2026-05-28 08:57:59 -07:00
gsxdsm
d767e2ecbd
feat(FN-5601): add OpenAI Responses API type support to custom providers
...
Added OpenAI Responses API as a new custom provider type, wiring `apiType: "responses"` through the core registry, engine routes, and dashboard UI with a dropdown selector; includes test coverage across the registry, routes, and component layers.
Fusion-Task-Id: FN-5601
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
Fusion-Task-Id: FN-5601
2026-05-27 21:31:12 -07:00
gsxdsm
da34bd06e3
feat(FN-5595): add oauth relogin banner with validity logger
...
This merge implements an OAuth relogin banner feature (FN-5595) that displays in the dashboard when OAuth tokens expire. The feature includes a new `OAuthReloginBanner` component with styling and tests, an OAuth validity logger in the engine for tracking token state, and corresponding API route inte
Fusion-Task-Id: FN-5595
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
Fusion-Task-Id: FN-5595
2026-05-27 21:31:12 -07:00
Josemi Liebana
6ad18663b8
fix(dashboard): address review comments on PR #1099
...
- fix(perf): use messagesRef.current in loadMoreMessages to avoid
recreating callback on every streamed token; messagesRef is already
kept in sync on every render so no useEffect needed — removes
`messages` from useCallback deps
- fix(api): reject invalid order query param with 400 instead of
silently ignoring; valid values are 'asc' and 'desc'
Tests:
- useChat: loadMoreMessages identity is stable when messages array changes
- chat-routes: GET /messages?order=invalid returns 400
2026-05-27 17:38:04 +02:00
Josemi Liebana
6e9ab0e989
feat(dashboard): load latest messages first with order=desc pagination
...
- Add order?: 'asc' | 'desc' to ChatMessagesFilter (core)
- Route handler passes order param from query string
- Initial load requests order=desc and reverses for display
- loadMoreMessages uses before cursor instead of offset
- hasMoreMessages starts false (prevents IntersectionObserver race)
- ChatView IntersectionObserver guards against messagesLoading
2026-05-27 11:57:21 +02:00
gsxdsm
cac08d733b
chore(dashboard): fix lint and typecheck
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 22:20:22 -07:00
gsxdsm
6a6c6fdbfd
perf(dashboard): speed up startup and eliminate API request storms
...
Multiple coordinated fixes for the perceived "dashboard takes forever to
load" complaint. Per-page-load HTTP requests drop from ~177 to ~101 and
duplicate per-project InProcessRuntime creation is eliminated.
- engine: shouldUseHybridExecutor no longer auto-enables for local-only
multi-project setups (set FUSION_HYBRID_EXECUTOR=1 to force). The
duplicate-runtime path was running self-healing twice per project and
contending on the same SQLite file. ProjectEngineManager already
handles N local projects with one InProcessRuntime each.
- dashboard cli: parallelized independent store inits, started
CentralCore.init early in background, ran plugin loading concurrently
with extension resolution. Sequenced SQLite store inits to avoid a
TOCTOU race in addColumnIfMissing migrations across TaskStore /
AutomationStore / PluginStore / AgentStore (all open the same
.fusion/fusion.db). Restored try/catch around HybridExecutor.initialize
and engineManager.ensureEngine so a paused or broken cwd project no
longer aborts dashboard startup.
- dashboard client: added in-flight request dedupe wrapped around the
top API offenders. /api/plugins/ui-slots drops from 17x to 1x per load.
dedupe.forceFresh redirects ALL in-flight waiters to receive the fresh
post-mutation response, not just the forcing caller. Generation
counters in useAgents and AgentListModal protect against slow polls
overwriting fresh state.
- dashboard SSE: agent event handler now debounces 250ms with a
trailing-edge guard so multi-agent activity bursts coalesce to at
most 2 refetches per burst.
- dashboard route: PATCH /api/projects/:id with isolationMode change
returns 503 with actionable guidance when HybridExecutor is
unavailable, instead of silently persisting a config the live runtime
won't honor.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 21:57:31 -07:00
gsxdsm
0cabe582aa
fix(chat): resolve ChatManager before flushing SSE headers
...
Move resolveScopedChatManager() before res.flushHeaders() in the
POST /messages route so that failures (e.g. project DB cannot be
opened) produce a proper HTTP error instead of silently closing the
SSE connection.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 21:44:12 -07:00
gsxdsm
e721d8481a
Merge origin/main into fix/chat-manager-multi-project-routing
...
Resolve conflict in register-chat-routes.ts: keep per-project
ChatManager routing via resolveScopedChatManager while preserving
main's resolveProjectChatContext-based store resolution for read
routes. The auto-merged chat-project-services.ts correctly combines
main's fallback-safe resolveProjectChatContext with the PR's new
getOrCreateScopedChatManager cache.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 21:38:25 -07:00