Enable Hermes in-app updates and guard removal - #10613
Conversation
Use the packaged upstream installer and matching prebuilt app to prepare the writable user installation before launch. Preserve existing builds and modified sources; record the upstream build stamp only for a matching prebuilt app. Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
|
Reviewed at aa3868b with omabot's review-pr procedure. Verdict: waiting on the author. Three defects worth a decision, two one-line test fixes proven, nothing pushed. What ran. The new Findings.
Pre-existing and not against this PR: the exported Checked and correct. Codex ran at xhigh from the worktree. Findings 1, 5 and 6 are its own contributions; where it agreed with conclusions already reached here its independence is not guaranteed, since it can read this session's files. Its "high" on findings 1 and 2 is downgraded here: 1 self-heals at the next upstream commit and 2 replaces the wrapper with a working hermes. Related: #10443 is this author's earlier draft of the same change; omarchy-pkgs #335 is required and must publish first; omarchy-pkgs #302 bumps the same package without the prebuilt design. Nothing pushed: this is the author's active draft and findings 1 to 3 need decisions. The two test fixes are one line each. 🤖 Generated by Claude Fable 5.1 in T3 Code. Reviewed by Codex XHigh. |
Align main with the packaged release and fetch connected history so the updater detects and rebuilds the first update. Guard local branch work before upstream installation, force only the admitted incomplete release pin, preserve existing command files, and explain incompatible packages. Exercise empty-directory publication races and delayed launches. Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
|
Addressed the six findings in 827266f:
All 14 installer fixture groups and the full The companion package PR #335 now uses 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh. |
An open terminal can retain deleted SQLite WAL files across removal and reinstall, causing the updated desktop to refuse session writes. Check user processes before package/runtime removal and again after data confirmation, without killing sessions. Cover the failure with real SQLite writers in isolated fixtures. Co-Authored-By: GPT-6 Codex (xhigh) <noreply@openai.com>
|
Added the removal guard in 1b4ac83 after reproducing the post-update session-storage failure with an actual SQLite writer in a temporary home. The removal command could delete the database while a terminal remained open; that writer then held deleted WAL/SHM files across reinstall, and the updated Hermes correctly refused further writes. Removal now reports current-user PIDs using Hermes paths and stops before package or runtime cleanup. It checks again after the data-deletion confirmation. It detects process arguments, executables, working directories, and open files, including deleted descriptors, without terminating sessions. Existing removal tests, real live/deleted SQLite writer fixtures, the prompt race, and the full CLI suite pass. Four deliberate mutations are rejected. Independent xhigh review found no remaining substantive issues. The guard does not provide an atomic lock against arbitrary new processes starting after a scan. No live sessions or data were changed; package #335 remains at 2026.8.31-2. 🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh. |
Keep the package launcher visible when Hermes builds register a second desktop entry. Use the existing launcher hide list so in-app updates cannot restore the duplicate menu row.
Enable Hermes in-app updates and guard removal (cherry picked from commit a703092) (cherry picked from commit 2438293d775d679ce99364cdbced108596c5b2bc)
Hermes' in-app updater rebuilds and relaunches the desktop inside the user's Git checkout. The current install flow starts the immutable
/optapp and leaves that native desktop absent, so fixing the tag-only checkout alone does not enable desktop updates.Use the upstream installer shipped by omarchy-pkgs #335 to prepare the matching release runtime while tracking
main, then place the package's prebuilt desktop in the native release directory before opening it. Start localmainat the packaged release with connected history, so the first update detects newer commits and runs dependency synchronization and the desktop rebuild even when upstream has not moved since installation. Use the installer's--force-commitonly when preparing a new runtime or repairing an admitted clean release checkout. Local branch work is checked before the upstream installer can reset it.Back up existing
hermes,hermes-agent, andhermes-acpfiles or symlinks before the upstream installer replaces them, and report the backup directory. An incompatible installed package stops withomarchy updateguidance before CLI handoff. Record the prebuilt app with Hermes' own content stamp; existing desktop builds and modified sources are preserved.Apply the package's two-line upstream updater gate backport only to the matching release checkout, allowing the first update handoff to relaunch with the user-namespace sandbox. The package launcher opens the native executable directly and refuses native launch if user namespaces are unavailable. Subsequent updates use upstream's current implementation. Keep the package's URL-capable launcher visible and hide the upstream-generated
hermesentry through Omarchy's existing launcher hide list. Rebuilds can recreate that file without adding a second Hermes row to the Apps menu.Refuse removal while a current-user process is using the Hermes runtime or data, before package/runtime cleanup and again after confirming data deletion. Removing an open SQLite database can leave a terminal holding deleted WAL files across a reinstall, which the updated desktop correctly refuses to write alongside. Match process arguments, executable, working directory and open files, including deleted descriptors, and report the PIDs to close without killing sessions.
Requires
hermes-desktop 2026.8.31-2from the companion package PR.🤖 Generated by GPT-6 in Codex/T3 Code. Reviewed by GPT-6 Codex at xhigh.