gsxdsm
7b444edc86
fix(planning): complete task creation handoff
...
Treat active creation claims as transient coordination, keep the created-task handoff visible, and provide direct task and session navigation across desktop and mobile.
2026-07-20 23:35:32 -07:00
gsxdsm
6d6bfdf6c1
FN-8449: collapse planning history AI thinking by default
...
Keep Planning Mode history focused on questions and answers until operators explicitly expand AI thinking.
- Render planning history without forcing AI thinking open
- Verify thinking starts collapsed and expands through its existing toggle
- Add a patch changeset for the operator-facing fix
Files changed:
.changeset/fn-8449-planning-history-thinking.md | 7 +++++++
packages/dashboard/app/components/PlanningModeModal.tsx | 3 ++-
.../__tests__/PlanningModeModal.planning-flow.test.tsx | 10 ++++++++--
3 files changed, 17 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8449
Fusion-Task-Lineage: e318eb85-561b-4d02-8fe8-1b82dcd87cc1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 23:33:59 -07:00
gsxdsm
048a2cdd33
FN-8448: fix Back navigation from import detail
...
Ensure browser Back returns GitHub imports from issue detail to the issue list.
- Preserve navigation history position when More transitions to Import.
- Cover nested detail Back behavior in modal and embedded Import Tasks surfaces.
- Add a patch changeset for the navigation fix.
Files changed:
.../fn-8448-github-import-back-to-issue-list.md | 7 +++
packages/dashboard/app/components/MobileNavBar.tsx | 17 ++++++--
.../__tests__/GitHubImportModal.test.tsx | 50 ++++++++++++++++++++++
.../__tests__/MobileNavBar.swipe-back.test.tsx | 18 +++++++-
.../dashboard/app/hooks/useNavigationHistory.ts | 27 +++++++++---
5 files changed, 108 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-8448
Fusion-Task-Lineage: ffea2740-861f-464b-839e-030aef06fd34
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 23:28:49 -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
1861a33534
fix(planning): stabilize refinement and restored sessions
...
Make refinement freeform-only, tighten responsive Planning controls, and keep restored idle sessions synchronized without reconnecting the stream that caused reopen errors.
2026-07-20 21:57:00 -07:00
gsxdsm
f221d2bc4d
fix(planning): complete interactive planning workspace
...
Keep plan and questions usable across desktop and mobile, add answer and reasoning history, and create tasks directly from validated plans.
2026-07-20 21:20:10 -07:00
gsxdsm
34074e9d04
fix(planning): keep plan visible through sequential questions
...
Regenerate the Markdown plan after every answer while preserving the
responsive plan-and-question workspace and focused refinement flow.
2026-07-20 20:20:55 -07:00
gsxdsm
f4c24edeba
fix(core): allow dependency-ready steps to finalize
...
Honor explicit workflow dependencies across completion writers, keep the progress cursor aligned with unfinished work, and fail closed when dependency metadata is malformed.
2026-07-20 20:17:27 -07:00
gsxdsm
beae2c673e
fix(planning): make refinement session-driven
...
Open refinement areas on demand with multi-select and custom focus support, then consume synchronous AI responses so restored sessions can continue reliably. Rename the primary review action to Proceed with plan and preserve the responsive Markdown review layout.
2026-07-20 18:40:03 -07:00
gsxdsm
7fe12ae124
test(core): share one golden pg schema template across the gate
...
The pg-gate rebuilt a full schema baseline (~530ms of DDL) per isolated test
file. Fanned across forks against one Postgres, those baselines and their
CREATE DATABASE calls serialized and pushed per-file beforeAll past the 15s
hookTimeout nondeterministically on high-core machines. Complements the
committed fork cap: apply the baseline ONCE per run into a run-shared,
advisory-lock-coordinated golden template, then copy each test DB directly
from it (concurrent, connection-free copies are safe). Per-module templates
and their lifecycle hooks are retained for the concurrency regression test.
No timeout was changed. pg-gate: ~46s tests / ~17s wall, 6/6 clean runs
(was flaky/364s).
Fusion-Task-Id: automation-slow-test
2026-07-20 18:26:01 -07:00
gsxdsm
caf425eaea
test(core): cap pg-gate fork fan-out for DB-bound suite
...
The test:pg-gate suite runs only *.pg.test.ts files, each building/copying a
per-file schema-template database (heavy CREATE/DROP DATABASE DDL serialized by
the single shared Postgres). Worker count derived from CPU cores over-scales on
high-core machines (6 forks on a 28-core box), oversubscribing the one Postgres
until every beforeAll exceeds the 15s hookTimeout (23/23 hook timeouts). CI's
low-core runners stay near 2 forks and pass, so it only bites high-core locals.
Add a maxCap clamp to computeMaxWorkers and a dedicated vitest.pg.config.ts
(maxCap=4) for the pg-gate, right-sizing concurrency to the actual constraint (a
single shared Postgres) rather than raising the timeout (forbidden appeasement).
Low-core machines keep their smaller CPU-derived count via min(4, cpuCap).
Verified: full test:pg-gate now passes 23 files / 126 tests on a 28-core host.
2026-07-20 18:16:58 -07:00
gsxdsm
2884bf76b1
fix(planning): wait for AI plan before review
...
Keep seeded fallback summaries out of SSE catch-up while generation is active so Refine and Validate cannot race the initial AI turn.
2026-07-20 18:12:25 -07:00
gsxdsm
0a01cb164d
fix(planning): polish markdown plan review
...
Render the canonical plan as sanitized Markdown and keep responsive review actions reachable outside the scroll owner. Require Markdown-oriented planning output and preserve stable plan.md list round-trips.
2026-07-20 17:35:06 -07:00
gsxdsm
d008d66e01
fix(planning): show all refinement categories
...
Preserve every valid suggested refinement through prompt generation, server normalization, and desktop/mobile rendering instead of truncating the list to three.
2026-07-20 16:39:07 -07:00
gsxdsm
ba08d90574
fix(core): allow scoped migration health reads
...
Grant the restricted runtime role read-only access to its own SQLite cutover marker. Repair existing databases with migration 0030 and apply the same row-scoped policy when first-boot migration creates the ledger.
2026-07-20 16:10:46 -07:00
gsxdsm
9ad97317cb
fix(FN-1320): block incomplete plans before execution
...
Require executable steps before recovering stuck planning tasks or advancing the built-in coding workflow. Preserve explicitly authorized no-commit tasks and custom zero-step workflow behavior.
2026-07-20 16:08:00 -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
4c0dfbcfd6
fix(engine): preserve workflow completion summaries
...
Keep approved-contract retry instructions scoped to review nodes so advisory and completion-summary agents can produce their intended output.
2026-07-20 15:26:23 -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
22db40cba5
FN-8445: pin compact planning switcher above history
...
Keep compact Planning Mode interview tabs above the answered-question history across responsive layouts.
- Pin the shared compact pane switcher ahead of history in short-shell and tablet flex layouts.
- Cover the visual-order contract and mounted controls across tablet, mobile, and short-landscape panes.
- Add a patch changeset for the Planning Mode fix.
Files changed:
.changeset/fn-8445-planning-compact-switcher-top.md | 7 +++++++
.../dashboard/app/components/PlanningModeModal.css | 19 +++++++++++++++++++
.../__tests__/PlanningModeModal.css.test.ts | 9 ++++++++-
.../PlanningModeModal.planning-flow.test.tsx | 21 ++++++++++++++-------
4 files changed, 48 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8445
Fusion-Task-Lineage: 7aa99bc7-1ad6-46ff-8ff9-4628ccefd705
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 14:09:26 -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
1b8b7f617e
fix(FN-8426): wait for answers to agent questions
...
Convert supported runtime question-tool calls into Fusion's durable awaiting-user-input contract so workflow execution cannot continue while the operator question is unanswered.
Fusion-Task-Id: FN-8426
2026-07-20 13:12:22 -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
baf88931d4
FN-8436: remove reconnecting status from Planning Mode
...
Keep Planning Mode progress feedback in the loading pane without showing transient reconnecting text.
- Remove reconnecting UI state and stream-state callback handling.
- Preserve loading controls and generation progress during stream recovery.
- Cover recovery behavior without the reconnecting hint.
Files changed:
.../FN-8436-planning-no-reconnecting-hint.md | 7 ++++++
.../dashboard/app/components/PlanningModeModal.tsx | 25 ++++------------------
.../PlanningModeModal.planning-flow.test.tsx | 6 ++++--
3 files changed, 15 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-8436
Fusion-Task-Lineage: 344eb8bd-fc5c-4cb1-aed0-27453a0cb701
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 11:46:57 -07:00
gsxdsm
02e297aab5
FN-8433: synchronize Planning Mode interview turns
...
Keep Planning Mode questions, answer history, and the running plan aligned across streaming and recovery paths.
- Reconcile server and client interview state after answers, retries, and missed SSE events.
- Keep persisted mid-interview summaries streaming until explicit validation.
- Add client and route regressions for stale question replay and reconnect behavior.
Files changed:
.changeset/planning-turn-sync.md | 7 +
packages/dashboard/app/api/legacy.ts | 6 +-
.../dashboard/app/components/PlanningModeModal.tsx | 153 +++++++++++++++++----
.../PlanningModeModal.planning-flow.test.tsx | 117 ++++++++++++++++
.../src/__tests__/routes-planning.test.ts | 68 +++++++++
.../src/routes/register-planning-subtask-routes.ts | 25 ++--
6 files changed, 340 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-8433
Fusion-Task-Lineage: d59a5b75-6ea0-4f97-83ab-ede770b4ae06
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 11:31:14 -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
46a57b52f7
FN-8416: guard engine playwright-core dependency
...
Protect the engine's lazy feature-video import from undeclared dependency regressions.
- Assert playwright-core remains a direct engine dependency.
- Assert the feature-video client retains its lazy playwright-core import.
Files changed:
.../engine/src/review-artifacts/feature-video.test.ts | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8416
Fusion-Task-Lineage: 046e53bb-820c-4b64-90b8-f80f42e6b567
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 10:13:57 -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
81abe53957
FN-8430: simplify TUI log timestamps
...
Keep dashboard TUI log rows focused on useful message content.
- Show capture times as HH:MM:SS across list, expanded, and copied log output.
- Strip leading detailed upstream timestamps from list and clipboard text while preserving raw expanded messages.
- Add regression coverage and a patch changeset.
Files changed:
.changeset/fn-8430-tui-log-timestamps.md | 7 ++
.../commands/dashboard-tui/__tests__/app.test.tsx | 93 +++++++++++++++++++++-
packages/cli/src/commands/dashboard-tui/app.tsx | 33 ++++++--
3 files changed, 125 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8430
Fusion-Task-Lineage: b656dfa1-3c16-4a6f-8ba8-a936fdfdd42d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 10:04:20 -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
8d216e628c
FN-8431: give report menu an opaque background
...
Make the report action menu render on a defined opaque surface.
- Replace undefined menu color and spacing tokens with defined design tokens.
- Add regression coverage for opaque menu surfaces and token availability.
- Add a patch changeset for the report menu fix.
Files changed:
.changeset/fn-8431-report-menu-background.md | 7 ++++
.../dashboard/app/components/ReportActionMenu.css | 40 ++++++++++++++++++++--
.../components/__tests__/ReportActionMenu.test.tsx | 17 +++++++++
3 files changed, 61 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8431
Fusion-Task-Lineage: d300b5ae-272c-452d-932d-8efeee30a0d9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:46:22 -07:00
gsxdsm
b621f29747
FN-8428: add mailbox links to related work
...
Add direct mailbox navigation to related tasks and planning sessions.
- Extend mailbox message metadata with task and planning-session references.
- Render accessible related-work actions in mailbox views and avoid duplicate artifact task links.
- Route planning clarification actions to the associated Planning session and cover the flows with tests.
Files changed:
packages/core/src/types/messages.ts | 6 +++
.../app/components/MailboxArtifactAttachment.tsx | 5 +-
packages/dashboard/app/components/MailboxModal.tsx | 15 ++++++
.../app/components/MailboxRelatedWorkLink.tsx | 63 ++++++++++++++++++++++
packages/dashboard/app/components/MailboxView.tsx | 15 ++++++
.../app/components/__tests__/MailboxModal.test.tsx | 31 +++++++++++
.../__tests__/MailboxRelatedWorkLink.test.tsx | 54 +++++++++++++++++++
.../app/components/__tests__/MailboxView.test.tsx | 41 ++++++++++++--
.../app/components/dashboard/MainContent.tsx | 10 ++++
.../MainContent.mailbox-view-task.test.tsx | 13 +++++
.../__tests__/planning-infinite-interview.test.ts | 35 ++++++++++++
packages/dashboard/src/planning.ts | 5 ++
12 files changed, 288 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8428
Fusion-Task-Lineage: d0c6bf0e-7fb4-4bff-8cb2-3c75045a43da
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:41:02 -07:00
gsxdsm
860533eff2
FN-8402: extract config, MCP, and Pi settings routes
...
Extract config, MCP, and Pi-settings handlers into a dedicated dashboard route registrar.
- Move seven configuration and MCP endpoint handlers out of the API-route orchestrator.
- Preserve registrar mount precedence and document the expanded route map.
- Add registrar coverage and update the inline-route modularity baseline.
Files changed:
.../src/__tests__/mcp-documentation.test.ts | 2 +-
packages/dashboard/src/routes.ts | 303 +--------------------
packages/dashboard/src/routes/README.md | 84 +++---
.../register-config-mcp-pi-settings-routes.test.ts | 61 +++++
.../src/routes/create-api-routes-mount-sequence.ts | 2 +-
.../register-config-mcp-pi-settings-routes.ts | 275 +++++++++++++++++++
scripts/lib/routes-modular-baseline.json | 2 +-
7 files changed, 385 insertions(+), 344 deletions(-)
Fusion-Task-Id: FN-8402
Fusion-Task-Lineage: f5f71f64-03cf-41cf-9fb2-33046b0c04bf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:35:55 -07:00
gsxdsm
c279b8cefc
FN-8347: add report capture regression coverage
...
Expand dashboard report tests across screenshot capture and activity-trace egress.
- Cover screenshot capture pending, failure, opt-out, and mobile modal behavior
- Verify bounded activity traces and recursive privacy scrubbing across report routes
- Exercise screenshot artifact references through draft, duplicate, and filing paths
Files changed:
.../app/components/__tests__/ReportModal.test.tsx | 46 ++++++++++++
.../app/utils/__tests__/activity-trace.test.ts | 32 +++++++++
.../src/__tests__/report-pipeline.test.ts | 83 +++++++++++++++++++++-
.../dashboard/src/__tests__/report-routes.test.ts | 35 ++++++++-
.../dashboard/src/__tests__/report-scrub.test.ts | 19 ++++-
5 files changed, 208 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-8347
Fusion-Task-Lineage: 5323fdcb-01c3-48aa-beb9-ecd4651e981a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 09:28:27 -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
Phil Larson
c1bc95c1db
fix(dashboard): honor forced GraphQL transport ( #2353 )
...
## Summary
- honor `forceMode` for GraphQL queries and mutations
- keep token-backed Discussion operations on the selected token
transport even when `gh` is authenticated
- add regression coverage for forced-token category lookup, errors, and
Discussion creation
## Test plan
- `CI=true pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/github-discussions.test.ts
src/__tests__/github-forced-mode.test.ts
src/__tests__/github-pr-threads.test.ts`
- `CI=true pnpm build`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* GitHub Discussions GraphQL operations now consistently honor the
selected transport/authentication mode.
* Forced token-based transport correctly applies to discussion queries
and mutations (including discussion creation).
* Missing required authentication is now reported instead of falling
back to an unauthenticated path.
* **Tests**
* Added a test covering discussion creation using forced token-based
GraphQL transport.
* **Release**
* Shipped as a patch release of the Fusion library.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-20 08:49:28 -07:00
gsxdsm
71c0d0a970
fix(engine): recover completed triage tasks
...
Preserve workflow ownership across Plan Review replan moves and route advanced completed triage rows through legal lifecycle transitions before review. Clear only stale same-task session claims after live executor, planner, and merger ownership checks.
2026-07-20 08:46:34 -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
4f0d89e106
FN-8419: safeguard project partition reconciliation
...
Safely reconcile fallback and registered project partitions during dashboard startup.
- Merge duplicate partition rows with fallback data taking precedence.
- Validate unique indexes and foreign-key dependencies before rekeying.
- Bind safely after failed promotion and stop non-retryable dashboard failures.
- Add PostgreSQL reconciliation and supervisor coverage.
Files changed:
.changeset/fn-8419-rekey-partition-merge.md | 7 +
packages/cli/src/bin.ts | 5 +-
.../commands/__tests__/dashboard-supervise.test.ts | 16 +-
packages/cli/src/commands/dashboard.ts | 41 ++-
.../src/__tests__/postgres/schema-applier.test.ts | 178 +++++++++++-
packages/core/src/async-secrets-store.ts | 9 +-
packages/core/src/index.ts | 8 +-
packages/core/src/postgres-errors.ts | 9 +
packages/core/src/postgres/index.ts | 5 +
packages/core/src/postgres/migration-stamping.ts | 318 ++++++++++++++++-----
packages/core/src/postgres/startup-factory.ts | 49 +++-
packages/core/src/process-supervisor.ts | 3 +
packages/core/src/task-store/async-persistence.ts | 7 +-
13 files changed, 546 insertions(+), 109 deletions(-)
Fusion-Task-Id: FN-8419
Fusion-Task-Lineage: bfc54e40-a31e-4b61-b6ae-01eb147efde1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 01:54:42 -07:00
gsxdsm
02f8bffb2e
FN-8423: suppress duplicate task agent badges
...
Avoid redundant creator badges when a task is assigned to its creating agent.
- Compare assigned and source agents by ID, with normalized names as a fallback
- Preserve both badges for distinct agent identities and cover badge behavior with regression tests
- Add a patch changeset for the TaskCard fix
Files changed:
.changeset/fn-8423-duplicate-agent-badge.md | 7 ++
packages/dashboard/app/components/TaskCard.tsx | 40 +++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 74 +++++++++++++++++++++-
3 files changed, 119 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8423
Fusion-Task-Lineage: 2fb020c9-43e5-485e-80a9-1b723ee63ae8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 01:12:34 -07:00