Repository navigation
v0.12.0
Added
-
lslabels its columns, and--sortorders the rows. (#179) The table
printed up to eight columns and said what none of them were, so every reading
of it started by counting cells against the README — and the listing is
watched on a refresh loop, where that cost is paid again every time. A label
row is now drawn by default;--no-headerleaves it out for anything parsing
the table by line.--sorttakesstatus,seqorbranch.statusranks
by how much the row wants a person — blocked, idle, done, working, then the
worktrees with no agent — rather than alphabetically, andseqis lowest
first, because the counter only ever answers which worker herdr saw move
longest ago. Ties keep git's order, no--sortkeeps it entirely, and the
order applies to--jsonas well as the table. -
scripts/install.sh— worktender without herdr and without Go. (#144)
The degraded path #143 built never fired on the only install route that
existed:herdr plugin installmeans herdr is present by definition. One
documented step now puts the binary onPATHfor someone who runs neither:curl -fsSL https://raw.githubusercontent.com/steig/worktender/main/scripts/install.sh | shIt follows
releases/latestto a tag and pins both the binary and the
checksums.txtto that one release, verifies the SHA-256 before making
anything executable, and fails closed — a missing checksum line is as fatal as
a mismatched one, and every failure path removes the staged download. Nothing
is ever written to the destination path unverified, and it never wants sudo.
--versionpins a release,--dirmoves the destination off~/.local/bin.
See Trust for what the checksum does
and does not prove.
Changed
- The release workflow stamps the version into the binary. (#144) A plugin
install reads its version out of the manifest beside it and a standalone
install has no manifest at all, so without thisdoctorcould not name the
release it was — half of what that command is for. updateanddoctoranswer for a standalone install. (#144)update
moves a plugin checkout forward and a standalone install has none, so it
names the one step that does — re-running the installer — rather than
reporting a missingherdr-plugin.toml. It deliberately does not run that
itself.doctor'sversionline reports the release and says plainly that
nothing compared it against the newest. A binary that is neither — a hand
go build— is still told what was looked for.- Resolving the binary is PATH-first everywhere it is documented. (#144)
herdr plugin list --jsonis not available to a standalone install, so the
README, both skills,docs/dispatch.mdanddocs/json.mdnow take what is on
PATHand fall back to the plugin root.doctorsayson PATH alreadywhen
typingworktenderreaches the binary printing the line.
Fixed
- A pushed tag now reliably gets a release carrying the build assets.
(#182)release.yml'spublishstep rangh release create, which is
fatal when a release already exists for the tag — and one usually does,
because the release object with hand-written notes is created from a
laptop, which is also what pushes the tag. Every release from v0.10.0
through v0.11.2 built and checksummed fine and then failed to publish with
a release with the same tag name already exists, shipping with zero
assets attached. Nothing downstream said so:scripts/install.shand
scripts/build.sh's no-Go fallback just 404 on
releases/download/v<version>/worktender_<os>_<arch>. The step now goes
throughscripts/release-publish.sh, which creates a release only when the
tag has none and always ends ingh release upload --clobber, leaving
notes already on an existing release untouched. Losing the create to
something else — two runs of the workflow for one tag — is not fatal
either; whoever won made the release this run still has to upload to. And
the assets are checked to be real files first, becauserelease.yml
passes an unquoteddist/*and an emptydist/would otherwise publish
the literal glob.