Repository navigation
v0.3.0
cancellable polling, reliable shutdown, and aggregate window links
this release adds context support for client lookup, format evaluation and control setup, removes redundant aggregate listing scans, and fixes cancellation and shutdown when a transport write blocks (0769966).
additions
- added
ListClientsContext,DisplayMessageContextandSetControlFlagsContext; the existing methods retain their signatures and delegate throughcontext.Background()(0769966).
fixes
- successful aggregate window and pane queries now return directly, including empty output, without redundant session/window enumeration. fallback remains available after command errors and skips vanished resources (0769966).
- window fallback preserves distinct session/index links sharing one physical window id, including their contextual active state. cancellation during fallback returns the context error and no partial rows (0769966).
- one router-owned writer preserves pending-request and wire order while callers can cancel both queued commands and blocked sends. transport close can interrupt a blocked write, and router close joins the writer (0769966).
- stdout continues draining after terminal notifications so buffered output cannot strand transport cleanup (0769966).
tests
- 305 tests and subtests passed with
-race -count=1, including the full tmux integration suite, linked-window metadata, all three context methods, blocked writes, late-response correlation and terminal stdout draining; no tests were skipped (0769966). go vet ./...and formatting/diff checks passed. query-count reductions are covered by recording transports; latency was not benchmarked.
caveats
- once a command starts writing, cancellation abandons the caller’s wait; the command may still execute and retains its response slot. commands are never replayed automatically.
- a transport send error terminates the connection because a partial write can leave framing ambiguous. a tmux command error (
%error) leaves the connection usable. custom transports must makeClose()unblock concurrentSend()calls. - successful aggregate pane rows are preserved verbatim; the compatibility fallback continues to deduplicate panes by physical id. the minimum go version remains 1.22.
- tmux-popup-control should adopt this release with
make update-gotmuxcc, thread contexts through client/session resolution, and bound setup outside its cache mutex.
upgrading
go get github.com/atomicstack/gotmuxcc@v0.3.0