hermes-agent/apps/bootstrap-installer/src-tauri/src
Brooklyn Nicholson 8c76fe19f8 fix(update): let the GUI updater's hermes update child pass the lock it already holds
The cross-process update lock (fe8e4d93d) made the in-progress marker
mutually exclusive across every update entrypoint — but the Tauri
updater holds that marker for its WHOLE run and then spawns
hermes update as a child stage. The child read the marker, found its
own parent's live pid, refused with exit 2, and the GUI mapped that to
"Hermes is still running. Close all Hermes windows and try the update
again." Retry spawns a fresh updater that deadlocks against itself the
same way, so every GUI-driven update dead-ends on the failure screen
with no winnable retry (observed: three consecutive self-refusals in
bootstrap-installer.log within 90 seconds).

Hand the claim off explicitly: update_child_env exports
HERMES_UPDATE_HANDOFF_PID naming the updater's own pid, and
UpdateLock.acquire treats a live holder matching that pid as the lock
we are already running under — run without claiming, and release
leaves the parent's marker untouched. The env var alone grants
nothing: the pid must also be the live marker owner, so a stale or
forged value cannot bypass the lock, and a dashboard-spawned
hermes update (no handoff env) is still refused exactly as before.
2026-07-30 00:51:33 -05:00
..
bootstrap.rs fix(installer): stamp the bootstrap-complete marker from the Rust installer 2026-07-26 16:02:13 -05:00
events.rs feat(desktop): ts-ify everything 2026-07-08 16:24:16 -07:00
install_script.rs fix(bootstrap): download timeouts + BOM upgrade for pre-fix cached scripts (#67193 follow-up) 2026-07-19 14:08:48 +05:30
lib.rs feat(installer): rename macOS installer to "Hermes" and make it a launcher (#37516) 2026-06-02 17:47:34 +00:00
main.rs Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
paths.rs fix(installer): stamp the bootstrap-complete marker from the Rust installer 2026-07-26 16:02:13 -05:00
powershell.rs fix(bootstrap): make read_decoded_line cancel-safe under tokio::select! 2026-07-19 01:21:59 -07:00
update.rs fix(update): let the GUI updater's hermes update child pass the lock it already holds 2026-07-30 00:51:33 -05:00