Skip to content

v1.2.0

Latest

Choose a tag to compare

@pasky pasky released this 04 Oct 09:21
· 8 commits to main since this release

✨ New features

  • Nested side agents: side agents can now start their own agents, up to depth 2. A nested agent branches off its parent's branch and merges back into it. Its notifications go only to its parent, and the parent's worktree slot stays pinned while it runs.
  • /agent-resume: reopens a side-agent session that was closed with /quit, together with its branch.
    • Uses pi's own session-picker widget, with fast session discovery. Each row shows the agent id and a note saying who owns the branch.
    • Prefers the session's original directory. If the session has to move, it adds a notice about the directory change.
    • Won't reattach branches that active agents own, and restores the session's model.
  • Status line as a quick-travel map: nested agents show a parent: entry, then their children, then their siblings, with the groups separated by |. Every entry is colored by status, so from any window you can see which agent needs you next.
  • Custom tool rendering: agent-start, agent-check, agent-wait-any and agent-send now show their own compact views in the transcript.
  • contrib/tmux-switch: an optional tmux popup that lists windows grouped by project, with side-agent worktrees folded into their repo. Each pi window is colored by state: working, done (not yet looked at) or idle. It's quick to jump between windows by keyboard and there's a live preview. See contrib/tmux-switch/README.md.

🐛 Fixes

  • Concurrency and locking
    • Concurrent agent starts now take worktree slots one at a time, so two agents can't grab the same slot.
    • The registry lock is now created atomically with link(2). Only the token holder can release it, stale locks are broken without races, and a live holder is never evicted.
  • Worktree reuse: unmerged branches now survive when a slot is recycled.
  • Lifecycle notices: notices are merged into one and delivered when the session is idle. They're capped in size, and pending notices are sent on shutdown.
  • tmux input
    • agent-send uses bracketed paste, so multiline prompts aren't split, and no longer races with the shell when sending Enter.
    • agent-start sends its commands in a single send-keys. Thanks @tahmed42 (#4).
  • Launch wrapper: writes its exit marker more reliably (from an EXIT trap), and transition notices now have timestamps.
  • Slug generation: works with reasoning models and spends as little on thinking as possible.

🧪 Tests and docs

  • Fixed the integration test harness for pi 0.85.
  • Added table-driven status-line tests.
  • Added license and package links.

Full changelog: v1.1.3...v1.2.0