Skip to content

v0.4.0

Choose a tag to compare

@Aha43 Aha43 released this 04 Jul 12:17
· 70 commits to main since this release

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 into waiting — 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 show waiting⚠ in foreman list and 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-resolved foreman over the running executable's path (which can be a go run temp dir
    or scratch build), and session styling is re-stamped on go and pin — 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.