Track upstream herdr instead of the Omarchy fork - #170
Draft
omarchybot wants to merge 1 commit into
Draft
Conversation
The fork carried three commits that replayed an agent's CLI options when Herdr resumed its session. Upstream declined that work twice — once from a contributor in #2036 and once from us in #2614, closed in favour of an agent resume manifest system that is meant to supersede it — so the fork was a permanent rebase treadmill for one feature, and it is dropped here. Packaging the v0.8.0 release instead would have regressed more than the fork gained: configurable outer pane borders, direct pane resize keybindings, move tab keybind actions, centered tab labels and outer terminal window title sync all merged upstream after that tag, so the release predates five features Omarchy contributed. The package follows upstream master and takes the -git name that says so, replacing both herdr and omarchy-herdr. Master's Cargo.toml reads 0.8.1, a release upstream cut and withdrew hours later, while the wire protocol is already 20 against the published release's 19. An unmarked build therefore self-reports a version that no release carries, which is how an official client came to insist on stopping an Omarchy host's server without saying why. HERDR_BUILD_CHANNEL and HERDR_BUILD_ID make it report 0.8.1-omarchy.<commit>. The channel is not "preview" because that gates is_preview(), which makes the stable updater treat every published release as installable and overwrite /usr/bin/herdr outside pacman. pkgver() excludes the preview tags that sit on master between releases; describing without that returns a preview build id that pacman ranks below the version already shipped. It fails rather than falling back for the same reason: with no release tag reachable, every version it could invent sorts lower than what users already have. Cross-architecture remote attach cannot bootstrap a helper for this build, because the stable manifest lists only published releases. That is true of any build from master, marked or not: an unmarked one asks the manifest for 0.8.1 and is told it does not exist. 🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh. Co-Authored-By: Codex XHigh <codex@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
herdrpackage built fromomacom-io/herdr, a fork whose only divergence was three commits replaying an agent's CLI options when Herdr resumed its session. Upstream declined that work twice — from a contributor in herdrdev/herdr#2036, and from us in herdrdev/herdr#2614, closed in favour of an agent resume manifest system meant to supersede it — so the fork was a permanent rebase treadmill carrying one feature that upstream has no intention of taking. This drops it and follows upstream directly.Packaging the v0.8.0 release instead would have regressed more than the fork gained. Configurable outer pane borders, direct pane resize keybindings, move tab keybind actions, centered tab labels and outer terminal window title sync all merged upstream after that tag, so the release predates five features Omarchy contributed. The package therefore follows master and takes the
-gitname that says so, replacing bothherdrandomarchy-herdrso existing installs migrate.Master's
Cargo.tomlreads0.8.1, a release upstream cut on 2026-08-18 and withdrew forty-two minutes later, while its wire protocol is already 20 against the published release's 19. An unmarked build self-reports a version no published release carries, which is how an official macOS client came to insist on stopping an Omarchy host's server while showing the same0.8.0on both sides and never naming the protocol — the behaviour reported in #161.HERDR_BUILD_CHANNELandHERDR_BUILD_IDmake the binary report0.8.1-omarchy.<commit>instead. The channel is deliberately notpreview, because that gatesbuild_info::is_preview(), andupdate.rs::stable_channel_should_install()returns true unconditionally for preview builds — it would offer every user a "update" to the protocol-19 stable release and overwrite/usr/bin/herdroutside pacman.pkgver()excludes thepreview-*tags that sit on master between releases: describing without that bases the version on a preview build id, which pacman ranks below the version already shipped, so the package would never install. It fails rather than falling back for the same reason — with no release tag reachable, every version it could invent sorts lower than what users already have.One known limitation: cross-architecture remote attach cannot bootstrap a helper for this build, because the stable manifest lists only published releases. That holds for any build from master, marked or not — an unmarked one asks the manifest for
0.8.1and is told it does not exist. Same-architecture attach is unaffected, since Herdr copies the local binary.This is a draft on purpose. It does not close #161: two builds whose
PROTOCOL_VERSIONdiffers cannot share a server, becauseremote_server_restart_reason()checks the protocol before it looks at any version string, so this makes the mismatch legible rather than curing it. The cure is upstream's — when 0.8.1 is re-cut and stable publishes protocol 20, official clients and this package agree again. Parked until then.🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh.