3 Commits

Author SHA1 Message Date
ethernet
9f2ba1b74d merge origin/main (779 commits) into ethie/pm-clean
Branch semantics kept where main and PM disagree: update_cmd_deps.py,
constraints-termux.txt, the Electron update-api-check module and the
post-swap hand-off test stay deleted; the pending-fleet-restart catch-up
and the local_runtime tag/download ladder stay retired (PM owns engines).

Ported from main onto the branch's shape: profile_scoped_chore for the
auto-archive and plugin-update housekeeping chores, the local-runtime
cross-process boot lock and residency cap, the checkpoint tmp_pack sweep,
the cua daemon-liveness status probe, the remote-served Desktop update
flag (posix.sh / windows.ps1), sign-in for env-pinned remote gateways
(urlDisabled on RemoteSetupFields), the uvloop extra split (uvicorn
without [standard]), and the umask-scoping spawn test.

uv.lock regenerated with pm.build_env --lock-only; new utf-8 reads from
main switched to utf-8-sig (check-windows-footguns).
2026-09-21 00:58:39 -04:00
teknium1
5bdfc79821 fix: a secondary profile no longer removes the default profile's bare-named gateway launchers (review follow-up)
The bare `Hermes_Gateway` Scheduled Task and Startup entry are the live
identity of the default ~/.hermes profile, yet any suffixed home classified
them as its own pre-suffix strays, so `hermes -p work gateway uninstall` /
`install --force` deleted the default profile's autostart. A bare-named
Startup entry or task now counts as legacy only when its action targets THIS
home's gateway-service dir (Startup file contents / `schtasks /Query /XML`);
files inside this home's gateway-service dir are ours by construction.
Invariant test (red before): sibling launchers survive uninstall with no
/Delete issued. The windows_only live test now registers a task whose action
targets the temp home so it still exercises the positive path.
2026-09-20 12:47:14 -07:00
teknium1
96ee0516c6 fix(gateway): status names and uninstall removes pre-suffix Windows launchers
Before task/launcher names carried _profile_suffix(), an install wrote the Scheduled
Task Hermes_Gateway, Startup\Hermes_Gateway.vbs and gateway-service\Hermes_Gateway.{vbs,cmd}.
Every operation in gateway_windows is keyed on get_task_name() -> Hermes_Gateway_<suffix>,
so those strays were never queried, rewritten, reported or removed: they launch a second
gateway at logon, never receive launcher fixes, and `hermes gateway status` prints a
clean checkmark while they do (#116157).

hermes_cli/gateway_windows_legacy.py enumerates the pre-suffix class once (one table);
status() warns per object with the uninstall hint, uninstall() and install --force remove
them, and a task whose deletion is access-denied is named with the exact elevated
schtasks command instead of being left behind silently.

Slimmer redo of #116299 by @Finn763 (same direction; one table instead of four helpers,
topical sibling instead of a facade appendage, two tests instead of nine).

Co-authored-by: finn763 <165816600+finn763@users.noreply.github.com>
2026-09-20 12:47:14 -07:00