gsxdsm
da616e1cf9
FN-8498: add Quick Add Start menu
...
Add gesture-only Quick Add Start promotion for eligible hold-based workflows.
- Open a Start menu with right-click or touch/pen long-press while preserving ordinary Save and Enter behavior.
- Validate and snapshot workflow routing before creating, then move matching tasks through host callbacks.
- Cover workflow guards, promotion outcomes, and Board/List callback wiring.
Files changed: .changeset/fn-8498-quick-add-start-menu.md | 7 ++
docs/dashboard-guide.md | 4 +
packages/dashboard/app/components/Column.tsx | 1 +
packages/dashboard/app/components/ListView.tsx | 1 +
.../dashboard/app/components/QuickEntryBox.css | 30 +++++
.../dashboard/app/components/QuickEntryBox.tsx | 115 ++++++++++++++++-
.../app/components/__tests__/Column.test.tsx | 10 +-
.../app/components/__tests__/ListView.test.tsx | 12 ++
.../components/__tests__/QuickEntryBox.test.tsx | 137 +++++++++++++++++++++
.../app/utils/__tests__/quickAddStart.test.ts | 38 ++++++
packages/dashboard/app/utils/quickAddStart.ts | 51 ++++++++
11 files changed, 400 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8498
Fusion-Task-Lineage: 30d8e7d4-59f1-4c4f-9224-1a9d8c27141b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 16:31:24 -07:00
gsxdsm
9002fca9de
FN-8497: reduce merge gate wall time
...
Keep merge-gate coverage focused while running its independent test lanes concurrently.
- Limit PostgreSQL gate coverage to lifecycle and transactional-handoff canaries.
- Run engine and PostgreSQL gate lanes concurrently while preserving failure propagation.
- Enforce canary coverage policy and refresh velocity documentation and history.
Files changed:
docs/test-velocity-baseline.md | 16 +--
docs/testing.md | 5 +-
package.json | 2 +-
packages/core/package.json | 2 +-
.../__tests__/engine-vitest-gate-policy.test.mjs | 79 +++++++++++++-
scripts/test-velocity-history.json | 115 +++++++++++++++++++++
6 files changed, 204 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-8497
Fusion-Task-Lineage: 8777959c-6d8c-4686-a975-d91af2c169ea
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 15:47:24 -07:00
gsxdsm
3cd023fa43
FN-8491: add declarative plugin MCP server registrations
...
Enable plugins to declare per-project MCP server registrations.
- Add plugin MCP server contribution types, loading, and resolution across core and engine runtimes.
- Expose resolved plugin registrations through project configuration APIs and MCP settings UI.
- Document the declarative contribution API and add release metadata and regression coverage.
Files changed:
.changeset/plugin-mcp-servers.md | 7 ++
docs/PLUGIN_AUTHORING.md | 17 +++++
docs/mcp.md | 4 ++
docs/settings-reference.md | 4 ++
packages/core/src/__tests__/mcp-config.test.ts | 33 +++++++++
.../__tests__/plugin-contribution-types.test.ts | 16 +++++
.../__tests__/plugin-loader-single-load.test.ts | 23 +++++++
packages/core/src/index.gate.ts | 3 +
packages/core/src/index.ts | 3 +
packages/core/src/mcp-config.ts | 37 ++++++++--
packages/core/src/plugin-loader.ts | 24 +++++++
packages/core/src/plugin-mcp-servers.ts | 78 ++++++++++++++++++++++
packages/core/src/plugin-types.ts | 15 ++++-
packages/core/src/types.ts | 2 +-
.../__tests__/SettingsModal.mcp.test.tsx | 34 +++++++++-
.../settings/sections/McpServersCard.tsx | 52 ++++++++++-----
.../settings/sections/ProjectMcpSection.tsx | 31 ++++++++-
.../register-config-mcp-pi-settings-routes.test.ts | 18 ++++-
packages/dashboard/src/routes/context.ts | 71 +++++++++++++++++++-
.../register-config-mcp-pi-settings-routes.ts | 30 ++++++++-
.../engine/src/__tests__/mcp-resolution.test.ts | 20 ++++++
packages/engine/src/mcp-resolution.ts | 15 ++++-
packages/engine/src/plugin-runner.ts | 38 +++++++++++
packages/engine/src/runtimes/in-process-runtime.ts | 23 +++++++
packages/plugin-sdk/src/index.ts | 1 +
25 files changed, 563 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-8491
Fusion-Task-Lineage: be7e22fa-5776-4b3d-9fd1-a873799e6427
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 15:25:20 -07:00
gsxdsm
875d057d16
FN-8495: refresh W29 test velocity baseline
...
Refresh the weekly test velocity publication with the latest measurements.
- Record updated gate, boot smoke, and changed-only test timings.
- Append the W29 velocity history entry and update the published summary.
- Point testing guidance to the canonical weekly velocity workflow.
Files changed:
docs/test-velocity-baseline.md | 16 +++---
docs/testing.md | 10 +---
scripts/test-velocity-history.json | 115 +++++++++++++++++++++++++++++++++++++
3 files changed, 124 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8495
Fusion-Task-Lineage: db432471-13a2-41b1-a951-f735c96456e9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 15:14:34 -07:00
gsxdsm
53e3063e9f
FN-8490: load skills for foreach step-execute sessions
...
Honor skill-executor configuration for implementation sessions created by foreach templates.
- Propagate validated step-execute skill names through workflow seam context.
- Load namespaced and bare skills with configured discovery paths for pinned step sessions.
- Add regression coverage, workflow documentation, and a minor changeset.
Files changed:
.changeset/fn-8490-step-execute-skill.md | 7 ++
docs/workflow-steps.md | 4 +-
.../__tests__/step-execute-skill-loading.test.ts | 128 +++++++++++++++++++++
packages/engine/src/executor.ts | 62 +++++++++-
packages/engine/src/workflow-node-handlers.ts | 21 ++++
5 files changed, 219 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8490
Fusion-Task-Lineage: aa1ff02d-3139-45f2-8853-f53c0aef0f2f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 15:07:59 -07:00
gsxdsm
4419bdbd04
Update baseline
2026-07-22 14:32:07 -07:00
gsxdsm
d5df6fc635
docs(FN-6612): refresh test velocity baseline
...
Record the W30 measurements, quarantine count, and stale timing-snapshot warning for the weekly velocity report.
2026-07-22 13:47:58 -07:00
flexi767
8e6985aed3
feat(core): reconcile archived mission evidence atomically ( #2379 )
...
## Summary
- add an atomic PostgreSQL operation that reconciles a mission feature
with a terminal delivery task
- support retained archived-task evidence without unarchiving or waking
mission automation
- reject missing, active, deleted-without-archive, and duplicate-linked
task evidence without partial mutation
- route the reconciliation endpoint through the transactional store
operation
## Root cause
Mission reconciliation previously relied on ordinary task-link and
lifecycle paths that cannot safely use retained archived task evidence.
That made historical delivery repair either impossible or vulnerable to
partial linkage and unintended mission-loop side effects.
## Scope
This PR contains the reusable product capability recovered from FX-001.
It intentionally does not perform the project-specific 69-row live data
mutation; that operational reconciliation was blocked by ambiguous
evidence and belongs outside the source change.
## Validation
- PostgreSQL mission-store tests: 23 passed
- dashboard reconciliation route tests: 3 passed
- `@fusion/core` typecheck
- `@fusion/dashboard` typecheck
- targeted ESLint
- strict changeset validation
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added safer reconciliation for completed mission features using
validated terminal task evidence.
* Supports eligible archived tasks without restoring or relinking them.
* Reconciliation is idempotent and updates related mission progress
consistently.
* **Bug Fixes**
* Prevented conflicting or invalid task evidence from changing mission
state.
* Added atomic rollback when reconciliation encounters an error.
* Improved API responses for missing resources and reconciliation
conflicts.
* **Documentation**
* Expanded reconciliation safety, error, idempotency, and
duplicate-cleanup guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: fusion-merge-train <merge-train@topkoli.local >
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-07-22 13:46:08 -07:00
gsxdsm
56efd7488e
fix(engine): stop false-positive stuck loop kills on iterative work ( #2404 )
...
## Summary
- Fix a false-positive in `StuckTaskDetector` where legitimate long
single-step work (E2E debugging, iterative fix/test cycles) was
classified as a loop and kill/requeued.
- Root cause: loop meant “no step status transition for
`taskStuckTimeoutMs` + high activity volume,” conflating **step
progress** with **actual activity**. Agents can stay productively busy
on one step for 10+ minutes with zero repetition.
- Loop now requires thrash evidence on top of volume + no step progress:
- **repetitive tool fingerprints** (`toolName` + primary-arg detail in a
sliding window), or
- **elevated ignored step-update rebuffs** (≥ 10)
- Wire tool name/detail from `AgentLogger` → executor / step-session
into `recordActivity(...)` so novelty is measurable.
- Document the thrash-evidence rule in `docs/architecture.md`.
## Test plan
- [x] `pnpm --filter @fusion/engine exec vitest run
src/__tests__/stuck-task-detector.test.ts
src/__tests__/reliability-interactions/non-progress-churn.test.ts`
- [x] Regression: high-volume **diverse** iterative activity (174
events) does **not** classify as loop
- [x] High bare text/heartbeat volume without tools does **not**
classify as loop
- [x] Repetitive identical tool fingerprint + timeout **does** classify
as loop
- [x] Ignored step-update thrash (≥10) with volume **does** classify as
loop
- [x] Existing FN-5168 no-progress-churn + FN-6598 verification
suppression paths still pass
- [ ] CI gate green
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved stuck/loop classification by requiring explicit “thrash
evidence” (repetitive tool fingerprints and/or elevated ignored progress
rebuffs), reducing false positives for busy but diverse work.
* Updated loop evidence tracking to incorporate tool name plus
summarized tool-argument detail.
* Cleared loop evidence appropriately after verification, progress
updates, and task resumption.
* Extended tool-start telemetry/callbacks to include optional tool
detail.
* **Documentation**
* Refined loop-classification criteria to match the new evidence gates.
* **Tests**
* Updated/expanded stuck/loop and churn scenarios to validate the
evidence-based behavior and callback ordering.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-22 13:43:55 -07:00
gsxdsm
57af2490fe
FN-8489: hard-settle mobile board column swipes
...
Ensure mobile board pans never stop between columns.
- Detect centered columns before resolving a zero-direction pan
- Snap off-center zero-direction pans to the nearest column center
- Add regression coverage and document the mobile settle behavior
Files changed:
.changeset/fn-8489-mobile-column-settle.md | 7 +++++
docs/dashboard-guide.md | 2 +-
.../app/components/__tests__/board-mobile.test.tsx | 4 +--
.../hooks/__tests__/useColumnScrollSnap.test.ts | 32 ++++++++++++++++++++++
.../dashboard/app/hooks/useColumnScrollSnap.ts | 29 ++++++++++++++++++--
5 files changed, 69 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8489
Fusion-Task-Lineage: 555bd906-0ac8-4c43-a00b-24d1e716488a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 09:17:14 -07:00
gsxdsm
e514e134da
fix: apply project model lanes across workflows ( #2400 )
...
## Summary
Project workflow model lanes now apply to tasks on every workflow
instead of only tasks using the active default workflow. Model selection
consistently resolves task-specific choice -> project workflow baseline
-> global lane -> selected-workflow value -> project/global default for
primary models, fallback models, and thinking levels.
The active default workflow remains the storage owner for backward
compatibility, while runtime resolution keeps its project baseline
distinct from lower-priority selected-workflow values. Non-model
workflow policies remain isolated to their selected workflow.
## Validation
- Core workflow/model resolution: 60 tests passed
- Engine effective settings and session resolution: 59 tests passed
- Reviewer: 85 tests passed
- Scheduler: 154 tests passed
- Heartbeat: 90 tests passed
- Settings UI: 67 tests passed
- Workspace lint and core/engine/dashboard typechecks passed
- `pnpm verify:fast` passed workspace builds, the published CLI build,
and real `/api/health` boot smoke
---
[](https://github.com/EveryInc/compound-engineering-plugin )
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added **Project workflow model lanes** to establish a project baseline
for model selection and thinking levels across workflows.
* Updated model/fallback resolution to account for task overrides,
project baselines, global lanes, and selected-workflow values.
* **Bug Fixes**
* Improved effective settings merging so project baselines are applied
correctly (including scheduled/idle and heartbeat flows) while
preserving selected-workflow provenance.
* **Documentation**
* Refreshed settings and dashboard guidance for workflow lane
inheritance and resolution precedence.
* **Tests**
* Expanded unit test coverage for lane precedence, fallback detection,
and thinking-level behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-22 08:53:31 -07:00
gsxdsm
4efa7b51c6
fix(dashboard): harden mobile board column snap direction and settle
...
Lock snap direction at finger-up from the net swipe, page only in that scroll direction, hard-jump and pin until the next touch so residual fling and CSS proximity no longer drift after settle.
2026-07-22 08:32:33 -07:00
flexi767
f21d3ce132
feat(core): support additive archived task documents ( #2375 )
...
## Summary
Re-lands the completed Fusion board task FX-005 on current upstream
`main`, stacked on #2374 (FX-004).
- adds a narrowly authorized additive publication path for archived task
documents
- preserves archived task and mission state and keeps ordinary
replacement/deletion writes rejected
- exposes retained archived current/revision reads
- requires project-scoped revision/hash CAS for publication
- maps malformed, unauthorized, missing, inconsistent, and stale states
safely
- rebases preserved dashboard drafts explicitly after CAS conflicts
## Why
Operators need to append a correction or evidence revision to an
archived task without unarchiving it or weakening ordinary archived-task
immutability.
## Dependency
This branch contains #2374 plus the eight FX-005 commits because
cross-fork PRs cannot target a fork-only base branch. After #2374 lands,
this PR should be rebased or refreshed so its diff collapses to FX-005
only.
## Validation
- PostgreSQL task-store and archived-default suites: 33/33
- dashboard route and editor suites: 321/321
- agent document tools: 22/22
- core, dashboard, and engine typechecks pass
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added optimistic concurrency controls for task document creation and
editing using revisions and content hashes.
* Added safe, authenticated append-only corrections for documents
retained on archived tasks.
* Archived documents and revision history remain available for direct
reading.
* Agent and dashboard tools now report conflicts clearly and support
explicit draft rebasing.
* **Bug Fixes**
* Prevented stale updates from overwriting newer document content.
* Preserved archived-task immutability while allowing controlled
corrections.
* **Documentation**
* Updated CLI, dashboard, storage, task-management, and agent guidance
for these workflows.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: fusion-merge-train <merge-train@topkoli.local >
Co-authored-by: Fusion <noreply@runfusion.ai >
Co-authored-by: v <v@v.speedport.ip >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-22 08:30:12 -07:00
gsxdsm
0ade15481d
FN-8477: label planning model activity logs
...
Planning activity consistently identifies its model provenance while preserving legacy log compatibility.
- Emit Planning using model markers from the planning lane.
- Accept Planning and legacy Triage markers in dashboard model resolution.
- Update documentation, regression coverage, and release metadata.
Files changed:
.changeset/fn-8477-planning-model-marker.md | 7 +++++++
docs/agents.md | 2 +-
packages/dashboard/app/components/TaskChatTab.tsx | 2 +-
.../app/components/__tests__/TaskChatTab.test.tsx | 2 +-
...skDetailModal.models-progress-workflow.test.tsx | 4 ++--
.../__tests__/WorkflowResultsTab.test.tsx | 2 +-
.../__tests__/effective-model-resolution.test.ts | 24 ++++++++++++++--------
.../app/components/effective-model-resolution.ts | 20 ++++++++++++------
packages/engine/src/__tests__/triage.test.ts | 8 ++++----
packages/engine/src/triage.ts | 8 ++++++--
10 files changed, 52 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-8477
Fusion-Task-Lineage: 7ddce64a-d378-4d08-ad63-ade1b20d4b87
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 00:30:34 -07:00
gsxdsm
fee920d366
FN-8478: open board deep tabs in task popups
...
Make board task deep-tab actions preserve their requested popup tab when task popups are enabled.
- Route Changes, Retries, and Workflow board actions through the popup preference.
- Store and refresh each popup's requested initial tab for its task and view.
- Add regression coverage, documentation, and a patch changeset.
Files changed:
.changeset/task-card-popup-deep-tabs.md | 7 +++++
docs/dashboard-guide.md | 4 +--
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 25 ++++++++++-----
.../__tests__/App.openTasksInRightSidebar.test.ts | 36 ++++++++++++----------
.../__tests__/navigation-history.test.tsx | 25 ++++++++++++++-
.../settings/sections/AppearanceSection.tsx | 4 +--
.../app/hooks/__tests__/usePoppedOutTasks.test.ts | 13 ++++++++
packages/dashboard/app/hooks/usePoppedOutTasks.ts | 15 ++++++---
9 files changed, 97 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-8478
Fusion-Task-Lineage: e12452c0-24d5-4f19-b50c-39526d72d7ab
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 00:22:42 -07:00
gsxdsm
cd51e1c0d8
FN-8471: add color theme filtering
...
Add a searchable shared color-theme picker for Settings and Command Center.
- Filter translated theme labels case- and diacritic-insensitively
- Preserve keyboard navigation, focus management, and selection behavior
- Document the picker and add a minor release changeset
Files changed:
.changeset/fn-8471-theme-filter.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/ThemeDropdown.css | 32 ++++
.../dashboard/app/components/ThemeDropdown.tsx | 172 +++++++++++++++------
.../components/__tests__/ThemeDropdown.test.tsx | 106 +++++++++++++
.../components/__tests__/ThemeSelector.test.tsx | 1 +
.../__tests__/CommandCenterControls.test.tsx | 1 +
7 files changed, 277 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-8471
Fusion-Task-Lineage: 1f73dfb8-18bb-48e6-a3ed-0ee3a200cf03
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 23:03:35 -07:00
gsxdsm
c94920d885
FN-8466: allow reads of advertised plugin skills
...
Allow isolated worktree sessions to read only host-advertised plugin skill roots.
- Normalize additional skill paths once for resource loading and boundary checks
- Permit read, glob, and grep while keeping write, edit, and Bash worktree-bound
- Document the boundary and cover root normalization and access restrictions
Files changed:
.changeset/fn-8466-skill-path-read-boundary.md | 7 ++
docs/agents.md | 4 +
.../src/__tests__/pi-create-fn-agent.test.ts | 108 +++++++++++++++++++++
packages/engine/src/pi.ts | 75 +++++++++++---
4 files changed, 183 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-8466
Fusion-Task-Lineage: ff6566be-803d-48b8-8550-aa1bfe080fed
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 19:46:29 -07:00
gsxdsm
859475d0bd
FN-8467: align project plugin enablement state
...
Keep project-scoped plugin enablement consistent across dashboard and loaders.
- Resolve plugin loaders from the requested project's store and reuse scoped fallback loaders.
- Preserve authoritative enable and disable responses during dashboard refresh races.
- Add route and manager regression coverage, documentation, and a patch changeset.
Files changed:
.../fn-8467-plugin-enable-state-consistency.md | 7 ++
docs/multi-project.md | 1 +
docs/plugin-management.md | 4 +-
.../dashboard/app/components/PluginManager.tsx | 36 ++++--
.../__tests__/PluginManager.toggle.test.tsx | 38 ++++++
.../src/__tests__/plugin-routes.routes.test.ts | 134 ++++++++++++++++++---
.../src/routes/register-plugins-automation.ts | 118 +++++++++++++-----
7 files changed, 281 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-8467
Fusion-Task-Lineage: 697a0783-9771-4140-bc82-53491a2d0b70
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 19:35:03 -07:00
gsxdsm
746d33e7e6
FN-8468: prevent duplicate plugin startup loads
...
Ensure plugins share one process-wide startup lifecycle.
- Coalesce concurrent host and engine plugin loads into a single onLoad invocation.
- Synchronize reload and stop operations across participating loaders.
- Add regression coverage and document single-load lifecycle behavior.
Files changed:
.changeset/fn-8468-plugin-single-onload.md | 7 +
docs/PLUGIN_AUTHORING.md | 1 +
.../__tests__/plugin-loader-single-load.test.ts | 126 +++++++++++++
packages/core/src/plugin-loader.ts | 194 +++++++++++++++++++--
.../__tests__/plugin-startup-single-load.test.ts | 59 +++++++
5 files changed, 370 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8468
Fusion-Task-Lineage: a211f445-d236-44de-837b-28b9e15c7c52
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 19:28:35 -07:00
gsxdsm
51fc34f585
FN-8465: align skill toggles with canonical paths
...
Align session skill filtering with Skills-view path identities.
- Match session inclusions, exclusions, and diagnostics by skills-relative body path.
- Ignore stale flat toggle keys for categorized skills and cover the display/session invariant.
- Document the behavior and add a patch changeset.
Files changed:
.../fn-8465-legacy-skill-toggle-path-match.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../legacy-flat-skill-toggle-session-divergence.md | 41 ++++++++
.../engine/src/__tests__/skill-resolver.test.ts | 73 ++++++++++++++
packages/engine/src/skill-resolver.ts | 105 ++++++++++++++-------
5 files changed, 191 insertions(+), 37 deletions(-)
Fusion-Task-Id: FN-8465
Fusion-Task-Lineage: 042fc7f4-08a3-42f4-9a6f-52f066d585e8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 19:17:20 -07:00
gsxdsm
648971634a
FN-8461: suppress spurious workflow skill-load warnings
...
Prevent optional CE configuration from producing warnings when a requested plugin skill is discoverable.
- Merge plugin skill body directories with the optional CE discovery root
- Warn only when the named workflow skill lacks every viable discovery source
- Cover plugin, CE-namespaced, and unrelated-skill discovery cases
Files changed:
.changeset/fn-8461-skill-load-warning.md | 7 +
docs/workflow-steps.md | 8 +-
.../__tests__/ce-workflow-step-executor.test.ts | 149 ++++++++++++++++++++-
.../engine/src/__tests__/executor-test-helpers.ts | 1 +
packages/engine/src/executor.ts | 53 ++++++--
5 files changed, 200 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-8461
Fusion-Task-Lineage: ef743df4-8bd2-44e6-9498-f6448738d6dc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 19:05:48 -07:00
gsxdsm
2bf3d81a76
fix(dashboard): restore accurate executing/total column headers
...
Show live agents over card count (e.g. 3/4) using the shared Running
predicate so unpaused WIP counts without sessionFile, and document the
badge semantics for operators.
2026-07-21 18:59:52 -07:00
gsxdsm
771fe71760
fix(dashboard): restore board card counts and WIP Running totals
...
FN-8453 column headers showed active/total (always 0/N on Todo) and Running
required sessionFile, which is not a DB/board field, so footer capacity
undercounted live WIP. Show lane card totals again and count unpaused WIP as
Running without durable session/checkout evidence.
2026-07-21 18:52:59 -07:00
gsxdsm
d486bf49dd
FN-8456: add Dawn dashboard color theme
...
Add a persisted Dawn indigo-and-amber color theme across dashboard and desktop first paint.
- Register Dawn in theme persistence, selector metadata, and pre-hydration validation.
- Define dark and light Dawn tokens plus mode-aware selector swatches.
- Cover persistence, theme registries, token completeness, and selector previews with tests.
Files changed:
.changeset/fn-8456-dawn-theme.md | 7 ++
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 2 +-
.../core/src/__tests__/global-settings.test.ts | 8 ++
packages/core/src/types/execution-and-ui.ts | 2 +
.../dashboard/app/__tests__/dawn-theme.test.ts | 98 ++++++++++++++++++++++
.../dashboard/app/components/ThemeSelector.css | 14 ++++
.../components/__tests__/ThemeDropdown.test.tsx | 22 ++---
.../components/__tests__/ThemeSelector.test.tsx | 2 +-
.../__tests__/CommandCenterControls.test.tsx | 7 +-
packages/dashboard/app/components/themeOptions.ts | 1 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 12 +++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 86 ++++++++++++++++++-
packages/desktop/src/renderer/index.html | 1 +
15 files changed, 248 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-8456
Fusion-Task-Lineage: 44d9eb05-210d-4be8-8d35-c66ac4857194
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 18:33:22 -07:00
gsxdsm
eef5eb751e
FN-8453: unify concurrency accounting and indicators
...
Unify live-agent capacity accounting across engine and dashboard.
- Derive Running and Waiting from workflow traits and durable agent liveness.
- Apply unified limits to planner, executor, and merge admission while updating dashboard indicators.
- Remove duplicate concurrency controls and document the unified operator model.
Files changed:
.changeset/fn-8453-unified-concurrency.md | 7 +
docs/agent-tool-surface-full-loop.md | 4 +-
docs/architecture.md | 2 +-
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 4 +-
.../skill/fusion/references/fusion-capabilities.md | 4 +-
.../core/src/__tests__/live-agent-count.test.ts | 91 ++++----
packages/core/src/index.gate.ts | 6 +
packages/core/src/index.ts | 6 +
packages/core/src/live-agent-count.ts | 107 ++++++---
packages/dashboard/app/App.tsx | 28 ++-
packages/dashboard/app/api/board-workflows.ts | 2 +
packages/dashboard/app/components/Column.tsx | 6 +-
.../dashboard/app/components/EngineControlMenu.tsx | 26 ---
.../dashboard/app/components/ExecutorStatusBar.tsx | 38 ++-
.../dashboard/app/components/SettingsModal.tsx | 1 -
.../app/components/__tests__/Column.test.tsx | 6 +-
.../__tests__/EngineControlMenu.test.tsx | 10 +-
.../__tests__/ExecutorStatusBar.test.tsx | 32 ++-
.../command-center/CommandCenterControls.tsx | 26 ---
.../settings/sections/SchedulingSection.search.ts | 9 -
.../settings/sections/SchedulingSection.tsx | 13 --
.../app/hooks/__tests__/useExecutorStats.test.ts | 12 +-
packages/dashboard/app/hooks/useExecutorStats.ts | 50 ++--
.../src/__tests__/project-store-resolver.test.ts | 11 +-
packages/dashboard/src/project-store-resolver.ts | 14 +-
.../register-config-mcp-pi-settings-routes.ts | 3 +-
packages/engine/src/__tests__/concurrency.test.ts | 123 +++++++++-
.../engine/src/__tests__/project-engine.test.ts | 34 +++
packages/engine/src/__tests__/triage.test.ts | 7 +-
packages/engine/src/concurrency.ts | 207 ++++++++++++++++-
packages/engine/src/project-engine.ts | 151 ++++++++++--
packages/engine/src/scheduler.ts | 82 ++++++-
packages/engine/src/triage.ts | 254 +++++++++++++--------
.../lib/dashboard-browser-safe-core-modules.json | 5 +
35 files changed, 991 insertions(+), 394 deletions(-)
Fusion-Task-Id: FN-8453
Fusion-Task-Lineage: 12cfa5df-675d-4fce-b17e-932376544239
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 15:30:31 -07:00
gsxdsm
0908e75290
FN-8455: add Calm dashboard color theme
...
Add a persisted Calm theme with slate, sage, and misty light palettes.
- Register Calm across core settings, dashboard selectors, and web/desktop first-paint validators.
- Define Calm theme tokens and selector swatches for dark and light modes.
- Cover persisted selection, previews, and bootstrap validation with tests.
- Document the new theme and add a minor release changeset.
Files changed:
.changeset/fn-8455-calm-theme.md | 7 ++
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/global-settings.test.ts| 8 ++
packages/core/src/types/execution-and-ui.ts | 2 +
packages/dashboard/app/__tests__/calm-theme.test.ts| 98 ++++++++++++++++++++++
packages/dashboard/app/components/ThemeSelector.css| 14 ++++
packages/dashboard/app/components/__tests__/ThemeDropdown.test.tsx | 22 ++---
packages/dashboard/app/components/__tests__/ThemeSelector.test.tsx | 2 +-
packages/dashboard/app/components/command-center/__tests__/CommandCenterControls.test.tsx | 2 +-
packages/dashboard/app/components/themeOptions.ts | 1 +
packages/dashboard/app/hooks/__tests__/useTheme.test.ts | 12 +++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 86 ++++++++++++++++++-
packages/desktop/src/renderer/index.html | 1 +
15 files changed, 245 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8455
Fusion-Task-Lineage: c2c4624e-7012-491d-bd79-d3de570018f7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 15:04:07 -07:00
gsxdsm
527f734ad4
FN-8454: add Aurora dashboard theme
...
Add the Aurora color theme across dashboard and desktop theme surfaces.
- Register Aurora as a selectable global theme with matching UI styles and metadata
- Load Aurora theme data in dashboard and desktop entry points
- Document the theme and cover selection, token, and settings behavior
Files changed:
.changeset/fn-8454-aurora-theme.md | 7 ++
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 2 +-
.../core/src/__tests__/global-settings.test.ts | 8 ++
packages/core/src/types/execution-and-ui.ts | 2 +
.../dashboard/app/__tests__/aurora-theme.test.ts | 98 ++++++++++++++++++++++
.../dashboard/app/components/ThemeSelector.css | 14 ++++
.../components/__tests__/ThemeDropdown.test.tsx | 51 ++++++++++-
.../components/__tests__/ThemeSelector.test.tsx | 2 +-
.../__tests__/CommandCenterControls.test.tsx | 2 +-
packages/dashboard/app/components/themeOptions.ts | 1 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 12 +++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 91 ++++++++++++++++++++
packages/desktop/src/renderer/index.html | 1 +
15 files changed, 290 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8454
Fusion-Task-Lineage: cbae0854-b884-4744-a2fa-f738a71ceb32
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 13:28:24 -07:00
gsxdsm
83209e64dc
fix(workflows): align stages with board columns ( #2378 )
...
## Summary
The Coding (Ideas) workflow now behaves like the board it presents:
Ideas stays inert, Todo owns planning and plan review, In progress owns
implementation, and In review owns code review and merge. The restored
preset is intentionally limited to that five-stage path, while the
existing Coding workflow remains unchanged.
Workflow execution now suspends at Todo→In progress instead of running
the implementation node early. A durable, single-owner continuation
records the exact resume node and survives process restarts; the
scheduler remains the only component allowed to admit the task into WIP.
Disabled optional review groups traverse the same boundary without
invoking a reviewer, avoiding the prior stuck-task behavior.
Workflow validation also rejects capacity holds with no reachable WIP
destination, so deterministic lifecycle deadlocks fail at authoring time
rather than after a task is running.
Session-settled decisions carried from planning: columns are execution
invariants, scheduler-owned WIP admission is preserved, the existing
Coding (Ideas) preset is restored and simplified, and invalid release
topology is rejected (user-approved).
## Validation
- `pnpm lint`
- `pnpm verify:fast`
- `pnpm test:gate` (296 engine, 128 PostgreSQL core, and 63 CI-shape
tests)
- Focused workflow lifecycle tests (106 assertions)
- PostgreSQL regression coverage proves atomic continuation replacement
and database rejection of a second active owner
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added durable, resumable workflow execution across capacity boundaries
(including explicit suspend/resume at the correct node).
* Introduced Todo “plan review” workflow continuations and automated
planning/capacity draining.
* Restored Coding (Ideas) as a selectable built-in and updated its lane
placement; improved optional-step group enablement support.
* **Bug Fixes**
* User moves back to Todo now cancels active workflow continuations.
* Rejected workflow boundary transitions now surface as errors (instead
of silently continuing).
* Workflows with undriveable capacity-hold configurations are now
rejected.
* **Tests / Data**
* Expanded coverage for workflow suspension, continuations, and
continuation replacement; updated database schema to persist
continuation metadata and enforce single active continuation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-21 12:17:47 -07:00
gsxdsm
5f0502e166
FN-8452: reject invalid update flags and announce beta releases
...
Make update commands fail clearly on invalid arguments while helping stable users discover newer beta releases.
- Parse update and upgrade options strictly, rejecting unknown, duplicate, and malformed flags before running an update
- Show a live-registry beta availability notice for stable human-readable output without affecting JSON or cached results
- Add CLI coverage, beta bootstrap documentation, and a patch changeset
Files changed:
.changeset/fn-8452-update-unknown-flags.md | 7 +
RELEASING.md | 2 +-
docs/cli-reference.md | 4 +
docs/getting-started.md | 2 +
packages/cli/src/__tests__/bin-update-args.test.ts | 75 ++++++++++
packages/cli/src/bin.ts | 25 +---
packages/cli/src/commands/__tests__/update.test.ts | 44 ++++++
packages/cli/src/commands/update.ts | 162 +++++++++++++++++++--
8 files changed, 285 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-8452
Fusion-Task-Lineage: b29a1ce5-5a40-40ec-ac18-07107fa18344
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-21 10:30:19 -07:00
gsxdsm
d83fae3fea
fix(FN-8446): keep Copilot banner dismissed
...
Preserve the browser dismissal across successful Copilot login events while retaining re-arm behavior for other OAuth providers.
2026-07-20 22:58:22 -07:00
gsxdsm
606c320c52
fix(FN-8442): make planning generation durable and detailed
...
Generate a reviewable initial plan before clarification, persist generation purpose across refreshes, and surface concrete changes and acceptance criteria with focused refinement choices.
2026-07-20 16:00:11 -07:00
gsxdsm
5dd62fe548
FN-8446: preserve dismissed OAuth re-login banners
...
Keep OAuth re-login dismissals sticky until the matching provider successfully authenticates.
- Preserve dismissed provider IDs across transient healthy auth-status responses.
- Re-arm only the provider identified by an OAuth re-login success event.
- Add Copilot and multi-provider regression coverage plus operator documentation.
- Add a patch changeset for the banner behavior fix.
Files changed:
.changeset/fn-8446-oauth-relogin-dismiss-sticky.md | 7 ++
docs/dashboard-guide.md | 2 +
.../app/components/OAuthReloginBanner.tsx | 30 +++---
.../__tests__/OAuthReloginBanner.test.tsx | 113 +++++++++++++++++++--
4 files changed, 128 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-8446
Fusion-Task-Lineage: 30574bbc-3efb-4f72-956b-b249d24251c9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 15:41:41 -07:00
gsxdsm
36b3180962
FN-8442: redesign planning mode as sequential Q&A
...
Guide planning through sequential question-and-answer turns before task creation.
- Add plan review, refinement, validation, creation retry, and idempotent task handoff states
- Atomically claim planning-session task creation and reconcile persisted task links
- Replace retired multi-pane planning UI and consolidate focused flow coverage
- Document the sequential planning workflow and mobile behavior
Files changed:
.changeset/fn-8442-planning-sequential-qa.md | 7 +
MOBILE.md | 2 +-
docs/dashboard-guide.md | 9 +-
packages/core/src/async-ai-session-store.ts | 82 +-
packages/core/src/index.ts | 4 +
packages/core/src/types.ts | 5 +
packages/dashboard/app/api/legacy.ts | 4 +-
.../dashboard/app/components/PlanningModeModal.css | 178 +-
.../dashboard/app/components/PlanningModeModal.tsx | 317 +-
.../__tests__/PlanningModeModal.initial.test.tsx | 993 +----
.../PlanningModeModal.planning-flow.test.tsx | 4377 +-------------------
.../PlanningModeModal.ui-interactions.test.tsx | 1276 +-----
.../__tests__/planning-e2e-plan-creation.test.ts | 25 +-
.../dashboard/src/__tests__/planning-infinite-interview.test.ts | 44 +-
.../src/__tests__/routes-planning.test.ts | 119 +-
packages/dashboard/src/ai-session-store.ts | 33 +
packages/dashboard/src/planning.ts | 140 +-
.../src/routes/register-planning-subtask-routes.ts | 132 +-
18 files changed, 649 insertions(+), 7098 deletions(-)
Fusion-Task-Id: FN-8442
Fusion-Task-Lineage: da2f335f-b1c9-411a-8575-31db20a2b8d5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 14:59:22 -07:00
gsxdsm
8c347981e4
FN-8439: align Planning Mode with workflow triage prompts
...
Planning Mode now uses the selected workflow's triage planning template with its interview adapter.
- Resolve planning prompts from workflow seams and explicit overrides
- Pass and persist the selected workflow for planning sessions
- Document the prompt behavior and cover prompt and UI request flow
Files changed:
.../fn-8439-planning-prompt-triage-template.md | 7 ++
docs/dashboard-guide.md | 2 +
packages/core/src/prompt-overrides.ts | 42 +-----------
packages/dashboard/app/api/legacy.ts | 3 +-
.../dashboard/app/components/PlanningModeModal.tsx | 3 +-
.../PlanningModeModal.planning-flow.test.tsx | 10 +++
packages/dashboard/app/utils/builtinPrompts.ts | 4 +-
.../__tests__/planning-prompt-resolution.test.ts | 40 ++++++++++++
packages/dashboard/src/planning.ts | 74 ++++++++++++++++++----
.../src/routes/register-planning-subtask-routes.ts | 18 ++++--
10 files changed, 142 insertions(+), 61 deletions(-)
Fusion-Task-Id: FN-8439
Fusion-Task-Lineage: 1680a0cd-27c8-47f1-8cd2-de808d1404cf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 13:48:04 -07:00
gsxdsm
1d4e8afa7b
FN-8444: include planning time in task metrics
...
Track active planning time alongside execution time for costs, analytics, and task displays.
- Persist planning timing state across task lifecycle transitions and recovery
- Include planning activity in token cost, analytics, and dashboard timing displays
- Add PostgreSQL migration support using the configured migration directory
Files changed:
.changeset/fn-8444-planning-time-cost.md | 7 +++
docs/dashboard-guide.md | 3 ++
docs/task-management.md | 5 ++
packages/core/src/index.ts | 1 +
.../migrations/0029_planning_active_timing.sql | 3 ++
packages/core/src/postgres/schema-applier.ts | 14 ++++-
packages/core/src/postgres/schema/project.ts | 2 +
packages/core/src/productivity-analytics.ts | 29 +++++-----
packages/core/src/store.ts | 2 +-
.../core/src/task-store/archive-lifecycle-2.ts | 2 +
packages/core/src/task-store/moves.ts | 7 +++
packages/core/src/task-store/persistence.ts | 4 ++
packages/core/src/task-store/remaining-ops-2.ts | 2 +-
packages/core/src/task-store/serialization.ts | 7 +++
packages/core/src/task-store/task-row-mappers.ts | 2 +-
packages/core/src/task-store/task-update.ts | 10 ++++
packages/core/src/task-timing.ts | 35 ++++++++++++
packages/core/src/types.ts | 12 +++++
packages/dashboard/app/components/TaskCard.tsx | 13 ++---
.../app/components/TaskTokenStatsPanel.tsx | 6 ++-
.../app/components/__tests__/TaskCard.test.tsx | 17 ++++++
.../app/utils/__tests__/taskTiming.test.ts | 9 +++-
packages/dashboard/app/utils/taskTiming.ts | 14 +++++
packages/dashboard/app/utils/taskTokenCost.ts | 2 +
.../dashboard/src/task-planner-chat-metrics.ts | 14 ++++-
packages/engine/src/__tests__/self-healing.test.ts | 61 +++++++++++++++++++++
packages/engine/src/executor.ts | 50 +++++++++++++++++
packages/engine/src/runtimes/in-process-runtime.ts | 3 ++
packages/engine/src/self-healing.ts | 62 ++++++++++++++++++++++
packages/engine/src/triage.ts | 10 ++++
packages/i18n/locales/en/app.json | 2 +-
packages/i18n/locales/es/app.json | 2 +-
packages/i18n/locales/fr/app.json | 2 +-
packages/i18n/locales/ko/app.json | 2 +-
packages/i18n/locales/zh-CN/app.json | 2 +-
packages/i18n/locales/zh-TW/app.json | 2 +-
36 files changed, 384 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-8444
Fusion-Task-Lineage: 0178e0a7-3018-4ef4-be9b-6de5f964fb58
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 13:40:50 -07:00
gsxdsm
625dbc6c5f
FN-8441: separate planning artifacts from task prompts
...
Persist validated planning output as plan.md while keeping task prompts concise.
- Add a reusable plan.md formatter and export it through core entrypoints.
- Store plan and original-description task documents for planning-created tasks and subtasks.
- Direct triage to derive PROMPT.md from the plan artifact and cover the handoff with tests and documentation.
Files changed:
.changeset/fn-8441-separate-plan-from-prompt.md | 7 ++
docs/dashboard-guide.md | 3 +
.../core/src/__tests__/planning-plan-md.test.ts | 33 ++++++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/planning-plan-md.ts | 42 +++++++
.../__tests__/planning-e2e-plan-creation.test.ts | 62 +----------
.../src/__tests__/routes-planning.test.ts | 122 ++++++++++++---------
packages/dashboard/src/planning.ts | 12 +-
.../src/routes/register-planning-subtask-routes.ts | 61 ++++++++++-
packages/engine/src/__tests__/triage.test.ts | 17 +++
packages/engine/src/triage.ts | 43 ++++++--
12 files changed, 278 insertions(+), 126 deletions(-)
Fusion-Task-Id: FN-8441
Fusion-Task-Lineage: e6092bf8-9f59-4b6d-abd1-aaa4a566677a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 13:03:13 -07:00
gsxdsm
f9c1620c1e
FN-8438: generate and refine running plans
...
Planning Mode now generates an initial work-product plan and refines it after every answer.
- Prompt both initial agent paths to create a running plan before asking questions
- Provide meaningful fallback summaries and deliverables when model plan fields are absent
- Cover streaming and non-streaming initial-plan behavior and document the refinement contract
Files changed:
.changeset/fn-8438-running-plan-generate-refine.md | 7 ++
docs/dashboard-guide.md | 3 +-
.../__tests__/planning-infinite-interview.test.ts | 76 ++++++++++++++++++++--
packages/dashboard/src/planning.ts | 58 ++++++++++++-----
4 files changed, 122 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-8438
Fusion-Task-Lineage: 29e155ec-480e-462a-be3d-07ac02d7236b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 12:50:06 -07:00
gsxdsm
df488f25ea
FN-8443: fix chat plugin skill loading
...
Forward enabled plugin skill body paths into chat sessions.
- Pass resolved plugin skill directories through dashboard chat, QuickChat, and room responder sessions.
- Preserve additional skill paths in the runtime session factory and cover both forwarding layers.
- Document the chat skill contract and add a patch changeset.
Files changed:
.changeset/fn-8443-chat-plugin-skill-paths.md | 7 +++
docs/agents.md | 2 +-
packages/dashboard/src/__tests__/chat-manager.test.ts | 60 ++++++++++++++++++++--
packages/dashboard/src/chat.ts | 12 +++--
packages/engine/src/__tests__/agent-session-helpers.test.ts | 37 +++++++++++++
packages/engine/src/agent-session-helpers.ts | 5 ++
6 files changed, 114 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-8443
Fusion-Task-Lineage: 92c4e32c-8c94-4e8e-ad62-a5dae2fb9dc3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 12:32:01 -07:00
gsxdsm
8c01cc7c7a
FN-8437: restore Planning Mode sessions after navigation
...
Persist active Planning interviews across embedded navigation while honoring explicit dismissal.
- Store the active Planning session per project and restore it through the existing session loader.
- Clear the saved active session for dismissals and terminal session actions.
- Cover leave-and-return, completed-away, fresh-plan, and dismissed-error flows; document the behavior.
- Add a patch changeset for the Planning session recovery fix.
Files changed:
.changeset/fn-8437-planning-leave-return-restore.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/PlanningModeModal.tsx | 51 ++++++++++++-
packages/dashboard/app/components/__tests__/PlanningModeModal.planning-flow.test.tsx | 86 ++++++++++++++++++++++
packages/dashboard/app/hooks/__tests__/modalPersistence.test.ts | 18 +++++
packages/dashboard/app/hooks/modalPersistence.ts | 17 +++++
packages/dashboard/app/utils/__tests__/projectStorage.test.ts | 3 +-
packages/dashboard/app/utils/projectStorage.ts | 1 +
8 files changed, 180 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8437
Fusion-Task-Lineage: 892aacb6-139e-4487-a40c-1bedd51237ea
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 12:09:23 -07:00
gsxdsm
3962222863
FN-8424: route CLI chat replies through inbox mail
...
Route agent replies to the correct CLI or dashboard mailbox with bounded polling deadlines.
- add reply-parent routing validation and CLI/dashboard inbox selection
- preserve named mailbox conversations while handling per-message reply deadlines
- document chat and inbox interfaces and cover deadline and routing regressions
Files changed:
.changeset/fn-8424-cli-chat-reply-routing.md | 7 +
docs/agents.md | 20 +-
docs/cli-reference.md | 29 +-
packages/cli/src/bin.ts | 15 +-
packages/cli/src/commands/__tests__/chat.test.ts | 262 +++++++++---------
.../cli/src/commands/__tests__/message.test.ts | 12 +
packages/cli/src/commands/chat.ts | 293 ++++++++++++---------
packages/cli/src/commands/message.ts | 18 +-
...tools-send-message-recipient-validation.test.ts | 86 +++++-
packages/engine/src/agent-heartbeat-prompts.ts | 8 +-
packages/engine/src/agent-tools.ts | 71 +++--
11 files changed, 523 insertions(+), 298 deletions(-)
Fusion-Task-Id: FN-8424
Fusion-Task-Lineage: 28d0ef88-717e-4f39-8880-64d2fef94706
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 11:26:08 -07:00
gsxdsm
00891c225f
FN-8440: preserve acknowledged duplicate decisions
...
Keep an operator's same-canonical duplicate decision durable across triage and maintenance reprocessing.
- Preserve acknowledged Keep decisions for the same canonical while prompting for a new canonical.
- Clear acknowledged duplicate markers without overriding manual pauses.
- Export the acknowledgement helper through both core barrels for engine gate loading.
- Add regression coverage, operator documentation, and a patch changeset.
Files changed:
.changeset/fn-8440-persist-duplicate-decision.md | 7 ++
docs/task-management.md | 2 +
.../core/src/__tests__/duplicate-intake.test.ts | 16 +++++
packages/core/src/duplicate-intake.ts | 27 ++++++--
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
.../explicit-duplicate-marker-sweep.test.ts | 59 +++++++++++++++++
.../triage-explicit-duplicate-marker.test.ts | 77 ++++++++++++++++++++--
packages/engine/src/self-healing.ts | 21 +++++-
packages/engine/src/triage.ts | 21 ++++++
10 files changed, 221 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-8440
Fusion-Task-Lineage: 966d7c09-8651-463c-840d-707f2bafd2a7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 11:12:54 -07:00
gsxdsm
e43dffad52
FN-8434: preserve evolving running plans
...
Keep Planning Mode's running plan as an evolving work product alongside every interview question.
- Carry model-authored running-plan updates through question responses without ending the interview
- Merge partial plan updates with prior title, deliverables, dependencies, size, and priority
- Derive safe fallback summaries without turning interview questions into deliverables
- Cover running-plan persistence and document the contract
Files changed:
.changeset/fn-8434-running-plan-content.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/core/src/types.ts | 6 +
.../PlanningModeModal.planning-flow.test.tsx | 11 +-
.../__tests__/planning-e2e-plan-creation.test.ts | 17 ++-
.../__tests__/planning-infinite-interview.test.ts | 91 +++++++++++-
packages/dashboard/src/planning.ts | 163 ++++++++++++++-------
7 files changed, 232 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-8434
Fusion-Task-Lineage: cdf1c4ff-fd33-4e4a-84f4-b54a5e0a9cf8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 10:33:59 -07:00
gsxdsm
9db0ffc1f9
FN-8425: route CLI chat through agent inbox
...
Route CLI chat messages through durable, named agent mailbox conversations.
- Add conversation IDs and parsing for CLI chat sessions.
- Filter CLI chat history and replies by mailbox conversation identity.
- Surface conversation IDs to agents and document the inbox-based transport.
Files changed:
.changeset/fn-8425-cli-chat-conversation.md | 7 +
docs/agents.md | 11 +-
docs/cli-reference.md | 15 +-
packages/cli/src/__tests__/bin-chat-args.test.ts | 34 +++++
packages/cli/src/bin.ts | 45 ++----
packages/cli/src/commands/__tests__/chat.test.ts | 162 +++++++++++++++++++++
packages/cli/src/commands/chat.ts | 132 +++++++++++++++--
packages/core/src/types/messages.ts | 6 +
.../__tests__/agent-tools-read-messages.test.ts | 48 ++++++
packages/engine/src/agent-tools.ts | 10 +-
10 files changed, 418 insertions(+), 52 deletions(-)
Fusion-Task-Id: FN-8425
Fusion-Task-Lineage: 5091f49f-1f12-4ff7-8d21-48f008cf984e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 10:20:41 -07:00
gsxdsm
76822d8c4c
FN-8432: document responsive Planning Mode navigation
...
Clarify and verify tablet tab navigation and mobile list-first Planning Mode behavior.
- Add tablet progressive-tab coverage across interview states.
- Assert mobile saved-session list-first navigation and plan visibility.
- Update mobile and dashboard guidance with the intentional session-selection flow.
- Add a patch changeset for the Planning Mode fix.
Files changed:
.../fn-8432-planning-tablet-mobile-plan-layout.md | 7 ++++
MOBILE.md | 2 +-
docs/dashboard-guide.md | 2 +-
.../PlanningModeModal.planning-flow.test.tsx | 43 +++++++++++++++++++++-
.../PlanningModeModal.ui-interactions.test.tsx | 25 +++++++++++++
5 files changed, 75 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8432
Fusion-Task-Lineage: e412069e-87e2-4a61-9556-6908f86b56c5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 10:07:44 -07:00
gsxdsm
087fd8f881
FN-8429: fix live activity snapshot metrics
...
Keep Live activity counts current and project-scoped rather than date-range derived.
- Exclude soft-deleted tasks from live board column totals
- Share SSE-refreshed live snapshots between Overview and Mission Control
- Count all in-progress aliases and current active sessions/runs
- Cover live refresh, date-range independence, and deleted-task behavior
Files changed:
docs/dashboard-guide.md | 2 +-
.../command-center-remaining-analytics.pg.test.ts | 12 ++-
packages/core/src/command-center-live.ts | 15 +++-
.../components/command-center/CommandCenter.tsx | 43 +++-------
.../command-center/MissionControlPanel.tsx | 46 +++++++----
.../__tests__/CommandCenter.test.tsx | 91 ++++++++++++++++++----
.../command-center/liveSnapshotMetrics.ts | 32 ++++++++
7 files changed, 174 insertions(+), 67 deletions(-)
Fusion-Task-Id: FN-8429
Fusion-Task-Lineage: a29a92a1-1d27-4927-9e19-9c42e66a0674
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:57:38 -07:00
gsxdsm
bd558462ed
FN-8427: restore mobile planning session navigation
...
Restore a full-pane saved-session destination for compact Planning Mode.
- Unmount the running-plan pane while mobile and tablet session lists are open.
- Keep Back and Sessions available from active, completed, and new planning surfaces.
- Cover compact navigation behavior and document the mobile interaction.
Files changed:
.../fn-8427-planning-mobile-session-list-nav.md | 7 ++
MOBILE.md | 2 +-
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/PlanningModeModal.css | 56 +++++++++++++++-
.../dashboard/app/components/PlanningModeModal.tsx | 33 ++++++---
.../__tests__/PlanningModeModal.css.test.ts | 5 ++
.../PlanningModeModal.ui-interactions.test.tsx | 78 ++++++++++++++++++++++
7 files changed, 167 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-8427
Fusion-Task-Lineage: 6664d075-0614-4b5a-ba36-34a0ec6a20a3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:51:26 -07:00
gsxdsm
8993e912d2
FN-8426: adapt Planning Mode for compact layouts
...
Make Planning Mode usable on mobile, tablet, and short-height layouts.
- Collapse compact Planning interviews into selectable question, plan, and history surfaces.
- Keep Sessions navigation synchronized so returning from the session list restores a visible interview pane.
- Document and test mobile, tablet, and short-landscape behavior.
Files changed:
.../fn-8426-planning-mobile-tablet-layout.md | 7 ++
MOBILE.md | 2 +-
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/PlanningModeModal.css | 94 ++++++++++++++++++++--
.../dashboard/app/components/PlanningModeModal.tsx | 51 +++++++++++-
.../__tests__/PlanningModeModal.css.test.ts | 17 ++++
.../PlanningModeModal.planning-flow.test.tsx | 36 +++++++++
.../__tests__/PlanningModeModal.test-helpers.ts | 23 ++++++
8 files changed, 220 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-8426
Fusion-Task-Lineage: 489d6f92-326c-4780-bc85-d28967c7ab35
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:16:12 -07:00
gsxdsm
104bf69b3b
FN-8401: preserve same-agent duplicates across create paths
...
Unify same-agent duplicate intake so live duplicates remain visible and sticky tombstones block recreation on every backend.
- Route SQLite and backend creation through one duplicate-intake resolver
- Flag new live duplicates by default; archive only the new task when explicitly enabled
- Include archived soft-deletes in sticky tombstone matching and cover the backend-safe read
- Document the cross-backend duplicate and resurrection policy
Files changed:
.changeset/fn-8401-same-agent-intake.md | 7 +
docs/architecture.md | 2 +-
docs/settings-reference.md | 2 +-
docs/task-management.md | 8 +-
.../__tests__/same-agent-duplicate-intake.test.ts | 129 ++++++++++++
packages/core/src/task-store/remaining-ops-2.ts | 50 +----
packages/core/src/task-store/task-creation.ts | 220 ++++++++-------------
7 files changed, 233 insertions(+), 185 deletions(-)
Fusion-Task-Id: FN-8401
Fusion-Task-Lineage: 2efa998e-a27d-4013-b42e-e44b7e2316fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:01:39 -07:00
gsxdsm
8166c80bad
FN-8420: keep Planning Mode interviews open until validation
...
Keep the Planning Mode workspace active until the operator explicitly validates its running plan.
- Preserve the answered-question, current-question, and running-plan panes through stream updates and recoverable states.
- Require durable validation before exposing terminal summaries and task creation actions.
- Make every answer request one new high-impact question and update Planning Mode guidance, coverage, and release notes.
Files changed:
.../fn-8420-planning-mode-user-validation.md | 7 +
docs/dashboard-guide.md | 6 +-
docs/settings-reference.md | 2 +-
.../dashboard/app/components/PlanningModeModal.tsx | 163 +++++++++++++--------
.../__tests__/PlanningModeModal.initial.test.tsx | 20 ++-
.../PlanningModeModal.planning-flow.test.tsx | 99 +++++++++----
.../PlanningModeModal.ui-interactions.test.tsx | 14 ++
.../app/planning-browser-e2e-fixture.html | 5 +
.../dashboard/app/planning-browser-e2e-fixture.tsx | 131 +++++++++++++++++
.../src/__tests__/planning-browser-e2e.test.ts | 115 +++++++++++++++
.../__tests__/planning-infinite-interview.test.ts | 2 +
.../planning-interview-formatters.test.ts | 8 +
packages/dashboard/src/planning.ts | 16 +-
13 files changed, 485 insertions(+), 103 deletions(-)
Fusion-Task-Id: FN-8420
Fusion-Task-Lineage: af88729b-98c1-4141-bad3-a17ddb497181
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 02:01:58 -07:00
gsxdsm
5af53bc94a
FN-8422: fix Fusion MCP bridge packaging and model markers
...
Ensure Grok and Claude ACP sessions report usable custom-tool bridge outcomes and model labels.
- Copy the MCP schema server into runtime build output and fail custom-tool setup with stable diagnostics.
- Record bridge failure metadata safely and normalize ACP string model markers.
- Add bridge smoke coverage, adapter regressions, documentation, and a patch changeset.
Files changed:
.changeset/fn-8422-mcp-bridge.md | 7 ++++
docs/grok-cli-contract.md | 8 +++++
.../src/__tests__/agent-session-helpers.test.ts | 37 ++++++++++++++++++++++
packages/engine/src/__tests__/pi.test.ts | 16 ++++++++++
packages/engine/src/agent-session-helpers.ts | 20 ++++++++++++
packages/engine/src/pi.ts | 27 ++++++++++++++--
plugins/fusion-plugin-claude-runtime/README.md | 6 ++++
plugins/fusion-plugin-claude-runtime/package.json | 2 +-
.../src/__tests__/runtime-adapter.test.ts | 30 ++++++++++++++++++
.../src/__tests__/tool-bridge.test.ts | 33 ++++++++++++++++++-
.../src/runtime-adapter.ts | 30 ++++++++++++++++--
.../src/tool-bridge.ts | 24 +++++++++++---
plugins/fusion-plugin-claude-runtime/src/types.ts | 2 ++
plugins/fusion-plugin-grok-runtime/package.json | 2 +-
.../src/__tests__/runtime-adapter.test.ts | 24 ++++++++++++++
.../src/__tests__/tool-bridge.test.ts | 33 ++++++++++++++++++-
.../src/runtime-adapter.ts | 30 ++++++++++++++++--
.../fusion-plugin-grok-runtime/src/tool-bridge.ts | 24 +++++++++++---
plugins/fusion-plugin-grok-runtime/src/types.ts | 2 ++
19 files changed, 338 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-8422
Fusion-Task-Lineage: 6738f1bd-23f7-4fd3-8490-178d956b362d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 01:07:14 -07:00