Commit Graph

7258 Commits

Author SHA1 Message Date
Fusion (runfusion.ai)
1622a0c1c8 test(FN-4892): align movement tests with intake archive transitions
Fusion-Task-Id: FN-4892
Fusion-Task-Lineage: 6f56b468-a827-416d-ba1f-444e1326d613
2026-05-18 00:53:23 -07:00
Fusion (runfusion.ai)
3f5ae003cf feat(FN-4892): complete Step 3 — allow intake archive transitions
Fusion-Task-Id: FN-4892
Fusion-Task-Lineage: 6f56b468-a827-416d-ba1f-444e1326d613
2026-05-18 00:53:23 -07:00
Fusion (runfusion.ai)
50654dff6e feat(FN-4892): complete Step 1 — triage preflight module
Fusion-Task-Id: FN-4892
Fusion-Task-Lineage: 6f56b468-a827-416d-ba1f-444e1326d613
2026-05-18 00:53:23 -07:00
Fusion (runfusion.ai)
cad2434710 fix(FN-5017): restore dashboard build type safety in PR metadata generator
Fusion-Task-Id: FN-5017
Fusion-Task-Lineage: aeedc3f2-7df8-4467-94b1-77b13b6554e3
2026-05-18 00:47:08 -07:00
Fusion (runfusion.ai)
02065e43d5 test(FN-5017): complete Step 4 — cover create PR quick action behavior
Fusion-Task-Id: FN-5017
Fusion-Task-Lineage: aeedc3f2-7df8-4467-94b1-77b13b6554e3
2026-05-18 00:47:08 -07:00
Fusion (runfusion.ai)
ebb3ee2a2d feat(FN-5017): complete Step 2 — add in-review create PR quick action
Fusion-Task-Id: FN-5017
Fusion-Task-Lineage: aeedc3f2-7df8-4467-94b1-77b13b6554e3
2026-05-18 00:47:08 -07:00
Fusion (runfusion.ai)
b624b14191 feat(FN-5017): complete Step 1 — plumb prAuthAvailable to TaskCard
Fusion-Task-Id: FN-5017
Fusion-Task-Lineage: aeedc3f2-7df8-4467-94b1-77b13b6554e3
2026-05-18 00:47:08 -07:00
Fusion (runfusion.ai)
005d31a356 test(FN-4946): tighten implicit revise guard regression assertions
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
58fe3652dc fix(FN-4946): align implicit refusal helper signature and tests
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
28595f57e9 feat(FN-4946): complete steps 5-8 implicit refusal docs and budget coverage
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
c1a01fbb8a test(FN-4946): stabilize budget and shared-helper tests
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
00e524d1d1 test(FN-4946): refine implicit refusal guard test coverage
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
12aec36e93 test(FN-4946): expand implicit completion guard scenarios
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
3a17b85ed6 test(FN-4946): add implicit completion refusal guard coverage
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
8a050be8f3 feat(FN-4946): complete Step 2 — guard implicit completion paths
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:44 -07:00
Fusion (runfusion.ai)
cb7d3722c3 feat(FN-4946): complete Step 1 — add implicit refusal handler
Fusion-Task-Id: FN-4946
Fusion-Task-Lineage: 9a48f72f-d2cc-4950-8a00-f69053dd1163
2026-05-18 00:27:43 -07:00
Fusion (runfusion.ai)
48bd4d0b3e test(FN-5012): tighten PrChecksList mobile selector regression
Fusion-Task-Id: FN-5012
Fusion-Task-Lineage: e83baffb-76ff-4317-8ff9-e576d5818a9c
2026-05-18 00:20:39 -07:00
Fusion (runfusion.ai)
770b7c8584 test(FN-5012): guard PR-flow CSS against mobile button overrides
Fusion-Task-Id: FN-5012
Fusion-Task-Lineage: e83baffb-76ff-4317-8ff9-e576d5818a9c
2026-05-18 00:20:39 -07:00
Fusion (runfusion.ai)
403a49138d fix(FN-5012): drop mobile .btn override from PrChecksList
Fusion-Task-Id: FN-5012
Fusion-Task-Lineage: e83baffb-76ff-4317-8ff9-e576d5818a9c
2026-05-18 00:20:39 -07:00
Fusion (runfusion.ai)
09a18f81be feat(FN-4991): add PR metadata generator helper
Added a PR metadata generator helper to the dashboard package (FN-4991), including test coverage for the new module.

Fusion-Task-Id: FN-4991

Fusion-Task-Lineage: 11bdb797-558e-4ae6-a265-4bcd91da2be6
2026-05-18 00:19:05 -07:00
Fusion (runfusion.ai)
e3c90d9f88 test(FN-5020): complete Step 2 — cover create-pr modal wiring
Fusion-Task-Id: FN-5020
Fusion-Task-Lineage: 9007731b-0171-4154-95e0-4fc4b67f0dbd
2026-05-18 00:02:23 -07:00
Fusion (runfusion.ai)
6d5cd9450b feat(FN-5020): complete Step 1 — wire create-PR modal trigger
Fusion-Task-Id: FN-5020
Fusion-Task-Lineage: 9007731b-0171-4154-95e0-4fc4b67f0dbd
2026-05-18 00:02:23 -07:00
Fusion (runfusion.ai)
43f57f145c test(FN-5008): complete Steps 3-5 attribution tests and docs
Fusion-Task-Id: FN-5008
Fusion-Task-Lineage: a5f8c651-c3a3-49b9-911f-51c1cd493b4c
2026-05-17 23:54:39 -07:00
Fusion (runfusion.ai)
4f75dca020 feat(FN-5008): complete Step 1 — compute concurrency gate attribution
Fusion-Task-Id: FN-5008
Fusion-Task-Lineage: a5f8c651-c3a3-49b9-911f-51c1cd493b4c
2026-05-17 23:54:38 -07:00
gsxdsm
8b50b754cd chore(desktop): drop debug console.logs from launch-mode reset flow
The console.log breadcrumbs added while diagnosing the menu also
caused an uncaught "write EPIPE" when the parent terminal pipe was
already closed by the time the user clicked Change Launch Mode.
Now that the flow is verified working, remove the chatter and keep
only the actual error-path logging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:32:10 -07:00
Fusion (runfusion.ai)
dde2d062f0 feat(FN-4912): complete Step 10 — delivery artifacts
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:21 -07:00
Fusion (runfusion.ai)
48caf28148 test(FN-4912): complete Step 9 — add env materialization verification coverage
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:21 -07:00
Fusion (runfusion.ai)
ffd4d83c09 feat(FN-4912): complete Step 8 — update secrets env docs
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:21 -07:00
Fusion (runfusion.ai)
59023b7f50 feat(FN-4912): complete Step 7 — add orphan cleanup env teardown
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
Fusion (runfusion.ai)
c8d01ca80d feat(FN-4912): complete Step 6 — wire env writes into acquisition
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
Fusion (runfusion.ai)
a8615ecf6c feat(FN-4912): complete Step 5 — add secrets env writer helpers
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
Fusion (runfusion.ai)
4ab60aefb4 feat(FN-4912): complete Step 4 — document env audit metadata
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
Fusion (runfusion.ai)
cbac381f65 feat(FN-4912): complete Step 3 — secrets env export listing
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
Fusion (runfusion.ai)
ec51e71289 feat(FN-4912): complete Step 2 — settings surface
Fusion-Task-Id: FN-4912
Fusion-Task-Lineage: 943d0651-052a-41b5-8069-4c60f4db1ba7
2026-05-17 23:29:20 -07:00
gsxdsm
aeee05ddc4 test: skip slow github copilot panel test and two flaky file-scope tests
- SettingsModal "renders github copilot device code panel" was the
  single slowest dashboard test (~4s wall) due to userEvent + a 5s
  waitFor. Skipping per request.
- merger-file-scope-invariant.test.ts "accepts declared scope as a
  single changeset file" / "as a changeset glob" flake under
  workspace-concurrent runs: the vi.mock of node:child_process
  occasionally doesn't take effect, so execAsync("git diff --cached
  --name-only") reaches the real git binary and reports unrelated
  staged files. Same logic remains covered by the real-git fixture
  tests in reliability-interactions/workflow-and-file-scope.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:25:26 -07:00
Fusion (runfusion.ai)
307cf0c4b6 feat(FN-4908): complete Step 6 — add changeset and delivery notes
Fusion-Task-Id: FN-4908
Fusion-Task-Lineage: 97d96ea4-8618-43cc-8448-0132cd57974e
2026-05-17 23:21:35 -07:00
Fusion (runfusion.ai)
507da28fba feat(FN-4908): complete Step 3 — switch reliability route to SQL aggregations
Fusion-Task-Id: FN-4908
Fusion-Task-Lineage: 97d96ea4-8618-43cc-8448-0132cd57974e
2026-05-17 23:21:34 -07:00
Fusion (runfusion.ai)
3037bbf9d6 feat(FN-4908): complete Step 1 — add SQL reliability aggregations
Fusion-Task-Id: FN-4908
Fusion-Task-Lineage: 97d96ea4-8618-43cc-8448-0132cd57974e
2026-05-17 23:21:34 -07:00
gsxdsm
b1d1221ba6 fix(desktop): build preload as CJS so contextBridge actually fires
esbuild was emitting preload.js as ESM (format:"esm"), but Electron
loads preload scripts via its sandboxed Node context, which is CJS.
With an ESM preload, the contextBridge.exposeInMainWorld calls
silently no-op, leaving window.fusionShell / window.fusionAPI
undefined in the renderer — which is why the dashboard always fell
through to "Can't reach the Fusion backend" and DesktopLaunchGate
always logged "window.fusionShell unavailable; bypassing".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:18:30 -07:00
gsxdsm
9730190569 chore: ignore desktop binary distribution artifacts
Untrack the 461MB packages/desktop/fusion-desktop-0.31.0.tgz and broaden
.gitignore to cover desktop packager outputs (.tgz, .zip, .pkg, .msi,
.deb, .rpm, .snap, .blockmap, latest*.yml, builder-debug.yml) so future
electron-builder/pnpm-pack output is not committed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:09:30 -07:00
Fusion (runfusion.ai)
07fe2cd91d test(FN-5006): complete Step 2 — add changeset-only scope overlap regressions
Fusion-Task-Id: FN-5006
Fusion-Task-Lineage: 30b6651f-8b0b-4918-aec9-77c4cb59cb85
2026-05-17 23:05:23 -07:00
Fusion (runfusion.ai)
e9a1c103ea fix(FN-5006): complete Step 1 — fix changeset scope overlap logic
Fusion-Task-Id: FN-5006
Fusion-Task-Lineage: 30b6651f-8b0b-4918-aec9-77c4cb59cb85
2026-05-17 23:05:23 -07:00
gsxdsm
2e9c819dd5 fix(desktop): include onChangeLaunchMode in buildAppMenu assertion
The recently added "Change Launch Mode…" menu wiring made main.ts pass
an extra onChangeLaunchMode callback to buildAppMenu(). The
main-integration test still asserted the old exact-shape {mainWindow,
appName} payload, so it failed once concurrent test load made
ordering matter. Switched to expect.objectContaining so future
buildAppMenu props don't break this test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:04:19 -07:00
gsxdsm
3e944ed620 chore(changeset): add FN-4767 PR creation flow entry
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:02:44 -07:00
gsxdsm
10d5afdb8e fix(desktop): Change Launch Mode menu performs reset entirely in main
Replace the renderer-event approach (which silently failed when the
renderer-side listener wasn't yet registered) with an onChangeLaunchMode
callback wired through AppMenuOptions. The callback runs
resetLaunchModeAndReload in main: writes shell settings to clear the
chosen mode, stops the embedded runtime, then navigates the window
directly to the renderer entrypoint with no cached query params so the
launch gate re-prompts.

Also surface the same flow from the dashboard's BackendConnectionErrorPage:
when running inside the desktop shell, the "Can't reach the Fusion backend"
page now offers a "Change Launch Mode…" button alongside Retry, so a user
who chose a broken backend isn't stuck without the Electron menubar.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 22:58:34 -07:00
gsxdsm
02ba659dd8 feat(FN-4969): merge fusion/fn-4969 2026-05-17 22:57:15 -07:00
Fusion (runfusion.ai)
e2938114c0 feat(FN-5003): complete Step 8 — document invariant and finalize tests
Fusion-Task-Id: FN-5003
Fusion-Task-Lineage: c5f1f326-934b-4cfc-8ba9-a2ac70a4f4f4
2026-05-17 22:49:55 -07:00
Fusion (runfusion.ai)
a61dfd3f5d test(FN-5003): assert noop audit emission in merge recovery
Fusion-Task-Id: FN-5003
Fusion-Task-Lineage: c5f1f326-934b-4cfc-8ba9-a2ac70a4f4f4
2026-05-17 22:49:55 -07:00
Fusion (runfusion.ai)
18e827dc81 test(FN-5003): add post-finalize noop status-write race coverage
Fusion-Task-Id: FN-5003
Fusion-Task-Lineage: c5f1f326-934b-4cfc-8ba9-a2ac70a4f4f4
2026-05-17 22:49:55 -07:00
Fusion (runfusion.ai)
9ca7a5b90e fix(FN-5003): register post-finalize noop audit mutation
Fusion-Task-Id: FN-5003
Fusion-Task-Lineage: c5f1f326-934b-4cfc-8ba9-a2ac70a4f4f4
2026-05-17 22:49:55 -07:00