From e2e916f3c9b4e8b3f9d662d5d28f47fb8545e7c6 Mon Sep 17 00:00:00 2001 From: Omabot Date: Wed, 19 Aug 2026 07:52:27 -0700 Subject: [PATCH 1/2] Track upstream herdr instead of the Omarchy fork MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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.. 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 --- .../.omarchy/package.json | 0 pkgbuilds/herdr-git/PKGBUILD | 62 +++++++++++++++++++ pkgbuilds/herdr/PKGBUILD | 45 -------------- 3 files changed, 62 insertions(+), 45 deletions(-) rename pkgbuilds/{herdr => herdr-git}/.omarchy/package.json (100%) create mode 100644 pkgbuilds/herdr-git/PKGBUILD delete mode 100644 pkgbuilds/herdr/PKGBUILD diff --git a/pkgbuilds/herdr/.omarchy/package.json b/pkgbuilds/herdr-git/.omarchy/package.json similarity index 100% rename from pkgbuilds/herdr/.omarchy/package.json rename to pkgbuilds/herdr-git/.omarchy/package.json diff --git a/pkgbuilds/herdr-git/PKGBUILD b/pkgbuilds/herdr-git/PKGBUILD new file mode 100644 index 0000000..d2be57f --- /dev/null +++ b/pkgbuilds/herdr-git/PKGBUILD @@ -0,0 +1,62 @@ +# Maintainer: David Heinemeier Hansson + +_pkgname=herdr +pkgname="$_pkgname-git" +pkgver=0.8.0.r129.ga5c69be +pkgrel=1 +pkgdesc="Herdr terminal workspace manager built from upstream master" +arch=('x86_64' 'aarch64') +url="https://github.com/herdrdev/herdr" +license=('Apache-2.0') +depends=('gcc-libs' 'glibc') +makedepends=('cargo' 'git') +provides=("$_pkgname") +conflicts=("$_pkgname" 'omarchy-herdr') +replaces=("$_pkgname" 'omarchy-herdr') +options=('!debug' '!lto') + +_commit=a5c69beabfc82d9c3f9563eb821139b2e0f3e14f +_zigver=0.15.2 +source=("$_pkgname"::"git+$url.git#commit=$_commit") +source_x86_64=("zig-x86_64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-x86_64-linux-$_zigver.tar.xz") +source_aarch64=("zig-aarch64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-aarch64-linux-$_zigver.tar.xz") +sha256sums=('SKIP') +sha256sums_x86_64=('02aa270f183da276e5b5920b1dac44a63f1a49e55050ebde3aecc9eb82f93239') +sha256sums_aarch64=('958ed7d1e00d0ea76590d27666efbf7a932281b3d7ba0c6b01b0ff26498f667f') + +pkgver() { + cd "$_pkgname" + + # Preview tags sit on master between releases, so an unexcluded describe bases the version on + # a build id. Failing beats any fallback: with no release tag every candidate sorts lower. + ( set -o pipefail + git describe --long --tags --abbrev=7 --exclude='preview-*' \ + | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' + ) +} + +prepare() { + cd "$_pkgname" + + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" +} + +build() { + cd "$_pkgname" + + export CARGO_TARGET_DIR=target + export ZIG="$srcdir/zig-$CARCH-linux-$_zigver/zig" + export ZIG_GLOBAL_CACHE_DIR="$srcdir/zig-cache" + # Master's Cargo.toml already carries the next version, so an unmarked build claims a + # release upstream has not published and speaks a protocol that release will not have. + export HERDR_BUILD_CHANNEL=omarchy + export HERDR_BUILD_ID="$(git rev-parse --short=7 HEAD)" + cargo build --frozen --release +} + +package() { + cd "$_pkgname" + + install -Dm755 target/release/herdr "$pkgdir/usr/bin/herdr" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/pkgbuilds/herdr/PKGBUILD b/pkgbuilds/herdr/PKGBUILD deleted file mode 100644 index 511885a..0000000 --- a/pkgbuilds/herdr/PKGBUILD +++ /dev/null @@ -1,45 +0,0 @@ -# Maintainer: David Heinemeier Hansson - -pkgname=herdr -pkgver=0.8.0.r13 -pkgrel=1 -pkgdesc="Herdr terminal workspace manager built from the Omarchy fork" -arch=('x86_64' 'aarch64') -url="https://github.com/omacom-io/herdr" -license=('Apache-2.0') -depends=('gcc-libs' 'glibc') -makedepends=('cargo') -replaces=('omarchy-herdr') -conflicts=('omarchy-herdr') -options=('!debug' '!lto') - -_commit=0766aa57ee0ceb4410ae064e94c0f0557853eee7 -_zigver=0.15.2 -source=("herdr-$_commit.tar.gz::$url/archive/$_commit.tar.gz") -source_x86_64=("zig-x86_64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-x86_64-linux-$_zigver.tar.xz") -source_aarch64=("zig-aarch64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-aarch64-linux-$_zigver.tar.xz") -sha256sums=('61d33624fd3af77ccf695d20c3c31689a44f8c2dc3855edd405eec7bc1af0318') -sha256sums_x86_64=('02aa270f183da276e5b5920b1dac44a63f1a49e55050ebde3aecc9eb82f93239') -sha256sums_aarch64=('958ed7d1e00d0ea76590d27666efbf7a932281b3d7ba0c6b01b0ff26498f667f') - -prepare() { - cd "herdr-$_commit" - - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" -} - -build() { - cd "herdr-$_commit" - - export CARGO_TARGET_DIR=target - export ZIG="$srcdir/zig-$CARCH-linux-$_zigver/zig" - export ZIG_GLOBAL_CACHE_DIR="$srcdir/zig-cache" - cargo build --frozen --release -} - -package() { - cd "herdr-$_commit" - - install -Dm755 target/release/herdr "$pkgdir/usr/bin/herdr" - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" -} From 40a094c32a30234864136a58f7892d88eec57ecb Mon Sep 17 00:00:00 2001 From: Omabot Date: Sat, 22 Aug 2026 07:41:39 -0700 Subject: [PATCH 2/2] Package the herdr 0.8.2 release instead of the fork MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The package built from omacom-io/herdr, a fork pinned to a commit and versioned 0.8.0.r13. Its only divergence was three commits replaying an agent's CLI options when a session resumed, which upstream declined twice — from a contributor in herdrdev/herdr#2036 and from us in herdrdev/herdr#2614, closed in favour of an agent resume manifest meant to supersede it. Those three are dropped; every other commit the fork carried is in v0.8.2. The fork also self-reported "0.8.0" while speaking wire protocol 20, which upstream's published 0.8.0 did not: it spoke 19. An official client attaching to an Omarchy host therefore saw a server claiming to be its own version yet refusing to talk to it, and offered to stop it without ever naming the protocol. That is omacom-io/omarchy-pkgs#161. Upstream released v0.8.2 today, and it settles both halves. It carries protocol 20, and the stable manifest now publishes 0.8.2 at protocol 20, so an official client and this package agree. It also contains the five features Omarchy contributed after the v0.8.0 tag — configurable outer pane borders, direct pane resize keybindings, move tab keybind actions, centered tab labels and outer terminal window title sync — which is what made packaging the earlier release a regression rather than a return to upstream. Because the build is now the release it claims to be, it needs no build-identity marking: HERDR_BUILD_CHANNEL and HERDR_BUILD_ID are gone, and the binary reports a bare 0.8.2. The package name is unchanged, so nothing needs a rename, a migration or a database removal to reach existing installs; 0.8.2-1 simply supersedes 0.8.0.r13-1. 🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh. --- pkgbuilds/herdr-git/PKGBUILD | 62 ------------------- .../.omarchy/package.json | 0 pkgbuilds/herdr/PKGBUILD | 44 +++++++++++++ 3 files changed, 44 insertions(+), 62 deletions(-) delete mode 100644 pkgbuilds/herdr-git/PKGBUILD rename pkgbuilds/{herdr-git => herdr}/.omarchy/package.json (100%) create mode 100644 pkgbuilds/herdr/PKGBUILD diff --git a/pkgbuilds/herdr-git/PKGBUILD b/pkgbuilds/herdr-git/PKGBUILD deleted file mode 100644 index d2be57f..0000000 --- a/pkgbuilds/herdr-git/PKGBUILD +++ /dev/null @@ -1,62 +0,0 @@ -# Maintainer: David Heinemeier Hansson - -_pkgname=herdr -pkgname="$_pkgname-git" -pkgver=0.8.0.r129.ga5c69be -pkgrel=1 -pkgdesc="Herdr terminal workspace manager built from upstream master" -arch=('x86_64' 'aarch64') -url="https://github.com/herdrdev/herdr" -license=('Apache-2.0') -depends=('gcc-libs' 'glibc') -makedepends=('cargo' 'git') -provides=("$_pkgname") -conflicts=("$_pkgname" 'omarchy-herdr') -replaces=("$_pkgname" 'omarchy-herdr') -options=('!debug' '!lto') - -_commit=a5c69beabfc82d9c3f9563eb821139b2e0f3e14f -_zigver=0.15.2 -source=("$_pkgname"::"git+$url.git#commit=$_commit") -source_x86_64=("zig-x86_64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-x86_64-linux-$_zigver.tar.xz") -source_aarch64=("zig-aarch64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-aarch64-linux-$_zigver.tar.xz") -sha256sums=('SKIP') -sha256sums_x86_64=('02aa270f183da276e5b5920b1dac44a63f1a49e55050ebde3aecc9eb82f93239') -sha256sums_aarch64=('958ed7d1e00d0ea76590d27666efbf7a932281b3d7ba0c6b01b0ff26498f667f') - -pkgver() { - cd "$_pkgname" - - # Preview tags sit on master between releases, so an unexcluded describe bases the version on - # a build id. Failing beats any fallback: with no release tag every candidate sorts lower. - ( set -o pipefail - git describe --long --tags --abbrev=7 --exclude='preview-*' \ - | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' - ) -} - -prepare() { - cd "$_pkgname" - - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" -} - -build() { - cd "$_pkgname" - - export CARGO_TARGET_DIR=target - export ZIG="$srcdir/zig-$CARCH-linux-$_zigver/zig" - export ZIG_GLOBAL_CACHE_DIR="$srcdir/zig-cache" - # Master's Cargo.toml already carries the next version, so an unmarked build claims a - # release upstream has not published and speaks a protocol that release will not have. - export HERDR_BUILD_CHANNEL=omarchy - export HERDR_BUILD_ID="$(git rev-parse --short=7 HEAD)" - cargo build --frozen --release -} - -package() { - cd "$_pkgname" - - install -Dm755 target/release/herdr "$pkgdir/usr/bin/herdr" - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" -} diff --git a/pkgbuilds/herdr-git/.omarchy/package.json b/pkgbuilds/herdr/.omarchy/package.json similarity index 100% rename from pkgbuilds/herdr-git/.omarchy/package.json rename to pkgbuilds/herdr/.omarchy/package.json diff --git a/pkgbuilds/herdr/PKGBUILD b/pkgbuilds/herdr/PKGBUILD new file mode 100644 index 0000000..259df78 --- /dev/null +++ b/pkgbuilds/herdr/PKGBUILD @@ -0,0 +1,44 @@ +# Maintainer: David Heinemeier Hansson + +pkgname=herdr +pkgver=0.8.2 +pkgrel=1 +pkgdesc="Herdr terminal workspace manager for AI coding agents" +arch=('x86_64' 'aarch64') +url="https://github.com/herdrdev/herdr" +license=('Apache-2.0') +depends=('gcc-libs' 'glibc') +makedepends=('cargo') +replaces=('omarchy-herdr') +conflicts=('omarchy-herdr') +options=('!debug' '!lto') + +_zigver=0.15.2 +source=("herdr-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") +source_x86_64=("zig-x86_64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-x86_64-linux-$_zigver.tar.xz") +source_aarch64=("zig-aarch64-linux-$_zigver.tar.xz::https://ziglang.org/download/$_zigver/zig-aarch64-linux-$_zigver.tar.xz") +sha256sums=('60453051025ee44ebf055d26cdaf665a0accd99a992cddd22c166a26c49cd161') +sha256sums_x86_64=('02aa270f183da276e5b5920b1dac44a63f1a49e55050ebde3aecc9eb82f93239') +sha256sums_aarch64=('958ed7d1e00d0ea76590d27666efbf7a932281b3d7ba0c6b01b0ff26498f667f') + +prepare() { + cd "herdr-$pkgver" + + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" +} + +build() { + cd "herdr-$pkgver" + + export CARGO_TARGET_DIR=target + export ZIG="$srcdir/zig-$CARCH-linux-$_zigver/zig" + export ZIG_GLOBAL_CACHE_DIR="$srcdir/zig-cache" + cargo build --frozen --release +} + +package() { + cd "herdr-$pkgver" + + install -Dm755 target/release/herdr "$pkgdir/usr/bin/herdr" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +}