Let Hermes Desktop update its native installation - #325
Conversation
Install Hermes into its writable native layout instead of shipping a frozen /opt desktop. Preserve the native update path, migrate tagged bootstraps, and keep existing CLI launchers until the desktop is ready. Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
This reverts commit 68a4a6c.
Stage the initial clone before publishing its ownership marker and build the desktop through the same native CLI used by updates. Keep a concurrent checkout intact and reset pkgrel for the version change. Co-Authored-By: Claude Opus 5 (default) <noreply@anthropic.com>
Keep build-time registration private, verify the published launcher, and then let the native command register the final desktop entry. Keep that launcher first on the desktop environment PATH for subsequent registrations. Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
|
Omabot review: no remaining source blockers at Claude Opus 5 in Claude Code, at default effort through Omabot’s subscription workflow, and an independent GPT-6 Codex review at xhigh agree on the final source. The package stages the initial clone before publishing its ownership marker, builds with the native CLI without a late sudo step, and registers the desktop entry only after verifying the published CLI. This keeps the package as the entry point while desktop and CLI updates share the writable native installation. Runtime validation was performed separately from those static reviews. The exact built package completed a fresh installation as UID1000 in an isolated local environment, even with another Hermes first on PATH. Its desktop entry targeted the new CLI; repeating setup preserved the installed files; CLI update succeeded. A real desktop update advanced All 18 package regression tests, targeted mutation checks, and current-head package CI passed. The host pacman replacement still awaits normal system authentication; the fresh package payload and native update flow were exercised without that transaction. Copilot requests produced no review or start event, so no Copilot coverage is claimed. Publish this package before the coordinated Omarchy integration. Voice dependencies use Hermes’ first-use setup, and interrupted clone directories are retained for inspection. 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by Claude Opus 5 at default effort through Omabot and GPT-6 Codex at xhigh. |
|
Coordinated review from the Omarchy side (#10443). The launcher defaults HERMES_HOME to $HOME/.hermes, which is correct for an explicit custom data home. If this binary is ever exec'd from a Hermes profile session (HERMES_HOME=~/.hermes/profiles/), setup lands in the profile instead of the machine tree. Install > AI's floating terminal is a clean env. Worth pinning the packaged entry point to $HOME/.hermes unless HERMES_HOME is set and is not under profiles/. --disable-setuid-sandbox when user namespaces work is the correct Chromium path on Omarchy; keep that, do not fall back to --no-sandbox in the package. Ship this before #10443. |
|
Addressed the profile-home finding in The launcher now resolves an inherited Independent GPT-6 Codex review at xhigh found no confirmed blockers and exercised the coordinated command chain. All 24 package regressions and four repository self-tests pass; five deliberate mutations are caught. The rebuilt package also passed real 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh. |
|
Omabot final review: no confirmed source blockers at Claude Opus 5 in Claude Code, at default effort through Omabot’s subscription workflow, reviewed the frozen commits and upstream profile resolvers. It reached the same conclusion as the independent GPT-6 Codex review at xhigh. The inherited profile-home fix preserves custom roots and symlink spelling, rejects filesystem-root homes before mutations, and retains the namespace sandbox. No further source changes were required. All 24 package regressions, four repository self-tests, five targeted mutation checks, and current-head hosted CI passed. Separately, the exact rebuilt package passed real profile-session readiness and warm setup as UID 1000 without changing the shared CLI, desktop entry, build stamp, or profile data. The earlier real GUI/CLI update validation was not repeated for this path-resolution change; cold setup from a profile and its GUI/theme handoff remain covered by fixtures rather than a new end-to-end run. Publish this package first. Both PRs are needed for the complete profile fix, including Omarchy’s theme and removal paths. The host package replacement still requires system authentication. 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh and Claude Opus 5 at default effort through Omabot. |
|
Restored the Hermes PKGBUILD’s existing formatting in Syntax and whitespace checks passed. Independent GPT-6 Codex review at xhigh found no blockers in this formatting-only delta. 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh. |
Hermes' desktop update can fetch a new backend and then fail or leave the app behind. The existing package bootstraps a detached release with a tag-only fetch refspec and launches Electron from
/opt/hermes-desktop; Hermes' native updater expects the desktop beside its writable runtime.Make the package the installer and launcher for that native installation. Initial setup uses upstream's installer and native CLI to build the desktop under
~/.hermes/hermes-agent/apps/desktop/release/linux-unpacked, and subsequent app and CLI updates use the same runtime. Existing package bootstraps gain branch tracking and a native build. Package upgrades leave an already working native installation alone. Launching or installing from a Hermes profile session resolves its data directory to the shared installation home; explicit custom data roots remain supported.First setup now shows progress in a terminal and needs internet access and the packaged build dependencies. Voice dependencies follow Hermes' first-use setup. Setup preserves custom launchers and local source work, stages the initial clone so interrupted downloads can be retried, publishes the CLI after a successful desktop build, and registers the desktop entry against that verified CLI. It records an owned mise predecessor for Omarchy's cleanup. The launcher runs the desktop beside its shared CLI runtime and uses Chromium's namespace sandbox. A hidden URI handler keeps existing
hermes://links working alongside upstream's desktop entry.Coordinated with omacom/omarchy#10443. Publish this package before shipping that integration. This recipe supersedes the version-only bump in #302.
🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh and Claude Opus 5 at default effort through Omabot.