Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jul 15:36
v0.9.0

RMUX 0.9.0

RMUX 0.9.0 expands compatibility with tmux 3.7b, adds new Rust SDK capabilities, and significantly hardens cross-platform reliability and security, with a particular focus on Windows.

tmux 3.7b Compatibility Improvements

This release integrates several tmux 3.7 features:

  • Commands and automation: Added list sorting and reverse ordering, session-group removal, positional run-shell arguments, and capture output containing hyperlinks or source line numbers.
  • Mouse and navigation: Added the scroll-to-mouse engine, updated default keyboard bindings, and introduced pane-status mouse controls.
  • Status and formatting: Command messages can now be rendered over the status area. Clock styles support seconds, and additional cursor, colour, and format options are available.

Rust SDK Improvements

The Rust SDK gains several new capabilities:

  • Stable identities: Panes remain addressable through stable IDs when sessions and windows are moved or reindexed.
  • Data streams: Pane-state and output subscriptions remain valid during session renames and pane respawns.
  • Process inspection: Applications can inspect foreground processes and manage pane options.
  • Lifecycle safety: Waits, cancellations, reconnects, and pane mutations retain stronger identity and ownership guarantees.

Reliability and Security

Resource management and process handling have been hardened:

  • Resource limits: Queues, clipboard transfers, terminal parsers, WebSocket output, and SDK waits are bounded so malformed or stalled clients fail closed.
  • Process cleanup: Helper processes are explicitly tracked and cleaned up during shutdown, cancellation, failed startup, and daemon replacement through Unix process groups and Windows Job Objects.
  • Windows reliability: Shell startup, console input, named-pipe authentication, daemon recovery, native upgrades, and package rollback have been secured and stabilized.
  • Multi-client behavior: Output isolation, attach transitions, lifecycle ordering, pane journals, and grouped-session mutations have been hardened.

Packaging

  • Preserve the complete Windows dispatcher and private runtime layout during archive installation and upgrades.
  • Provide Linux x86_64 and arm64, macOS Intel and Apple Silicon, and Windows x86_64 release archives.
  • Generate checksums, Sigstore material, and build provenance alongside release assets.
  • Add cross-platform package, protocol, resource, installation, and runtime validation gates.

Closed Issues

Terminal and input

  • #76 — Fix powershell.exe exiting immediately when configured as default-shell.
  • #77 — Restore opencode startup and Backspace handling around terminal capability probing.
  • #90 — Apply copy-mode-selection-style and expanded mode-style values to selected cells.
  • #92 — Preserve bracketed-paste markers and multi-line paste behavior on Windows.
  • #93 — Emit mouse terminal modes on supported Windows attach paths. Older ConPTY and SSH host limitations remain documented.
  • #96 — Restore mouse binding actions, including run-shell, in nested Windows attaches.
  • #102 — Stop advertising the incomplete Kitty Keyboard Protocol. Kitty Graphics and xterm modifyOtherKeys remain available.

Sessions, panes, and tmux compatibility

  • #81 — Preserve choose-tree rendering after a CLI-targeted switch-client.
  • #83 — Resolve client-less display-message requests from the caller's $TMUX_PANE instead of an unrelated attached client.
  • #99 — Make detached new-window and split-window inherit the caller's working directory.
  • #100 — Report the session working directory through #{session_path} rather than the active pane's current path.

Windows and clipboard

  • #82 — Allow the same Windows user to reconnect across SSH and desktop logon sessions while retaining named-pipe identity checks.
  • #91 — Restore OSC52 clipboard delivery on supported Windows attach paths.

SDK and automation

  • #84 — Add pane option APIs and revisioned pane mutation events to the Rust SDK.
  • #85 — Include foreground command and process state in pane APIs and events.
  • #94 — Resolve index-based SDK pane handles through stable pane identities, preventing blank snapshots.

Web sharing

  • #80 — Keep authenticated web-share connections alive through application-level ping and pong handling.

Packaging

  • #86 — Preserve the complete rmux.exe, rmux-daemon.exe, and private libexec layout in Windows installations and upgrades.

Partial Support and Known Limitations

  • Scrollbar navigation and hit-testing are implemented, but visible scrollbar rendering is deferred.
  • Copy-mode line-number options are accepted, but line-number gutters are not rendered.
  • get-clipboard does not yet implement every pane-to-terminal clipboard query.
  • Very large bracketed pastes are delivered in bounded chunks and may appear as multiple paste transactions.
  • On older Windows ConPTY and some SSH paths, mouse and OSC52 propagation remain dependent on the host terminal.
  • Asynchronous run-shell jobs started during shutdown remain best-effort.

Deferred Features

  • Floating panes and the tmux 3.7 new-pane command.
  • tree-mode-preview-format and tree-mode-preview-style.
  • split-window -m, -s, -S, and -R.
  • refresh-client -A, -B, and -r.
  • The complete Kitty Keyboard Protocol. Kitty Graphics and xterm modifyOtherKeys remain supported.

Upgrade Notice

RMUX 0.9.0 moves the detached RPC wire protocol from version 3 to version 5.

RMUX 0.9.0 clients and SDKs are not compatible with 0.8.x servers. Clients, SDKs, and daemons must use the same 0.9.0 release.

Completely stop every existing RMUX server before installing the update:

rmux kill-server

If you use custom sockets through -L or -S, stop each corresponding server before upgrading.

Contributors

Thanks to @grindset95, @marhel, @wiwiwa, @nymph-ai, and @isacgalvao for their contributions to this release.