hermes-agent/apps/desktop/electron
teknium1 cadb74adad fix(desktop): recover chat after sleep/wake by revalidating a stale remote backend
After sleep/wake, a remote (global-remote) primary backend can become
unreachable, but it has no child process whose 'exit' clears the main
process's cached connectionPromise. The renderer then re-dials the same
dead remote forever and the composer stays stuck on "Starting Hermes…";
only a quit+reopen recovered.

Fix: the renderer's existing backoff-paced reconnect loop now asks the
main process to revalidate the cached connection before re-dialing. The
main process liveness-probes the cached REMOTE backend's public
/api/status and, if unreachable, drops the cache (resetHermesConnection
only nulls connectionPromise for a remote — no child to SIGTERM) so the
next getConnection() rebuilds a reachable descriptor. Local backends are
never touched here; they self-heal via the child 'exit' handler. The
renderer's loop already provides retry pacing and rides out transient
blips, so no streak/episode bookkeeping is needed in the main process.

The boot hook dismisses the boot-progress overlay on the post-rebuild
'open' so an in-place rebuild can't leave it stuck at ~94%.

Reimplements #40135 by @AlchemistChaos on a smaller, more interpretable
path (63 added lines vs 555): no extracted helper module, no
failure-streak / episode-window state, the renderer's backoff loop is
the retry mechanism. Original diagnosis and fix by @AlchemistChaos.

Co-authored-by: AlchemistChaos <alchemistchaos@protonmail.com>
2026-06-07 17:29:12 -07:00
..
backend-probes.cjs Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
backend-probes.test.cjs chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
bootstrap-platform.cjs chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
bootstrap-platform.test.cjs chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
bootstrap-runner.cjs fix(desktop): bootstrap falls back to installed agent install.sh on GitHub 404 2026-06-07 03:46:12 -07:00
bootstrap-runner.test.cjs fix(desktop): bootstrap falls back to installed agent install.sh on GitHub 404 2026-06-07 03:46:12 -07:00
connection-config.cjs feat(desktop): per-profile remote gateway hosts (#39778) 2026-06-05 12:14:18 +00:00
connection-config.test.cjs feat(desktop): per-profile remote gateway hosts (#39778) 2026-06-05 12:14:18 +00:00
desktop-uninstall.cjs feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
desktop-uninstall.test.cjs feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
entitlements.mac.inherit.plist fix(desktop): inherit microphone entitlement for macOS helpers 2026-06-03 07:32:00 +07:00
entitlements.mac.plist Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
gateway-ws-probe.cjs test(desktop): add injectable gateway WebSocket probe + unit tests 2026-06-04 19:49:06 -07:00
gateway-ws-probe.test.cjs test(desktop): add injectable gateway WebSocket probe + unit tests 2026-06-04 19:49:06 -07:00
hardening.cjs Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
hardening.test.cjs Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
main.cjs fix(desktop): recover chat after sleep/wake by revalidating a stale remote backend 2026-06-07 17:29:12 -07:00
oauth-net-request.cjs fix(desktop): avoid restricted oauth request header 2026-06-05 18:04:45 -07:00
oauth-net-request.test.cjs fix(desktop): avoid restricted oauth request header 2026-06-05 18:04:45 -07:00
preload.cjs fix(desktop): recover chat after sleep/wake by revalidating a stale remote backend 2026-06-07 17:29:12 -07:00