Skip to content

Releases: TevvvB/termagitchi

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 26 Aug 20:47
4653a61

Changelog

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 25 Aug 00:21
ffb9d22

Changelog

  • ffb9d22 Bump the plugin manifests to 0.2.8 (#52)
  • 3b8b9d6 Document the identity model the callers actually use (#43)
  • e28df59 Give the creature its own row (#51)
  • c92a65f Give the hook line the state the status line shows (#48)
  • 16ff701 Lay the hook readout out as a block, not a sentence (#50)
  • 3f83fcc Pin the Codex payload shape with a captured fixture (#42)
  • d6703af Point creature contributors at the open policy question (#47)
  • 01ea469 Put the place back in the hook line (#49)
  • 44d3584 Say what adding a creature actually costs (#44)

v0.2.7

Choose a tag to compare

@github-actions github-actions released this 23 Aug 17:29
d5d9fe5

Codex hooks work. They were never trusted, and nothing said so.

Tested against a real Codex 0.149.0 rather than reasoned about, and the answer inverts v0.2.6.

Codex will not run a new or changed hook until you trust it. An untrusted hook is
completely silent, and codex doctor does not mention hooks at all, so
pets install --harness=codex looked like it worked and did nothing. Same config, one flag
apart:

codex exec "..."                                    # nothing fires
codex exec --dangerously-bypass-hook-trust "..."    # SessionStart and Stop both fire

Mine had been sitting in ~/.codex/hooks.json for twelve days without ever running. The
installer now tells you the hooks are pending trust
, which is the whole fix.

Once trusted it works properly: Codex payloads carry session_id, which is what a creature is
keyed on, so sessions register and pets den and pets party fill up as they do under Claude
Code. There is no workspace object in a Codex payload, so the den name comes from git.

v0.2.6's silencing is reverted

v0.2.6 muted the Codex hooks on the theory that Codex parses their stdout and a malformed
response could stop the turn. It does not. A SessionStart hook printing a block of ASCII
art completed the turn normally, and systemMessage turns out to be part of Codex's own hook
output schema - so the Stop hook's JSON was valid there all along. The hatch card and the quip
are back.

If you installed 0.2.6 for Codex, re-run pets install --harness=codex to drop the
now-pointless flags.

Full findings, including both payload shapes, are on
openai/codex#40034, and
scripts/codex-hook-probe.sh will repeat the experiment on another version.
Closes #15.

Upgrading

Installed with Upgrade
Homebrew brew update && brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 23 Aug 17:13
9c31790

Codex: the hooks now stay quiet, on purpose

If you installed with --harness=codex, re-run pets install --harness=codex to pick
this up. Claude Code users are unaffected and need do nothing.

I asked on the Codex repo whether the hooks pets installs actually fire, and a Codex user
answered with something more useful than the question: Codex reads a hook's response. A
malformed or failing hook can stop the turn before it begins, and it still exits zero, so the
symptom is a hang rather than an error.

pets was writing Claude-shaped output into that slot. hatch printed a block of ASCII art the
first time it saw a worktree, and quip printed {"systemMessage": ...}. Claude Code simply
displays whatever a hook prints, so both were fine there. On Codex, the case that would break
was somebody's first session in a new worktree - the worst one to get wrong.

So the installer now tells the binary which harness it wired, and the Codex hooks print
nothing at all. They still record everything: pets den and pets party fill up as
normal. You lose the hatch card and the end-of-turn quip, which is a fair trade against
possibly stopping a turn.

This is a precaution, not a confirmed bug report - nobody has yet run pets under a real Codex
end to end, and the question of whether unparseable stdout counts as a failure is still open.
Both are tracked in #15, and
there is now a scripts/codex-hook-probe.sh that makes reporting it a three-command job.

Thanks to the Codex user who answered; the discussion is
openai/codex#40034.

Upgrading

Installed with Upgrade
Homebrew brew update && brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 21 Aug 23:35
1ad686f

New: each agent shows how full its context window is

If you run several agents in one worktree, they all share a mood - it comes from the
worktree's tidiness, not from any one session. Context fill is the first thing pets can
tell you about one agent rather than one directory:

  @CAI <[•ᴗ•]>   ray ✦✦✦   feat/context-demo  ♥♥♥♥♥
       <[•ᴗ•]>   ray       Early in the turn      just now · just arrived · 22%
       /•ᴗ•\     cat       Nearly out of room     just now · just arrived · 91%

Dim below 80%, warning at or above it, on both pets party and pets card. A den full of
agents at 90% reads very differently from one at 10%, and until now nothing could tell you
which was which.

It is deliberately not part of the face. The face shows mood, mood belongs to the
worktree, and overloading it would undo the separation between agent and directory that
v0.2.0 existed to create.

The figure is absent rather than zero when your harness does not report a context window -
only the status line payload carries one, so a hooks-only setup shows nothing rather than a
confident 0%. (#34)

Upgrading

Installed with Upgrade
Homebrew brew update && brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 21 Aug 17:50
658eb3c

Fixed: a hook-only session was registered but still missing from pets party

If you run with hooks and no status line - Codex, or Claude Code with the status line
switched off - v0.2.2 started registering your session correctly, but pets party still
would not list it until the first turn ended.

The reason: party iterates worktree state and joins the agent register onto it, and
state is only written by the background probe, which nothing reached until Stop fired.
Session start now probes, so the den and its agent show up immediately. It sits behind the
same lock as every other probe, so this costs a few git calls once per session rather than
per turn.

This completes the fix v0.2.2 claimed. Those release notes carry a correction saying
pets den was fixed but pets party was not. That correction no longer applies.
(#29)

If you use Claude Code with the default install, none of this ever affected you - the
status line probes constantly, which is what masked it.

Upgrading

Installed with Upgrade
Homebrew brew update && brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

Restart your agent sessions afterwards; hooks are read at startup.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 19 Aug 18:33
0836f40

Two rendering fixes on the screens people actually look at, plus a demo that finally
matches the product.

Fixed: a den with one agent drew the same creature twice

pets party printed the creature on the den's own row and again on the resident line
beneath it. On a real machine with 23 dens that happened four times on one screen, so it
was the normal appearance of an occupied den rather than an edge case, and it read as a
rendering fault. The resident line now leaves the creature out when there is only one
resident. Dens with two or more still give each resident its own creature, because that
is the only thing telling those rows apart. (#13)

Fixed: pets card claimed one of the residents was you

The marker means "this is you". pets card is typed by a person in a shell, so
there is no session to be, and the arrow was landing on whichever agent represented the
den. It no longer appears when there is nobody to point at. The card still shows a
creature somebody in the den is actually using, which was the deliberate part.
(#12)

Nothing else changed

The rest of this release is repository housekeeping: a rebuilt demo generator, a
recorded walkthrough that includes the city collection added in v0.2.1, and a README
that says what the thing is before it says how to install it.

Upgrading

Installed with Upgrade
Homebrew brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 19 Aug 16:13
c670fff

Fixed: a session could be missing from its own den, or look crashed while working

If you run pets with hooks but no status line - Codex, which has no
status-line support, or Claude Code with the status line switched off - the agent
register was never written from the paths that had the information to write it.

Two symptoms came out of that:

  1. A new session was absent from pets den and pets party for its whole first
    turn
    , because nothing registered it until the turn ended.
    (Correction, added after release: pets den was fixed here; pets party needed
    worktree state and was only fixed in v0.2.4 via
    #29. The staleness fix
    below was unaffected.)
  2. It then went stale during any turn longer than 90 seconds, so a working
    agent rendered dimmed, exactly as though it had crashed. Stop was the only
    thing keeping it alive and Stop does not fire mid-turn.

pets install wires three hooks - SessionStart, PostToolUse and Stop - but
only Stop and the status line ever registered an agent. Now every path that
receives a payload does, and both new call sites sit ahead of an early return that
fires on the common case: the verdict check gives up on any command that is not a
test run, and the hatch marker returns for every worktree that has hatched before.

If you use Claude Code with the default install, this never affected you. The
status line registers roughly once a second, which is what masked the bug.

One honest caveat for Codex users: the Codex hooks are written but have still never
been verified against a real Codex (#15).
This removes the reason a Codex session could not appear; whether its hooks fire at
all is a separate open question, and a report either way is welcome on that issue.

Details, including the two things my own bug report got wrong, are in
#11 and
#26.

Upgrading

Installed with Upgrade
Homebrew brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

Restart your agent sessions afterwards, since hooks are read at startup.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 19:56
49bafdc

Fixed: a crashed probe could freeze one worktree forever

Found and fixed by @awdemos in #4 — the project's first outside contribution,
and a real bug that was shipping.

pets probe used a bare os.Mkdir as its lock, with no staleness check. A probe
that died mid-run — a crash, a kill, a closed terminal — left the lock
directory behind, and every later probe in that worktree saw a held lock and
backed off. The pet stopped refreshing, silently and permanently, and only in
that worktree, so the symptom was "this one den went stale" with nothing to point
at.

The fix moves the lock into its own internal/lock package with tests and lets
it expire: a lock older than the timeout is treated as abandoned rather than
held. The lock exists to stop two probes racing, not to outlive the process
holding it.

If a den has looked frozen on you, this was probably why. Upgrading clears it.

New: the den collects cities, not just creatures

pets den showed creatures and nothing else, so half the collection was
unreachable — the visit log could say who came to a den but not which dens you
had worked in.

  pets den              7/41 species · 2 shiny · 6/16 places

  COMMON      ████████░░░░░░░░░░░░  6/14
  ...

  places worked in

   _  _  _          |              |            /\
  |_||_||_|        /|\           _|_|_         /||\
  |_||_||_|       /_|_\        _|_|_|_|_      /_||_\
     AMS           DXB           NYC           PAR

Also

  • Japanese, Korean and Simplified Chinese front pages, so the README is not
    English-only.
  • An AUR package, so Arch users can find this by searching.

Upgrading

Installed with Upgrade
Homebrew brew upgrade parallel-harness-pets
The install script re-run it, it replaces the binary in place
Go go install github.com/TevvvB/parallel-harness-pets/cmd/pets@latest
A release archive download the new one below

Homebrew refuses to upgrade a cask from a tap it does not trust, so the first
upgrade may stop with "Refusing to load cask ... from untrusted tap". Run
brew trust TevvvB/tap once and it will not ask again.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 20:18
3e18aa1

Changelog

  • a959033 Add a star section under install
  • 3fbd8ce Describe the model the code actually implements
  • 8ed874a Escape the substituted path so the fixtures parse on Windows
  • 8b596d8 Give a den a memory of everyone who has worked in it
  • 31187fa Give every worktree a city to be the den it is
  • a6cd8b0 Let the agent in a den own the den's creature
  • daebbdb Mark the den with an "at" so the code explains itself
  • 3e18aa1 Merge pull request #2 from TevvvB/feat/dens-and-agents
  • 069e8f0 Name a worktree and its project without running git
  • 1170066 Register which agent is working where
  • 9ac9f04 Replay real captured hook payloads and assert the cache
  • ffd80fd Show dens and the agents living in them