.hermes-install.json marks a checkout as source-managed or desktop-bundled and records its update channel. A missing file means source mode on the main channel, so no existing install changes. `hermes update` reads the manifest: - On a bundled install it refuses and points at the in-app updater. - On the stable channel it fast-forwards the checkout to the newest final release tag (vX.Y.Z, three-digit major cap so legacy CalVer tags never match) instead of origin/main. The ZIP fallback resolves the tag through the GitHub API because that path runs when git file I/O is broken. - `update.channel` in config.yaml overrides the channel for source installs. "auto" defers to the manifest. `hermes update --eject` is the exit from desktop management. On a bundled install it downloads Hermes Setup and launches it pinned to the exact commit the bundle was built from; the installer creates a normal source checkout at ~/.hermes/hermes-agent. Hermes Setup accepts the new `--pin-commit <sha>` argument for this flow. On a source-managed install, --eject with --channel only switches the channel. The "ejected" manageStyle is the permanent opt-out that stops future auto-adoption. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| src-tauri | ||
| .gitignore | ||
| eslint.config.mjs | ||
| index.html | ||
| package.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||