Skip to content

Releases: steig/worktender

v0.16.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 21:38
bb428e7

What's Changed

  • feat(watch): status line leads with what needs you, drops idle by @steig in #250
  • chore(release): 0.16.1 by @steig in #251

Full Changelog: v0.16.0...v0.16.1

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 18:31
098afe1

What's Changed

  • feat(draft): propose acceptance checks for an issue, for a human to approve by @steig in #232
  • docs(acceptance): use a real command in the example check by @steig in #233
  • fix(draft): read an export of tracked files, narrow what a check carries, ask before --write by @steig in #234
  • fix(draft): remove the temporary export when interrupted by @steig in #236
  • test(stats): check that the role start records reaches stats by @steig in #241
  • fix(factory): remove factory:in-progress from closed issues by @steig in #242
  • fix(factory): resolve the repository for --dry-run as a real pass does by @steig in #240
  • fix(draft): drop greps of source files, steer the drafter to narrowed tests by @steig in #246
  • fix(start): gate on the pane, not the agent name herdr can drop (#243) by @steig in #247
  • feat(prune): close a ghost workspace whose worker is done and whose PR merged by @steig in #248
  • chore(release): 0.16.0 by @steig in #249

Full Changelog: v0.15.0...v0.16.0

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 13:52
f9ed783

What's Changed

  • feat(start): hold factory:ready issues to runnable acceptance checks by @steig in #217
  • feat(factory): start factory:ready issues from a queue under a cap by @steig in #216
  • feat(pr-feedback): cap automatic feedback rounds per PR by @steig in #225
  • chore: follow-ups from #214, #217 and #218 by @steig in #224
  • feat(stats): escapes and stats --check alerts (slice 2 of #204) by @steig in #227
  • feat(lessons): propose, approve and brief per-role lessons (slice 1 of #205) by @steig in #228
  • feat(review): check a worker's PR against its acceptance checks before a human by @steig in #226
  • chore(release): 0.15.0 by @steig in #229

Full Changelog: v0.14.0...v0.15.0

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 05:02
ba90555

What's Changed

  • feat(gate): say whether each outcome was verified, reported, or inferred by @steig in #209
  • feat(ls): show the agent's last activity from its session-log mtime by @steig in #212
  • fix(start): never type the brief onto Claude's trust screen by @steig in #213
  • feat(watch): route a PR's failing checks and new reviews to its worker by @steig in #211
  • feat(refocus): re-deliver a worker's goal chain after compaction by @steig in #215
  • test(herdrtest): print fake answers with cat, never echo by @steig in #218
  • feat(stats): dispatch ledger and worktender stats (slice 1 of #204) by @steig in #219
  • feat(gate): --dagr keeps a herdr-dagr run file current while waiting by @steig in #220
  • docs: catch the coordinator skill, README and reference up to 0.14 by @steig in #222
  • feat(refocus): re-deliver a worker's goal chain on its role's interval by @steig in #221
  • chore: release 0.14.0 by @steig in #223

Full Changelog: v0.13.1...v0.14.0

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 02:23
22fa33b

What's Changed

  • fix(watch): watch this repository by default, and stay quiet in workers by @steig in #194
  • chore: release 0.13.1 by @steig in #195

Full Changelog: v0.13.0...v0.13.1

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:19
8862a7f

What's Changed

  • feat(roles): --role, user config and label routing by @steig in #188
  • feat(roles): design/analysis briefs, example agents, roles docs by @steig in #189
  • feat(watch): a Claude Code mod that watches the fleet for the coordinator by @steig in #190
  • test(inbox): match search results by thread, not anywhere in the line by @steig in #191
  • fix(ls): honour --reports with --all-repos by @steig in #192
  • chore: release 0.13.0 by @steig in #193

Full Changelog: v0.12.0...v0.13.0

v0.12.0

Choose a tag to compare

@steig steig released this 16 Sep 14:06
93b2323

Added

  • ls labels its columns, and --sort orders 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-header leaves it out for anything parsing
    the table by line. --sort takes status, seq or branch. status ranks
    by how much the row wants a person — blocked, idle, done, working, then the
    worktrees with no agent — rather than alphabetically, and seq is lowest
    first, because the counter only ever answers which worker herdr saw move
    longest ago. Ties keep git's order, no --sort keeps it entirely, and the
    order applies to --json as 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 install means herdr is present by definition. One
    documented step now puts the binary on PATH for someone who runs neither:

    curl -fsSL https://raw.githubusercontent.com/steig/worktender/main/scripts/install.sh | sh

    It follows releases/latest to a tag and pins both the binary and the
    checksums.txt to 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.
    --version pins a release, --dir moves 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 this doctor could not name the
    release it was — half of what that command is for.
  • update and doctor answer 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 missing herdr-plugin.toml. It deliberately does not run that
    itself. doctor's version line 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 --json is not available to a standalone install, so the
    README, both skills, docs/dispatch.md and docs/json.md now take what is on
    PATH and fall back to the plugin root. doctor says on PATH already when
    typing worktender reaches the binary printing the line.

Fixed

  • A pushed tag now reliably gets a release carrying the build assets.
    (#182) release.yml's publish step ran gh 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.sh and
    scripts/build.sh's no-Go fallback just 404 on
    releases/download/v<version>/worktender_<os>_<arch>. The step now goes
    through scripts/release-publish.sh, which creates a release only when the
    tag has none and always ends in gh 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, because release.yml
    passes an unquoted dist/* and an empty dist/ would otherwise publish
    the literal glob.

v0.11.2

Choose a tag to compare

@steig steig released this 09 Sep 01:28
edd7886

Fixed

  • The worktrees and coordinator skills now say when to inbox post,
    not just how.
    (#176) inbox shipped, was tested and released, and went
    completely unused through a multi-hour cross-session coordination effort
    that was exactly its intended case — live SendMessage delivery already
    satisfies the immediate need, so nothing prompted anyone to also log it
    durably. Both skills now name the trigger: before sending a cross-session
    message that isn't purely "go now" — a decision, a handoff, a status
    another session will need after this one is gone — post it too.

v0.11.1

Choose a tag to compare

@steig steig released this 08 Sep 15:23
6a0a4e6

Fixed

  • skills/worktrees/SKILL.md and skills/coordinator/SKILL.md now
    document inbox.
    (#174) They shipped without it when #170 landed after
    the skills were last touched — a gap that mattered once nixos-config
    started deriving its vendored copies straight from these files at the
    pinned tag instead of hand-copying them.
  • The README now says plainly that herdr plugin install does not put a
    skill anywhere Claude Code looks.
    (#173) It clones this repository and
    builds the binary, and the clone does contain skills/, but no coding
    session's working directory is ever inside a herdr plugin install and
    nothing about Claude Code's skill discovery reads one. Also documents the
    steig/skills Claude Code marketplace as a third install path, alongside
    the two (npx skills add, hand-vendoring) already there.

v0.11.0

Choose a tag to compare

@steig steig released this 08 Sep 14:34
66c8c05

Added

  • inbox: a global, threaded, durable log for agent-to-agent messages.
    (#169) inbox post --thread <id> --from <name> --note <text> appends to
    <plugin state dir>/inbox/<thread-id>.ndjson; inbox read --thread <id>
    replays a thread in order; inbox search <query> substring-matches across
    every thread. Fleet-wide rather than scoped to one repository, and pull-only
    — there is no watch or subscribe, and it is not wired to SendMessage or any
    other live channel, deliberately: an agent that wants a message durable
    calls both. No retention yet; append-only.