Commit Graph

11774 Commits

Author SHA1 Message Date
gsxdsm
02ee8a4fd5 fix: hide stale task-card oversight icons (#2318)
## Summary

Task cards now remove the overseer eye as soon as their workflow's
effective oversight becomes `off`, instead of reusing an active value
cached before the setting changed.

The invalidation covers card remounts as well as mounted cards, and
authoritative writes from the dashboard, agents, and configuration
rollback reach the board through the existing project-scoped SSE stream.
Older in-flight responses cannot restore the eye after a newer `off`
value wins, while unrelated workflow-setting saves leave active
indicators undisturbed.

## Validation

- 99 focused dashboard regression tests passed across selected and
aggregate cards, desktop and mobile, SSE delivery, and out-of-order
responses
- Core and dashboard typechecks passed
- `pnpm lint` and `pnpm check:changesets` passed
- `pnpm verify:fast` passed production builds and the CLI/server boot
smoke


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Planner-overseer eye badges now disappear immediately when workflow
oversight is turned off.
- Prevented stale or out-of-order updates from displaying incorrect
oversight status.
- Oversight indicators now remain hidden when the effective setting
cannot be confirmed.
- Live workflow setting changes now update task cards without requiring
a page refresh.

- **Documentation**
- Clarified eye badge visibility rules, tooltip meaning, and active
oversight states in the dashboard guide.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 13:50:58 -07:00
gsxdsm
795d7454ec fix(ci): sync TaskDetail lucide mock and ideation schema bookkeeping (#2320)
## Summary
- Extend shared TaskDetailModal lucide mock for FN-8286
ArtifactsGallery/TaskReviewTab icons.
- Update schema-applier bookkeeping for FN-8295 ideation (93 project
tables, version 0022).
- Seed historical 0000 upgrade fixtures with missions/mission_features
stubs so ideation FKs apply after ownership rewrite.

## Test plan
- [x] TaskDetail modal suites + mock-coverage green locally
- [x] Full schema-applier suite (59 tests) green locally
- [ ] Full Suite all 4 shards green on main after merge
2026-07-18 13:45:44 -07:00
gsxdsm
e0d2fd6085 FN-8332: preserve planning session progress after reload
Restore persisted Planning Mode sessions without starting a new generation.

- Limit automatic retries to generations started by the current mounted UI
- Render saved questions, summaries, thinking, and errors with manual retry after reload or resume
- Cover desktop, mobile, stream, and polling recovery paths and document the behavior
- Add a patch changeset for the published package

Files changed:
 .changeset/fn-8332-planning-reload-resume.md       |   7 +
 docs/dashboard-guide.md                            |   4 +-
 .../dashboard/app/components/PlanningModeModal.tsx |  36 ++++-
 .../PlanningModeModal.planning-flow.test.tsx       | 175 +++++++++++++++++----
 4 files changed, 180 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-8332

Fusion-Task-Lineage: 6b128dc3-a091-4e81-bc6a-9c541d8e4cf5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 13:32:33 -07:00
gsxdsm
40d125b9d1 FN-8324: place cost badge below Promote
Place enabled task cost badges directly below Promote while preserving their existing placement on other cards.

- Render the shared cost badge in a Promote-specific bottom-right row
- Preserve footer placement when Promote is unavailable
- Add placement and visibility coverage plus a patch changeset

Files changed:
 .changeset/fn-8324-card-cost-promote.md            |  7 +++
 packages/dashboard/app/components/TaskCard.css     | 14 +++++
 packages/dashboard/app/components/TaskCard.tsx     | 41 +++++++-----
 packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 72 ++++++++++++++++++++++
 4 files changed, 120 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-8324

Fusion-Task-Lineage: 053da911-7f47-468c-a3b9-c0d85738bda8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 13:27:43 -07:00
gsxdsm
1a63b6dba6 fix(ci): index embedded Postgres cap and mock portability API in CC controls (#2317)
## Summary
- Index `embeddedPostgresMaxConnections` in Settings search
(backups-global).
- Export `withProjectId` + `api` from `CommandCenterControls` legacy
mock so FN-8284 portability card can mount under the controls suite.

## Test plan
- [x] CommandCenterControls + settings-search-index tests green locally
- [ ] Full Suite all 4 shards green on main after merge

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added the embedded PostgreSQL maximum connections setting to Settings
search, with relevant labels, help text, and keywords.

* **Tests**
* Improved test coverage setup for controls that use project-specific
API paths.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 13:20:11 -07:00
gsxdsm
d51ce46db5 FN-8295: add persisted ideation mission handoffs
Persist bounded ideation sessions through agent tools, the Command Center, and atomic Mission convergence.

- Store ideation sessions and divergent candidates in PostgreSQL with async APIs and migration support.
- Expose gated ideation tools, chat routes, and agent lifecycle integration.
- Add the Ideation panel, documentation, release metadata, and regression coverage.

Files changed:
 .changeset/fn-8295-ideation-diverge-converge.md    |   7 ++
 docs/ideation/persisted-diverge-converge.md        |  22 ++++
 docs/missions.md                                   |   4 +
 .../__tests__/postgres/ideation-store.pg.test.ts   |  57 +++++++++
 packages/core/src/async-ideation-store-queries.ts  | 117 +++++++++++++++++
 packages/core/src/async-ideation-store.ts          | 138 +++++++++++++++++++++
 packages/core/src/async-mission-store.ts           |  27 ++--
 packages/core/src/ideation-types.ts                |  69 +++++++++++
 packages/core/src/index.ts                         |   3 +
 .../core/src/postgres/migrations/0022_ideation.sql |  67 ++++++++++
 packages/core/src/postgres/schema-applier.ts       |  18 ++-
 packages/core/src/postgres/schema/project.ts       |  49 +++++++-
 packages/core/src/store.ts                         |   8 +-
 packages/core/src/task-store/remaining-ops-8.ts    |  14 +++
 .../components/command-center/CommandCenter.tsx    |   7 +-
 .../components/command-center/IdeationPanel.css    |  18 +++
 .../components/command-center/IdeationPanel.tsx    |  58 +++++++++
 .../__tests__/CommandCenter.test.tsx               |   6 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   |   1 +
 packages/dashboard/src/__tests__/chat.test.ts      |   1 +
 .../__tests__/ideation-tool-route-parity.test.ts   |  29 +++++
 packages/dashboard/src/chat.ts                     |   4 +
 packages/dashboard/src/ideation-routes.ts          |  50 ++++++++
 .../src/routes/register-integrated-routers.ts      |   2 +
 .../src/__tests__/agent-ideation-tools.test.ts     |  40 ++++++
 .../src/__tests__/gating-classifications.test.ts   |  16 +++
 .../src/__tests__/permanent-agent-gating.test.ts   |   2 +
 packages/engine/src/agent-heartbeat.ts             |   4 +-
 packages/engine/src/agent-tools.ts                 |  67 ++++++++++
 packages/engine/src/executor.ts                    |   2 +
 packages/engine/src/gating-classifications.ts      |   8 ++
 packages/engine/src/index.ts                       |   1 +
 packages/engine/src/triage.ts                      |   2 +
 33 files changed, 897 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-8295

Fusion-Task-Lineage: 1b8b0752-22bd-4b2f-aebd-4305c63abcf9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 13:18:08 -07:00
gsxdsm
13f936eb7b FN-8286: add review artifact controls and galleries
Add configurable review-deliverable policies and surface eligible artifacts in review workflows.

- Add project and PROMPT.md review-artifact modes with task eligibility enforcement.
- Display video and live-demo deliverables in Task Review and Command Center galleries.
- Document, localize, and test the new review-artifact controls.

Files changed:
 .changeset/fn-8286-review-artifacts.md             |  7 ++
 docs/settings-reference.md                         |  1 +
 .../core/src/__tests__/review-artifacts.test.ts    | 53 +++++++++++++++
 .../core/src/__tests__/settings-parity.test.ts     |  5 ++
 packages/core/src/index.ts                         |  4 +-
 packages/core/src/settings-schema.ts               |  1 +
 packages/core/src/types.ts                         | 75 ++++++++++++++++++++++
 packages/core/src/types/execution-and-ui.ts        |  8 +++
 .../dashboard/app/components/TaskReviewTab.tsx     | 28 +++++++-
 .../__tests__/SettingsModal.general.test.tsx       |  8 +++
 .../components/__tests__/TaskReviewTab.test.tsx    | 27 ++++++++
 .../components/command-center/CommandCenter.tsx    |  5 ++
 .../command-center/areas/ReviewArtifactsArea.tsx   | 59 +++++++++++++++++
 .../areas/__tests__/ReviewArtifactsArea.test.tsx   | 39 +++++++++++
 .../app/components/settings/section-keys.ts        |  1 +
 .../settings/sections/GeneralSection.tsx           | 20 ++++++
 .../settings-default-descriptions.test.tsx         |  1 +
 .../src/__tests__/agent-artifact-tools.test.ts     | 19 +++++-
 packages/engine/src/agent-tools.ts                 | 26 ++++++++
 packages/i18n/locales/en/app.json                  |  7 ++
 packages/i18n/src/resources.d.ts                   |  7 ++
 21 files changed, 397 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8286
Fusion-Task-Lineage: 357ccbe3-510d-4ffd-ba7c-6bf79fe40a09
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 13:09:38 -07:00
gsxdsm
551074537f FN-8331: require planning interview before summaries
Ensure Planning Mode collects mandatory user context before it can generate a plan.

- Reject and re-prompt first-turn completion responses until a clarifying question is available.
- Preserve the interview invariant for streaming sessions and legacy session rehydration.
- Update Planning Mode defaults, documentation, regression coverage, and release metadata.

Files changed:
 .changeset/fn-8331-planning-interview.md           |   7 +
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 .../dashboard/app/components/PlanningModeModal.tsx |  10 +-
 .../PlanningModeModal.planning-flow.test.tsx       |   4 +-
 .../src/__tests__/routes-planning.test.ts          | 120 ++++++++++++++++-
 packages/dashboard/src/planning.ts                 | 145 ++++++++++++++-------
 7 files changed, 233 insertions(+), 57 deletions(-)

Fusion-Task-Id: FN-8331

Fusion-Task-Lineage: 6fc98f2e-f263-4830-b88c-e52d1ba6551f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 13:01:35 -07:00
gsxdsm
500275ac0c FN-8311: capture report activity context safely
Keep report traces useful while preserving local-only screenshot retention.

- Record report submissions, toast messages, and uncaught client errors in bounded report context
- Preserve single-upload screenshot artifacts across draft review and filing
- Document report-context capture and add a release changeset

Files changed:
 .changeset/fn-8311-report-context.md              |  7 +++++++
 docs/dashboard-guide.md                           |  2 +-
 packages/dashboard/app/App.tsx                    | 11 ++++++++++-
 packages/dashboard/app/components/ReportModal.tsx |  1 +
 4 files changed, 19 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-8311

Fusion-Task-Lineage: bca77264-7607-45d6-99f0-a83a4ba6631d

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:57:04 -07:00
gsxdsm
17ee1a8040 fix(ci): restore Full Suite bookkeeping after concurrent main landings (#2316)
## Summary
- Align heartbeat `customTools` expectations with FN-8294 mission
hierarchy tools (43→58).
- Refresh `COORDINATION_EXEMPT_TOOLS` snapshot for `fn_mission_list` /
`fn_mission_show`.
- Backfill `commandCenter.portability.*` for non-en locales and map
`reportMode` / `reportModeByAction` / `embeddedPostgresMaxConnections`
into settings default-description inventory with i18n help text.
- Realign FN-8064 skip-narration unit test with store-owned proactive
chat (no tool-side `appendAgentLog`).
- Quarantine load-sensitive `async-quality-store.pg.test.ts` (5s timeout
+ leftover psql under full-suite shard load; run 29657633544).

## Test plan
- [x] `pnpm --filter @fusion/engine exec vitest run`
gating-classifications + executor-prompt + heartbeat expected-tools case
- [x] `pnpm --filter @fusion/i18n exec vitest run` i18n-gate-coverage +
parity
- [x] `pnpm --filter @fusion/dashboard exec vitest run`
settings-default-descriptions
- [ ] Full Suite all 4 shards green on main after merge

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Settings**
* Added clearer, localized help text for report modes and per-action
overrides, including inheritance behavior.
* Added advanced embedded database connection-limit settings and
validation guidance.

* **Localization**
* Expanded translations for report settings, database tuning, and
organization configuration import/export workflows across supported
languages.

* **Tests & Maintenance**
* Updated test coverage and expectations for expanded tools and
reporting behavior.
  * Quarantined a flaky database-related test.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 12:48:13 -07:00
gsxdsm
88b0db0f4d FN-8309: add report screenshot and activity capture
Add opt-in local screenshot attachments and scrubbed activity traces to reports.

- Capture, preview, confirm, and locally retain report screenshots without GitHub egress.
- Include bounded activity traces in draft and filing context with server-side validation.
- Add report pipeline coverage, documentation, and release metadata.

Files changed:
 .changeset/fn-8309-report-capture.md               |   7 ++
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/App.tsx                     |  10 ++
 packages/dashboard/app/api/report.ts               |  16 ++-
 packages/dashboard/app/components/ReportModal.css  |   3 +
 packages/dashboard/app/components/ReportModal.tsx  |  45 ++++++-
 .../app/utils/__tests__/activity-trace.test.ts     |  19 +++
 packages/dashboard/app/utils/activity-trace.ts     |  37 ++++++
 packages/dashboard/app/utils/capture-screenshot.ts |  22 ++++
 packages/dashboard/package.json                    |   5 +-
 .../src/__tests__/report-pipeline.test.ts          |  13 +++
 packages/dashboard/src/report-pipeline.ts          |  29 ++++-
 packages/dashboard/src/routes.ts                   |   2 +-
 .../dashboard/src/routes/register-report-routes.ts |  85 +++++++++++++-
 packages/dashboard/src/routes/types.ts             |   4 +-
 pnpm-lock.yaml                                     | 129 ++++++++++-----------
 16 files changed, 341 insertions(+), 87 deletions(-)

Fusion-Task-Id: FN-8309

Fusion-Task-Lineage: db9c14a6-1721-4e81-8891-cfd301473cd0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:41:42 -07:00
gsxdsm
d5db5fd58d FN-8304: detect foreign issue-form content for translation
Recognize foreign GitHub and GitLab issue-form prose so import translation remains available.

- Remove issue-form scaffolding before content-language scoring.
- Identify Czech as unsupported foreign Latin content and offer translation.
- Cover automatic and manual translation paths with issue-form fixtures.
- Document the expanded import translation behavior and add a patch changeset.

Files changed:
 .changeset/fn-8304-issue-form-translation.md       |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/detect-content-language.ts       |  66 ++++++++++--
 .../__tests__/GitHubImportAutoTranslate.test.tsx   |  42 +++++++-
 .../utils/__tests__/detectContentLanguage.test.ts  | 120 +++++++++++++++++++++
 .../src/__tests__/import-translate-service.test.ts |  56 ++++++++++
 7 files changed, 284 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-8304

Fusion-Task-Lineage: ef6ca70c-aa67-40ff-a23a-077940b5a5f0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:32:07 -07:00
gsxdsm
a251d4105e FN-8303: delay task chat loading indicator
Prevent the Activity Live transcript spinner from flashing during default task opens or task selection.

- Delay the empty transcript loading indicator until a request remains pending.
- Scope delayed spinner state to each task to protect reused split-detail chat instances.
- Cover fast initial loads, overlay and embedded defaults, and task switching.

Files changed:
 packages/dashboard/app/components/TaskChatTab.tsx  | 35 ++++++++++++++---
 .../app/components/__tests__/TaskChatTab.test.tsx  | 44 +++++++++++++++++++++-
 .../TaskDetailModal.task-activity-chat.test.tsx    | 41 ++++++++++++++++++++
 3 files changed, 113 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-8303

Fusion-Task-Lineage: 34af8f5e-9e47-4ff6-bf08-b3bda0744dae

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:26:03 -07:00
gsxdsm
ed61fced5a fix(FN-8064): await proactive task status writes
Fusion-Task-Id: FN-8064
2026-07-18 12:21:09 -07:00
gsxdsm
d593d87686 feat(FN-8064): make proactive task chat optional
Fusion-Task-Id: FN-8064
2026-07-18 12:21:08 -07:00
gsxdsm
b533b918fe fix(FN-8064): narrate all task step transitions
Fusion-Task-Id: FN-8064
2026-07-18 12:21:08 -07:00
gsxdsm
9debeaa951 FN-8300: show planner activity on status-null cards
Keep planning cards visibly active while fresh planner logs precede authoritative task status updates.

- Track bounded client-only planner activity from fresh triage log events
- Render matching pulsing Planning badges in board and list card views
- Cover transient activity, authoritative clearing, and inactive edge cases

Files changed:
 docs/dashboard-guide.md                            |  2 +
 packages/core/src/types.ts                         |  6 +++
 packages/dashboard/app/components/ListView.tsx     | 26 ++++++++---
 packages/dashboard/app/components/TaskCard.tsx     | 20 +++++---
 .../app/components/__tests__/ListView.test.tsx     | 38 +++++++++++++++
 .../app/components/__tests__/TaskCard.test.tsx     | 19 +++++++-
 .../dashboard/app/hooks/__tests__/useTasks.test.ts | 54 ++++++++++++++++++++++
 packages/dashboard/app/hooks/useTasks.ts           | 44 +++++++++++++-----
 .../app/utils/__tests__/taskActivity.test.ts       | 22 ++++++++-
 packages/dashboard/app/utils/taskActivity.ts       | 15 +++++-
 10 files changed, 219 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-8300

Fusion-Task-Lineage: e12f1277-5628-45a1-b731-54310027540e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:13:20 -07:00
gsxdsm
3568a86a66 FN-8284: add organization portability controls
Add Command Center tools for safe organization portability and configuration recovery.

- Register project-scoped organization export/import and revision rollback routes.
- Add localized, responsive Command Center controls for bundle preview, import, and rollback.
- Invalidate stale dry-run responses and retain only the exact previewed bundle for import.
- Cover portability routes and editing-during-preview behavior with tests.

Files changed:
 docs/dashboard-guide.md                            |   2 +
 .../command-center/CommandCenterControls.tsx       |   3 +
 .../command-center/OrgPortabilityControls.css      |  81 +++++++++
 .../command-center/OrgPortabilityControls.tsx      | 184 +++++++++++++++++++++
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |   2 +
 .../__tests__/OrgPortabilityControls.test.tsx      |  94 +++++++++++
 packages/dashboard/src/routes.ts                   |   2 +
 .../register-org-portability-routes.test.ts        | 109 ++++++++++++
 .../src/routes/register-org-portability-routes.ts  | 129 +++++++++++++++
 packages/i18n/locales/en/app.json                  |  37 +++++
 10 files changed, 643 insertions(+)

Fusion-Task-Id: FN-8284

Fusion-Task-Lineage: 1fa06550-8064-417f-a8d0-40f693206404

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 12:06:00 -07:00
gsxdsm
baa1baff9f FN-8283: add secret-scrubbed organization bundle CLI
Add portable, secret-scrubbed organization export and import workflows.

- Assemble agents, raw skills, routines, automations, and settings into versioned bundles.
- Add org-export and org-import CLI commands with dry-run and collision controls.
- Preserve existing skills by default or materialize suffixed destinations, with CLI coverage.

Files changed: .changeset/fn-8283-org-bundle.md                   |   7 +
 docs/cli-reference.md                              |   9 ++
 docs/secrets.md                                    |  10 ++
 packages/cli/src/__tests__/bin.test.ts             |  17 ++
 packages/cli/src/bin.ts                            |  26 ++-
 .../cli/src/commands/__tests__/org-export.test.ts  |  30 ++++
 .../cli/src/commands/__tests__/org-import.test.ts  |  31 ++++
 packages/cli/src/commands/org-export.ts            |  19 +++
 packages/cli/src/commands/org-import.ts            |  18 +++
 packages/core/src/__tests__/org-bundle.test.ts     |  69 ++++++++
 packages/core/src/index.ts                         |  17 ++
 packages/core/src/org-bundle.ts                    | 176 +++++++++++++++++++++
 12 files changed, 428 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-8283

Fusion-Task-Lineage: 93877746-8e57-4c79-bdbe-8e4ec7a2efe6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 11:49:11 -07:00
gsxdsm
bcb1256d6b FN-8282: add configuration revision history and rollback
Record configuration revisions so prior settings can be restored safely.

- Add revision storage interfaces, PostgreSQL schema, migration, and pruning.
- Capture changes to global settings, routines, automations, and async task settings.
- Expose revision listing and restore operations with coverage and storage documentation.

Files changed:
 .changeset/fn-8282-config-versioning.md            |   7 +
 docs/storage.md                                    |   6 +
 .../__tests__/configuration-revision-store.test.ts |  26 +++
 .../src/__tests__/postgres/schema-applier.test.ts  |  15 +-
 .../core/src/async-configuration-revision-store.ts | 192 +++++++++++++++++++++
 packages/core/src/automation-store.ts              |  88 +++++++++-
 packages/core/src/configuration-revision-store.ts  |  33 ++++
 packages/core/src/global-settings.ts               | 172 +++++++++++++++++-
 packages/core/src/index.gate.ts                    |   3 +
 packages/core/src/index.ts                         |   3 +
 .../migrations/0021_configuration_revisions.sql    |  40 +++++
 packages/core/src/postgres/schema-applier.ts       |  19 +-
 packages/core/src/postgres/schema/project.ts       |  27 +++
 packages/core/src/routine-store.ts                 | 103 ++++++++++-
 packages/core/src/store.ts                         |  21 ++-
 packages/core/src/task-store/async-settings.ts     |  14 +-
 packages/core/src/task-store/remaining-ops-2.ts    |  86 ++++++++-
 packages/core/src/task-store/settings-ops.ts       | 104 +++++++----
 packages/core/src/types.ts                         |  36 ++++
 packages/engine/src/agent-tools.ts                 |   7 +-
 20 files changed, 928 insertions(+), 74 deletions(-)

Fusion-Task-Id: FN-8282

Fusion-Task-Lineage: fd681798-10b0-47ce-b96b-6f33eecdf70a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 11:34:42 -07:00
gsxdsm
f218645911 FN-8299: prevent localized Quick Add save clipping
Protect localized Quick Add Save labels across Board and List composer widths.

- Add production-CSS smoke fixtures for every supported Save translation and composer state.
- Include all five production icon controls, including Session Advisor, in fixture coverage.
- Compact the desktop action-row gap so the full control set fits a 300px Board column.

Files changed:
 .../__tests__/browser-layout-smoke-fixture.test.ts |  15 +++
 .../dashboard/app/components/QuickEntryBox.css     |   9 +-
 .../dashboard/scripts/browser-layout-smoke.mjs     | 109 ++++++++++++++++++++-
 3 files changed, 131 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-8299

Fusion-Task-Lineage: 46befb8a-2af4-496c-85c2-69942ab0ea73

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 11:28:12 -07:00
gsxdsm
2f0f7c652f FN-8301: restore PWA token recovery after cold starts
Restore the auth-token dialog when an installed PWA receives a daemon 401 before React mounts.

- Latch daemon authentication failures for mount-time recovery.
- Clear the latch when the authentication token changes.
- Cover cold-start recovery and successful-response behavior with dashboard tests.

Files changed:
 .changeset/fn-8301-pwa-auth-recovery.md            |  7 +++
 packages/dashboard/app/__tests__/auth.test.ts      | 40 ++++++++++++++
 packages/dashboard/app/auth.ts                     |  8 +++
 .../hooks/__tests__/useAuthTokenRecovery.test.ts   | 61 +++++++++++++++++++++-
 .../dashboard/app/hooks/useAuthTokenRecovery.ts    | 10 ++--
 5 files changed, 121 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8301

Fusion-Task-Lineage: b35236f4-af3d-4313-8b7d-6cd59a237144

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 11:02:45 -07:00
gsxdsm
e8c37b076e FN-8277: add in-app agentic reporting
Add guided in-app reporting that safely files or endorses GitHub issues and discussions.

- Add report actions, modal UI, API routes, and configurable per-action filing modes.
- Scrub report payloads, self-check Help requests, and deduplicate before filing or endorsing.
- Extend GitHub discussion support and cover the report pipeline with tests and documentation.

Files changed:
 .changeset/fn-8277-agentic-reports.md              |   7 +
 docs/dashboard-guide.md                            |   8 +
 docs/settings-reference.md                         |   2 +
 .../core/src/__tests__/settings-parity.test.ts     |   9 +
 packages/core/src/index.gate.ts                    |   2 +-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/settings-schema.ts               |   2 +
 packages/core/src/types.ts                         |  10 +
 packages/dashboard/app/api.ts                      |   1 +
 packages/dashboard/app/api/report.ts               |  11 +
 packages/dashboard/app/components/Header.tsx       |  30 +++
 .../dashboard/app/components/ReportActionMenu.css  |   6 +
 .../dashboard/app/components/ReportActionMenu.tsx  |  22 ++
 packages/dashboard/app/components/ReportModal.css  |   6 +
 packages/dashboard/app/components/ReportModal.tsx  |  81 ++++++++
 .../app/components/__tests__/Header.test.tsx       |   7 +-
 .../components/__tests__/ReportActionMenu.test.tsx |  18 ++
 .../app/components/__tests__/ReportModal.test.tsx  |  94 +++++++++
 .../__tests__/SettingsModal.general.test.tsx       |  15 ++
 .../settings/sections/GeneralSection.tsx           |  31 ++-
 .../src/__tests__/report-pipeline.test.ts          | 127 ++++++++++++
 .../dashboard/src/__tests__/report-routes.test.ts  |  51 +++++
 .../dashboard/src/__tests__/report-scrub.test.ts   |  47 +++++
 packages/dashboard/src/github.ts                   | 151 +++++++++++++-
 packages/dashboard/src/index.ts                    |   3 +
 packages/dashboard/src/report-help-selfcheck.ts    |  13 ++
 packages/dashboard/src/report-pipeline.ts          | 225 +++++++++++++++++++++
 packages/dashboard/src/report-scrub.ts             |  66 ++++++
 packages/dashboard/src/routes.ts                   |   2 +
 .../dashboard/src/routes/register-report-routes.ts | 118 +++++++++++
 30 files changed, 1156 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-8277
Fusion-Task-Lineage: d50dc1da-7534-4324-ab05-1f8a0ad77c6a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 10:55:50 -07:00
gsxdsm
a9efaf2a74 FN-8302: fix terminal bootstrap after stale session creation
Ensure first terminal-tab creation retries when an invalidated bootstrap request settles.

- Wake the current bootstrap generation after stale session creation outcomes.
- Cover scope changes that invalidate an in-flight initial tab request.

Files changed:
 .../hooks/__tests__/useTerminalSessions.test.ts    | 45 ++++++++++++++++++++++
 .../dashboard/app/hooks/useTerminalSessions.ts     | 33 +++++++++++++---
 2 files changed, 73 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8302

Fusion-Task-Lineage: a1d9a6f9-85eb-4168-af7f-5efc2828e3f2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 10:48:12 -07:00
gsxdsm
8d1620ea23 FN-8294: expose action-gated Mission hierarchy tools
Expose project-scoped Mission hierarchy operations to engine agents and eligible dashboard chat sessions.

- Add Mission, milestone, slice, and feature tool definitions backed by MissionStore
- Classify hierarchy mutations for action and permanent-agent approval gates
- Wire gated tool access through triage, executor, heartbeat, CLI, and chat lanes
- Cover tool availability, mutation gating, and chat integration with tests and documentation

Files changed:
 .changeset/fn-8294-mission-engine-tools.md         |   7 ++
 docs/missions.md                                   |   8 ++
 packages/cli/src/extension.ts                      |   2 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   |  48 +++++++++
 packages/dashboard/src/__tests__/chat.test.ts      |   1 +
 packages/dashboard/src/chat.ts                     | 113 ++++++++++++++++++++-
 .../src/__tests__/agent-mission-tools.test.ts      |  43 ++++++++
 packages/engine/src/__tests__/triage.test.ts       |  34 ++++++-
 packages/engine/src/agent-heartbeat.ts             |   4 +-
 packages/engine/src/agent-tools.ts                 |  64 ++++++++++++
 packages/engine/src/executor.ts                    |   2 +
 packages/engine/src/gating-classifications.ts      |  11 ++
 packages/engine/src/index.ts                       |  17 ++++
 packages/engine/src/triage.ts                      | 111 ++++++++++++++++++++
 14 files changed, 457 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-8294

Fusion-Task-Lineage: ab0f248b-8a38-40e3-b297-79f9dbe18075

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 10:31:59 -07:00
gsxdsm
a6f1ed07e2 FN-8287: unify task-detail action button sizing
Standardize task-detail inline action controls across themes.

- Apply shared tokenized square sizing, borders, and radii to all inline metadata actions.
- Add a regression test for the common sizing rule and document the control cluster.
- Add a patch changeset for consistent task-detail action buttons.

Files changed:
 .changeset/fn-8287-task-detail-button-sizes.md     |  7 +++
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/app/components/TaskDetailModal.css   | 73 ++++++++--------------
 ...etailModal.responsive-and-dependencies.test.tsx | 24 +++++++
 4 files changed, 57 insertions(+), 49 deletions(-)

Fusion-Task-Id: FN-8287

Fusion-Task-Lineage: 21ce01e1-7443-4a41-8a7d-faaa2bcddb28

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 10:08:33 -07:00
gsxdsm
2c17fa70ab feat(postgres): make embedded connection cap configurable 2026-07-18 10:00:49 -07:00
gsxdsm
2b455672c6 FN-8275: clarify mission merge behavior
Clarify mission merge choices and surface shared branch status in mission detail.

- Explain auto-merge and single-pull-request behavior in mission forms
- Show mission-owned shared branch member and PR status
- Cover UI behavior and PostgreSQL triage auto-merge cascading

Files changed:
 .changeset/fn-8275-mission-merge-summary.md        |  7 ++
 docs/missions.md                                   |  2 +-
 .../dashboard/app/components/MissionManager.tsx    | 75 ++++++++++++++++++++++
 .../__tests__/MissionManager.auto-merge.test.tsx   | 64 ++++++++++++++++++
 .../mission-auto-merge-cascade.pg.test.ts          | 58 +++++++++++++++++
 5 files changed, 205 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-8275

Fusion-Task-Lineage: cd259293-b68e-4bc5-803e-40d2287d8438

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 09:41:25 -07:00
gsxdsm
119fcedcfe FN-8276: unify mobile board snap behavior
Make JavaScript the sole authority for mobile Kanban pan settlement.

- Suspend native proximity snapping while a user pan settles, then restore its inline baseline.
- Restore snapping after wheels with no horizontal scroll as well as pointer and touch completion.
- Document the unified magnetism behavior and cover restoration paths with hook tests.

Files changed:
 .changeset/fn-8276-unify-board-magnetism.md        |  7 +++
 docs/dashboard-guide.md                            |  3 +-
 .../hooks/__tests__/useColumnScrollSnap.test.ts    | 53 +++++++++++++++--
 .../dashboard/app/hooks/useColumnScrollSnap.ts     | 66 ++++++++++++++++++++--
 4 files changed, 119 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-8276

Fusion-Task-Lineage: 1ff3ae24-51e8-4c4f-aa5a-7a7b7c84d37c

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 09:05:51 -07:00
gsxdsm
88fd8f3e7a FN-8280: document full-loop agent tool-surface plan
Document the current agent/chat build-loop surface, its gaps, and a safe delivery plan.

- Audit ideation, research, roadmap, execution, verification, and concurrency boundaries
- Define canonical-operation parity and guardrails for future tool exposure
- Link the audit from the agent tooling documentation

Files changed:
 docs/agent-tool-surface-full-loop.md | 138 +++++++++++++++++++++++++++++++++++
 docs/agents.md                       |   2 +-
 2 files changed, 139 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-8280

Fusion-Task-Lineage: ff28e0f4-c934-40a4-b030-9541b74bb913

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 08:47:18 -07:00
gsxdsm
6bf20ea249 fix(ci): quarantine CLI lock-retry flakes + settle planning tab-lock (#2305)
## Summary
- Full Suite after FN-8271 restore turned red again
([29648952207](https://github.com/Runfusion/Fusion/actions/runs/29648952207)):
- **shard 4**: `mcp-lock-retry` / `task-lock-retry` 5s timeouts under
package-lane load
- **shard 3**: planning “never acquires a tab lock…” —
`respondToPlanning` never called after Small/Continue
- Re-quarantine the two CLI lock-retry files in ledger +
`packages/cli/vitest.config.ts` (no timeout appeasement).
- Planning tab-lock test: select Small via radio role, wait for checked,
longer `waitFor` on respond.

## Test plan
- [x] lockstep-cli-quarantine
- [x] planning tab-lock interaction test
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Improved the reliability of the dashboard planning flow by using more
precise controls and bounded waits during automated interactions.

* **Tests**
* Quarantined two intermittently timing-out CLI integration tests to
reduce full-suite instability.
* Documented the quarantine reasons and tracking details for the
affected tests.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 08:30:28 -07:00
gsxdsm
69e7a34077 FN-8273: add mission auto-merge overrides
Allow operators to override project auto-merge behavior for each mission.

- Add create and update API support for mission auto-merge overrides, including clearing inherited behavior.
- Expose inherited, auto-merge, and single-pull-request choices in all mission forms.
- Apply disabled mission auto-merge to newly triaged tasks and cover storage, API, and UI behavior.
- Document the override and add a CLI changeset.

Files changed:
 .changeset/fn-8273-mission-auto-merge.md           |   7 ++
 docs/missions.md                                   |   4 +
 .../mission-store.sync-auto-merge.test.ts          |  22 ++++
 .../__tests__/postgres/mission-store.pg.test.ts    |  35 ++++++
 packages/core/src/async-mission-store.ts           |   5 +
 packages/core/src/mission-store.ts                 |   5 +
 packages/dashboard/app/api/legacy.ts               |   4 +-
 .../dashboard/app/components/MissionManager.tsx    |  55 +++++++++
 .../__tests__/MissionManager.auto-merge.test.tsx   | 132 +++++++++++++++++++++
 packages/dashboard/app/components/mission-types.ts |   2 +
 packages/dashboard/src/mission-routes.ts           |  18 ++-
 .../routes/__tests__/mission-autoMerge-e2e.test.ts |  66 +++++++++++
 12 files changed, 351 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8273

Fusion-Task-Lineage: d24d7c22-5a14-4446-b3e1-c35b2f0480c3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 08:01:44 -07:00
gsxdsm
6308887b45 FN-8274: fix compound-engineering PostgreSQL test URL derivation
Use the shared PostgreSQL test base URL across Compound Engineering's test harnesses.

- Import the core PostgreSQL URL configuration for admin and integration test connections.
- Add a credential-safe source guard for base URL derivation.
- Declare the shared URL export for Compound Engineering tests.

Files changed:
 .../src/__tests__/_harness.ts                      | 15 ++++----
 .../src/__tests__/base-url-derivation.test.ts      | 42 ++++++++++++++++++++++
 .../src/__tests__/pg-test-harness.d.ts             |  1 +
 .../src/__tests__/pipeline-store.pg.test.ts        | 12 +++----
 4 files changed, 57 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-8274

Fusion-Task-Lineage: 84921b47-4275-4357-9e3a-be025863dbb3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 07:53:32 -07:00
gsxdsm
afb2ed0650 FN-8271: restore quarantined CLI tests under shard load
Restore affected CLI and engine tests by removing load-amplifying fixture work and synchronizing fake-timer recovery.

- Replace the dist-barrel PostgreSQL fixture with an injected in-memory task store.
- Move mission and goal tool coverage to the shared PostgreSQL harness and complete plugin-store mocks.
- Return rescued CLI and heartbeat tests to default lanes and clear their quarantine records.

Files changed:
 .../src/__tests__/extension-dist-barrel.test.ts    | 90 ++++++++--------------
 .../__tests__/extension-mission-goal-tools.test.ts | 27 ++++---
 packages/cli/src/commands/__tests__/plugin.test.ts | 11 +++
 packages/cli/vitest.config.ts                      | 21 +----
 .../src/__tests__/heartbeat-error-recovery.test.ts | 33 ++++----
 packages/engine/vitest.config.ts                   |  7 +-
 scripts/lib/test-quarantine.json                   | 78 +------------------
 7 files changed, 84 insertions(+), 183 deletions(-)

Fusion-Task-Id: FN-8271

Fusion-Task-Lineage: 212a3ec7-db6b-4e80-97c3-1c704822cf60

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 07:48:45 -07:00
gsxdsm
825e6c185c fix(dashboard): settle multi-select Other before input (#2302)
## Summary
- Full Suite
[29646721723](https://github.com/Runfusion/Fusion/actions/runs/29646721723)
shard 3: multi-select Other-only timed out on `planning-other-input`.
- Wait for Other checkbox `toBeChecked()`, then `findByTestId`; apply
same settle to remaining Other paths.

## Test plan
- [x] Other-only multi/single-select + clear/confirm/checkpoint Other
tests
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Improved planning-flow test reliability by waiting for “Other” inputs
and selections to be ready before interacting with them.
* Updated assertions to account for UI state settling during
multi-select and confirmation flows.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 07:17:27 -07:00
gsxdsm
9f8be56f14 fix(dashboard): Settings Memory nav + Loading ready wait (#2301)
## Summary
- Full Suite
[29645564540](https://github.com/Runfusion/Fusion/actions/runs/29645564540):
shards 1–3 green; shard 4 settings suite failed.
- Exact `Memory` nav name (vs `/Memory/` matching **Memory Backups**).
- `waitForSettingsModalReady` waits for Loading… to clear after
fetchSettings.

## Test plan
- [x] memory backend status hook test
- [x] Anthropic Subscription OAuth incomplete toast
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Improved settings modal test synchronization to reliably wait for
loading to finish.
* Refined memory settings navigation checks to target the correct
section and avoid ambiguous matches.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 06:44:58 -07:00
gsxdsm
caffc0d40d fix(dashboard): mock store.getTask for tracking done comments (#2300)
## Summary
- Full Suite
[29644469846](https://github.com/Runfusion/Fusion/actions/runs/29644469846):
shards 1–3 green; shard 4 failed `github-issue-comment`
(`this.store.getTask is not a function`).
- Tracking Done comments re-read the task for landing-commit metadata;
MockStore now implements `getTask` (null → product snapshot fallback).

## Test plan
- [x] `github-issue-comment.test.ts` — 33 passed
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Updated GitHub issue comment test scaffolding to support task lookups
during completion handling.
  * Kept comment-posting assertions deterministic.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 06:07:04 -07:00
gsxdsm
0aacee0aeb fix(dashboard): align planning tests with clarification default-off (#2299)
## Summary
- Full Suite
[29643371961](https://github.com/Runfusion/Fusion/actions/runs/29643371961)
after #2298: shards 1–2 green; shard 3 confirm Other race; shard 4 MCP +
re-emit planning tests.
- MCP lane mock: follow-up prompts return `complete` (product defaults
clarification off).
- Re-emit suite: pass `clarificationEnabled: true` so multi-question
interview invariants still run.
- Confirm Other UI test: `findByTestId("planning-other-input")` after
click.

## Test plan
- [x] mcp-lane-forwarding + planning-answered-question-reemit (14)
- [x] confirm Other desktop/mobile planning-flow
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Improved automated coverage for planning-mode interviews, including
“Other” responses and follow-up prompts.
* Increased test reliability by handling asynchronous input updates more
consistently.
* Added validation for clarification-enabled interviews and completion
behavior in MCP forwarding scenarios.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 05:31:01 -07:00
gsxdsm
ec99f17478 fix: i18n ephemeral policy keys + planning loading race (#2298)
## Summary
- Full Suite
[29642536622](https://github.com/Runfusion/Fusion/actions/runs/29642536622)
after #2297: shards 1–2 green; shard 4 i18n parity + shard 3
PlanningMode loading.
- Add `settings.general.ephemeralAgentTaskCreationPolicy*` to
zh-CN/zh-TW/fr/es/ko (FN-8265 keys were en-only).
- Gate the follow-up SSE question in the PlanningMode loading test so
`.planning-loading` is assertable before the next question arrives (CI
race).

## Test plan
- [x] `@fusion/i18n` parity + gate-coverage tests
- [x] PlanningModeModal loading-after-response test
- [ ] Full Suite all 4 shards green on main

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added localized settings text for configuring ephemeral agent
follow-up task creation policies in Spanish, French, Korean, Simplified
Chinese, and Traditional Chinese.
* Added options to allow, require validation, or deny follow-up task
creation.

* **Tests**
* Improved planning mode loading-state test reliability with
deterministic synchronization.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 04:54:34 -07:00
gsxdsm
b3904f6405 FN-8269: replace raw white component colors with tokens
Replace component-level white literals with semantic dashboard tokens and protect the pattern with a hygiene regression scan.

- Add semantic tokens for workflow chip foregrounds and HTML preview canvases
- Apply the tokens to workflow and artifact gallery component CSS
- Extend CSS hygiene coverage and add a patch changeset

Files changed:
 .changeset/fn-8269-fff-tokens.md                     |  7 +++++++
 .../dashboard/app/__tests__/css-hygiene-scan.test.ts | 20 +++++++++++++++++++-
 .../dashboard/app/components/ArtifactsGallery.css    |  4 ++--
 .../app/components/WorkflowAddStepModal.css          |  3 ++-
 .../app/components/WorkflowSimpleCanvas.css          |  3 ++-
 packages/dashboard/app/styles.css                    | 13 +++++++++++++
 6 files changed, 45 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8269

Fusion-Task-Lineage: 5128286d-cdcf-4c9b-b097-e7eaed7d1713

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 04:44:53 -07:00
gsxdsm
e436635abd FN-8270: restore PostgreSQL migration quarantine tests
Restore seven PostgreSQL-compatible engine suites to the active test runs.

- Model asynchronous insight and goal-store collaborators in reporter and diagnostics tests.
- Await PostgreSQL audit reads in merger reliability tests.
- Remove the restored suites from Vitest exclusions and the quarantine ledger.

Files changed:
 .../__tests__/backlog-pressure-reporter.test.ts    | 19 +++++++----
 .../dependency-blocked-todo-reporter.test.ts       | 15 ++++++---
 .../goal-injection-diagnostics-wiring.test.ts      | 15 ++++++---
 .../__tests__/merger-cwd-fallback-removed.test.ts  | 13 +++++---
 .../integration-worktree-state.test.ts             | 13 +++++---
 .../merge-runner-spawn-enoent-prevention.test.ts   | 15 +++++---
 .../meta-chain-auto-close.test.ts                  |  9 ++++--
 packages/engine/vitest.config.ts                   | 20 ++----------
 scripts/lib/test-quarantine.json                   | 37 +---------------------
 9 files changed, 73 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-8270
Fusion-Task-Lineage: 65be82ef-f4d4-4a8a-b3cc-63486ee0823a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 04:40:18 -07:00
gsxdsm
c1c18dfefa test(core): align settings parity + schema 0020 bookkeeping (#2297)
## Summary
- Full Suite run
[29641723814](https://github.com/Runfusion/Fusion/actions/runs/29641723814)
left shards 1–3 green; shard 4 (`@fusion/core`) failed after FN-8265
landed.
- `settings-parity`: `PROJECT_SETTINGS_KEYS` now includes
`NON_DEFAULT_PROJECT_SETTINGS_KEYS` (`ephemeralAgentTaskCreationPolicy`
has no default; resolver owns fallback).
- `schema-applier`: expected applied-migration lists and identity suite
include `TASK_PROPOSAL_CLAIM_VERSION` (`0020`).

## Test plan
- [x] `pnpm --filter @fusion/core exec vitest run
src/__tests__/settings-parity.test.ts
src/__tests__/postgres/schema-applier.test.ts` — 136 passed
- [ ] Full Suite all 4 shards green on main after merge

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Updated migration validation tests to include the latest task proposal
claim migration.
* Expanded settings parity checks to cover non-default project settings.
* Added coverage confirming migration ordering and immutable migration
identities.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 04:25:32 -07:00
gsxdsm
01519a1183 fix: fetchGlobalSettings mock for PlanningMode autosize/initial (#2296)
## Summary
Full Suite shard 4 failed `PlanningModeModal.autosize` with missing
`fetchGlobalSettings` on the `../../api` mock (product clarification
gating).

- Autosize: add sync-settled `fetchGlobalSettings` (FN-8245 pattern)
- Initial: replace async `mockResolvedValue` with the same sync settle

## Test plan
- [x] Local autosize + initial (29 tests) green
- [ ] PR gate + Full Suite

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Improved Planning Mode modal test reliability by making global
settings responses consistently complete.
* Reduced timing and race-condition sensitivity across initialization
and autosizing test scenarios.
* Added coverage for handling completed settings-loading flows without
affecting user-facing behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 03:57:25 -07:00
gsxdsm
7c23771433 FN-8265: add task follow-up proposal creation
Enable configured ephemeral workers to propose and create follow-up tasks from mailbox messages.

- Add persisted task-proposal claim state, migrations, and async messaging APIs.
- Register task-proposal creation routes, SSE events, agent tool support, and CLI integration.
- Add mailbox creation controls, settings, documentation, localization, and regression coverage.

Files changed:
 .changeset/fn-8265-task-follow-up-policy.md        |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |  12 ++-
 packages/cli/src/extension.ts                      |  34 ++++---
 .../src/__tests__/postgres/sqlite-migrator.test.ts |  14 ++-
 .../postgres/task-proposal-claim.pg.test.ts        |  51 +++++++++++
 packages/core/src/async-message-store.ts           |  39 ++++++++
 packages/core/src/index.gate.ts                    |   4 +-
 packages/core/src/index.ts                         |   4 +-
 packages/core/src/message-store.ts                 |  46 ++++++++++
 .../core/src/postgres/migrations/0000_initial.sql  |   2 +
 .../migrations/0020_task_proposal_claim.sql        |   4 +
 packages/core/src/postgres/schema-applier.ts       |  13 ++-
 packages/core/src/postgres/schema/project.ts       |   3 +
 packages/core/src/settings-schema.ts               |  19 +++-
 packages/core/src/task-store/async-persistence.ts  |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +-
 packages/core/src/task-store/serialization.ts      |   1 +
 packages/core/src/task-store/task-creation.ts      |  51 +++++++++++
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/types.ts                         |  56 +++++++++++-
 packages/dashboard/app/api/legacy.ts               |   5 +
 packages/dashboard/app/components/MailboxModal.tsx |   4 +
 .../app/components/MailboxTaskProposal.css         |   3 +
 .../app/components/MailboxTaskProposal.tsx         |  33 +++++++
 packages/dashboard/app/components/MailboxView.tsx  |   4 +
 .../__tests__/MailboxTaskProposal.test.tsx         |  43 +++++++++
 .../app/components/settings/section-keys.ts        |   2 +-
 .../settings/sections/GeneralSection.search.ts     |  13 ++-
 .../settings/sections/GeneralSection.tsx           |  22 +++--
 .../settings-default-descriptions.test.tsx         |   4 +-
 .../routes/__tests__/task-proposal-routes.test.ts  |  99 ++++++++++++++++++++
 .../src/routes/register-messaging-scripts.ts       | 101 +++++++++++++++++++++
 packages/dashboard/src/sse.ts                      |   7 ++
 packages/engine/src/agent-tools.ts                 |  30 ++++--
 packages/engine/src/executor.ts                    |   9 +-
 packages/engine/src/step-session-executor.ts       |   8 +-
 packages/i18n/locales/en/app.json                  |   5 +
 38 files changed, 696 insertions(+), 66 deletions(-)

Fusion-Task-Id: FN-8265

Fusion-Task-Lineage: 4e864a2f-3485-4a54-8be7-1699b5479a94

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 03:48:38 -07:00
gsxdsm
454a2bda28 fix: settle multi-select Speed checkbox before Other in planning tests (#2295)
## Summary
Full Suite shard 3 (run 29640624429) failed mobile multi-select + Other:
submit payload only had `_other` and dropped `q-priorities: [\"speed\"]`
under load.

Hardens the test to click the Speed **checkbox by accessible name**,
wait for checked, then combine Other (FN-8245 settle discipline).

## Test plan
- [x] Local multi-select planning tests green
- [ ] PR gate
- [ ] Post-merge Full Suite all shards green

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Improved mobile planning-flow test reliability by ensuring
multi-select choices are committed before entering additional “Other”
text.
* Reduced the risk of intermittent CI failures when combining predefined
options with custom responses.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 03:45:26 -07:00
gsxdsm
36f7705a2c fix: wait for GitHub import re-translate after body edit (#2294)
## Summary
Full Suite shard 3 failed `GitHubImportAutoTranslate` re-request after
body edit: mock call count hit 2 before `translations.get(1).title`
committed. Wait for the map entry.

## Test plan
- [x] Local re-request test green
- [ ] PR gate + Full Suite

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Updated translation test timing to reliably account for asynchronous
translation results when issue content changes.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 03:18:18 -07:00
gsxdsm
c21bfdbdcc fix: backup automation mock + Claude probes dashboard alias (#2293)
## Summary
Full Suite after #2292: shards 1–3 green; shard 4 failed FN-7537 backup
automation tests with `store.getGlobalSettingsDir is not a function`.

- Add `getGlobalSettingsDir` to routes-automation mock store
- Point backup-parity fixtures’ global dir at the temp fusion dir
- Dashboard Vitest: alias `@fusion-plugin-examples/claude-runtime` →
`probes-entry` (same class as CLI #2292)

## Test plan
- [x] Local manual backup run parity (4 tests)
- [ ] PR gate
- [ ] Post-merge Full Suite

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Improved automation backup test coverage for global backup directory
handling.
* Preserved reliable manual backup behavior and event ordering across
supported automation steps.
* Fixed dashboard API test configuration for Claude runtime probe
resolution.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 02:55:59 -07:00
gsxdsm
91eb1b088a FN-8266: add GitHub import Chat prefill
Let operators open Chat from a selected GitHub issue or pull request with its link ready in the composer.

- Add GitHub-only Chat actions to import detail views and route their prefill through modal and embedded surfaces.
- Seed and focus the direct Chat composer without sending, while preserving saved drafts after failed default-session creation.
- Document the workflow and cover import, prefill, and draft-restoration behavior.

Files changed:
 docs/dashboard-guide.md                            | 12 +++-
 packages/dashboard/app/App.tsx                     | 16 +++++
 packages/dashboard/app/components/AppModals.tsx    |  3 +
 packages/dashboard/app/components/ChatView.tsx     | 70 +++++++++++++++++++-
 .../dashboard/app/components/GitHubImportModal.tsx | 28 +++++++-
 .../components/__tests__/ChatView.draft.test.tsx   | 74 ++++++++++++++++++++++
 .../__tests__/GitHubImportModal.test.tsx           | 49 ++++++++++++++
 .../app/components/dashboard/MainContent.tsx       |  5 ++
 .../dashboard/app/components/dashboard/types.ts    |  3 +
 9 files changed, 255 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8266

Fusion-Task-Lineage: 30102ce8-5aca-4e34-8bb0-6f3c23e64044

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 02:41:35 -07:00
gsxdsm
90e8a10608 fix: resolve claude-runtime probe source for CLI full-suite (#2292)
## Summary
Full Suite after #2291: shards 1–3 green; shard 4 failed CLI suites
with:

`Failed to resolve entry for package
"@fusion-plugin-examples/claude-runtime"`

from `dashboard/src/runtime-provider-probes.ts` under the CLI vitest
package lane.

- Add `plugins/fusion-plugin-claude-runtime/src/probes-entry.ts` (probe
+ model discovery only)
- Alias `@fusion-plugin-examples/claude-runtime` to that entry in CLI
vitest config (same class as Cursor/Grok/OMP source aliases, but avoids
ACP index load)

## Test plan
- [x] Local: vitest-workspace-resolution, task-steer,
extension-task-tools
- [ ] PR gate
- [ ] Post-merge Full Suite green

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Improved CLI resolution for Claude runtime diagnostics and provider
model discovery.
* Prevented unnecessary runtime dependencies from affecting CLI test
execution.
* **Refactor**
* Added a lightweight entry point for accessing Claude binary checks and
provider model discovery.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-18 02:25:39 -07:00
gsxdsm
ce3f55fec9 FN-8263: reflect session advisor state in task-detail eye
Keep the task-detail oversight indicator aligned with the effective session advisor state.

- Show and light the oversight eye for enabled advisor inheritance while lifecycle oversight is off or unresolved.
- Limit unresolved advisor-only menus to the session advisor toggle and repaint the icon after toggles.
- Cover desktop and mobile behavior and document the interaction.

Files changed:
 .changeset/fn-8263-session-advisor-detail-eye.md   |   7 ++
 docs/dashboard-guide.md                            |   6 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |  47 ++++++----
 .../TaskDetailModal.oversight-controls.test.tsx    | 101 +++++++++++++++++++++
 .../TaskDetailModal.oversight-mobile.test.tsx      |  40 ++++++++
 5 files changed, 183 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-8263

Fusion-Task-Lineage: 61cd134c-7721-4e19-89a9-a406358f54a9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 02:20:31 -07:00