Repository navigation
v0.4.0
The observation epic completed: the status bar tickers who's waiting in other projects (tmux
itself does the scheduling — no daemon), the explorer notifies when a pinned project's agent
wants you (its memory stored in the tmux server, like everything else), and the how-it-works
doc explains the whole model for tmux newcomers. Hardened by a Codex review (two findings,
both fixed pre-release) — a rhythm now codified in .codex-review.
Added
-
Cross-project ticker in the status bar. Every managed terminal's status bar now shows,
on the right, who's waiting for you in other projects (B: planner⚠) — empty when nobody
is. tmux itself re-runs the check on its redraw schedule (~15s): no daemon, no stored state.
Applies to sessions created/adopted from now on. Closes #4. -
macOS notifications when an agent starts waiting. The explorer's 10-second poll now
remembers each participant's last state (as a tmux window option — the memory lives in the
server too) and posts a notification on the transition intowaiting— for pinned
projects only; everything else stays glanceable in the menu, which now also carries the
⚠/○ state marks. Closes #5. -
"How foreman works" doc.
docs/how-it-works.md— the terminal-server model, foreman's
thin semantic layer, where state lives, and snapshot-vs-memory, written for readers new to
tmux. Linked from the README, whose roadmap now reflects the completed observation epic.
Closes #24.
Fixed
-
One classifier for all observation surfaces. The ticker used a cheaper title-only check,
so a titleless agent at a y/n prompt could showwaiting⚠inforeman listand trigger a
notification while missing from the ticker. All three surfaces now share the full classifier —
the capture fallback only ever runs for titleless agent windows, which are rare. Found by
Codex review. Closes #38. -
The ticker survives the binary moving. The status-bar command now prefers the
PATH-resolvedforemanover the running executable's path (which can be ago runtemp dir
or scratch build), and session styling is re-stamped ongoandpin— so existing sessions
self-heal toward the binary you actually use. Found by Codex review. Closes #37. -
Explorer: clicking a participant is injection-safe. The
fm … go …command reaches
AppleScript as an argument (never spliced into the script) and every shell argument is
quoted — so spaces, quotes, or metacharacters in project/role names or the fm path open the
right terminal instead of breaking or executing something else. Found by Codex review.
Closes #30. -
Explorer: Refresh can't race the timer anymore. The 10-second timer and the Refresh menu
item both triggered menu rebuilds concurrently — two at once could close the same channel
twice (a crash) or mutate the menu mid-rebuild. All rebuilds now run on one goroutine; Refresh
just asks it to go. Found by Codex review. Closes #31.