Repository navigation
v0.5.0
A month and 26 commits since v0.4.0, with one new opt-in feature and three render-correctness fixes.
New
Pane-directory tracking (#119). find-file and dired in a tmux-control buffer already default to the pane's own directory, on the pane's host. The opt-in tmux-control-pane-directory-mode goes further and makes default-directory itself follow the pane, so compile, grep, consult-ripgrep and project commands run there too:
(add-hook 'tmux-control-mode-hook #'tmux-control-pane-directory-mode)Tracking is session-wide — toggling it in any of a session's buffers applies to all of them, each following its own pane (#121).
Render correctness
Three distinct bugs, all surfaced by running the chaos soak against a remote session over SSH rather than a local socket:
- The repaint painted the wrong buffer (#124).
tmux-control--seed-screendrives its seed with tagged commands, and tagged replies are dispatched in the controller — so a repaint requested from a per-window buffer (the default view) painted that window's pane into the connect buffer, and left it there. Reached both bytmux-control-clear-and-repaint— the command the README prescribes for a drifted view — and by the opt-in auto-heal. - Drift was never repaired on arrival (#127). A window's buffer keeps streaming while you look at another window, where Eat can accumulate a row of divergence from the pane's true screen. Nothing repainted a buffer that was merely switched to, so the drift survived every switch. Arriving at a window now verifies its screen against tmux and repaints only on a real difference.
- A seed could paint a stale capture (#126). Output arriving after tmux ran
capture-pane, but before the paint, was rendered and then erased by the paint's screen clear. Cursor-only verification cannot catch it, because the cursor still agrees. - Tiled panes: the view anchor counted from the buffer's end, so a single appended
[tmux-control]note scrolled a pane permanently past the top of its own screen (#122). - Tiling entry points fixed for per-window render buffers (#115); seeds now replay pane terminal modes (alternate screen, mouse) into Eat; the
alternate-screen offwarning is throttled across reconnects.
Diagnostics
- A failed tmux command reports tmux's own words —
tmux: can't find window: @9— instead of the internal reply kind (#123). Command arguments are deliberately not echoed, since keystrokes ridesend-keys. tmux-control-scrollback-modeis guarded against being invoked in a live buffer (#120).
Verification
233 ERT tests green, clean byte-compile, and a parallel A/B soak against a remote tmux 3.6b over SSH — six seeds × 60 randomized operations, v0.4.0-era main and this release running simultaneously against separate sessions on the same host: 9 render failures → 2, with no seed worse.