Releases: Jaggerxtrm/xtmux
Release list
v0.2.5
[0.2.5] - 2026-08-22
Patch fixes for the picker surface. Repairs the v0.2.4 cold-host regression where picker_state_read crashed on a missing state file — nav (prefix s) exited immediately and the fzf picker showed nothing; the fix had existed in PR #108 but never landed on main, so it ships here with a cold-start regression guard. Picker open latency drops from ~1.0s to ~0.35–0.4s on worktree-heavy hosts via a two-wave parallel git prepass in build_list (parallel rev-parses, then parallel status per unique toplevel; output byte-identical). Session header rows in the fzf list are now name-only — no repo, branch, path, or badges.
Fixed
- Guard picker_state_read against missing state files on cold hosts (xtmux-rib.29) (2c3dc1a)
- Reduce fzf list session headers to the session name (xtmux-rib.31) (90c43e4)
Other changes
- Two-wave parallel git prepass in build_list (xtmux-rib.30) (6b23fcb)
v0.2.4
[0.2.4] - 2026-08-20
Lands the response-episodes projection — a durable one-prompt-plus-continuations model for agent_turns (xtmux-gdk) — plus a nav-sidebar redesign and the K3 Codex runtime adapter. Response-episodes replaces the per-turn LIMIT 1 view with a stable episode row, so continuations, re-issues, and correlated replies stay grouped across restarts. The K3 Codex adapter rides existing authorities (no new auth surface) and ships with distribution smoke + Codex lifecycle recovery + terminal cleanup. Nav sidebar gets a hierarchy redesign: safe tmux navigator, wrap rows instead of cutting, lowercase labels + classic chrome + 75% drawer. Also new: Mermaid fence rendering with an mdcat backend, the board-audit hook feature (mirroring core), and the bd v1.2.1 hooks upgrade + bd-sync install landed via #111 / #112.
Added
- Add K3 Codex runtime adapter over existing authorities (xtmux-s96.2) (d8edb1e)
- Add distribution smoke, dry-run plan, and correct false S7 label (xtmux-s96.4) (c67bcde)
- Complete Codex lifecycle, recovery, and terminal cleanup (xtmux-s96.4) (0aa2f6b)
- Add safe sidebar tmux navigator (f1500f0)
- Redesign nav sidebar hierarchy (35c6f25)
- Wrap nav rows instead of cutting (5189d25)
- Nav lowercase labels, classic chrome, 75% drawer (513bd86)
- Response episodes — durable one-prompt-plus-continuations model for agent_turns (xtmux-gdk) (#105) (51a54bd)
- Consume the response-episode projection instead of LIMIT 1 (xtmux-it6) (#103) (df00b5d)
- Render Mermaid fences and add mdcat renderer backend (a8b516a)
- Board-audit — bd exporter + PR-checkpoint hook adapter (xtmux-wjr) (#112) (ac60165)
Fixed
- K3 review-1 corrections — Core K3 fixtures, full v1 boundary, honest dedupe (xtmux-s96.2) (45f039d)
- K3 review-2 corrections — Stop type guards, honest degraded-dedupe scope (xtmux-s96.2) (599f01b)
- Strict per-identifier failure classifier for the EVAL-01 gate (xtmux-s96.3) (08ab7ae)
- Remove EVAL-01 options-file race (xtmux-s96.3) (3f9a550)
- Adopt byte-identical compatibility links (xtmux-s96.2.1) (06f203f)
- Preserve unowned hook trust and repair pre-tag entries (xtmux-s96.4) (711254f)
- Document instance-get and hold the help band (xtmux-s96.4) (3103053)
- Arm a real monitor poller and give @agent_state liveness (xtmux-dvs) (d2bb59a)
- Respawn the poller via execPath, not Bun's baked argv (xtmux-dvs) (17523fd)
- Read @agent_last_transition from the caller's list-panes row (xtmux-dvs) (d50c2e7)
- Stand down when another writer concludes the monitor (xtmux-dvs) (ee5350c)
- Prune terminal monitors in retention; bound monitor-list for Pi wake path (c9e9483)
- Never touch a stale ctx after session replacement or reload (a176909)
- Prune terminal monitors on every monitor-list read (d635e6e)
- Make stale ctx non-fatal even when session_shutdown never ran (8c65780)
- Harden nav redesign review gates (a32957b)
- Survive deleted-cwd teardown and honor session:%pane targets (#106) (5df145f)
- Monotonic capture anchor — same-text earlier records can never absorb a lagging stop (xtmux-gdk post-merge P1) (#107) (82cc854)
- Keep mdcat popup open by paginating (06f8b72)
- Clamp and center popup to client size (a16fc97)
Other changes
- Include this commit in whatever next pr lands. (8f17470)
- This documentation must land in any next pr (a188095)
- Drop mdcat renderer backend, restore glow (c6fc118)
Project maintenance
- Characterize Codex 0.146.0 seams (xtmux-s96.1) (50a95fa)
- Correct Codex K1 replay evidence (xtmux-s96.1) (3417f34)
- Harden Codex K1 characterization boundaries (64ec9cf)
- Pin Codex Stop characterization provenance (8dbc77d)
- K3 review-3 correction — Codex turn-capture contract wording (xtmux-s96.2) (041457c)
- EVAL-01 Codex column and recovery evidence gate (xtmux-s96.3) (9d69342)
- Refresh CHANGELOG [Unreleased] for xtmux-dvs (88791d0)
- Refresh CHANGELOG [Unreleased] for the xtmux-dvs CI fixes (e81ddae)
- Refresh CHANGELOG [Unreleased] (dab4999)
- Refresh CHANGELOG [Unreleased] (44d8e1b)
- Sync managed assets to xtrm-tools 0.11.4 and ignore runtime skill links (65f5544)
- Ignore post-migration per-repo skill and hook residue (6543e70)
- Mark renderer design incomplete, resume point (0af90e5)
- Sync managed hooks to bd v1.2.1 + install bd-sync (xtmux-71c) (#111) (aabd012)
v0.2.3
Added
- Add idempotent changelog-update.mjs (xtrm-reyem.11) (#69) (02cb455)
- Make --for optional under tmux for hook queries (#87) (cd5ec84)
Coordination and hooks
Fixed
- Stop duplicating gh release create (xtrm-reyem.6 follow-up) (#68) (fee5db3)
- Skip merge commits so CI == local (xtrm-reyem.13) (#71) (048b742)
- Widen session event stream and beads cursor (ed8497c)
- Bound Claude turn transcript capture (#75) (101fa07)
- Mint a Claude agent instance id on SessionStart (#79) (03575e5)
- Stop wait-agent replaying a stale done on a working pane (#81) (afef8b6)
- Tag Codex agent-state hooks and mint their instance id (#82) (9708c2d)
- Bound safe-send-pointer's obs subprocess by wall-clock (#84) (3d7088c)
- Overlay terminal_status onto the projected state (#85) (9f6a423)
- Self-reap when the parent shell dies (#86) (b5c0683)
- Let direct --from-npm proceed for drift repair (xtrm-9hq6w) (#88) (6b8f521)
Project maintenance
- Add changelog:check + rename raw wrapper (xtrm-reyem.12) (#70) (44ffb26)
- Add pr-review-gate required-status-check workflow (082e96f)
- Wave-2 — pull_request_review_comment trigger + preserve CR verdicts (1c1caaf)
- Pi-column contract matrix for the cross-runtime gate (#77) (283a94c)
- Untrack specialists/beads runtime state (xtrm-136tf) (#80) (b57c5e7)
- Commit the injected communication-style + task-tracking block (xtrm-wiy5n.4.36) (#83) (2eccd79)
v0.2.2
v0.2.1
v0.1.0
[0.1.0] - 2026-07-17
Added
- Add agent-state hook contract for tmux panes (7dde61a)
- Act-on-preview — approve/interrupt/message panes from the list (a39c3ba)
- Add tmux-native specialist sp-* awareness (6364b4e)
- Recognize interactive role-[-] session names (b6b0453)
- Xtmux multiplexing + agent-state orchestration primitives (8f4d46b)
- Message-send signal, normalization, dead-target error, rotation (xtmux-1hq) (a0f665f)
- Phase 2 Bun/TS scaffold + SQLite adapter + migrations (xtmux-3xs.2) (b6e0ffd)
- Phase 3 delegation — V2 message/log routing + delivery attempts (xtmux-3xs.3) (bd0436e)
- Phase 5 agent instances/transitions/turns + smart-dispatch log-emit (xtmux-3xs.5) (f6663f6)
- Phase 6 handoff lifecycle + prompt-pointer atomicity (xtmux-3xs.6) (78631de)
- Phase 10 — retention + benchmarks + docs + cutover HOLD (xtmux-3xs.10) (7bd5cd5)
- CI, CodeQL, and Dependabot baseline (#2) (fdba7b8)
- Additive --json command API + xtrm v2 skills migration (#6) (fd568db)
- Expose canonical
xtmuxcommand prefix via alias (#9) (589695c) - Real
xtmux help— grouped commands and --json output fields (#11) (ad304ee) - Publish @jaggerxtrm/xtmux installer (#20) (d5cc800)
- Persist host_id and rotate @agent_instance_id per agent occupation (xtmux-j46.1) (#21) (6c7924f)
- Xtmux context --current --json — the Specialists runtime-origin contract (xtmux-j46.2) (#25) (009901a)
- Xtmux topology --json + single-source host id (xtmux-j46.3) (#27) (7a04260)
- Bounded xtmux pane capture --json (xtmux-j46.4) (#29) (5956ba6)
- Cursor-paged journal reads — log query --after-id (xtmux-j46.5) (#31) (cbae0bd)
- Persist outbound wake ownership (#23) (b74185d)
- Log follow --after-id — the committed-event stream (xtmux-j46.6) (#32) (4de5ff0)
- Readiness-aware, idempotent, durable delegation (xtmux-j46.8) (#34) (4003abe)
- Read-only NDJSON bridge over ssh (j46.9 + protocol tests j46.16) (#38) (fad430f)
- Structured activity spans + stabilize the bridge topology test (xtmux-j46.11) (#40) (a02b66b)
Coordination and hooks
- Auto-monitor-on-send — Claude Code hook + pi extension (2a642ac)
- Pi-auto-monitor.ts uses correct isBashToolResult + event shape (f900c28)
- Wake-path completion — wait-for-transition + Claude Stop drain (c70b725)
- XTMUX_AUTO_MONITOR_SKIP_TARGETS env bypass (xtmux-3xs.29) (ae42383)
- Auto-monitor tmux has-session precheck (xtmux-3xs.30) (5f4eb8f)
- List pane reply obligations (9f2eed2)
- Complete Phase 2 picker and retention parity (#43) (8af5b6a)
Fixed
- Split git cache from agent_state — never cache attention sort/badges (xtmux-rib.17) (96c7787)
- Make WAIT orchestrator-safe via PostToolUse reset (d14572b)
- Alt-x kill wedged the picker via a nested fzf (d138131)
- Do not mark active sp-* panes stale in the hot list (e989297)
- Group worktree sessions under their parent repo (845bbca)
- Render specialist sessions as pane rows (6c542c1)
- Add repo headers for specialist pane grouping (4d0bf84)
- Pre-filter events.jsonl with grep before parse loop (xtmux-bje) (8deb7ad)
- P0 telemetry+identity bystander corruption when $TMUX unset (xtmux-3xs.18) (0d2309a)
- V2 message ack takes V1 message-key; audit --stable sort (xtmux-3xs.24, .17) (7ce1eef)
- Shadow-tee sites were checking stale $REPLY after log_event (xtmux-3xs.12) (fc3195e)
- Derive coordination effects from JSON results (#12) (6f20973)
- Make the smoke gate tell the truth, and fix what it was hiding (#13) (e19886b)
- Migrate on the monitor/telemetry/audit path (#15) (c81da80)
- Detect Claude panes that run behind the xt wrapper (#17) (647bcaa)
- Reach the V2 runtime via the vendored-bun launcher on npm installs (xtmux-j46.19) (#26) (41674a7)
- Bind delegated metadata before the lifecycle emits, and keep the V2 feed out of the legacy journal (xtmux-j46.7) (#30) (24ae942)
- Stop mining a bead id out of a temp-dir path (tmp.9) (#36) (9a5a7c4)
- Per-connection request-rate cap; document host-wide capture scope (j46.21, j46.22) (#41) (d7c29ec)
- Restitch requester ownership onto correlated CLI (#42) (f213b9e)
- Preflight undeliverable targets (#49) (026952b)
Messages and delivery
- Phase 3 messages/receipts/deliveries/events domain (xtmux-3xs.3, WIP) (1753539)
- Add status and unread query primitives (53b0c2b)
- Unread-count --pane %N for pane-scoped counts (xtmux-3xs.28) (ff2c489)
- V2 timestamp column matches V1 date -Is byte-for-byte (xtmux-3xs.27) (b056061)
- Add sender-declared reply expectations (b87fb05)
- SQLite reply-obligation model (migration 0010, cycle guard, opt-in correlated projection) — xtmux-3ua.2 (#24) (a45aa05)
Migration
- Phase 9 legacy JSONL importer + shadow-mode substrate (xtmux-3xs.9) (3f90149)
- Recon...