hermes-agent/apps/desktop/electron
brooklyn! 529ee80ac0
Recover from a half-replaced desktop bundle instead of requiring a reinstall (#85887)
* fix(desktop): load the intact renderer bundle when an update tears one copy

index.html and the hashed chunks it names are one generation. A packaged app
ships that bundle twice (inside app.asar and, via asarUnpack, beside it in
app.asar.unpacked), so an update that replaces the app while its files are
locked can leave the two copies from different generations. resolveRendererIndex
took the first index.html that existed, so it could pick the torn one and the
window died on its first lazy import with "Failed to fetch dynamically imported
module" -- with no way out, because every relaunch reloaded the same copy.

Check each candidate's declared modules and prefer a complete generation; when
both are torn, log which files are missing and how to repair instead of leaving
the crash unexplained.

* fix(cli): rebuild the desktop app when its renderer bundle is half-replaced

The content stamp hashes the SOURCE tree, which an interrupted update leaves
intact, so `hermes desktop` reported "up to date" and skipped the rebuild that
would repair a torn bundle -- the app relaunched into the same crash and
reinstalling looked like the only option.

Treat a bundle whose index.html names missing chunks as stale regardless of the
stamp, and say so on the way into the rebuild.
2026-08-14 02:21:20 -05:00
..
active-runtime-state.test.ts
active-runtime-state.ts
backend-child.ts fix(desktop): reap orphaned serve backends via parent-death watchdog + group-kill 2026-08-10 17:02:56 -07:00
backend-command.test.ts
backend-command.ts
backend-connection-state.test.ts
backend-connection-state.ts
backend-env.test.ts fmt(js): `npm run fix` on merge (#76547) 2026-08-02 03:33:09 +00:00
backend-env.ts fix(desktop,install): keep bundled Node ahead of system Node on Windows 2026-08-01 20:09:35 -04:00
backend-health.test.ts
backend-health.ts
backend-probes.test.ts fix(desktop): raise backend probe timeout and retry on timeout 2026-07-29 13:59:11 +05:30
backend-probes.ts fix(desktop): widen probe-budget fix to sibling boot-path probes 2026-07-29 16:52:53 +05:30
backend-ready.test.ts
backend-ready.ts
backend-start-failure.test.ts
backend-start-failure.ts
bootstrap-platform.test.ts fmt(js): `npm run fix` on merge (#85010) 2026-08-13 03:33:45 +00:00
bootstrap-platform.ts
bootstrap-repair-guard.test.ts fix(desktop): break renderer-led reinstall loop on transient backend stalls 2026-07-31 22:33:53 -07:00
bootstrap-repair-guard.ts fmt(js): `npm run fix` on merge (#76404) 2026-08-01 20:45:40 +00:00
bootstrap-runner.test.ts
bootstrap-runner.ts
connection-apply.test.ts
connection-apply.ts
connection-config.test.ts fix(desktop): reject reserved remote profile names 2026-08-01 14:30:16 -07:00
connection-config.ts fix(desktop): reject reserved remote profile names 2026-08-01 14:30:16 -07:00
crash-forensics.test.ts fix(desktop): record main-process faults in desktop.log 2026-07-27 13:41:59 -05:00
crash-forensics.ts fix(desktop): record main-process faults in desktop.log 2026-07-27 13:41:59 -05:00
dashboard-token.test.ts
dashboard-token.ts
desktop-electron-pin.test.ts
desktop-installation.test.ts
desktop-installation.ts
desktop-uninstall.test.ts
desktop-uninstall.ts
dev-cdp.test.ts feat(desktop): on by default for dev-server runs 2026-07-27 23:52:33 -05:00
dev-cdp.ts feat(desktop): on by default for dev-server runs 2026-07-27 23:52:33 -05:00
embed-referer.ts
entitlements.mac.inherit.plist build(desktop): declare camera usage for signed macOS builds 2026-07-28 13:40:44 -05:00
entitlements.mac.plist build(desktop): declare camera usage for signed macOS builds 2026-07-28 13:40:44 -05:00
event-dedupe.test.ts
event-dedupe.ts
find-git-bash.test.ts
find-git-bash.ts
find-in-page.test.ts fmt(js): `npm run fix` on merge (#72411) 2026-07-27 02:52:53 +00:00
find-in-page.ts fmt(js): `npm run fix` on merge (#72411) 2026-07-27 02:52:53 +00:00
first-run-setup-gate.test.ts
first-run-setup-gate.ts
first-run-setup-main-process.test.ts
fs-read-dir.test.ts
fs-read-dir.ts
gateway-ws-probe.test.ts
gateway-ws-probe.ts
git-repo-scan.test.ts
git-repo-scan.ts
git-review-ops.test.ts fix(desktop): bound review workspace scans 2026-08-03 00:08:30 +05:30
git-review-ops.ts feat(desktop): paste a PR review comment as structured composer context 2026-08-12 22:48:00 -05:00
git-root.test.ts
git-root.ts
git-worktree-ops.test.ts fmt(js): `npm run fix` on merge (#79505) 2026-08-05 16:32:54 +00:00
git-worktree-ops.ts feat(desktop): let convert-a-branch reach remote branches too 2026-08-05 11:43:09 -04:00
handoff-result.test.ts fmt(js): `npm run fix` on merge (#84193) 2026-08-12 01:41:34 +00:00
handoff-result.ts fix(update): exempt manual results from the hand-off freshness window 2026-08-11 17:03:00 -05:00
hardening.test.ts fix(desktop): create connection.json owner-only 2026-08-12 22:38:17 -07:00
hardening.ts fix(desktop): create connection.json owner-only 2026-08-12 22:38:17 -07:00
hud-cursor.test.ts fix(desktop): keep the HUD clickable on Linux 2026-08-08 22:15:24 -05:00
hud-cursor.ts fix(desktop): keep the HUD clickable on Linux 2026-08-08 22:15:24 -05:00
hud-snap-shortcut.test.ts feat(desktop): snap HUD to cursor with global ⌘⇧G 2026-08-10 05:21:05 -05:00
hud-snap-shortcut.ts fmt(js): `npm run fix` on merge (#83132) 2026-08-10 10:44:00 +00:00
hud-snap.test.ts feat(desktop): snap HUD to cursor with global ⌘⇧G 2026-08-10 05:21:05 -05:00
hud-snap.ts fmt(js): `npm run fix` on merge (#83132) 2026-08-10 10:44:00 +00:00
hud-url.test.ts fix(desktop): open HUD mode on the focused conversation's profile (#82325) 2026-08-09 09:10:59 +00:00
hud-url.ts fix(desktop): open HUD mode on the focused conversation's profile (#82325) 2026-08-09 09:10:59 +00:00
hyprland.test.ts fmt(js): `npm run fix` on merge (#82417) 2026-08-09 09:51:41 +00:00
hyprland.ts feat(desktop): read the window below through Hyprland's IPC (#82226) 2026-08-09 04:43:10 -05:00
link-title-window.test.ts
link-title-window.ts perf(desktop): let the hidden link-title window throttle 2026-07-31 00:38:11 -05:00
main-window-lifecycle.test.ts
main-window-lifecycle.ts
main.ts Recover from a half-replaced desktop bundle instead of requiring a reinstall (#85887) 2026-08-14 02:21:20 -05:00
native-auth-decisions.test.ts
native-auth-decisions.ts
native-oauth-login.test.ts
native-oauth-login.ts
native-oauth.test.ts fmt(js): `npm run fix` on merge (#75517) 2026-07-31 16:22:58 +00:00
native-oauth.ts fix(desktop): restore native OAuth tokens after restart 2026-07-31 10:16:21 -04:00
native-token-store.test.ts fix(desktop): redact gateway credentials from token logs 2026-07-31 10:16:21 -04:00
native-token-store.ts fix(desktop): redact gateway credentials from token logs 2026-07-31 10:16:21 -04:00
oauth-net-request.test.ts
oauth-net-request.ts
power-save.test.ts
power-save.ts
preload.ts feat(desktop): load a desktop half from unified agent-plugin packages 2026-08-13 13:18:49 -05:00
primary-backend-startup.test.ts
primary-backend-startup.ts fmt(js): `npm run fix` on merge (#75582) 2026-07-31 18:54:27 +00:00
primary-connection-rehome.ts
profile-delete-routing.test.ts
profile-delete-routing.ts
profile-session-routing.test.ts fix(desktop): preserve OAuth sessions in sidebar 2026-07-27 13:41:56 -05:00
profile-session-routing.ts fix(desktop): preserve OAuth sessions in sidebar 2026-07-27 13:41:56 -05:00
quick-entry.test.ts feat(desktop): quick-entry window — global hotkey capture to any session 2026-07-26 17:48:19 -07:00
quick-entry.ts fmt(js): `npm run fix` on merge (#75582) 2026-07-31 18:54:27 +00:00
quit-guard.test.ts feat(desktop): confirm before quitting with a turn in flight 2026-07-27 15:47:57 -05:00
quit-guard.ts feat(desktop): confirm before quitting with a turn in flight 2026-07-27 15:47:57 -05:00
remote-lifecycle.test.ts fix(desktop-ssh): raise remote backend file limit 2026-08-10 18:04:59 -07:00
remote-lifecycle.ts fix(desktop-ssh): raise remote backend file limit 2026-08-10 18:04:59 -07:00
remote-liveness.test.ts fix(desktop): record main-process faults in desktop.log 2026-07-27 13:41:59 -05:00
remote-liveness.ts fix(desktop): retire pooled remote backends whose host went away 2026-07-27 13:41:59 -05:00
renderer-bundle.ts Recover from a half-replaced desktop bundle instead of requiring a reinstall (#85887) 2026-08-14 02:21:20 -05:00
renderer-log.test.ts fmt(js): `npm run fix` on merge (#83539) 2026-08-11 00:20:02 +00:00
renderer-log.ts fmt(js): `npm run fix` on merge (#83539) 2026-08-11 00:20:02 +00:00
session-windows.test.ts perf(desktop): scope background-throttling opt-out to live streaming 2026-07-31 00:38:11 -05:00
session-windows.ts perf(desktop): scope background-throttling opt-out to live streaming 2026-07-31 00:38:11 -05:00
spawn-helper-perms.test.ts
spawn-helper-perms.ts
ssh-bootstrap-coordinator.test.ts fix(desktop): map SSH profiles to remote profiles 2026-08-01 14:30:16 -07:00
ssh-bootstrap-coordinator.ts fix(desktop): map SSH profiles to remote profiles 2026-08-01 14:30:16 -07:00
ssh-config.test.ts
ssh-config.ts
ssh-connection.test.ts
ssh-connection.ts
stream-throttle.test.ts perf(desktop): scope background-throttling opt-out to live streaming 2026-07-31 00:38:11 -05:00
stream-throttle.ts perf(desktop): scope background-throttling opt-out to live streaming 2026-07-31 00:38:11 -05:00
titlebar-overlay-width.test.ts
titlebar-overlay-width.ts
update-count.test.ts
update-count.ts
update-gate.test.ts fix(desktop): gate backend respawns on updateInFlight, not just the update marker (#73822) 2026-07-28 23:53:25 -07:00
update-gate.ts fix(desktop): gate backend respawns on updateInFlight, not just the update marker (#73822) 2026-07-28 23:53:25 -07:00
update-marker.test.ts fix(desktop): refuse a second update hand-off while one is already live 2026-08-01 10:47:45 -07:00
update-marker.ts fix(desktop): refuse a second update hand-off while one is already live 2026-08-01 10:47:45 -07:00
update-remote.test.ts
update-remote.ts
updater-process.test.ts fix(update): posix hand-off truth ordering, relaunch-gate port, JSON escaping 2026-08-11 11:07:17 -05:00
updater-process.ts fix(update): posix hand-off truth ordering, relaunch-gate port, JSON escaping 2026-08-11 11:07:17 -05:00
venv-blocker-scan.test.ts fmt(js): `npm run fix` on merge (#73666) 2026-07-28 21:55:38 +00:00
venv-blocker-scan.ts fmt(js): `npm run fix` on merge (#73666) 2026-07-28 21:55:38 +00:00
vscode-marketplace.test.ts
vscode-marketplace.ts
wake-indicator-window.ts fix(desktop): single-owner console capture + HUD lifecycle coverage 2026-08-10 19:00:19 -07:00
wake-indicator.test.ts fix(desktop): attach renderer-lifecycle diagnostics to all BrowserWindow instances (#81290) 2026-08-10 19:00:19 -07:00
wake-indicator.ts feat(desktop): add notch wake indicator 2026-08-01 14:30:11 -07:00
window-below.test.ts feat(desktop): read the window below through Hyprland's IPC (#82226) 2026-08-09 04:43:10 -05:00
window-below.ts feat(desktop): read the window below through Hyprland's IPC (#82226) 2026-08-09 04:43:10 -05:00
window-renderer-lifecycle.test.ts fmt(js): `npm run fix` on merge (#83609) 2026-08-11 02:09:04 +00:00
window-renderer-lifecycle.ts fmt(js): `npm run fix` on merge (#83609) 2026-08-11 02:09:04 +00:00
window-reveal.test.ts fix(desktop): reveal every window after a missed ready event, not just the main one 2026-08-08 16:51:44 -05:00
window-reveal.ts fix(desktop): reveal every window after a missed ready event, not just the main one 2026-08-08 16:51:44 -05:00
window-state.test.ts fix(desktop): persist window geometry on Linux 2026-08-08 22:13:08 -05:00
window-state.ts fix(desktop): say why read_window_below cannot see the windows 2026-08-08 22:17:38 -05:00
windows-child-options.test.ts fix(desktop): reap orphaned serve backends via parent-death watchdog + group-kill 2026-08-10 17:02:56 -07:00
windows-child-options.ts
windows-hermes-path.test.ts
windows-hermes-path.ts
windows-remote-lifecycle.test.ts fix(desktop): map SSH profiles to remote profiles 2026-08-01 14:30:16 -07:00
windows-remote-lifecycle.ts fix(desktop): map SSH profiles to remote profiles 2026-08-01 14:30:16 -07:00
windows-remote-live.test.ts
windows-sandbox-fallback.test.ts
windows-sandbox-fallback.ts
windows-system-ca.test.ts
windows-system-ca.ts
windows-user-env.test.ts
windows-user-env.ts
workspace-cwd.test.ts
workspace-cwd.ts
wsl-clipboard-image.test.ts
wsl-clipboard-image.ts
wsl-path-bridge.test.ts
wsl-path-bridge.ts
zoom.test.ts feat(desktop): add notch wake indicator 2026-08-01 14:30:11 -07:00
zoom.ts feat(desktop): HUD mode window and its session handoff 2026-08-08 01:38:57 -05:00