Skip to content

v0.5.0

Choose a tag to compare

@csheaff csheaff released this 25 Jul 19:30
· 102 commits to main since this release
daad16c

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-screen drives 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 by tmux-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 off warning 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 ride send-keys.
  • tmux-control-scrollback-mode is 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.