gsxdsm
1f0bb7e018
fix(core): skip real keychain in tests to stop 15s keytar hangs
...
MasterKeyManager.loadKeytar() now bails out early when
FUSION_MASTER_KEY_DISABLE_KEYCHAIN=1, and the core vitest setup sets that
flag for every worker. Eight tests across master-key/secrets-store/
secrets-sync-passphrase were timing out at exactly the 15s testTimeout
because they constructed MasterKeyManager without injecting a fake
KeytarLike, which made loadKeytar() reach the real OS keychain.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:45:29 -07:00
gsxdsm
51e28fb7ca
fix(desktop): re-show hidden window on dock/Finder activate + log gate flow
...
The close handler hides the BrowserWindow instead of destroying it, so
once closed, subsequent dock or Finder activations were no-ops because
the activate handler only created a new window when mainWindow === null.
Show + focus the existing window if it's hidden so relaunch behaves as
expected. Also add console.log breadcrumbs in DesktopLaunchGate so we
can diagnose why the chooser sometimes appears not to render.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:24:40 -07:00
gsxdsm
75a712771e
feat(desktop): Connection → Change Launch Mode menu item
...
Adds a "Connection" submenu with a "Change Launch Mode…" item that lets
users switch between Run Locally and Connect to Remote after the initial
chooser. The menu sends shell:reset-desktop-mode-request to the renderer;
the dashboard's DesktopLaunchGate listens, calls the new
shell:resetDesktopMode IPC (clears hasCompletedModeSelection, stops the
embedded runtime), strips the cached serverBaseUrl/shellMode query params,
and reloads so the gate re-prompts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:16:27 -07:00
gsxdsm
3cae2a30b9
feat(FN-5000): merge fusion/fn-5000
2026-05-17 22:11:42 -07:00
gsxdsm
b143f6c88b
feat(dashboard): desktop launch gate for run-local vs connect-remote
...
Wrap <App /> in a DesktopLaunchGate that runs only inside the Electron shell.
On first run it shows a chooser (Run Locally / Connect Remote). On "local"
it calls setDesktopMode("local") so main starts the embedded runtime, polls
shell:getState until localRuntime.state === "running", then reloads with
?serverBaseUrl=http://127.0.0.1 :<port> so the dashboard's API calls route
to the embedded server (file:// origins can't resolve relative /api). On
"remote" it opens the existing connection manager. Replaces the dead-end
"can't reach backend" landing in the packaged desktop app.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:10:58 -07:00
gsxdsm
e5af9c93ae
fix(desktop): packaged macOS app launched with no window / blank white screen
...
In packaged Electron builds, `process.argv[1]` is undefined (Electron loads
the main script via package.json `main`, not via argv), so the bottom-of-file
guard never invoked `run()` and the app started without creating a window.
Also build the dashboard client with `--base ./` so its `file://`-loaded
index.html resolves `./assets/*` from inside the asar instead of the
filesystem root, which was producing a blank white window.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:01:51 -07:00
Fusion (runfusion.ai)
56a7178aca
feat(FN-4959): complete Step 5 — add changeset for fn_task_update priority
...
Fusion-Task-Id: FN-4959
Fusion-Task-Lineage: 59a0c481-5a2d-4a2f-9230-3a5437b687a6
2026-05-17 21:46:58 -07:00
Fusion (runfusion.ai)
ceacad78a1
chore(FN-4959): complete Step 4 — regenerate fusion skill tool references
...
Fusion-Task-Id: FN-4959
Fusion-Task-Lineage: 59a0c481-5a2d-4a2f-9230-3a5437b687a6
2026-05-17 21:46:58 -07:00
Fusion (runfusion.ai)
716a45a96b
test(FN-4959): complete Step 3 — cover priority updates on fn_task_update
...
Fusion-Task-Id: FN-4959
Fusion-Task-Lineage: 59a0c481-5a2d-4a2f-9230-3a5437b687a6
2026-05-17 21:46:58 -07:00
Fusion (runfusion.ai)
e0e0bc5bef
feat(FN-4959): complete Step 2 — extend fn_task_update priority support
...
Fusion-Task-Id: FN-4959
Fusion-Task-Lineage: 59a0c481-5a2d-4a2f-9230-3a5437b687a6
2026-05-17 21:46:58 -07:00
Fusion (runfusion.ai)
53e0372bc9
test(FN-4986): complete Step 3 — update footer cluster alignment assertions
...
Fusion-Task-Id: FN-4986
Fusion-Task-Lineage: d7a2c969-f3ea-4f93-bcdb-f86521845fce
2026-05-17 21:34:06 -07:00
Fusion (runfusion.ai)
10d00423a4
feat(FN-4986): complete Step 2 — align footer chip cluster via first-chip anchor
...
Fusion-Task-Id: FN-4986
Fusion-Task-Lineage: d7a2c969-f3ea-4f93-bcdb-f86521845fce
2026-05-17 21:34:06 -07:00
Fusion (runfusion.ai)
d856788d55
feat(FN-4954): complete Step 8 — documentation and changeset
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
b8514b658e
test(FN-4954): cover pool double-lease throw and fresh fallback
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
c6453ca956
fix(FN-4954): complete Step 7 — restore green verification gates
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
c15a74e187
fix(FN-4954): correct runtime pool invariant audit emission
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
04b965dbef
test(FN-4954): complete Step 6 — add merger/pool reliability backstop
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
7e90bce8bb
feat(FN-4954): harden pool leasing invariants and wire runtime auditing
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
0606e3aaea
feat(FN-4954): complete Step 3 — add pool double-lease audit mutation type
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
dd234d21e6
test(FN-4954): complete Step 2 — reproduce pool rehydrate double-lease race
...
Fusion-Task-Id: FN-4954
Fusion-Task-Lineage: b3dd2d2f-3aa3-48f1-8a56-56e66518d139
2026-05-17 21:17:38 -07:00
Fusion (runfusion.ai)
296262b07a
test(FN-4987): align session-start interaction tests with recovery contract
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:17 -07:00
Fusion (runfusion.ai)
d2a5ff95c2
test(FN-4987): complete Step 5 — tighten unrelated failure guard assertions
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:16 -07:00
Fusion (runfusion.ai)
34d196c3f0
test(FN-4987): complete Step 4 — assert exhausted retry-cap behavior
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:16 -07:00
Fusion (runfusion.ai)
3af35ac650
test(FN-4987): complete Step 3 — assert preserve-progress recovery semantics
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:16 -07:00
Fusion (runfusion.ai)
980ab593ff
test(FN-4987): complete Step 2 — assert per-classification recovery contract
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:16 -07:00
Fusion (runfusion.ai)
a92d39339c
fix(FN-4987): complete Step 1 — wire session-start auto-recovery auditor
...
Fusion-Task-Id: FN-4987
Fusion-Task-Lineage: 7825b364-d7b2-45fd-8eb1-94b7a08fa7ba
2026-05-17 20:10:16 -07:00
Fusion (runfusion.ai)
24076970b1
feat(FN-4926): add fn_task_list regression tests
...
Adds regression tests for `fn_task_list` in the pi-extensions test suite and updates an existing planning-board-tools test, both scoped to FN-4926 coverage.
Fusion-Task-Id: FN-4926
Fusion-Task-Lineage: 9a6a82cb-4b17-4471-a386-7c4b7d275c40
2026-05-17 20:09:36 -07:00
Fusion (runfusion.ai)
32cadc9f42
feat(FN-4890): complete Step 8 — docs, defaults, and reliability coverage
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:39:00 -07:00
Fusion (runfusion.ai)
6356ac4a2d
fix(FN-4890): isolate stall verification from self-rebound transitions
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:38:59 -07:00
Fusion (runfusion.ai)
70169972ed
test(FN-4890): cover board-stall verification and cooldown
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:38:59 -07:00
Fusion (runfusion.ai)
a6898c5ba4
feat(FN-4890): complete Step 5 — board-health recovery levers
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:38:59 -07:00
Fusion (runfusion.ai)
1d2d3d1b0d
feat(FN-4890): complete Step 3 — paused-scope decay auto-rebound
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:38:58 -07:00
Fusion (runfusion.ai)
eeb5fe8e2d
feat(FN-4890): complete Step 8 — docs, defaults, and reliability coverage
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:37:55 -07:00
Fusion (runfusion.ai)
c49e684e4e
fix(FN-4890): isolate stall verification from self-rebound transitions
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:37:55 -07:00
Fusion (runfusion.ai)
2ff1458e77
test(FN-4890): cover board-stall verification and cooldown
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:37:53 -07:00
Fusion (runfusion.ai)
6b83cf0020
feat(FN-4890): complete Step 5 — board-health recovery levers
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:37:52 -07:00
Fusion (runfusion.ai)
8226d170a2
feat(FN-4890): complete Step 3 — paused-scope decay auto-rebound
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:37:52 -07:00
Fusion (runfusion.ai)
dcb055df6b
test(FN-4992): add merged PR auto-transition interaction coverage
...
Fusion-Task-Id: FN-4992
Fusion-Task-Lineage: 133d5e6a-0612-4f67-9105-3b7dbabd5ec0
2026-05-17 19:37:02 -07:00
Fusion (runfusion.ai)
0fd9d4094d
test(FN-4992): add changes-requested reliability interaction coverage
...
Fusion-Task-Id: FN-4992
Fusion-Task-Lineage: 133d5e6a-0612-4f67-9105-3b7dbabd5ec0
2026-05-17 19:37:02 -07:00
Fusion (runfusion.ai)
8ecba01c76
fix(FN-4890): stabilize board-health integration and blocker release coverage
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:14 -07:00
Fusion (runfusion.ai)
e659dd5f14
fix(FN-4890): preserve active todo blockers in stale-blocked sweep
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:14 -07:00
Fusion (runfusion.ai)
36de8ce0c0
fix(FN-4890): tighten incident replay and stale blocker release
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:14 -07:00
Fusion (runfusion.ai)
25eae69487
test(FN-4890): complete Step 6 — add FN-4890 incident replay assertion
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:14 -07:00
Fusion (runfusion.ai)
5233bc9347
feat(FN-4890): complete Step 8 — docs, defaults, and reliability coverage
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:13 -07:00
Fusion (runfusion.ai)
e40aecf77d
fix(FN-4890): isolate stall verification from self-rebound transitions
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:13 -07:00
Fusion (runfusion.ai)
5f6dddf863
test(FN-4890): cover board-stall verification and cooldown
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:13 -07:00
Fusion (runfusion.ai)
dfeb379a14
test(FN-4890): strengthen board-stall sweep assertions
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:13 -07:00
Fusion (runfusion.ai)
38dc36b9ba
fix(FN-4890): wire board-stall alerts through notifier hook
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:12 -07:00
Fusion (runfusion.ai)
4d10511418
fix(FN-4890): refine board-stall notification path
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:12 -07:00
Fusion (runfusion.ai)
70aa8b31b7
feat(FN-4890): complete Step 5 — board-health recovery levers
...
Fusion-Task-Id: FN-4890
Fusion-Task-Lineage: d1ae6585-7df0-481f-83c3-c7cdd45daf4f
2026-05-17 19:36:12 -07:00