hermes-agent/apps/desktop/electron
izumi0uu 23cb26c2e3 fix(desktop): probe /api/health for boot readiness, and survive a stalled loop
Desktop boot polls /api/status, so readiness waits on gateway config and a
cold plugin import tree. On Windows that regularly outlives the probe and
Desktop kills a backend that is already listening, respawns it, and re-pays
the same import cost — the reported crash loop.

Probe /api/health instead, falling back to /api/status only for the
missing-route shapes the fetch helpers emit (404, or HTML from the SPA), so
an older remote backend still connects. Timeouts and server errors keep
polling health rather than dropping to the heavyweight route.

A cheap route is not enough on its own. Warming the gateway import holds the
GIL, so the event loop can stall for tens of seconds and starve /api/health
too. At the default 15s socket timeout only three attempts fit in the 45s
budget; give each probe 5s so the loop keeps retrying across the stall.

Co-authored-by: webtecnica <75556242+webtecnica@users.noreply.github.com>
Co-authored-by: DESXIE <78300229+DESXIE@users.noreply.github.com>
Co-authored-by: frohsinnllc <231045016+frohsinnllc@users.noreply.github.com>
2026-07-24 19:44:48 -05:00
..
backend-child.ts
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 (#71099) 2026-07-25 00:35:03 +00:00
backend-env.ts fix(windows): platform._syscmd_ver stub in bootstrap + PYTHONUTF8 in desktop backend env 2026-07-24 15:47:12 -07:00
backend-health.test.ts fix(desktop): probe /api/health for boot readiness, and survive a stalled loop 2026-07-24 19:44:48 -05:00
backend-health.ts fix(desktop): probe /api/health for boot readiness, and survive a stalled loop 2026-07-24 19:44:48 -05:00
backend-probes.test.ts fmt(js): `npm run fix` on merge (#69805) 2026-07-23 03:32:32 +00:00
backend-probes.ts fix(desktop): skip bootstrap for explicit Nix backend (#69688) 2026-07-22 20:00:48 -04:00
backend-ready.test.ts
backend-ready.ts
backend-start-failure.test.ts
backend-start-failure.ts
bootstrap-platform.test.ts
bootstrap-platform.ts
bootstrap-runner.test.ts
bootstrap-runner.ts
connection-apply.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
connection-apply.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
connection-config.test.ts Merge remote-tracking branch 'origin/main' into feat/desktop-remote-ssh-current 2026-07-21 10:16:01 +02:00
connection-config.ts Merge remote-tracking branch 'origin/main' into feat/desktop-remote-ssh-current 2026-07-21 10:16:01 +02:00
dashboard-token.test.ts
dashboard-token.ts
desktop-electron-pin.test.ts
desktop-installation.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
desktop-installation.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
desktop-uninstall.test.ts
desktop-uninstall.ts
embed-referer.ts
entitlements.mac.inherit.plist
entitlements.mac.plist
event-dedupe.test.ts fix(desktop): de-dupe cross-window cues so peers don't spam 2026-07-20 18:33:14 -05:00
event-dedupe.ts refactor(desktop): tidy the cross-window deduper 2026-07-20 18:36:05 -05:00
find-git-bash.test.ts style(desktop): apply eslint/prettier conventions to find-git-bash module 2026-07-23 17:59:58 -07:00
find-git-bash.ts style(desktop): apply eslint/prettier conventions to find-git-bash module 2026-07-23 17:59:58 -07:00
first-run-setup-gate.test.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
first-run-setup-gate.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
first-run-setup-main-process.test.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
fs-read-dir.test.ts
fs-read-dir.ts
gateway-ws-probe.test.ts
gateway-ws-probe.ts
git-repo-scan.test.ts fmt(js): `npm run fix` on merge (#68681) 2026-07-21 14:28:28 +00:00
git-repo-scan.ts fmt(js): `npm run fix` on merge (#68681) 2026-07-21 14:28:28 +00:00
git-review-ops.test.ts
git-review-ops.ts
git-root.test.ts
git-root.ts
git-worktree-ops.test.ts
git-worktree-ops.ts
hardening.test.ts
hardening.ts
link-title-window.test.ts
link-title-window.ts
main-window-lifecycle.test.ts
main-window-lifecycle.ts
main.ts fix(desktop): probe /api/health for boot readiness, and survive a stalled loop 2026-07-24 19:44:48 -05:00
native-auth-decisions.test.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
native-auth-decisions.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
native-oauth-login.test.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
native-oauth-login.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
native-oauth.test.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
native-oauth.ts fmt(js): `npm run fix` on merge (#69503) 2026-07-22 16:30:14 +00:00
oauth-net-request.test.ts
oauth-net-request.ts
power-save.test.ts feat(desktop): keep-computer-awake toggle + System settings section 2026-07-20 11:50:22 -05:00
power-save.ts feat(desktop): keep-computer-awake toggle + System settings section 2026-07-20 11:50:22 -05:00
preload.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
primary-backend-startup.test.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
primary-backend-startup.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
primary-connection-rehome.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
profile-delete-routing.test.ts
profile-delete-routing.ts
remote-lifecycle.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
remote-lifecycle.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
remote-liveness.test.ts fix(desktop): avoid false remote gateway reauthentication (#68250) 2026-07-20 20:54:36 -04:00
remote-liveness.ts fix(desktop): avoid false remote gateway reauthentication (#68250) 2026-07-20 20:54:36 -04:00
session-windows.test.ts feat(desktop): open multiple full app windows (electron) 2026-07-20 18:02:44 -05:00
session-windows.ts feat(desktop): open multiple full app windows (electron) 2026-07-20 18:02:44 -05:00
spawn-helper-perms.test.ts
spawn-helper-perms.ts
ssh-bootstrap-coordinator.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
ssh-bootstrap-coordinator.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
ssh-config.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
ssh-config.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
ssh-connection.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
ssh-connection.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
titlebar-overlay-width.test.ts
titlebar-overlay-width.ts
update-count.test.ts
update-count.ts
update-marker.test.ts
update-marker.ts
update-rebuild.test.ts
update-rebuild.ts
update-relaunch.test.ts
update-relaunch.ts
update-remote.test.ts
update-remote.ts
updater-process.test.ts
updater-process.ts
vscode-marketplace.test.ts
vscode-marketplace.ts
window-state.test.ts
window-state.ts
windows-child-options.test.ts
windows-child-options.ts
windows-hermes-path.test.ts
windows-hermes-path.ts
windows-remote-lifecycle.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
windows-remote-lifecycle.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
windows-remote-live.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
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
zoom.ts