Skip to content

v0.1.9 - amd64(x64)

Choose a tag to compare

@pirogom pirogom released this 25 Aug 08:58
· 14 commits to main since this release

pmux v0.1.9 Release Notes

🎯 Highlights

  • tmux-style multi-client viewport sizing β€” multiple clients attached to
    the same session now keep their own window sizes without constantly
    redrawing the terminal for everyone.
  • Git dashboard popup viewers with diff minimap β€” commit details and
    per-file diffs open in dedicated popup windows with line-level syntax
    highlighting and a minimap band for change navigation.
  • Open Work Folder β€” open the active pane's working directory in the OS
    file manager from the workspace toolbar.

πŸͺŸ Multi-Client Terminal Sizing (tmux model)

Previously, every client resize request resized the single ConPTY, so when
clients with different window sizes attached to the same session, the
terminal was redrawn over and over based on whichever client was active.

This release implements tmux's window-size largest semantics:

  • Each pane keeps one canonical terminal size = the largest attached
    client. The ConPTY is resized only when the canonical size changes
    (a larger client attaches/resizes, or the largest client leaves).
  • Each client reports its own viewport size and renders the shared
    screen as a top-left anchored viewport when its window is smaller
    than the canonical size (a badge shows viewport WxH / CxR).
  • Switching focus between clients of different sizes no longer triggers a
    redraw; only genuine canonical-size changes repaint the terminal.
  • A newly attached client always propagates its real viewport size to the
    server (with retries), and clients that have not reported a size yet can
    never collapse the session's terminal size.
  • New pane-size control frames are sent before history replay on attach
    and broadcast to all clients whenever the canonical size changes.

πŸ› Bug Fixes

  • ConPTY resize actually happens now β€” the canonical-size bookkeeping
    previously short-circuited the debounced resize call, leaving the real
    terminal stuck at its old size until a manual refresh.
  • Tests can no longer overwrite your real config β€” removed the global
    config-directory cache in pkg/config so test runs can never write test
    data into ~/.pmux/config.json, regardless of test order.
  • Canonical size can no longer collapse to zero when a client that has not
    reported its viewport yet is attached.

πŸ§ͺ Testing

  • New canonical-size policy tests: largest-client growth/shrink, detach
    re-sizing, invalid-resize guards, pane-size broadcast ordering, and a
    regression test asserting the real ConPTY is resized end-to-end.

Full Changelog: v0.1.8...v0.1.9