Commit Graph

5560 Commits

Author SHA1 Message Date
gsxdsm
d22a52149d chore(release): v0.29.0
Version bump via changesets.
2026-05-13 21:39:15 -07:00
Fusion
3afc086995 feat(FN-4422): restore last active quick chat session on reopen
Restores the latest active quick chat session when the QuickChatFAB is opened, with corresponding test coverage for the restored session behavior.

Fusion-Task-Id: FN-4422
2026-05-13 21:30:52 -07:00
Fusion
9b4a1ca04d feat(FN-4418): complete Step 4 — collapsible file editor toolbar actions
Fusion-Task-Id: FN-4418
Fusion-Task-Lineage: 088af204-a608-46e1-9ca6-4e021c6d751b
2026-05-13 21:01:40 -07:00
Fusion
6d111ad6a0 docs(FN-4424): complete Step 8 — document subsumed-branch auto-skip
Fusion-Task-Id: FN-4424
Fusion-Task-Lineage: 0a3120bf-9f09-45de-bda7-a59c5842b2d9
2026-05-13 20:56:34 -07:00
Fusion
b71371e692 feat(FN-4424): complete Step 6 — add release changeset
Fusion-Task-Id: FN-4424
Fusion-Task-Lineage: 0a3120bf-9f09-45de-bda7-a59c5842b2d9
2026-05-13 20:56:33 -07:00
Fusion
609ed5da90 test(FN-4424): complete Step 5 — cover empty cherry-pick real-git cases
Fusion-Task-Id: FN-4424
Fusion-Task-Lineage: 0a3120bf-9f09-45de-bda7-a59c5842b2d9
2026-05-13 20:56:33 -07:00
Fusion
d98943efca feat(FN-4424): complete Step 2 — add empty cherry-pick detection
Fusion-Task-Id: FN-4424
Fusion-Task-Lineage: 0a3120bf-9f09-45de-bda7-a59c5842b2d9
2026-05-13 20:56:33 -07:00
Fusion
bbfb2b74b2 feat(FN-4150): complete Step 4 — document workflow step resolver support
Fusion-Task-Id: FN-4150
Fusion-Task-Lineage: 153c239b-f6cd-49e4-bc13-216e0d2ca815
2026-05-13 20:47:18 -07:00
Fusion
a232bbeca9 test(FN-4150): complete Step 3 — add workflow integration assertions
Fusion-Task-Id: FN-4150
Fusion-Task-Lineage: 153c239b-f6cd-49e4-bc13-216e0d2ca815
2026-05-13 20:47:18 -07:00
Fusion
a85618bebf feat(FN-4150): complete Step 2 — preserve plugin workflow step mode metadata
Fusion-Task-Id: FN-4150
Fusion-Task-Lineage: 153c239b-f6cd-49e4-bc13-216e0d2ca815
2026-05-13 20:47:18 -07:00
Fusion
be2d70bd21 test(FN-4150): align plugin tests with workflowSteps contributions
Fusion-Task-Id: FN-4150
Fusion-Task-Lineage: 153c239b-f6cd-49e4-bc13-216e0d2ca815
2026-05-13 20:47:18 -07:00
Fusion
84056ce666 feat(FN-4150): complete Step 1 — add cli printing press workflow contributions
Fusion-Task-Id: FN-4150
Fusion-Task-Lineage: 153c239b-f6cd-49e4-bc13-216e0d2ca815
2026-05-13 20:47:18 -07:00
Fusion
de02cadc38 feat(FN-4385): align ChatView mobile padding note and test tag
Fixed mobile padding consistency in ChatView by aligning a CSS comment and its corresponding test tag to match, keeping documentation and tests in sync for FN-4385.

Fusion-Task-Id: FN-4385
2026-05-13 20:37:09 -07:00
Fusion
9eecbc4c15 test(FN-4421): complete Step 2 — add mobile section picker regression
Fusion-Task-Id: FN-4421
Fusion-Task-Lineage: a39ef935-f92d-41e4-bf04-4216f515dc71
2026-05-13 20:26:06 -07:00
Fusion
193d9e63a5 test(FN-4421): complete Step 1 — add desktop project general nav regression
Fusion-Task-Id: FN-4421
Fusion-Task-Lineage: a39ef935-f92d-41e4-bf04-4216f515dc71
2026-05-13 20:26:06 -07:00
Fusion
4eb73a983e fix(FN-4186): stabilize workspace lint and test baselines
Fusion-Task-Id: FN-4186
Fusion-Task-Lineage: 30721f11-a830-4549-aa91-d8c3186c0dcf
2026-05-13 20:20:26 -07:00
Fusion
2ff2c1f112 feat(FN-4186): complete Step 3 — add changeset for chat brevity update
Fusion-Task-Id: FN-4186
Fusion-Task-Lineage: 30721f11-a830-4549-aa91-d8c3186c0dcf
2026-05-13 20:20:26 -07:00
Fusion
dca52428e8 test(FN-4186): complete Step 2 — add chat prompt guidance regression tests
Fusion-Task-Id: FN-4186
Fusion-Task-Lineage: 30721f11-a830-4549-aa91-d8c3186c0dcf
2026-05-13 20:20:26 -07:00
Fusion
85fbb642c0 feat(FN-4186): complete Step 1 — tighten chat prompt brevity guidance
Fusion-Task-Id: FN-4186
Fusion-Task-Lineage: 30721f11-a830-4549-aa91-d8c3186c0dcf
2026-05-13 20:20:25 -07:00
Fusion
72ccff09ef feat(FN-4152): complete Step 7 — documentation and changeset
Fusion-Task-Id: FN-4152
Fusion-Task-Lineage: cd26df5e-92f2-431a-950e-84a0fd81bd1f
2026-05-13 20:15:06 -07:00
Fusion
65ad09c0e7 test(FN-4416): handle multi-file mobile media blocks in CSS regression
Fusion-Task-Id: FN-4416
Fusion-Task-Lineage: c2fc4da9-6fc3-4734-b627-2943c5500102
2026-05-13 20:08:37 -07:00
Fusion
7a9713d0b9 chore(FN-4416): add changeset
Fusion-Task-Id: FN-4416
Fusion-Task-Lineage: c2fc4da9-6fc3-4734-b627-2943c5500102
2026-05-13 20:08:37 -07:00
Fusion
8f7e6e076e test(FN-4416): guard mobile memory editor min-height regression
Fusion-Task-Id: FN-4416
Fusion-Task-Lineage: c2fc4da9-6fc3-4734-b627-2943c5500102
2026-05-13 20:08:36 -07:00
Fusion
30cecb4701 fix(FN-4416): raise mobile min-height for Settings memory editor
Fusion-Task-Id: FN-4416
Fusion-Task-Lineage: c2fc4da9-6fc3-4734-b627-2943c5500102
2026-05-13 20:08:36 -07:00
Fusion
b799a4eaae feat(FN-4343): complete Step 5 — document workflow scope enforcement
Fusion-Task-Id: FN-4343
Fusion-Task-Lineage: b880b71a-9250-4d9e-bdac-8298a73058f7
2026-05-13 20:03:31 -07:00
Fusion
f81fe5ddc0 fix(FN-4343): isolate workflow-step scope checks to post-step delta
Fusion-Task-Id: FN-4343
Fusion-Task-Lineage: b880b71a-9250-4d9e-bdac-8298a73058f7
2026-05-13 20:03:31 -07:00
Fusion
7366bb887d feat(FN-4343): complete Step 3 — enforce workflow step scope invariants
Fusion-Task-Id: FN-4343
Fusion-Task-Lineage: b880b71a-9250-4d9e-bdac-8298a73058f7
2026-05-13 20:03:31 -07:00
Fusion
06f44f8f8d feat(FN-4343): complete Step 2 — dual-signal frontend ux auto-skip
Fusion-Task-Id: FN-4343
Fusion-Task-Lineage: b880b71a-9250-4d9e-bdac-8298a73058f7
2026-05-13 20:03:31 -07:00
Fusion
085c44bc25 feat(FN-4315): add audit recovery pipeline documentation and changeset
Completes FN-4315 by adding a patch changeset for `@runfusion/fusion` and updating project documentation (AGENTS.md and settings reference) to cover the audit recovery pipeline feature.

Fusion-Task-Id: FN-4315

Fusion-Task-Lineage: 2646fd86-e525-4b62-a041-616fa7789e84
2026-05-13 20:03:02 -07:00
Fusion
1b925f1e1c feat(FN-4412): complete Steps 2-6 — add bulk pause/unpause/archive actions
Fusion-Task-Id: FN-4412
Fusion-Task-Lineage: 20883b92-0de6-4b95-b8f8-9075f1d9d54e
2026-05-13 19:33:34 -07:00
Fusion
746dc9633d feat(FN-4412): complete Step 1 — wire bulk action handlers to ListView
Fusion-Task-Id: FN-4412
Fusion-Task-Lineage: 20883b92-0de6-4b95-b8f8-9075f1d9d54e
2026-05-13 19:33:34 -07:00
Fusion
c9d0fcd0be feat(FN-4315): complete Step 2 — add programmatic survival checks
Fusion-Task-Id: FN-4315
Fusion-Task-Lineage: 2646fd86-e525-4b62-a041-616fa7789e84
2026-05-13 19:30:20 -07:00
Fusion
cb53d13623 feat(FN-4315): complete Step 1 — add audit recovery settings and bounce field plumbing
Fusion-Task-Id: FN-4315
Fusion-Task-Lineage: 2646fd86-e525-4b62-a041-616fa7789e84
2026-05-13 19:30:20 -07:00
Fusion
f790436c95 feat(FN-4415): revert todo aging indicator from FN-4316
Reverts the FN-4316 todo aging indicator feature, removing the `TodoAgingSummary` component and its CSS, the `todoAging` utility, all associated tests, and the corresponding documentation. The revert is accompanied by a changeset confirming the patch-level reversal.

Fusion-Task-Id: FN-4415
2026-05-13 19:22:38 -07:00
gsxdsm
ab4df2a72f fix(FN-4417): prefer local main over origin/main in contamination base
Follow-up to 35854e047. The previous fix correctly stopped using
task.baseCommitSha for the contamination check, but the new
resolveContaminationBaseRef tried origin/main first and fell back to
local main only if the origin/main lookup failed. On dev machines that
have not pushed recently, origin/main is a tracking ref that can lag
local main by hundreds of commits. `git merge-base HEAD origin/main`
then resolves successfully and returns the last common ancestor between
the (force-reset-to-local-main) branch and the stale origin/main ref,
which is exactly the same stale SHA the prior bug surfaced. Every
commit on local main since that point is then flagged as foreign
contamination.

Observed: after restarting the engine with 35854e047, FN-4315/FN-4403
still failed with `since base 961f3da8bb7b...`. Local main was 166
commits ahead of origin/main; 961f3da was the last shared commit.

Fix: reorder the shell fallback to prefer `main` over `origin/main`.
Local main is the canonical integration target for Fusion's merger,
and origin/main is only useful as a fallback when local main does not
exist (rare in a worktree).

Test updated: `resolveContaminationBaseRef returns the current
merge-base...` now asserts local `main` appears before `origin/main` in
the issued command so the shell `||` resolves to local main first.

Fusion-Task-Id: FN-4417
2026-05-13 19:07:31 -07:00
gsxdsm
35854e0479 fix(FN-4417): stop false-positive branch contamination from stale baseCommitSha
The contamination check at executor.ts was reusing task.baseCommitSha as
its reference SHA. That field is intentionally preserved across resumed
sessions for stable diff math, which means it can lag behind main by
many commits. Passing it to assertCleanBranchAtBase caused every
legitimately-merged commit on main since the stale SHA to be reported
as a foreign task-attributed contamination commit, pausing the task
with pausedReason=branch-cross-contamination.

FN-4403 was the trigger case: a pooled worktree was force-reset to
current main by WorktreePool.prepareForTask (correctly), then the
executor immediately ran assertCleanBranchAtBase(rootDir, branch,
staleBaseCommitSha, taskId) and flagged 157 commits across ~39
unrelated FN-* tasks as contamination. FN-4417 itself then hit the
same bug when it tried to start, blocking the board.

Two fixes, both in packages/engine/src/executor.ts:

1. New resolveContaminationBaseRef(worktreePath) computes a fresh
   merge-base against origin/main or main and is used in place of
   resolveDiffBaseRef for the contamination check. It never reads
   task.baseCommitSha and never falls back to HEAD~1 (which on a
   force-reset pooled branch would be a main commit and re-introduce
   the same false positive at smaller scale). Returns undefined on
   git failure so the caller treats it as check skipped.

2. captureBaseCommitSha gains an explicit { isResume: boolean }
   parameter and only preserves an existing baseCommitSha when
   isResume is true. On fresh/pool acquisitions the branch was just
   force-reset to current main, so the stored value is stale by
   definition. Always recapture in that case. Diff-base stability
   across resumed sessions (FN-4309/FN-4383) is preserved by passing
   isResume: true on resume; the existing executor call site is
   already gated on non-resume and passes false.

Tests:
- executor-base-commit-capture.test.ts: updated to thread isResume
  through assertions and added a FN-4417 regression case that verifies
  a stale-but-ancestor baseCommitSha is recaptured (not preserved) on
  non-resume.
- executor-base-commit-capture.real-git.test.ts: FN-4309/FN-4383
  multi-session test now explicitly passes isResume: true on the
  second capture, matching the real resume code path.
- executor-contamination-base.test.ts (new): three focused tests for
  resolveContaminationBaseRef covering fresh-merge-base resolution,
  graceful failure when neither origin/main nor main resolves, and a
  structural guard that the function arity is 1 (no baseCommitSha
  parameter, so the bug cannot regress through that surface).

Verified: 4265 engine tests pass; tsc clean.

Fusion-Task-Id: FN-4417
2026-05-13 18:44:41 -07:00
Fusion
ec58a4a67b feat(FN-4316): complete Step 6 — document todo aging indicator
Fusion-Task-Id: FN-4316
Fusion-Task-Lineage: 6b2b78b4-effa-479c-9a22-5a53d0f74894
2026-05-13 18:14:23 -07:00
Fusion
e64345393e test(FN-4316): complete Step 4 — add todo aging column coverage
Fusion-Task-Id: FN-4316
Fusion-Task-Lineage: 6b2b78b4-effa-479c-9a22-5a53d0f74894
2026-05-13 18:14:23 -07:00
Fusion
c12c462be2 feat(FN-4316): complete Step 3 — mount todo aging filter in column
Fusion-Task-Id: FN-4316
Fusion-Task-Lineage: 6b2b78b4-effa-479c-9a22-5a53d0f74894
2026-05-13 18:14:23 -07:00
Fusion
f7ba4c79f9 feat(FN-4316): complete Step 2 — add todo aging summary component
Fusion-Task-Id: FN-4316
Fusion-Task-Lineage: 6b2b78b4-effa-479c-9a22-5a53d0f74894
2026-05-13 18:14:22 -07:00
Fusion
32e616c6bd feat(FN-4316): complete Step 1 — add todo aging utility
Fusion-Task-Id: FN-4316
Fusion-Task-Lineage: 6b2b78b4-effa-479c-9a22-5a53d0f74894
2026-05-13 18:14:22 -07:00
gsxdsm
f2b933bf22 docs(AGENTS): add buttons-frozen standing directive; lift reliability-mechanism governance freeze 2026-05-13 17:58:28 -07:00
gsxdsm
f0368e676b fix(ci): exclude dist/ test files from shard count 2026-05-13 17:58:28 -07:00
gsxdsm
0517b6fa00 docs: add Research vs Experiment Session naming-decision doc to index (FN-4223) 2026-05-13 17:58:28 -07:00
Fusion
c1f787a0df feat(FN-4409): add branch contamination assertions in worktree flows
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00
Fusion
8d9e426353 fix(FN-4409): add merge-base fallback for contamination audit
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00
Fusion
6301015550 feat(FN-4409): complete Step 1 — add cross-contamination audit script
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00
Fusion
6287c14bc9 feat(FN-4328): complete Step 5 — add changeset
Fusion-Task-Id: FN-4328
Fusion-Task-Lineage: 32d20417-4e86-4fb5-9be9-72d98aaf0761
2026-05-13 17:07:23 -07:00
Fusion
e0f67f1edd test(FN-4328): complete Step 3 — update modal button expectations
Fusion-Task-Id: FN-4328
Fusion-Task-Lineage: 32d20417-4e86-4fb5-9be9-72d98aaf0761
2026-05-13 17:07:23 -07:00
Fusion
df18c55a34 feat(FN-4328): complete Step 2 — stop passing modal AI actions
Fusion-Task-Id: FN-4328
Fusion-Task-Lineage: 32d20417-4e86-4fb5-9be9-72d98aaf0761
2026-05-13 17:07:23 -07:00