Show idle state in the top tab bar + release v0.0.7 #7

Merged
harry merged 3 commits from worktree-timers-cancel-on-close into main 2026-05-18 13:25:38 +01:00
Owner

Summary

  • Each agent tab in the top tab bar now prefixes its label with the same one-rune idle indicator the sidebar uses (✕/?/◐/○/●), so the state of every open agent is visible without focusing each tab.
  • Tab bar redraws now fire on idle-state changes in addition to sidebar redraws.
  • Cuts release v0.0.7, bundling this change plus the accumulated [Unreleased] entries (timer cancel-on-close, built-in agent presets, auto-summarization settings, etc.).

Test plan

  • go build ./...
  • go test ./internal/app/...
  • go test ./internal/harness/...
## Summary - Each agent tab in the top tab bar now prefixes its label with the same one-rune idle indicator the sidebar uses (✕/?/◐/○/●), so the state of every open agent is visible without focusing each tab. - Tab bar redraws now fire on idle-state changes in addition to sidebar redraws. - Cuts release v0.0.7, bundling this change plus the accumulated [Unreleased] entries (timer cancel-on-close, built-in agent presets, auto-summarization settings, etc.). ## Test plan - [x] go build ./... - [x] go test ./internal/app/... - [x] go test ./internal/harness/...
harry added 3 commits 2026-05-18 13:25:33 +01:00
Stale timer bodies were re-delivered to the orchestrator pane after
the parent had already processed the sub-agent's reply and called
close_process. The timer registry held no link to the child
lifecycle, so timers owned by or watching the closed child lingered
until something triggered a fire — e.g. a trailing classifier tick
for the now-removed child.

Add an OnChildClosed hook to ChildEventListener, emit it from
Session.Close (and the terminal-corpse path in reapChild), and have
the timer manager prune the registry: cancel timers owned by the
closed child; remove the closed child from each timer's watched
list (cancel the timer outright when watched empties).

Natural exit deliberately does not route through this hook — the
classifier already emits an idle transition on exit which delivers
any legitimate "fire when sub-agent finishes" semantics exactly
once; cancelling on exit would swallow that.
Each agent tab now prefixes its label with the same one-rune idle
indicator the sidebar uses (✕ error, ? permission, ◐ thinking, ○ idle,
● working), so the state of every open agent is visible without
opening or focusing each tab. Tab redraws now fire on idle-state
changes in addition to sidebar redraws.
Release v0.0.7
All checks were successful
release / build-linux-amd64 (push) Successful in 12m5s
fe25fcf043
harry merged commit c1b66f9f8a into main 2026-05-18 13:25:38 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: harry/patterm#7