Commit Graph

1162 Commits

Author SHA1 Message Date
Fusion
c55494eda7 feat(FN-4147): add mobile-friendly github tracking enable button in header
Adds a GitHub tracking toggle affordance to the task detail header with accompanying tests, documentation updates, and a changeset, plus a CSS fix for mobile header wrapping.

Fusion-Task-Id: FN-4147
2026-05-12 10:27:36 -07:00
gsxdsm
6124535759 fix(FN-4122): use unique tmp filename for task.json atomic writes
Two TaskStore instances writing to the same task concurrently raced on a
shared task.json.tmp filename: one writer's rename consumed the tmp file,
the other ENOENTed. withTaskLock only serializes within a single store
instance, so cross-process writers (engine + dashboard server) were
unprotected.

Each write now uses task.json.<pid>.<uuid>.tmp and cleans up its own tmp
on rename failure. Adds a regression test that drives 40 concurrent
same-task updates across 4 TaskStore instances.

Fixes FN-4122, FN-4123, FN-4148.
2026-05-12 09:41:43 -07:00
Fusion
7a982a2a5c fix(FN-4127): harden ntfy notification delivery
- Fall back to ntfy JSON publish requests for unicode titles/messages while preserving auth and click metadata
- Truncate ntfy titles and UTF-8 message bodies to documented limits without splitting surrogate pairs
- Extend notifier and provider tests to cover unicode mailbox events, truncation, and end-to-end message notification delivery
- Document the ntfy encoding/truncation behavior and add a patch changeset for @runfusion/fusion

Fusion-Task-Id: FN-4127
2026-05-12 09:41:24 -07:00
Fusion
84ccc470b6 feat(FN-4142): enrich GitHub tracking comments with done status
Implements GitHub tracking comments for done tasks (FN-4142), extending the existing tracking comment system in the dashboard to emit comments when tasks complete, with corresponding tests and documentation.

Fusion-Task-Id: FN-4142
2026-05-12 09:32:50 -07:00
Fusion
24b839bb1b feat(FN-4118): restore last viewed room thread on chat load
Adds chat room scroll anchoring so that when returning to a room, the view stays positioned at the previously visited thread rather than resetting to the top, with test coverage in the rooms suite and a patch changeset for the published CLI.

Fusion-Task-Id: FN-4118
2026-05-12 09:20:39 -07:00
Fusion
87377794e5 feat(FN-4120): add mobile chat search to ChatView
Added mobile chat search functionality to the ChatView with a supporting test update and changeset for release.

Fusion-Task-Id: FN-4120
2026-05-12 09:13:52 -07:00
Fusion
429bdc213b feat(FN-4071): add overlap guard to prevent concurrent merge conflicts
Implements an overlap guard for the merger that prevents concurrent merges of tasks with conflicting file changes, wired through a new overlap-aware fallback strategy and exposed via a dashboard setting. The feature includes a 406-line test suite for the overlap guard, a 203-line lifecycle integrati

Fusion-Task-Id: FN-4071
2026-05-12 09:06:54 -07:00
Fusion
759f8f5ac9 fix(FN-4117): render mobile mention popup above the composer
- Force the agent mention popup to anchor above the input on mobile layouts
- Add regression coverage for the mobile media-query positioning and popup modifier classes
- Add a patch changeset for the published CLI package documenting the mobile popup fix

Fusion-Task-Id: FN-4117
2026-05-12 08:28:44 -07:00
Fusion
acc2db98d9 feat(FN-4116): fix github tracking issue creation
Fixes GitHub CLI issue creation by repairing the `gh issue create` call in the dashboard and adds logging for tracking failures, with tests covering both the core GitHub module and the tracking layer.

Fusion-Task-Id: FN-4116
2026-05-12 08:28:44 -07:00
Fusion
37063a08ef feat(FN-4106): preserve rerun summaries in executor task-done output
Preserves task rerun summaries so they persist across retries rather than being overwritten, with tests validating the persistence behavior and a patch changeset for `@runfusion/fusion`.

Fusion-Task-Id: FN-4106
2026-05-12 08:28:44 -07:00
gsxdsm
e1dc7e2da3 chore(release): v0.27.1
Version bump via changesets.
2026-05-12 07:48:21 -07:00
Fusion
3ac619df2c fix(FN-4112): remove mobile preset grid scroll cap
- Remove the inner preset grid max-height and overflow cap in the New Agent dialog mobile layout
- Add a dashboard CSS regression test that asserts the mobile media block keeps the preset grid fully visible
- Add a patch changeset for @runfusion/fusion covering the mobile blank-space fix

Fusion-Task-Id: FN-4112
2026-05-12 07:47:11 -07:00
Fusion
5804b8651c feat(FN-4084): recover tasks blocked by stalled merger self-healing
Merge starvation recovery was hardened across the engine: self-healing now detects and clears blocked-in-review tasks that starve the merger, the project engine gains defensive recovery hooks for stalled merges, and tests cover the new recovery paths.

Fusion-Task-Id: FN-4084
2026-05-12 07:47:11 -07:00
Fusion
5bdf92b26e feat(FN-4094): cache schema compatibility checks with fingerprint fast path
Adds schema fingerprinting to cache schema compatibility checks, enabling a fast path that skips unnecessary re-initialization work on startup, with performance tests covering the new code paths and updated storage documentation.

Fusion-Task-Id: FN-4094
2026-05-12 07:47:11 -07:00
Fusion
7ca8d5ab50 feat(FN-4078): add ntfy access token support to notifications
Adds ntfy access token support to Fusion's notification system, wiring the token through the core settings schema, dashboard UI (SettingsModal), engine notifier, and notification pipeline, with corresponding tests across core, dashboard, and engine packages; also updates settings and storage documen

Fusion-Task-Id: FN-4078
2026-05-12 07:47:11 -07:00
Fusion
bec0b34c45 feat(FN-4044): harden task ID collision guards and allocation safety
Hardens task ID collision guards across distributed instances by adding `isAllocated` checks in `store.ts` and rewriting `distributed-task-id.ts` with deterministic collision-safe allocation logic, backed by a new `store-create-collision.test.ts` suite reproducing the race path. Updates architecture

Fusion-Task-Id: FN-4044
2026-05-12 07:47:11 -07:00
Fusion
fc863f6e96 feat(FN-4067): add squash audit gate to merger with integration tests
Adds a squash-merge audit gate that verifies duplicate-cherry-pick commits and file-overlap losses after any squash merge into main, restoring the post-squash audit step to the merge workflow with test coverage for both the audit logic and the broader merger lifecycle.

Fusion-Task-Id: FN-4067

Fusion-Task-Lineage: 593aa917-5640-495b-b1ae-80c3eaa09d01
2026-05-12 07:47:11 -07:00
Fusion
06feb61686 feat(FN-4083): add WAL enforcement, immediate write transactions, and concu
Hardened SQLite concurrent-write safety in `@fusion/core` by auditing WAL enforcement and adding immediate write transactions to prevent stale reads under load, with executor semaphore limit tests in `@fusion/engine` validating the concurrency bounds; added a new `store-concurrent-writes.test.ts` in

Fusion-Task-Id: FN-4083

Fusion-Task-Lineage: adabe51a-a9c4-481a-850d-985c373df51a
2026-05-12 07:47:10 -07:00
Fusion
1a1f60c748 feat(FN-4070): add workflow revision forking for task retries
Implements workflow revision forking with a new per-project setting, allowing follow-up tasks to inherit a fork of the calling task's workflow rather than the original revision. The feature adds classification logic, fork execution, and the settings UI, with docs and tests covering the full flow.

Fusion-Task-Id: FN-4070
2026-05-12 07:47:10 -07:00
Fusion
4d47cb4bd6 feat(FN-4042): add SQLite lock contention recovery in core database layer
Adds SQLite lock contention recovery for WAL-mode databases, covering both the core database layer (db.ts, central-db.ts, store.ts) and the run-audit subsystem, with comprehensive unit and integration test coverage and updated storage documentation.

Fusion-Task-Id: FN-4042
2026-05-12 07:47:10 -07:00
Fusion
f3a39753b3 feat(FN-4082): compact reviewer prompts and retry on context limits
Adds reviewer prompt compaction and automatic retry logic when the reviewer hits context-window limits, with matching test coverage and a changeset for `@runfusion/fusion`.

Fusion-Task-Id: FN-4082
2026-05-12 07:47:10 -07:00
Fusion
9c80988e29 feat(FN-4081): keep mobile timestamps inline in task detail modal
FN-4081 keeps task detail timestamps inline on mobile (no collapsible "more" row), with accompanying docs updates and a changeset for `@runfusion/fusion`. A test contract was updated to match the responsive layout change.

Fusion-Task-Id: FN-4081
2026-05-12 07:47:10 -07:00
Fusion
e3904786ac feat(FN-4074): add priority option to task creation in engine and extension
Adds task priority support to the task creation flow, spanning the engine runtime (`agent-tools.ts`, `triage.ts`), the CLI extension interface (`extension.ts`), and corresponding documentation and tests. The changeset bumps `@runfusion/fusion` as a minor version.

Fusion-Task-Id: FN-4074

Fusion-Task-Lineage: 726c0ae6-90fb-4c13-ace1-215a2becb2a9
2026-05-12 07:47:10 -07:00
Fusion
7b5ec3d063 feat(FN-4045): surface and handle delegate task collision errors
Added delegate collision detection and error surfacing across the task creation and delegation pipeline. The core store now throws a typed `DelegateCollisionError` when `createTask` encounters a duplicate task ID, the engine's `delegate_task` tool propagates these errors with context, and the CLI ex

Fusion-Task-Id: FN-4045
2026-05-12 07:47:10 -07:00
Fusion
c1035d8424 feat(FN-4029): expose database health in API and store contracts
Adds database health endpoints to the API layer (FN-4029), exposing a new store health accessor through `api-node.ts` and `api/legacy.ts`, with aligned auth middleware integration tests and updated architecture documentation.

Fusion-Task-Id: FN-4029
2026-05-12 07:47:10 -07:00
Fusion
ee46b5ad56 feat(FN-4031): recover stale review sessions and unblock dependent tasks on
Adds defensive recovery logic for stale review sessions: the executor now guards against resuming in an invalid worktree context, the self-healing manager recovers stale session paths and unblocks dependent tasks, and the restart recovery coordinator is updated to classify these cases correctly. Inc

Fusion-Task-Id: FN-4031
2026-05-12 07:47:10 -07:00
gsxdsm
52ac48ab4b chore(release): v0.27.0
Version bump via changesets.
2026-05-11 21:52:56 -07:00
Fusion
2963923571 feat(FN-4050): add one-click install support for reports plugin
- Add reports plugin to bundled plugin resolver so it can be installed from packaged assets
- Expose reports plugin in dashboard plugin manager and server routes for one-click install flows
- Add CLI and dashboard test coverage for bundled install behavior and plugin route availability
- Update reports/plugin management/settings docs and include a changeset for @runfusion/fusion
2026-05-11 21:48:26 -07:00
Fusion
4404c6103e feat(FN-4053): unify task ID allocation with store-owned distributed alloca
Unifies task ID allocation under a single store-owned distributed allocator, removing redundant ID-generation logic from dashboard route handlers and simplifying the overall flow; Step 1 merges the allocation authority into the store, Step 3 removes the now-unnecessary mixed-path routing, and tests

Fusion-Task-Id: FN-4053
2026-05-11 21:48:26 -07:00
Fusion
840cd1d1e0 feat(FN-4062): add global thinking log setting to persist agent reasoning a
Adds a global `thinkingLogEnabled` setting that gates AI thinking log persistence across the engine (executor, reviewer, merger, triage, step-session) and exposes the control in the dashboard Settings modal, with tests verifying settings parity and modal behavior.

Fusion-Task-Id: FN-4062
2026-05-11 21:48:26 -07:00
Fusion
03b8bdb323 feat(FN-4057): add printing press built-in plugin entry
Bundled the Printing Press plugin into the dashboard by adding it as a built-in entry in `PluginManager.tsx` with corresponding tests and documentation updates, and included a changeset to publish the change under `@runfusion/fusion`.

Fusion-Task-Id: FN-4057
2026-05-11 21:48:26 -07:00
Fusion
e4ec922212 feat(FN-3935): align engineer role routing with explicit assignment and del
Centralized routing policy helpers in core and aligned both direct assignment and delegation to route engineer-role agents consistently, ensuring assigned tasks respect explicit engineer routing the same way delegated tasks do. Added comprehensive test coverage across core, CLI, dashboard, and engin

Fusion-Task-Id: FN-3935

Fusion-Task-Lineage: 069f4d54-f7a8-4bd3-a2c3-4de830de042f
2026-05-11 21:48:26 -07:00
Fusion
0f5c08603f feat(FN-4060): fix mobile keyboard layout regression in QuickChatFAB compos
Fixes the keyboard-up composer gap in QuickChatFAB (Step 2), with companion regression tests covering the mobile keyboard layout and QuickChatFAB component behavior.

Fusion-Task-Id: FN-4060

Fusion-Task-Lineage: 341b16b1-47db-4e23-b9fe-87cf0782da6a
2026-05-11 21:48:26 -07:00
Fusion
5c3a1df977 feat(FN-4027): memoize startup slim list reads to avoid redundant fresh fet
Added memoization for startup slim task list reads (`store.ts`), with dashboard server routing startup reads through the memo window and tests covering the store watcher consumers in scheduler and worktree-pool, plus performance documentation.

Fusion-Task-Id: FN-4027
2026-05-11 21:48:26 -07:00
Fusion
a8b904c993 feat(FN-4039): recover worktree db scratch bootstrap on hydration failure
Codifies the worktree database open-path hydration failure with a recovery bootstrap mechanism, documented the behavior in storage docs, and added test coverage for the executor hydration degradation path — all gated behind a patch changeset for `@runfusion/fusion`.

Fusion-Task-Id: FN-4039
2026-05-11 21:48:26 -07:00
Fusion
c501e00fdf feat(FN-4035): dedupe integrity checks per database path
- Deduplicate concurrent integrity-check requests by sharing one in-flight check per database path
- Refactor core DB integrity-check flow to prevent redundant work while preserving safety behavior
- Add core DB tests covering deduped execution and expected integrity-check outcomes
- Document integrity-check dedup behavior in architecture docs
- Add a changeset for @runfusion/fusion patch release
2026-05-11 17:59:26 -07:00
Fusion
e6e596ebb7 feat(FN-4025): defer database integrity check and expose via health endpoin
Exposes database health status via the API by deferring integrity checks asynchronously, with docs and tests covering the core DB layer, store integration, and dashboard server health endpoint.

Fusion-Task-Id: FN-4025
2026-05-11 14:15:17 -07:00
gsxdsm
d695201ca2 chore(FN-3908): add changeset for multi-dependency auto-unblock fix 2026-05-11 13:24:52 -07:00
Fusion
c41d49f28b feat(FN-3906): add frontend scope helpers for workflow step auto-skip
Adds frontend-UX auto-skip behavior for workflow steps in the executor, with tests covering the flow and documentation of the recovery logic. A changeset is included for this patch release.

Fusion-Task-Id: FN-3906

Fusion-Task-Lineage: 3c50b82b-dd03-4ba3-8d77-5aaabb8734da
2026-05-11 11:21:21 -07:00
Fusion
867c684eec feat(FN-3899): stabilize blockedBy overlap stamping and add recovery utilit
Stabilizes blocked-by overlap stamping in the scheduler and adds a standalone `recover-stale-blocked-by` utility script to clear stale upstream blockers, with corresponding scheduler tests and architecture documentation.

Fusion-Task-Id: FN-3899
2026-05-11 10:36:01 -07:00
Fusion
3c2f1bdff0 feat(FN-3905): use merger session model for post-merge workflow steps
The merge implements post-merge model resolution, using the merger's own session model for executing post-merge prompt workflow steps instead of falling back to executor model defaults. Tests cover the resolution hierarchy, and documentation clarifies the precedence order for downstream consumers.

Fusion-Task-Id: FN-3905
2026-05-11 09:32:53 -07:00
Fusion
ef4aeb253a feat(FN-4011): align room input keyboard handlers
Completes Step 1 of mobile touch-focus parity by aligning room input keyboard handlers in ChatView, with a regression test covering mobile room and direct composer touch-focus behavior.

Fusion-Task-Id: FN-4011
2026-05-11 09:11:19 -07:00
Fusion
d1f4d5f579 feat(FN-3891): expose verification auto-fix retries in merge settings
- Add verificationFixRetries input to SettingsModal merge section with 0-3 clamping

- Default to 3 retries with proper empty-value fallback to undefined

- Cover edge cases with SettingsModal tests: default, valid values, clamping, clearing

- Add patch changeset for @runfusion/fusion

- Update settings-reference.md with revised default and description

Fusion-Task-Id: FN-3891
2026-05-11 08:09:14 -07:00
gsxdsm
81f143db18 fix(roadmap-plugin): drop dashboard view re-export from server entry
The plugin's main `index.ts` re-exported `RoadmapDashboardView`, which chain-loaded `RoadmapsView.css` whenever the server imported the plugin (via `packages/dashboard/src/roadmap-routes.ts`). Under tsx/Node ESM this crashes fusion at startup with `ERR_UNKNOWN_FILE_EXTENSION`. The dashboard view is still reachable via the dedicated `./dashboard-view` subpath used by `registerBundledPluginViews`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 08:02:53 -07:00
Fusion
76c113c2f2 feat(FN-3860): add cadence resolution seam (+7 more)
Commits merged:
- feat(FN-3860): complete Step 8 — documentation and delivery
- test(FN-3860): complete Step 7 — add scaffold seam coverage
- feat(FN-3860): complete Step 6 — re-export scaffold seams
- feat(FN-3860): complete Step 5 — add pipeline orchestrator seam
- feat(FN-3860): complete Step 4 — add in-memory runs store seam
- feat(FN-3860): complete Step 3 — add aggregation seam
- feat(FN-3860): complete Step 2 — add cadence resolution seam
- feat(FN-3846): short-circuit phantom merges for already-landed branches

Files changed:
.changeset/fn-3860-reports-scaffold-files.md       |  5 ++
 plugins/fusion-plugin-reports/README.md            |  9 +++
 .../src/__tests__/scaffold.test.ts                 | 60 +++++++++++++++++++
 plugins/fusion-plugin-reports/src/aggregation.ts   | 23 ++++++++
 plugins/fusion-plugin-reports/src/cadence.ts       | 23 ++++++++
 plugins/fusion-plugin-reports/src/index.ts         |  4 ++
 plugins/fusion-plugin-reports/src/pipeline.ts      | 58 ++++++++++++++++++
 plugins/fusion-plugin-reports/src/runs-store.ts    | 69 ++++++++++++++++++++++
 8 files changed, 251 insertions(+)

Fusion-Task-Id: FN-3860
2026-05-11 08:02:53 -07:00
Fusion
1257155a6f feat(FN-4001): merge fusion/fn-4001
Commits merged:
- merge fusion/fn-4001

Files changed:
packages/cli/src/__tests__/bundle-output.test.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Fusion-Task-Id: FN-4001
2026-05-11 08:02:53 -07:00
Fusion
3a67c1b065 feat(FN-3637): establish canonical roadmap plugin ID and compatibility rout
Merged commits stabilize the Fusion roadmap plugin's identity and routing surface, establishing a canonical plugin ID and compatibility routes so the roadmap plugin integrates cleanly with the dashboard's plugin system. Added new roadmap-routes and roadmap-suggestions modules in the dashboard packag

Fusion-Task-Id: FN-3637
2026-05-11 06:47:43 -07:00
Fusion
9b4cf90d25 feat(FN-3841): add worktree database hydration to executor
Implements worktree database hydration for the executor (`worktree-db-hydrate.ts`), enabling the task executor to restore its database state from a worktree on resume, with integration in `executor.ts` and comprehensive test coverage across the new module and worktree scenarios. Documentation and a

Fusion-Task-Id: FN-3841
2026-05-11 06:47:43 -07:00
Fusion
5640316e0c feat(FN-3998): add task lineage commit associations API, UI, and tests
Adds task lineage commit associations: a new API route stores and exposes which commits belong to which task, the `TaskChangesTab` surfaces these lineage links visually, and documentation covers the reconciliation model. Includes comprehensive tests for both the route and component.

Fusion-Task-Id: FN-3998
2026-05-11 06:47:43 -07:00
Fusion
d6da4ebf8d feat(FN-3834): short-circuit no-op merges and auto-finalize review tasks
Merged FN-3834 to add a no-op merge recovery flow to the merger, including a branch-ahead detector, short-circuit logic to exclude no-op merges from the mergeable sweep, and finalization of no-op review tasks — backed by substantial test coverage across merger and self-healing modules.

Fusion-Task-Id: FN-3834
2026-05-11 06:47:43 -07:00