gsxdsm
4a797d3804
FN-8117: restore explicit duplicate marker sweep coverage
...
Configure duplicate-marker PG fixtures with canonical FN task IDs so the sweep coverage exercises real deletion paths.
- Set taskPrefix to FN for duplicate-marker reliability fixtures.
- Remove the corrected test from the PG quarantine ledger and Vitest exclusions.
- Document why valid marker IDs are required for this coverage.
Files changed:
.../explicit-duplicate-marker-sweep.test.ts | 20 +++++++++++++-------
packages/engine/vitest.config.ts | 4 +++-
scripts/lib/test-quarantine.json | 5 -----
3 files changed, 16 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8117
Fusion-Task-Lineage: 3b09cbbe-924c-4e3c-849b-cf7643b0ac0e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 11:36:32 -07:00
gsxdsm
038ec04975
FN-8113: confirm GitHub issue closures
...
Guard GitHub issue closure with a destructive confirmation flow.
- Style the Close issue action as dangerous and require confirmation before API calls.
- Cover confirmation, cancellation, success, failure, and mobile behavior in modal tests.
- Add a patch changeset describing the safer close interaction.
Files changed:
.changeset/fn-8113-github-close-confirm.md | 7 ++
.../dashboard/app/components/GitHubImportModal.tsx | 22 ++++--
.../__tests__/GitHubImportModal.test.tsx | 91 +++++++++++++++++++++-
3 files changed, 113 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-8113
Fusion-Task-Lineage: 80e4e1a3-b779-473d-9658-4231bd58d7e6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 11:30:17 -07:00
gsxdsm
3084d7287b
FN-8112: fix GitHub import tracking test mocks
...
Make GitHub import tracking settings mocks persist across each route read.
- Return tracking settings for every read in single-import tests
- Document the persistent-mock requirement for import tracking
Files changed:
packages/dashboard/src/__tests__/routes-github.test.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8112
Fusion-Task-Lineage: 87318b54-39b6-46bb-8093-10c020a3ad72
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 11:19:59 -07:00
gsxdsm
68583b5c68
FN-8110: add failed-check fix task action
...
Add an in-context recovery path for failed GitHub PR checks.
- Add a per-failed-check Create fix task action with progress and result feedback.
- Compose fix-task context from the selected PR, repository, branches, check status, and details URL.
- Cover the GitHub import behavior and document the feature release.
Files changed: .changeset/fn-8110-pr-failed-check-fix-task.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/GitHubImportModal.css | 23 ++++
.../dashboard/app/components/GitHubImportModal.tsx | 91 ++++++++++++-
.../__tests__/GitHubImportModal.test.tsx | 148 +++++++++++++++++++++
5 files changed, 269 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8110
Fusion-Task-Lineage: 0f69a4e2-d950-4a9f-925e-bd56fb6bf45d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 11:16:06 -07:00
gsxdsm
504c702262
FN-8107: add mobile drawer drag dismissal
...
Enable intuitive swipe-down dismissal for the mobile More navigation drawer.
- Add guarded touch drag handling that preserves interior scrolling
- Animate sheet drag and snap-back states with an expanded grab handle
- Cover distance, velocity, scroll, submenu, and cancellation gestures
- Add a patch changeset for the mobile drawer fix
Files changed:
.../fn-8107-mobile-more-drawer-drag-dismiss.md | 7 ++
packages/dashboard/app/components/MobileNavBar.css | 28 ++++-
packages/dashboard/app/components/MobileNavBar.tsx | 104 +++++++++++++++-
.../app/components/__tests__/MobileNavBar.test.tsx | 136 ++++++++++++++++++++-
4 files changed, 265 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-8107
Fusion-Task-Lineage: 144bd68a-0c72-4786-9efd-ddf86bb9515d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 11:07:57 -07:00
gsxdsm
b891e3a37b
fix(dashboard): drop Settings footer Help icon and fix its underline/sizing
...
The Help link is an <a class="btn"> and .btn never resets link
text-decoration, so the browser's default underline painted under the
icon+label box, reading as an overlap. Drop the icon (redundant next to
the "Help" label) and reset text-decoration on the shared
discord/help anchor-button selector. Also fold the Help button into the
same mobile 36px touch-target rule as Export/Import/Reset/Save so all
five footer buttons render at a consistent height.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-16 10:53:54 -07:00
gsxdsm
daf5b1297d
fix(dashboard): restore 36px touch target for mobile Settings footer buttons
...
Export/Import/Reset/Cancel/Save use .btn-sm, which the global mobile
touch-target rule deliberately excludes to keep dense table/card button
rows compact. That exclusion also caught the Settings footer, leaving
those buttons at ~24px tall on mobile — visibly smaller than the Help
and auth Test/Disable buttons on the same rail. Scope the 36px minimum
back to just this footer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-16 10:40:33 -07:00
gsxdsm
dabb6b8246
fix(dashboard): remove redundant radio buttons from GitHub import list
...
List rows are selectable buttons with selected styling; radios were leftover after import moved into the detail preview action bar.
2026-07-16 10:37:36 -07:00
gsxdsm
0b488523c2
FN-8104: retire legacy SQLite database fallbacks
...
Retire legacy SQLite database calls from PostgreSQL-only startup and self-healing paths.
- Route plugin schema initialization exclusively through the PostgreSQL executor.
- Delegate soft-delete column repair to the PostgreSQL reconciliation seam.
- Remove temporary getDatabase allowlist entries and add no-SQLite regression coverage.
Files changed:
.../postgres/store-safe-defaults.pg.test.ts | 14 +++++-
packages/core/src/store.ts | 24 ++++------
.../engine/src/__tests__/plugin-runner.test.ts | 6 ---
.../self-healing-fake-overlap-seam.test.ts | 44 +++++++++++++++++++
packages/engine/src/self-healing.ts | 51 +++++-----------------
scripts/lib/getdatabase-allowlist.json | 17 +-------
6 files changed, 77 insertions(+), 79 deletions(-)
Fusion-Task-Id: FN-8104
Fusion-Task-Lineage: 88dee027-51c3-4c68-94dc-88191fe20330
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 10:33:47 -07:00
gsxdsm
aa07a78f18
fix: recover graph-node missing-worktree failures instead of terminal-parking (FN-7996) ( #2231 )
...
## Why
FN-7996 sat in a dispatch→park loop **all day** (06:06→16:35): its
`worktree` metadata pointed at recycled pool worktrees (`coral-badger`,
`grand-ridge` — the latter actually belonged to FN-8069), Plan Review
refused to start in the missing directory, and the task terminal-parked
`failed` every cycle while the planner overseer blindly retried.
Root-cause chain:
1. **`graphFailureValue()` couldn't read optional-group results.**
`runOptionalGroup` publishes context under the group id
(`node:plan-review:value`) and the unqualified template id, but the
failed node is recorded as the materialized
`plan-review::plan-review-step` — the lookup only understood `#` foreach
ids. FN-7977's provider-failure hold *did* classify this failure, but
its hold value was invisible to routing.
2. **No graph-failure router handled the `assertValidWorktreeSession`
refusal**, so it fell to the terminal sink, which parked the task and
*overwrote* `task.error` with a generic message — erasing the signature
the missing-worktree self-healing sweep (in-review-only anyway)
classifies on.
3. **Plan Review didn't need the worktree at all** — its spec is
store-injected (FN-7561) — yet it launched its reviewer in whatever
stale `task.worktree` said.
## What
- `handleGraphFailure` routes unusable-worktree node failures (any node,
any error key, `::`/`#` materialized ids) into the existing bounded
worktree-session recovery: clear stale worktree/branch/session metadata,
requeue to todo, budgeted by `worktreeSessionRetryCount`. An exhausted
budget still falls through to the visible terminal park for human
inspection.
- `graphFailureValue` resolves `group::template` ids (group value first
— it carries post-classification routing intent — then the unqualified
template value). Foreach `#` behavior unchanged.
- Plan Review falls back to the repo root when its recorded worktree is
missing on disk; other read-only gates intentionally keep failing fast
into the new recovery (silently retargeting them to root would review
the wrong tree).
- `recoverMissingWorktreeSessionStartFailure` returns its outcome so the
graph router can distinguish requeue from escalate-exhausted; existing
truthy callers unchanged.
## Symptom Verification
- **Original symptom:** graph-node session-start refusal → `Workflow
graph terminated with failure at node 'plan-review::plan-review-step'`,
task parked failed with stale metadata intact, no recovery.
- **Reproduction:** `graph-node-missing-worktree-recovery.test.ts`
drives `handleGraphFailure` with the exact FN-7996 result shape
(optional-group materialized id + `Refusing to start coding agent in
missing worktree` node error).
- **Assertion it is gone:** the task is requeued to `todo` with
`worktree`/`branch`/`sessionFile` cleared and retry budget incremented —
and is *not* marked `failed`; budget exhaustion still parks visibly.
## Surface Enumeration
- Optional-group template nodes (Plan Review — the repro), write-capable
review gates, and any custom graph node: covered by the
`handleGraphFailure` router (scans exact/materialized/unqualified
`:error` keys).
- Execute-seam session start: already covered by the pre-existing
recovery (unchanged, still passes).
- In-review / merge-active columns: already covered by self-healing
sweeps (unchanged).
- Paused / user-paused / deleted / done tasks: explicitly left to their
owning machinery (guard tests).
- Budget exhaustion: falls through to the visible terminal park (test).
## Testing
- `pnpm --filter @fusion/engine exec vitest run
src/__tests__/reliability-interactions/graph-node-missing-worktree-recovery.test.ts`
— 13 passed
- Adjacent suites (`worktree-incomplete-session-start`,
`executor-graph-requeue-gate`, `workflow-graph-optional-group`,
`executor-paused-abort-todo-benign`) — 78 passed
- `tsc --noEmit` on `@fusion/engine` — clean
🤖 Generated with [Claude Code](https://claude.com/claude-code )
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved recovery when workflow tasks encounter missing or recycled
worktrees.
* Automatically retries affected tasks with stale worktree details
cleared, up to the configured retry limit.
* Escalates tasks after recovery attempts are exhausted.
* Improved failure routing for optional workflow groups and template
instances.
* Plan Review now falls back to the repository root when its recorded
worktree is unavailable.
* **Tests**
* Added regression coverage for recovery, routing, retry limits, and
repository-root fallback behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-16 10:28:11 -07:00
gsxdsm
06d03d4e1f
FN-8103: enforce PostgreSQL-only production data access
...
Require production paths to use PostgreSQL-aware stores and prevent new unrestricted database access.
- Add a checked allowlist that bans production getDatabase() calls by default.
- Route Quality plugin persistence through an async PostgreSQL-aware store and add Drizzle ORM.
- Document backend-safe plugin storage patterns and cover guarded access behavior.
Files changed:
docs/PLUGIN_AUTHORING.md | 20 +++
package.json | 6 +-
.../src/__tests__/agent-logs-backend-mode.test.ts | 7 +
packages/core/src/store.ts | 7 +-
packages/core/src/task-store/remaining-ops-5.ts | 8 +-
plugins/fusion-plugin-quality/package.json | 1 +
.../src/__tests__/async-quality-store.pg.test.ts | 36 +++++
.../src/__tests__/cancel-and-plans.test.ts | 8 +-
.../src/__tests__/experimental-gate.test.ts | 1 +
.../src/routes/create-routes.ts | 50 +++----
.../src/runner/command-runner.ts | 17 ++-
.../src/store/async-quality-store.ts | 34 +++++
pnpm-lock.yaml | 3 +
scripts/__tests__/check-no-getdatabase.test.mjs | 90 ++++++++++++
scripts/check-no-getdatabase.mjs | 159 +++++++++++++++++++++
scripts/lib/getdatabase-allowlist.json | 18 +++
16 files changed, 422 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-8103
Fusion-Task-Lineage: ff17bcb2-5341-4c6c-a5c4-993580539676
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 10:13:49 -07:00
gsxdsm
1d0feb264a
feat(dashboard): page GitHub issue import + fix close-on-Done backstop
...
Import picker now surfaces all open issues instead of a silent first-30
slice, and reliably closes linked/imported issues when their task reaches
Done.
Import:
- GitHubImportModal fetches up to 300 open issues in one request and pages
the result client-side at 30/page with Previous/Next controls, a page
indicator, and a truncation notice past the cap.
- NewTaskModal reference picker limit 30 -> 100.
- GitHubClient.listIssues pages the REST path (per_page loop until
limit/exhaustion; PR-filtering no longer stops paging early) and lifts the
gh path's 100 cap (gh --limit paginates internally); gh-CLI label filtering
fetches the full cap before client-side OR filtering.
Close-on-Done:
- GitHubTrackingReconciler.runSweep isolates its three reconcile passes so a
throw in one (e.g. the PG-backend deleted/archived pass) no longer starves
the done-task + source-issue passes. Previously all three shared one
try/catch with a silent swallow, so a single early throw disabled the whole
close-on-Done reconcile backstop on every sweep, leaving linked issues open.
Failures are now logged instead of hidden.
Tests: REST multi-page paging, PR-filter-doesn't-stop-paging, Prev/Next UI,
one-page (no controls), and per-pass isolation invariants.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-16 09:33:20 -07:00
gsxdsm
c803a2d906
FN-8100: restore PostgreSQL task delegation collision coverage
...
Restore PostgreSQL-backed collision coverage for the built task-delegation extension.
- Seed an occupied task ID through the shared PostgreSQL TaskStore.
- Override the allocator once to exercise the real unique-violation error path.
- Assert that fn_delegate_task returns the structured task-ID collision error.
Files changed:
.../src/__tests__/extension-integration.test.ts | 53 +++++++++++++---------
1 file changed, 32 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8100
Fusion-Task-Lineage: d26b825e-2abd-482e-899e-51c0db753176
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 09:24:56 -07:00
gsxdsm
fcd400f02e
FN-8097: harden CLI package-lane test builds
...
Stabilize CLI package-lane tests with reliable asset builds and PostgreSQL-backed fixtures.
- add stale-lock recovery and deterministic coverage for CLI asset builds
- migrate affected CLI tests to shared PostgreSQL harnesses and async build setup
- restore delegate collision coverage and clean bundled extension caches
Files changed:
.../src/__tests__/bundle-output-helpers.test.ts | 185 ++++++++++++----
.../cli/src/__tests__/bundle-output-helpers.ts | 240 +++++++++++++++------
packages/cli/src/__tests__/bundle-output.test.ts | 4 +-
.../extension-agent-set-instructions.test.ts | 56 ++---
.../src/__tests__/extension-agent-update.test.ts | 58 ++---
.../src/__tests__/extension-integration.test.ts | 25 ++-
packages/cli/src/__tests__/task-plan.test.ts | 67 +++---
packages/cli/src/__tests__/task-steer.test.ts | 56 ++---
.../src/commands/__tests__/agent-export.test.ts | 42 +++-
9 files changed, 481 insertions(+), 252 deletions(-)
Fusion-Task-Id: FN-8097
Fusion-Task-Lineage: 7c84efe0-eb5b-4d65-b8ca-ad71926dc84c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 09:14:15 -07:00
gsxdsm
c484964b82
FN-8102: fix CLI package-lane test scaffolding
...
Restore CLI tests to the current PostgreSQL harness and structured tool-error contracts.
- Inject cached stores and project-context mocks for isolated extension and command tests
- Assert structured MCP error responses for delete and lineage rejection cases
- Update workflow, retry, and project mocks for current harness and core APIs
Files changed:
.../extension-experiment-finalize.test.ts | 21 ++++++++++--
.../src/__tests__/extension-workflow-tools.test.ts | 15 ++++++--
.../__tests__/task-command-gitlab-import.test.ts | 20 +++++++++++
.../task-delete-allow-resurrection.test.ts | 20 ++++++-----
.../cli/src/__tests__/task-lineage-unlink.test.ts | 40 +++++++++++++++-------
packages/cli/src/__tests__/task-retry.test.ts | 16 +++++++--
.../cli/src/commands/__tests__/project.test.ts | 4 +++
.../cli/src/commands/__tests__/task.test.ts | 6 ++++
8 files changed, 114 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-8102
Fusion-Task-Lineage: 20723ce0-77bb-4d37-9395-4191769ee752
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:58:13 -07:00
gsxdsm
40aa924ec0
FN-8101: disambiguate workflow revision reset test selector
...
Target the named reset control in the workflow review-cap test.
- Select the Reset to default button by accessible name
- Prevent ambiguity when multiple row buttons are rendered
Files changed:
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Fusion-Task-Id: FN-8101
Fusion-Task-Lineage: e822941f-eab0-4d7a-a27b-53c152aac5de
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:47:20 -07:00
gsxdsm
291fabcce8
FN-8083: preserve GitLab tracking across archive restore
...
Preserve GitLab import tracking metadata throughout TaskStore archive and restore flows.
- Store GitLab tracking data in archived task entries and restored tasks
- Hydrate GitLab tracking when serializing archive entries
- Cover live reads, searches, modified-task listings, and archive restoration in PostgreSQL tests
- Add a patch changeset for the tracking persistence fix
Files changed:
.changeset/fn-8083-gitlab-tracking-hydration.md | 7 +++
.../store-gitlab-tracking-hydration.pg.test.ts | 58 +++++++++++-----------
.../core/src/task-store/archive-lifecycle-2.ts | 7 +++
packages/core/src/task-store/serialization.ts | 1 +
4 files changed, 43 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-8083
Fusion-Task-Lineage: 877f320f-11c9-469d-8ea5-b843e95b78d3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:41:34 -07:00
gsxdsm
1a337df5e9
FN-8098: add executor model fallback
...
Add workflow-specific executor fallback configuration and bounded recovery.
- Add executor fallback provider, model, and thinking settings across core schemas and settings UI.
- Route executor, heartbeat, child, and workflow-step sessions through the executor fallback resolver.
- Retry the primary model after fallback failure before reporting terminal exhaustion.
Files changed:
.changeset/fn-8098-model-fallback.md | 7 +++
docs/settings-reference.md | 7 ++-
.../core/src/__tests__/model-resolution.test.ts | 13 ++++
.../core/src/__tests__/settings-parity.test.ts | 5 ++
packages/core/src/builtin-workflow-settings.ts | 24 +++++++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/model-resolution.ts | 21 +++++++
packages/core/src/settings-schema.ts | 3 +
packages/core/src/types.ts | 11 ++++
.../app/components/WorkflowSettingsPanel.tsx | 8 +++
.../settings/sections/ProjectModelsSection.tsx | 10 ++-
packages/engine/src/__tests__/pi.test.ts | 14 ++++-
packages/engine/src/agent-session-helpers.ts | 7 ++-
packages/engine/src/executor.ts | 48 +++++++-------
packages/engine/src/pi.ts | 73 ++++++++--------------
packages/engine/src/step-session-executor.ts | 8 ++-
17 files changed, 180 insertions(+), 81 deletions(-)
Fusion-Task-Id: FN-8098
Fusion-Task-Lineage: 61b3103b-357b-431a-8d58-411e7806b87b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:33:57 -07:00
gsxdsm
2ea3c5afec
FN-8081: migrate CLI tests to PostgreSQL harness
...
Migrate CLI test coverage from SQLite-specific fixtures to PostgreSQL-compatible stores.
- Run built extension tests with the shared PostgreSQL TaskStore harness.
- Inject the harness async layer into extension diagnostics and agent setup.
- Remove SQLite-only writer-lock and collision fixtures while retaining portable retry coverage.
Files changed:
.../src/__tests__/extension-integration.test.ts | 115 +++++++++++----------
packages/cli/src/__tests__/extension.test.ts | 24 +++--
.../src/commands/__tests__/task-lock-retry.test.ts | 96 ++---------------
3 files changed, 84 insertions(+), 151 deletions(-)
Fusion-Task-Id: FN-8081
Fusion-Task-Lineage: 89cc39d8-0094-4486-8a9d-772b6b964bb1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:28:43 -07:00
gsxdsm
0e7b86ecc4
FN-8099: refresh GitHub stars in Settings
...
Refresh the Settings GitHub star counter while the interface is visible.
- refresh stale counts on a visibility-gated 15-minute interval
- bypass HTTP caching and prevent overlapping GitHub requests
- add Settings-surface and hook regression coverage
Files changed:
.changeset/fn-8099-github-star-refresh.md | 7 ++
.../dashboard/app/components/SettingsModal.tsx | 109 +++++++++-------
.../components/__tests__/settings-mobile.test.tsx | 59 ++++++++-
.../__tests__/useGitHubStarCount.test.tsx | 140 +++++++++++++++++++++
4 files changed, 271 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-8099
Fusion-Task-Lineage: f93f5fe0-a1ea-48f2-b737-2fa1fbee4ed6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:23:19 -07:00
gsxdsm
e6b438e4ec
chore(i18n): drop orphaned settings.scope banner strings and restore catalog parity
...
The settings scope banners ("shared across all your Fusion projects" /
"only affect this project") were removed from the UI — scope is conveyed by
the nav's globe/folder icons and "· Global/Project" labels — leaving
settings.scope.globalBanner/projectBanner dead in all six catalogs. Removed
from the authored source of truth (packages/i18n/locales) and regenerated
resources.d.ts.
Also ran the documented pnpm i18n:sync remediation for the pre-existing
parity gap: seeds the missing secondary-locale keys (autoTranslate*,
skipConfirmationDialogs*, taskDetail.plan approval/replan copy) as empty
strings for fallback-to-en and aligns plural key shapes
(resultCount_one/_other), turning pnpm i18n:status and the @fusion/i18n
parity tests green again.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-16 08:14:44 -07:00
gsxdsm
14953f39e2
FN-8075: restore PostgreSQL self-healing test coverage
...
Restore self-healing coverage for PostgreSQL-backed maintenance.
- Update self-healing mocks and assertions for asynchronous audit APIs and PostgreSQL WAL behavior
- Align git command expectations and transient recovery budget coverage with current implementation
- Remove the repaired self-healing suite from the quarantine ledger and gate exclusion
Files changed:
packages/engine/src/__tests__/self-healing.test.ts | 70 ++++++++++++----------
packages/engine/vitest.config.ts | 1 -
scripts/lib/test-quarantine.json | 5 --
3 files changed, 39 insertions(+), 37 deletions(-)
Fusion-Task-Id: FN-8075
Fusion-Task-Lineage: 7dfce9b0-9d10-4d70-8e92-8100f6595fce
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:11:24 -07:00
gsxdsm
fc9fb21470
FN-8095: repair dashboard API quality backfill
...
Stabilize the dashboard API backfill baseline and validate emitted plugin registry artifacts.
- Align API integration-test mocks and assertions with current service contracts.
- Move dist-dependent plugin registry coverage into the build test command.
- Exclude the artifact-dependent test from API backfill shards.
Files changed:
packages/dashboard/package.json | 2 +-
.../src/__tests__/chat-project-services.test.ts | 3 +
.../gitlab-source-issue-reconciler.test.ts | 27 +++----
.../src/__tests__/mcp-helper-forwarding.test.ts | 44 ++++++++---
.../src/__tests__/plugin-registry-dist.test.ts | 6 ++
.../src/__tests__/process-lifecycle.test.ts | 8 +-
.../register-git-github.gitlab-lifecycle.test.ts | 11 ++-
.../src/__tests__/register-signal-routes.test.ts | 86 +++++++++++-----------
.../routes-agent-prompt-sizes-integration.test.ts | 54 ++++++++------
.../src/__tests__/server-view-preload.test.ts | 45 +++++++----
.../task-effective-settings-route.test.ts | 12 ++-
.../routes/__tests__/agent-avatar-routes.test.ts | 3 +
.../mission-workflow-triage-route.test.ts | 73 +++++++++---------
.../register-settings-memory-worktrunk.test.ts | 14 +++-
...sk-workflow-routes.merge-advance-events.test.ts | 18 +++--
...r-task-workflow-routes.runtime-fallback.test.ts | 4 +-
.../__tests__/tasks-overseer-controls.test.ts | 29 ++++----
.../__tests__/tasks-planner-overseer-state.test.ts | 56 +++++++-------
.../__tests__/workflow-validate-route.test.ts | 21 ++----
packages/dashboard/vitest.config.ts | 4 +
20 files changed, 307 insertions(+), 213 deletions(-)
Fusion-Task-Id: FN-8095
Fusion-Task-Lineage: 8f775431-2149-433a-a8b6-e6106eab661b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 08:06:49 -07:00
gsxdsm
748cf9370d
test(dashboard): repair SettingsModal remote/scheduling suites broken by the Advanced settings switch
...
67 pre-existing failures: the Advanced settings simplification (2026-07-11) hid
advanced-only nav sections and display:none'd low-frequency form-groups in Basic
mode, and these two suites were never opted in. They now set the
fusion:settings:show-advanced preference like settings-mobile/models-auth do.
Also repointed stale assertions at current UI: research nav labels are
"Research · Global" / "Research · Project" (not "Research Defaults"/"Research"),
the ntfy Advanced disclosure click is scoped to its <summary> (the nav now also
renders an "Advanced" group header), the research provider disclosure holds
Settings*Row primitives rather than form-groups, and the removed global-scope
prose banner is asserted via the nav scope icon instead.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-16 07:53:40 -07:00
gsxdsm
40687cb0be
FN-8050: cover cached dependency reconciliation seeding
...
Ensure raw dependency-reconciliation fixtures invalidate warmed task caches.
- Warm slim task-list caches before corrupt-row seeding in cycle reconciliation tests.
- Document the PostgreSQL-only fixture seam and cache invalidation rationale.
Files changed:
.../engine/src/__tests__/reliability-interactions/_helpers.ts | 11 ++++++-----
.../dependency-cycle-reconcile.test.ts | 7 +++++++
2 files changed, 13 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8050
Fusion-Task-Lineage: 5e708d58-faed-4271-a075-24c36eaa5878
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 07:48:12 -07:00
gsxdsm
bc02b27ed9
test(dashboard): update quick-add image preview assertions to FN-8037 contract
...
FN-8037 extracted pending-image previews into PendingImagePreviews,
which renders the thumbnail as a decorative alt="" image inside a
button labelled 'Open image <name>'. Point the four stale
getByAltText assertions at that accessible open button instead.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-16 07:42:14 -07:00
gsxdsm
f718a7d2fd
fix(dashboard): spread quick-add control rows edge-to-edge on mobile
...
Switch the mobile row alignment from centered to space-between and
widen the icons+Save group to the full row, so the workflow/steps and
option-chip rows share the exact same left/right edges as the bottom
row. Group gaps remain as minimum spacing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-16 07:32:26 -07:00
gsxdsm
50ed689379
FN-8044: restore dependency reconcile reliability tests
...
Restore dependency reconciliation coverage using a PostgreSQL raw-seeding seam.
- Add a cache-invalidating raw task-column seeding helper for corrupt fixture states.
- Update dependency-cycle and self-defeating reconciliation tests to use the PG seam.
- Remove restored suites from the reliability quarantine configuration and ledger.
Files changed:
.../__tests__/reliability-interactions/_helpers.ts | 29 ++++++++
.../dependency-cycle-reconcile.test.ts | 86 +++++++++++-----------
.../self-defeating-dep-reconcile.test.ts | 7 +-
packages/engine/vitest.config.ts | 7 +-
scripts/lib/test-quarantine.json | 10 ---
5 files changed, 82 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-8044
Fusion-Task-Lineage: 213f606c-1951-4d25-93b4-2ceb97460ace
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 07:14:01 -07:00
gsxdsm
85b854882d
FN-8093: rescue dist-barrel coverage
...
Restore the isolated built-core barrel regression guard to the default CLI test lane.
- Hoist recompilation and PostgreSQL fixture setup outside timed test bodies.
- Inject the fixture store into the dynamic extension and retain text-budget assertions.
- Skip cleanly per test when a transitive dist artifact is unavailable.
- Remove the matching CLI quarantine exclusion and ledger entry.
Files changed:
.../src/__tests__/extension-dist-barrel.test.ts | 234 +++++++++++----------
packages/cli/vitest.config.ts | 8 +-
scripts/lib/test-quarantine.json | 5 -
3 files changed, 121 insertions(+), 126 deletions(-)
Fusion-Task-Id: FN-8093
Fusion-Task-Lineage: 352b3675-0579-43bc-acd9-6a11919ed646
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 06:55:22 -07:00
gsxdsm
78245a48a3
FN-8077: stabilize quarantined test timing
...
Make previously quarantined CLI and dashboard tests deterministic.
- Use the shared PostgreSQL harness for project-context integration coverage.
- Control dashboard CPU sampling time with a fake Date-only clock.
- Remove both repaired tests from quarantine configuration and ledger.
Files changed:
packages/cli/src/__tests__/project-context.test.ts | 103 +++++++++++++--------
packages/cli/vitest.config.ts | 5 +-
.../dashboard/src/__tests__/routes-system.test.ts | 17 ++--
packages/dashboard/vitest.config.ts | 6 +-
scripts/lib/test-quarantine.json | 10 --
5 files changed, 76 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-8077
Fusion-Task-Lineage: 9a057928-3258-459a-9802-52f58df39c9a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 06:20:20 -07:00
gsxdsm
de1638e262
FN-8090: use mmap shared memory for embedded PostgreSQL
...
Enable constrained-host embedded PostgreSQL startup without SysV shared-memory exhaustion.
- Default embedded lifecycle flags to mmap-backed shared memory while preserving caller overrides
- Cover normal and elevated Windows launch paths with deterministic flag propagation tests
- Document the 64MB /dev/shm support floor and add a patch changeset
Files changed:
.changeset/fn-8090-embedded-pg-shm.md | 7 ++
docs/postgres-migration-review-2026-07-14.md | 4 +
docs/storage.md | 5 ++
.../__tests__/postgres/embedded-lifecycle.test.ts | 88 ++++++++++++++++++++++
.../postgres/embedded-windows-admin.test.ts | 17 +++++
packages/core/src/postgres/embedded-lifecycle.ts | 50 +++++++++++-
.../core/src/postgres/embedded-windows-admin.ts | 2 +-
7 files changed, 168 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8090
Fusion-Task-Lineage: ac175843-69ba-4c9c-9692-aff095fc351f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 06:00:12 -07:00
gsxdsm
6675cdf696
FN-8094: persist GitLab tracking metadata
...
Restore shared TaskStore persistence and hydration for GitLab tracking metadata.
- Register GitLab tracking JSONB for task creation, updates, and row hydration.
- Reuse the shared mapper during GitLab reconciliation and cover live/deleted reads.
- Migrate GitLab extension tests to the PostgreSQL harness and add a patch changeset.
Files changed:
.changeset/fn-8094-gitlab-tracking-mapping.md | 7 ++
.../__tests__/extension-gitlab-tracking.test.ts | 129 ++++++++++-----------
packages/cli/src/__tests__/pg-extension-harness.ts | 4 -
.../store-gitlab-tracking-hydration.pg.test.ts | 85 ++++++++++++++
.../store-gitlab-tracking-reconcile.test.ts | 11 +-
packages/core/src/task-store/persistence.ts | 9 +-
packages/core/src/task-store/remaining-ops-2.ts | 10 +-
packages/core/src/task-store/serialization.ts | 1 +
packages/core/src/task-store/task-creation.ts | 2 +
9 files changed, 174 insertions(+), 84 deletions(-)
Fusion-Task-Id: FN-8094
Fusion-Task-Lineage: 5e876856-cf42-4628-a5ef-ab562c1bf501
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 05:52:17 -07:00
gsxdsm
f63818a6e9
FN-8072: add critical-action confirmation skip setting
...
Add a global operator preference that bypasses centralized critical-action confirmation dialogs.
- Add a global-only skipConfirmationDialogs setting and Settings toggle
- Return primary/default confirmation results without rendering dialogs when enabled
- Route task reset actions through the centralized confirmation seam and add coverage
- Document the setting and add a minor changeset
Files changed:
.changeset/fn-8072-skip-confirmation-dialogs.md | 7 +++++
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 12 ++++++++-
packages/core/src/settings-schema.ts | 5 ++++
packages/core/src/types.ts | 5 ++++
packages/dashboard/app/App.tsx | 11 ++++----
packages/dashboard/app/components/ListView.tsx | 20 +++++++++++----
packages/dashboard/app/components/TaskCard.tsx | 22 +++++++++++-----
.../dashboard/app/components/TaskDetailModal.tsx | 26 +++++++++++--------
.../app/components/__tests__/ListView.test.tsx | 13 ++++++++++
.../__tests__/SettingsModal.general.test.tsx | 19 ++++++++++++++
.../app/components/__tests__/TaskCard.test.tsx | 17 ++++++++++++
.../components/__tests__/TaskDetailModal.test.tsx | 25 ++++++++++++++++++
.../app/components/settings/save-split.ts | 1 +
.../sections/GlobalGeneralSection.search.ts | 10 ++++++++
.../settings/sections/GlobalGeneralSection.tsx | 10 ++++++++
.../settings-default-descriptions.test.tsx | 1 +
.../app/hooks/__tests__/useConfirm.test.ts | 30 ++++++++++++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 4 +++
packages/dashboard/app/hooks/useConfirm.ts | 21 ++++++++++++++-
packages/i18n/locales/en/app.json | 4 ++-
21 files changed, 235 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-8072
Fusion-Task-Lineage: bab4b8f2-5996-4161-8733-8e03bb6a7024
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 05:42:04 -07:00
gsxdsm
969fce7aa1
FN-8047: migrate AgentStore multi-node tests to PostgreSQL
...
Migrate multi-node AgentStore coverage to shared PostgreSQL-backed fixtures.
- Make concurrent central claim insertion resolve unique-key races as checkout conflicts.
- Rework claim and owning-node handoff tests to use shared async PostgreSQL layers.
- Restore PostgreSQL-compatible tests from the quarantine ledger.
Files changed:
packages/core/src/async-central-db.ts | 9 ++-
.../cross-node-claim-mutex.integration.test.ts | 72 ++++++++++---------
.../distributed-claim-mutex.integration.test.ts | 27 +++----
.../owning-node-handoff.integration.test.ts | 41 +++++------
.../__tests__/reliability-interactions/_helpers.ts | 83 ++++++++++++++++++++--
.../multi-node-claim-mutex-interactions.test.ts | 28 +++-----
.../owning-node-unavailable-interactions.test.ts | 36 +++++-----
packages/engine/vitest.config.ts | 8 +--
scripts/lib/test-quarantine.json | 25 -------
9 files changed, 180 insertions(+), 149 deletions(-)
Fusion-Task-Id: FN-8047
Fusion-Task-Lineage: 3b7ee21e-0190-4364-a0cb-88aac5e2e1a3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 05:33:55 -07:00
gsxdsm
92a8dc8325
FN-8091: migrate CLI plugin persistence test to PostgreSQL
...
Move the CLI plugin-install persistence coverage to the shared PostgreSQL test harness.
- Replace SQLite central and local database assertions with PostgreSQL schema queries.
- Assert global installation and project-scoped state persistence without a local plugin store.
- Clean up temporary plugin fixtures after the PostgreSQL test.
Files changed:
packages/cli/src/commands/__tests__/plugin.test.ts | 120 +++++++++++----------
1 file changed, 64 insertions(+), 56 deletions(-)
Fusion-Task-Id: FN-8091
Fusion-Task-Lineage: 99b8d1da-54b7-4cd3-a086-9e4461a8aa06
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 05:27:47 -07:00
gsxdsm
19ab7a9e93
FN-8068: add input-language task definitions
...
Add an opt-in setting that localizes planner-authored task-definition prose.
- Detect confident Spanish, French, Korean, and Chinese input before instructing triage localization.
- Expose and persist the project-level task-definition language toggle with translations and search support.
- Preserve English structural markers, code, and unsupported or uncertain input for deterministic parsing.
Files changed:
.../fn-8068-task-definition-input-language.md | 7 +++
docs/settings-reference.md | 1 +
packages/core/src/settings-schema.ts | 7 +++
packages/core/src/types.ts | 10 ++++
.../app/__tests__/settings-sections.test.tsx | 18 ++++++
.../dashboard/app/components/SettingsModal.tsx | 4 ++
.../__tests__/SettingsModal.mobileClose.test.tsx | 12 ++++
.../__tests__/SettingsModal.models-auth.test.tsx | 11 ++++
.../app/components/settings/section-keys.ts | 1 +
.../sections/ProjectModelsSection.search.ts | 10 ++++
.../settings/sections/ProjectModelsSection.tsx | 17 ++++++
.../settings-default-descriptions.test.tsx | 1 +
packages/engine/src/__tests__/triage.test.ts | 64 ++++++++++++++++++++++
packages/engine/src/triage.ts | 29 +++++++++-
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 +
packages/i18n/src/resources.d.ts | 2 +
21 files changed, 205 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8068
Fusion-Task-Lineage: fe0102f5-68cb-443c-8512-2ffa5fe0e2f8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 05:18:30 -07:00
gsxdsm
72378cb4f2
FN-8037: add resizable image preview windows
...
Make pending task images compact and inspectable across task creation surfaces.
- Extract shared pending-image thumbnail controls for Quick Add, Task Form, and inline creation.
- Open full images in a responsive, movable, resizable FloatingWindow with Escape focus restoration.
- Add styling, coverage, operator documentation, and a minor changeset.
Files changed:
.changeset/fn-8037-image-preview-modal.md | 7 ++
docs/dashboard-guide.md | 4 +-
.../quick-entry-image-preview-modal.test.tsx | 60 ++++++++++
.../dashboard/app/components/FloatingWindow.css | 22 ++++
.../dashboard/app/components/InlineCreateCard.css | 14 ++-
.../dashboard/app/components/InlineCreateCard.tsx | 26 ++---
.../app/components/PendingImagePreviews.css | 35 ++++++
.../app/components/PendingImagePreviews.tsx | 121 +++++++++++++++++++++
.../dashboard/app/components/QuickEntryBox.tsx | 27 ++---
packages/dashboard/app/components/TaskForm.tsx | 26 ++---
10 files changed, 280 insertions(+), 62 deletions(-)
Fusion-Task-Id: FN-8037
Fusion-Task-Lineage: 3d92f695-67c9-4791-bfcc-ad25f6aa56f4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:58:03 -07:00
gsxdsm
5b4ec4c08f
FN-8042: add merger fallback model lane
...
Add configurable project fallback models for AI merger retries.
- Resolve complete project merger fallback pairs before the shared global fallback.
- Expose merger fallback model and thinking controls in Project Models with reset-aware persistence.
- Apply the fallback lane across merger, review, PR-response, and recovery sessions with tests and documentation.
Files changed:
.changeset/fn-8042-merger-fallback-model.md | 7 +++
docs/settings-reference.md | 4 +-
.../core/src/__tests__/model-resolution.test.ts | 24 ++++++++++
.../core/src/__tests__/settings-parity.test.ts | 3 ++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/model-resolution.ts | 22 +++++++++
packages/core/src/settings-schema.ts | 4 ++
packages/core/src/types.ts | 13 ++++++
.../app/__tests__/settings-save-split.test.ts | 41 +++++++++++++++++
.../app/__tests__/settings-sections.test.tsx | 36 +++++++++++++++
.../app/components/settings/save-split.ts | 7 +--
.../settings/sections/ProjectModelsSection.tsx | 53 +++++++++++++++++++++-
.../settings-default-descriptions.test.tsx | 3 ++
.../src/__tests__/agent-session-helpers.test.ts | 1 +
.../__tests__/mcp-pr-response-forwarding.test.ts | 1 +
packages/engine/src/agent-session-helpers.ts | 10 +++-
packages/engine/src/merger-ai.ts | 17 +++++--
packages/engine/src/merger.ts | 43 +++++++++++++-----
packages/engine/src/pr-response-run-ops.ts | 11 +++--
20 files changed, 276 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-8042
Fusion-Task-Lineage: 31762a72-461e-438c-a12d-2816580283fd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:29:17 -07:00
gsxdsm
b885aff4fd
FN-8043: migrate deprecated dashboard text tokens
...
Replace undefined dashboard secondary-text aliases with the canonical muted token.
- Update CLI provider labels and workflow lifecycle warning chips
- Add regression coverage for deprecated token use across base and light themes
- Add a patch changeset for the dashboard styling fix
Files changed:
.changeset/fn-8043-text-secondary-token-migration.md | 7 ++
...precated-text-secondary-token-migration.test.ts | 103 +++++++++++++++++++++
.../app/components/CursorCliProviderCard.css | 6 +-
.../app/components/GrokCliProviderCard.css | 6 +-
.../app/components/OmpCliProviderCard.css | 6 +-
.../app/components/WorkflowNodeEditor.css | 6 +-
6 files changed, 130 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8043
Fusion-Task-Lineage: 95936078-a40b-4815-bb85-f9597d65ac35
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:15:18 -07:00
gsxdsm
de05cb7566
FN-8039: update responsive task detail tab expectation
...
Align the responsive TaskDetailModal tab-order assertion with the rendered tab set.
- Include Terminal and Cost between Comments and Artifacts in the responsive tab list.
- Document why the regression expectation includes the always-available tabs.
Files changed:
.../__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx | 3 +++
1 file changed, 3 insertions(+)
Fusion-Task-Id: FN-8039
Fusion-Task-Lineage: 86f347a7-ca5a-4a83-8616-4ca303cc6115
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:10:16 -07:00
gsxdsm
3f133e0b13
FN-8058: add task agent log reader
...
Expose paginated, filterable persisted agent logs to task-scoped and chat agent sessions.
- Add the read-only fn_task_logs_read tool across engine, dashboard chat/planning, heartbeat, step, and CLI extension surfaces.
- Filter agent-log entries before pagination, report matching totals, and render complete persisted rows for diagnosis.
- Document the tool, add release metadata, regression coverage, and complete affected engine mocks.
Files changed:
.changeset/fn-8058-task-logs-read.md | 7 ++
docs/agents.md | 4 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 11 +++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../extension-experiment-finalize.test.ts | 2 +
.../src/__tests__/extension-fn-secret-get.test.ts | 2 +
.../__tests__/extension-gitlab-tracking.test.ts | 2 +
.../src/__tests__/extension-integration.test.ts | 1 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 2 +
packages/cli/src/__tests__/extension.test.ts | 1 +
packages/cli/src/extension.ts | 34 ++++++++
.../src/__tests__/agent-logs-backend-mode.test.ts | 28 +++++-
packages/core/src/store.ts | 11 ++-
packages/core/src/task-store/remaining-ops-7.ts | 16 +++-
packages/core/src/types.ts | 1 +
packages/dashboard/src/__tests__/chat.test.ts | 1 +
.../planning-answered-question-reemit.test.ts | 1 +
.../planning-generation-cancellation.test.ts | 1 +
packages/dashboard/src/chat.ts | 5 ++
packages/dashboard/src/planning.ts | 3 +
.../__tests__/agent-task-logs-read-tools.test.ts | 72 ++++++++++++++++
packages/engine/src/agent-heartbeat.ts | 4 +-
packages/engine/src/agent-tools.ts | 99 +++++++++++++++++++++-
packages/engine/src/executor.ts | 6 ++
packages/engine/src/gating-classifications.ts | 2 +
packages/engine/src/index.ts | 6 ++
packages/engine/src/step-session-executor.ts | 6 +-
28 files changed, 316 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-8058
Fusion-Task-Lineage: 74f198b2-f538-4b39-973f-431f22e68f29
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:03:43 -07:00
gsxdsm
b330f9703b
FN-8038: allowlist migration bookkeeping settings
...
Classify PostgreSQL migration bookkeeping as engine-managed settings metadata.
- Allowlist the SQLite migration notice and PostgreSQL inbox completion marker in settings-description coverage.
- Document why neither field is a user-editable Settings description.
Files changed:
.../sections/__tests__/settings-default-descriptions.test.tsx | 4 ++++
1 file changed, 4 insertions(+)
Fusion-Task-Id: FN-8038
Fusion-Task-Lineage: 24424373-970e-4cf0-a9c4-4d743fdec4ca
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:53:37 -07:00
gsxdsm
f44b44f43f
FN-8036: reflow reliability metric cards
...
Reliability metrics now adapt to their content column on narrow dashboard surfaces.
- Reflow metric cards with an auto-fit, minimum-width grid
- Cover the responsive grid contract in ReliabilityView tests
Files changed:
packages/dashboard/app/components/ReliabilityView.css | 6 +++++-
.../app/components/__tests__/ReliabilityView.test.tsx | 12 ++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8036
Fusion-Task-Lineage: e48567ac-2b7e-415d-8652-2c21048cd768
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:46:55 -07:00
gsxdsm
055f3ba75d
FN-8032: align GitLab import detail actions
...
Keep GitLab import details consistent with the shared padded FloatingWindow layout.\n\n- Move the GitLab preview into the shared heading and scrolling-content structure\n- Place the GitLab import control in the shared bottom action bar for mobile reachability\n- Cover cross-provider detail layout and shared mobile-sheet invariants\n\nFiles changed:\n .../dashboard/app/components/GitHubImportModal.tsx | 20 ++++++++++----\n .../__tests__/GitHubImportModal.test.tsx | 32 +++++++++++++++++++---\n 2 files changed, 42 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-8032
Fusion-Task-Lineage: 150b992a-d5fa-4001-b818-7ece031a6cb5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:40:47 -07:00
gsxdsm
2734e61d3e
FN-8080: fix done-card action centerline test
...
Correct done-card action expectations in the badge-wrap regression coverage.
- Assert done cards expose only menu and size header controls
- Document the Archive/Revert placement in the TaskContextMenu
Files changed:
.../app/components/__tests__/TaskCard.badge-wrap.test.tsx | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8080
Fusion-Task-Lineage: 230ff30c-d493-49a8-b501-05a2b8e89b04
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:33:56 -07:00
gsxdsm
297edd93e4
FN-8073: preserve deletion confirmations until explicitly dismissed
...
Keep task deletion confirmations open until users intentionally confirm, cancel, or dismiss the backdrop.
- Track backdrop press origin to ignore trigger click-through events
- Claim dialog stacking order before paint and cover mouse and touch regressions
- Add a patch changeset for the confirmation behavior fix
Files changed:
.changeset/fn-8073-confirm-dialog.md | 7 ++++
packages/dashboard/app/components/ConfirmDialog.tsx | 32 ++++++++++++++++--
.../components/__tests__/ConfirmDialog.test.tsx | 32 +++++++++++++++++-
.../app/hooks/__tests__/useConfirm.test.ts | 38 ++++++++++++++++++++++
4 files changed, 105 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8073
Fusion-Task-Lineage: 15a8636f-a058-4b15-834f-6b3549fee4c2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:28:07 -07:00
gsxdsm
90ce57f127
FN-8070: preserve task title input language
...
Ensure auto-generated task titles use the task description's language.
- Detect description language and add a confident language hint to title prompts
- Cover multilingual title generation and stale-model fallback behavior
- Document the language-preserving title-summary setting and add a patch changeset
Files changed:
.changeset/fn-8070-title-summary-input-language.md | 7 ++
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/ai-summarize.test.ts | 87 ++++++++++++++++++----
packages/core/src/ai-summarize.ts | 18 +++++
4 files changed, 98 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-8070
Fusion-Task-Lineage: e003e2e0-eb0c-487e-83de-8a9b37ee1c02
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:23:25 -07:00
gsxdsm
566158232b
FN-8069: toggle dashboard keyboard shortcuts
...
Dashboard keyboard shortcuts now toggle their associated dashboard interfaces.
- Dispatch toggle callbacks for every configurable dashboard shortcut.
- Restore retained prior views and preserve repeated Settings/Command Center history entries.
- Add regression coverage, documentation, and a dashboard feature changeset.
Files changed:
.changeset/fn-8069-shortcut-toggle.md | 7 +
docs/dashboard-guide.md | 3 +
packages/dashboard/app/App.tsx | 48 ++++--
.../app/__tests__/App.keyboard-shortcuts.test.tsx | 172 +++++++++++++++++----
.../useDashboardKeyboardShortcuts.test.tsx | 82 +++++-----
.../app/hooks/useDashboardKeyboardShortcuts.ts | 40 ++---
.../app/utils/dashboardShortcutToggles.ts | 41 +++++
7 files changed, 290 insertions(+), 103 deletions(-)
Fusion-Task-Id: FN-8069
Fusion-Task-Lineage: c2e6d67a-d215-46dd-9803-78ffb49fbbda
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:17:35 -07:00
gsxdsm
99b79e456b
FN-8066: show reverted badges for completed tasks
...
Persist git-revert provenance and display it on completed task cards.
- Stamp source tasks after clean or already-reverted git outcomes.
- Render localized Reverted badges in completed and archived task views.
- Cover metadata, route, and card behavior with regression tests.
Files changed:
.changeset/fn-8066-reverted-badge.md | 7 +++
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/TaskCard.css | 14 ++++-
packages/dashboard/app/components/TaskCard.tsx | 20 ++++++-
.../app/components/__tests__/TaskCard.test.tsx | 67 ++++++++++++++++++++++
.../app/utils/__tests__/taskRevert.test.ts | 17 ++++++
packages/dashboard/app/utils/taskRevert.ts | 11 ++++
.../src/__tests__/task-revert-route.test.ts | 35 +++++++++++
.../src/routes/register-task-workflow-routes.ts | 30 ++++++++++
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 +
packages/i18n/src/resources.d.ts | 2 +
16 files changed, 213 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8066
Fusion-Task-Lineage: 2a071c14-7e5d-4161-ab0c-158f47ad9c22
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 03:00:59 -07:00
gsxdsm
f3b68c9fff
FN-8065: preview plans before refinement questions
...
Show a read-only plan preview at the Planning Mode deepening checkpoint.
- Persist pending plan details on the checkpoint question for fresh and restored sessions.
- Render formatted plan content and deliverables above refinement choices.
- Cover preview behavior and document the checkpoint flow.
Files changed:
.../fn-8065-planning-checkpoint-plan-preview.md | 7 +++
docs/dashboard-guide.md | 3 +-
packages/core/src/types.ts | 11 ++++
.../dashboard/app/components/PlanningModeModal.css | 60 ++++++++++++++++++++++
.../dashboard/app/components/PlanningModeModal.tsx | 44 ++++++++++++++++
.../PlanningModeModal.planning-flow.test.tsx | 24 ++++++++-
.../planning-interview-formatters.test.ts | 19 +++++++
packages/dashboard/src/planning.ts | 10 ++++
8 files changed, 175 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8065
Fusion-Task-Lineage: 13cd52c3-af82-4723-a6b1-3366775213e1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 02:54:33 -07:00