Releases: psmux/psmux
v3.3.6
psmux v3.3.6
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.5 → v3.3.6)
- bump: v3.3.6 (93ea6dd)
- Add performance benchmark suite (tests/bench) (13386a0)
- build(deps): bump rand 0.8.5 to 0.8.6 to clear GHSA-cq8v-f236-94qc (0486e68)
- fix(#373): mark active window with * and open choose-tree cursor on it (f086c9c)
- fix(#368): preserve Shift on Ctrl+Shift+ so child apps can tell it from Ctrl+ (c572b0a)
- feat(#370): warn on unknown/malformed config directives instead of ignoring them (a9f583f)
- fix(#370): surface server startup spawn errors to the user (604547c)
- fix(#371): clear client_prefix after a repeatable (-r) prefix binding (30ac4e6)
- fix: classify any loopback connect failure as Dead, not Unreachable (866ebae)
- fix: make the picker prune dead sessions in one bounded parallel pass (f0825bd)
- feat: log stale-session registry cleanup decisions (PSMUX_SESSION_DEBUG) (9f925e3)
- fix: reap session registry files orphaned by a reboot/port reuse (d1a21fe)
- fix(#372): format-expand style options and honor message-style (ffa427d)
- fix: gate new-session -d on real server readiness and fast-fail on a dead server (653eca8)
- fix(cwd): detached new-window/split opens in the caller's dir (5814e34)
- fix(cwd): attached new-window/split opens in the session start dir (eaff747)
- test: add self-contained new-session -d readiness/orphan stress harness (66526fd)
- fix: restore raw console mode after Ctrl+C signal so repeated Ctrl+C works (be46a64)
- test(#357): add tangible verification for the Windows paste leading-newline fix (0741c87)
- fix(#363): stop double-delivering Ctrl+ keys on the attached input path (ba64598)
- fix(#167): sanitize env block so a corrupt entry cannot fail CreateProcessW (err 87) (1c0df64)
- feat: render OSC 8 hyperlinks via a custom pane emitter (#361) (3bbf20d)
- feat(vt100): parse and store OSC 8 hyperlinks (#361, data layer) (c78e86a)
- feat: bootstrap a session from config new-session on attach (#362) (ec7f4b8)
- fix: mouse wheel enters copy mode on a filled shell pane (#360) (03a4fa7)
- fix: redraw status bar/window list after kill-window (#359) (2a411f8)
- test: add Win32 reproduction and fix-verification suites for plugin issues #24 and #58 (ad356c6)
- test: add Win32 E2E regression corpus, robustness/perf suites, and warm self-heal test (363b3b5)
- fix: pane-title clear (#177), paste-detection push-frame (#198), warm-claim self-heal startup (3383f5a)
- fix: wait on leading paste controls (08048ac)
- fix: buffer leading Enter/Tab in Windows paste detection (0d9d4fc)
- fix: nonzero exit for nonexistent window/pane/malformed targets (tmux parity) (8eda9cc)
- fix: guard source-file against unbounded recursion (9d12ba8)
- fix: return nonzero exit for invalid resize-pane / set-option / list-sessions args (ad5e846)
- fix: eliminate residual warm session loss (double-create on slow claim) (49c824e)
- fix: claimed/renamed session writes its own key (fixes "Invalid session key") (0e604cd)
- fix: reduce warm-claim session loss under rapid new-session (atomic claim) (327e29f)
- test: add namespaced robustness/stress suites and issue repro scripts (907a37b)
- fix(#351): make display-popup interactive; harden warm claim; surface split errors (27b4778)
- fix: classify root process for direct-exec panes; clarify docs (01a44a6)
- fix: deliver raw Ctrl+C to live raw-mode TUIs instead of killing them (e6a44e0)
- Fix default shell popup (006285e)
- fix(server): simplify frame push to single-slot, fix
continuethat starves push under load (7d05c15) - chore: remove investigation notes from PR (5971b53)
- fix: prevent live sessions from disappearing (fed9933)
- fix(attach): stop treating argv[0] from aliased binary as session name (7bef899)
- fix(#162): repaint status bar when non-active window bell/activity flips (820693b)
- fix(#335): show search prompt in status bar while typing in copy-mode search (994b91d)
- capture-pane: trim trailing all-empty rows from styled (-e) output (#330) (009cdef)
- test(#333): regression test for Ctrl+W single-delivery via PSReadLine (ff9ac38)
- Refuse to run the destructive ps1 test runner outside a sandbox (#343) (53fe065)
- test(#347): zoom PTY full-area sizing regression test (a8cf04c)
- fix: correct zoom pane sizing for PTY resize and active rect highlight (6a20f48)
- test(#346): layered Ctrl+C interrupt test for ping /t (duplicate of #338) (8dfbff8)
- fix(server): bare %N pane-id targets resolve correctly for display-message (#332) (7217de8)
- fix(client): handle multi-byte UTF-8 chars in command-prompt cursor (#345) (c0c0ac1)
- ci: run full unit and integration suites on master pushes (5a7cfca)
- ci: expand PR smoke checks to core integration regressions (fb5e658)
- test: cover zoom-aware active rect traversal (3a900a3)
- fix: align zoomed cursor rect with rendered pane geometry (0aba873)
- ci: pass psmux path to smoke script via env var (879c7da)
- ci: fix smoke binary path and run real Ctrl+C tests (2244733)
- ci: quote rust test filter to fix workflow yaml (97f69f7)
- ci: run input tests via psmux bin target (dce319a)
- ci: run PR smoke suite instead of single issue script (92227ed)
- ci: run Windows Ctrl+C regression tests on PRs (4e25877)
- fix(issue338): restore Ctrl+C interrupt behavior on Windows (6bd8ec4)
- test: update Win32 pwsh selection e2e for release-copy semantics (badcf4a)
- docs: align pwsh mouse selection behavior with release-copy semantics (e5d0d75)
- fix: copy pwsh selection on mouse release (d77a5d1)
- fix: replace Win32 VT escape sequences with raw C0 bytes for Ctrl+letter injection (#329) (0af970f)
- fix: clip mouse selection copy to pane (#327) (55f1f4a)
- fix: attach command now accepts positional session name argument (#324) (8d18657)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.6-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.6-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.6-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.6-x64-setup.exe |
| Windows x86 | psmux-v3.3.6-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.6-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.3.5
psmux v3.3.5
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.4-fix-273 → v3.3.5)
- bump: v3.3.5 with portable-pty-psmux 0.9.4, vt100-psmux 0.16.7 (e10aaa2)
- fix: capture-pane CLI expands POSIX short flag clusters (#326) (72d08aa)
- feat: add #{pane_last_special_key} format variable (#315) (aca1120)
- fix(platform): sleep before FreeConsole in send_ctrl_c_event (#307) (9346519)
- fix(list-panes/list-windows): iterate all sessions for -a flag (#325) (5a10bac)
- fix: client freezes permanently when server write timeout fires (Windows) (5224012)
- Fix $N session ID targets not resolving correctly (62f8de6)
- fix: increase list-sessions TCP read timeout for libtmux compatibility (cfb0d66)
- Fix if-shell brace-block ignoring condition (#317), show-options -w fallback (#321) (c99ca5b)
- fix(clipboard): wire set-buffer -w to propagate to Windows clipboard (#298) (f96a7c1)
- fix(pane_current_command): report shell name for idle panes, prefer immediate child (#299) (b003802)
- fix(conpty): disable preemptive DSR response that dropped first keystroke (#313) (b4bd81b)
- refactor: reframe as a text-input ROUTE signal + fix sync/dead set (review #311) (13eed2e)
- feat: add #{pane_last_input} — read-only live human-input signal (183dcd0)
- fix: use Win32 input mode for Ctrl+letter keys so PSReadLine receives proper KEY_EVENTs (#305) (60e1714)
- Fix #284: scroll-enter-copy-mode now skips root PageUp binding in both server and client (9ed1f48)
- fix(#303): command-prompt keybindings with arguments now open overlay (a9c9d6a)
- chore(deps): bump the cargo group across 2 directories with 1 update (686eb45)
- fix: forward pane-emitted OSC 52 to host terminal for clipboard (054703b)
- fix #296: nvim hangs when spawned from Claude Code via Ctrl+G (4d4d0ae)
- fix(mouse): pass wheel button_state/event_flags to inject_mouse_combined (#295) (e444065)
- fix(rendering): reserve row for pane-border-status label (#288) (57a67fe)
- fix(keybindings): normalize AltGr (Ctrl+Alt) modifiers for German/intl keyboard layouts (fixes #287) (019bd0b)
- Fix #286: suppress IME during prefix mode to prevent command key interception (a04e573)
- feat(options): toggle boolean options with set without value (#278) (9a205e6)
- fix(mouse): restore heuristic fallback in pane_wants_mouse for TUI apps (#285) (b64408e)
- fix: propagate
load-buffer -wto the Windows system clipboard (c5f2d57) - fix: display-message -d 0 should wait for key press, not display 0ms (fb9bf8b)
- Potential fix for pull request finding (788c8a7)
- fix(#290): route clipboard paste into active overlay buffer (4e1fe6e)
- fix: reset created_at when warm server is claimed as new session (c8f505b)
- fix: remove unused import
get_window_option_valuein server::mod (#289) (c8ebc6d) - fix(#261): close native iTerm2 window when session ends (emit %exit via DCS) (2b5a200)
- test(#274): add WezTerm-specific + TUI wedge reproduction tests (4a7556d)
- fix: respond to ESC[6n cursor position queries reactively (#283) (8066250)
- Fix blank initial iTerm2 window on -CC attach (issue #261) (ed31311)
- fix(#261): emit pane-death notifications + handle CC client resize (940f390)
- docs(iterm2): document Cmd-T flow, cluster-flag parsing, and first-prompt-at-top quirk (49c043a)
- fix(cc): parse combined short-flag clusters for new-window -PF / split-window / capture-pane (c150a3f)
- feat(#261): full iTerm2 tmux -CC integration over SSH (dab336a)
- fix(#198): bypass paste buffering when paste-detection is off (494e0ab)
- fix: add set-window-option CLI dispatch and quote display-message format strings (8220efe)
- feat: allow kill-pane/kill-window without confirmation (matches tmux) (9fc6156)
- fix: restore scroll for Bubble Tea/Go TUI apps (opencode) in ConPTY (#277, #245) (9c46e09)
- feat(#275): add detach-client CLI command with full tmux flag parity (ef29e19)
- test(#274): add isolation + sustained-load proof tests; bug not reproducible (17113a8)
- fix(#167): drop STARTF_USESTDHANDLES, add PSMUX_BARE_ENV + visible startup error log (97fc9b5)
- fix(#266): honour explicit -n NAME for new-session initial window and per-window automatic-rename reporting (4f31cde)
- test: add investigation/repro scripts for #261, #263, #264, #266 (10d8da6)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.5-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.5-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.5-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.5-x64-setup.exe |
| Windows x86 | psmux-v3.3.5-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.5-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.3.4
psmux v3.3.4
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.3 → v3.3.4)
- bump: v3.3.4 -- fix release workflow (remove double-download checksum verify, make crates.io idempotent) (3c5d58e)
- tests: add issue repro scripts and updated test files (7e7b962)
- CC: emit %error for unknown commands, fire after-select-window hook on FocusWindow, comprehensive iTerm2 compat suite (b5c7341)
- CC: honour list-sessions -F over the control mode socket (362a8c5)
- Fix #261: emit DCS \033P1000p opener and ST closer for -CC, matching tmux exactly (9c4a399)
- Add comprehensive test for issue #261 -CC attach bootstrap (530c58e)
- Fix #261: emit initial state burst on -CC attach for iTerm2 compat (95263ee)
- docs: add developer integration guide and cross-platform documentation (42ab389)
- docs: document digit-jump buffer in all pickers (77f8489)
- docs: document hjkl + g/G picker navigation (issue #259) (5f8a536)
- Add hjkl picker navigation parity with tmux mode-tree (issue #259) (2887e08)
- feat: named buffers, libtmux native API compat, PR #207 workaround elimination (10ebb81)
- test(pr255): add visual proof of border indicator fix via _render-preview (e9ef4a3)
- fix: correct active pane border indicator for all split layouts (#255) (b47366b)
- docs: document mouse-selection option (#245) (8d70bf6)
- Add mouse-selection option to disable client-side drag selection (#245) (de07d78)
- feat(picker): extend digit-jump to choose-tree, choose-buffer, and customize-mode (0f774f4)
- test(preview): prove choose-tree-preview option works through every code path (09ccf89)
- feat(preview): add choose-tree-preview option and document preview feature (388dda1)
- fix(preview): clip pane to fit instead of reflowing (e735637)
- fix(preview): replace lossy nearest-neighbour downscale with reflow wrap (eedda43)
- feat(preview): default off; preserve original popup look when disabled (#257) (bc68412)
- fix(preview): scale pane buffers to fit preview area instead of cropping (#257) (3af24ae)
- fix(preview): guarantee min 1-cell allocation in nested splits (#257) (23d65e0)
- fix(#257): preview now reuses the EXACT same renderer as the real window (e10df64)
- fix(#257): preview now renders like real psmux - thin separators, no labels (8228b4a)
- issue #257: reuse main render path for choose-tree/choose-session preview (d6f5c58)
- issue #257: preview keeps colors/attrs (capture-pane -e) + 'p' toggle (f31be46)
- issue #257 followup: render full split layout in choose-tree/choose-session preview (5640038)
- Add live preview pane and draggable popup to choose-tree/choose-session (#257) (9dfe174)
- Fix #246: snapshot-vs-reader race causing sparse-cell render artifacts (4314006)
- Add issue #246 reproduction harness: Ink-style frame emitter + sparse-row detector (4f17b71)
- WIP: pending changes before issue #246 investigation (11fce82)
- Issue #250 root-cause fix: centralize AUTH+command picker fetches (79ca29c)
- Add full-layer proof for issue #226 (a20e831)
- Fix #226: send-keys C-/ no longer collides with C-o (8146ded)
- fix(picker): skip AUTH ack reliably in session-info fetch (#250) (bb24d2c)
- fix: preserve select-pane -Z flag in bind-key (#249) (f0b94c2)
- feat(picker): digit jump buffer + Enter in session chooser (#247) (bf0a14a)
- fix(join-pane): tmux parity for empty args, same-window, and bad-source error reporting (#230) (ac2d67e)
- fix: capture-pane -S negative/-S - now reads scrollback history (fixes #244) (1150128)
- ci: change release workflow trigger to manual dispatch only (7e721a3)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.4-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.4-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.4-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.4-x64-setup.exe |
| Windows x86 | psmux-v3.3.4-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.4-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.3.3
psmux v3.3.3
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.2 → v3.3.3)
- bump: v3.3.3 (re-release of v3.3.2.1 with proper semver) (308fdcf)
- chore(deps): bump the cargo group across 2 directories with 1 update (59dde45)
- Updated username and path checks to use eq_ignore_ascii_case for case-insensitive comparison, improving code clarity and consistency. (227c5d8)
- Fix #242: PageUp now enters copy mode (matching tmux default) (545c2f0)
- save: add test_issue239_repro before modular refactor (54355b8)
- Fix session chooser scroll tracking and add scroll indicators to all choosers (#240) (8c7e1cb)
- docs: comprehensive documentation update covering all implemented features (5123d0a)
- Fix #235: display-panes overlay now respects pane-base-index (3968278)
- Fix choose-buffer to use interactive chooser overlay (#234) (f1fee9b)
- test: add comprehensive E2E tests for issue #232 status-interval fix (dcc741c)
- fix: status-interval timer now triggers frame push for TUI clients (#232) (fe6eae8)
- Add [PASS]/[FAIL] validation markers to typing tests (b4af120)
- Zero-latency typing: flush 1-2 char paste_pend buffer immediately (df7f028)
- Add typing/paste benchmark and validation test suites (c5300ed)
- fix: reduce paste_suppress_until window from 2s to 200ms (closes #237) (d300b9e)
- fix(tests): stabilize test_features4 V selection and capture-pane tests (7b0fb48)
- fix: lower split minimum, fix set-option -o tracking, harden tests and fix timeouts (b6098bb)
- default allow-set-title to off, add pane-titles.md docs (4162d97)
- Fix #229: window name no longer flashes to pwsh on session creation with command (b6c7784)
- fix(#231): OSC 0/2 escape sequences now update pane_title (eb338c8)
- Add comprehensive E2E test for issue #229 window name flicker (c620ced)
- fix(send-keys): align local path C-x/M-x parsing with server handler (#230) (d47b65c)
- fix(join-pane): full cross-session pane transfer via TCP proxy (#230) (f8fa11d)
- fix: join-pane/move-pane root cause fix (issue #230) (85cafd9)
- fix: fire pane-died/pane-exited hooks when remain-on-exit is enabled (2a12809)
- fix: fire pane-died/pane-exited hooks when remain-on-exit is enabled (80bb22e)
- fix: replace single-slot frame push with bounded channel to preserve fast typing (0d16017)
- fix: pane_title defaults to hostname, show-options resolves default-shell (#217, #220) (e20630b)
- Fix list-panes -s not iterating all windows when -F is used (6c12b73)
- Fix list-panes -s not iterating all windows when -F is used (77a4cb4)
- feat: CREATE_NO_WINDOW for all background subprocesses + combined flag parsing + set-option -o (a5d1b23)
- fix: respawn-pane -k flag was silently discarded at server level (88daff3)
- Strengthen Rust tests for #209/#210: call production code instead of re-implementing parsing (0ce6c6a)
- fix(capture-pane): negative -S/-E clamps to row 0 (gastown NudgeSession fix) (4bf69e0)
- Fix three gastown integration failures from discussion #210 (4eb2349)
- test: add PR #214 CLI routing tests for switch-client (issue #202) (0ebe9c8)
- fix: route switch-client to current session's server, not destination (#202) (df54346)
- chore: remove legacy standalone app.rs and add comprehensive E2E tests (44de600)
- fix: reset rsel_pane_rect and rsel_block in right-click copy path (e0657c4)
- feat: add pwsh-mouse-selection option (#211, PR #212) (4b5b5a4)
- test: add E2E PowerShell tests for new-session -e (#205) (5f3db02)
- fix: show-options -gv/-wv without option name now lists all values (bfa87f6)
- fix: resolve 8 tmux command flag compatibility gaps (#209) (6118034)
- refactor: adopt PR #208 improvements for new-session -e (9926b85)
- fix: implement new-session -e environment variable support (closes #205) (38d7cfa)
- Fix stale .port files when pane command fails to spawn (#204) (fd07145)
- fix(paste): eliminate local paste duplication on Windows (#197) (3bf380d)
- test: add E2E test for issue #197 paste tilde/freeze over SSH (acc9308)
- fix: prevent trailing ~ and close-sequence residue leaking after paste timeout (issue #197) (c28a428)
- fix(#199): fix copy mode phantom selection in handle_pane_mouse (bf7c7e3)
- fix(#199): fix copy mode phantom selection in server mode (4b33d02)
- fix: prevent micro-drag from starting phantom selection in copy mode (#199) (724abec)
- fix: clear stale copy anchor on click without drag (#199) (8875bb5)
- test: add Win32 TUI proof test for issue #201 rename dialog fix (623d739)
- fix(client): rename session dialog shows correct title (fixes #201) (ac4dc65)
- Add definitive E2E proof tests for issue #200 new-session fix (7369bcf)
- fix: new-session command now works from prefix+: command prompt (fixes #200) (a8d37bd)
- fix(client): dispatch prefix keys through synced_bindings so unbind-key takes effect on attached clients (cb0d429)
- fix: unbind-key for individual keys now works (#198) (5ef0f01)
- fix: implement functional switch-client for session switching (fixes #202) (ff4f6c3)
- fix: force hook run-shell commands to background mode (5f8c20d)
- fix: preserve quoting in server-side set-hook handlers (3bcff11)
- fix(set-hook): preserve quoting in hook commands for paths with spaces (f81632a)
- docs: document 13 undocumented features, add 7 plugins and 4 themes (c6088d5)
- fix: unbind-key -a with table support, pane improvements, full feature test suite (f9d443d)
- fix: add paste timeout to prevent terminal freeze when close sequence is lost (issue #197) (86a7519)
- Adopt scroll_pane_scrollback approach from PR #194 by @jun2077681 (6bcb9f5)
- fix(ci): commit session.rs namespace functions missing from prior commits (3e61a0d)
- fix(args): normalize -x=VALUE short-flag form across all commands (fixes #196) (0b18080)
- fix: reset defaults_suppressed on source-file reload (#195) (266d414)
- Add comprehensive integration tests for unbind-key -a (issue #195) (7f8f62f)
- fix: unbind-key -a now per-table like tmux, not global (#195) (b241055)
- fix: unbind-key -a now properly suppresses all default keybindings (#195) (12ba084)
- fix: add scroll-enter-copy-mode to apply_set_option (#193) (e7e5ff1)
- feat: add scroll-enter-copy-mode option (#193) (789deae)
- fix: support sequential command chaining with ; separator (#192) (32fe9e6)
- fix: source-file BOM handling and local-first execution (#145) (6fc6b43)
- fix: bounded frame push prevents copy-mode scroll memory leak (694156e)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.3-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.3-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.3-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.3-x64-setup.exe |
| Windows x86 | psmux-v3.3.3-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.3-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
Contributors and Acknowledgements
This release would not have been possible without the people who contributed code, filed bugs, tested builds, and shared their experiences. A sincere thank you to every one of you.
Pull Request Contributors
- @tarikguney (Tarik Guney) contributed five PRs fixing paste freeze regressions, pane-died/pane-exited hooks with remain-on-exit, the bounded frame channel that preserves fast typing, the list-panes -s multi-window iteration bug, and the switch-client routing fix. An extraordinary volume of high-quality work.
- @pbolduc (Phil Bolduc) contributed the new-session -e environment variable support and case-insensitive username/path comparison improvements, in addition to filing six detailed bug reports that drove major fixes.
- @ohboyftw (Aravind) fixed the bounded frame push that was causing a copy-mode scroll memory leak.
- @jun2077681 (hasu) contributed the scroll_pane_scrollback approach that landed as a core scrollback improvement and co-authored the pwsh-mouse-selection feature.
- @wosuxiongmao (House) fixed run-shell executables not resolving to absolute paths on Windows.
- @sepiabrown (Suwon Park) fixed bind-key new-window -c silently dropping the -c start directory flag.
- @ToxMox (Dave) fixed mouse coordinate alignment for multi-client sessions.
- @leotorrez (Leandro Torrez) updated documentation links.
- @XingLingQAQ contributed focus preservation when killing targeted panes and configurable detach and empty-exit policies.
Bug Reporters and Community
- @nipil reported the PageUp copy-mode entry issue (#242).
- @mlsimpson reported choose-buffer modal window, status-interval refresh, and PowerShell module loading problems (#234, #232, #239).
- @NikolajRDS reported the display-panes pane-base-index mismatch (#235).
- @jwhite-GUS reported join-pane silent no-op and send-keys SIGINT propagation gaps (#230).
- @jithu7432 (Jithin Johnson) reported C-/ being incorrectly parsed as ^O (#226).
- @maciakl reported the rename session dialog showing the wrong title (#201).
- @ivilkhovyi reported the copy mode phantom selection outline bug (#199).
- @Avimarzan reported session persistence gaps and stale port file cleanup (#215, #204).
- @H0nGzA1 reported run-shell program-not-found fa...
v3.3.2
psmux v3.3.2
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.1 → v3.3.2)
- bump: v3.3.2 with portable-pty-psmux 0.9.3, vt100-psmux 0.16.6 (b91542d)
- revert: remove unnecessary -x -y from test sessions (97a6437)
- test: fix 3 flaky tests, rename diagnostic script (0b8431f)
- revert: restore all 24 tests-rs files and inline references (689 tests, all passing) (5bc811a)
- chore: remove 24 stale tests-rs files and all inline module references (e90da18)
- chore: move test/diag scripts from scripts/ to tests/ (c1ca3c4)
- fix: split-window -t no longer pollutes MRU, prev-by-index fallback (#71) (d8c4d01)
- fix: use quote-aware parser for if-shell in execute_command_string (#183) (b705280)
- test: add Bug #3 double-delivery prevention regression test (0a81305)
- fix(input): Shift+Enter four additional bugs for Windows Terminal and WezTerm (#121) (cfb71bc)
- fix: resize direction when falling back to opposite border (#81) (a8e3852)
- fix: set meta_dirty on zoom toggle so status bar re-expands window_zoomed_flag (#125) (acb51b2)
- docs: add PowerShell 7+ prerequisites to Claude Code guide (1cde3d1)
- fix: server survives SSH disconnect via CREATE_BREAKAWAY_FROM_JOB (21ec00e)
- fix: split-window -l with percent suffix now treated as percentage (b72afad)
- feat: implement #[align], #[fill], #[list], #[range] layout directives for status-format[] (fixes #185) (e584cbe)
- fix(style): bg=default now correctly uses terminal default color (#182) (65f6611)
- fix: resolve window by name in -t session:window_name targeting (#186) (07bab22)
- fix: expand format variables in if-shell -F condition (#183) (c4b2526)
- fix: run-shell avoids double-wrapping when command starts with shell binary (eb8e468)
- Resolve Windows run-shell executables to absolute paths (6352551)
- bump (eb48fcd)
- fix: always activate env shim for agent teams compatibility (#172, #173, #180) (467b32f)
- fix: make run-shell async to prevent UI freeze (#170) (a510f7c)
- fix: bind-key/unbind-key/set-option from command mode silently dropped (#179) (9629068)
- feat: title_locked, meta_dirty on SetPaneTitle, #{pane_title} in border format, client JSON border fields (0703b2b)
- fix: bind-key new-window -c drops -c flag, losing start directory (#111) (64ad68a)
- fix: auto-retry ConPTY spawn without passthrough mode on error 87 (#167) (1861eb7)
- fix: resize-pane -x/-y, split-window -l, select-layout tiled (#171) (37ae071)
- fix: run-shell now captures and displays output in popup (#170) (d895d4a)
- fix: set manual_rename=true when new-window uses -n flag (#169) (7bcbecc)
- fix(#165): PredictionViewStyle ListView now works with allow-predictions on (e2f2b45)
- test: add end-to-end verification tests for status-format[] inline styles (#164) (8aa4ec2)
- fix: parse inline styles for status-format[] on multi-line status bars (#164) (b9be26a)
- fix: clear bell/silence flags on active window (#162) (a2f853c)
- fix: status-right/left not clearing when format conditional resolves to empty string (fixes #160) (ae47fee)
- fix: add group_target param to run_server, expand control mode, format engine, options catalog (3ffc570)
- fix: restore VTI disable, warmup command, parallel kill-server (5c142e6 regressions) (e29b954)
- fix: restore full nesting prevention regression from #89 fix (#55) (3f95642)
- fix: remove border drag tolerance so first/last pane rows are selectable (12533dd)
- fix: prevent focus-follows-mouse on hover events (60908fe)
- feat: border hover preview and highlight fixes (d7cb327)
- fix: handle root-level split border drag (empty tree path) (217a249)
- feat: client-side semantic mouse handling for all interactions (7a00978)
- feat: semantic mouse protocol — server-side types, parsing, handlers, and dispatch (d926875)
- feat: add ratio-based coordinate mapping for multi-client mouse alignment (0efacfb)
- feat: tmux-compatible control mode (-C / -CC) (b68962b)
- fix(#155): add strikethrough+hidden to client rendering and fast layout serialization (6538a6e)
- fix: use PROCESSOR_ARCHITECTURE env var for arch detection in install script (8cfabd8)
- fix: make bind-key case-sensitive for single character keys (#157) (6650a03)
- fix: always show full version in --version output (fixes #156) (87b6c28)
- test(#155): 22 end-to-end rendering tests proving HIDDEN/strikethrough/color fixes (262abc3)
- fix(rendering): workaround ratatui-crossterm HIDDEN omission + fix color swap (ee35684)
- fix(#155): add strikethrough to popup renderer, fix test registration (8359040)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.2-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.2-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.2-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.2-x64-setup.exe |
| Windows x86 | psmux-v3.3.2-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.2-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.3.1
psmux v3.3.1
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.3.0 → v3.3.1)
- v3.3.1: squelch capture-pane, feedback for unsupported commands, predictions docs, strikethrough, test audit (2cf3e05)
- fix(#155): complete strikethrough support across all rendering paths (c14a32e)
- fix: unify run-shell tilde expansion and XDG path fallback across all codepaths (93ecdce)
- fix(#155): stop forcing OutputRendering=Ansi, add strikethrough rendering (4413deb)
- refactor: popup-as-pane architecture (#154) (43dd68f)
- fix: popup percentage dimensions, -d flag, and TERM env (#154) (0e1dbba)
- Add tests for window index prompt (prefix + apostrophe) feature (7ff15b9)
- Add window index prompt (Prefix + apostrophe) (e000662)
- Add comprehensive squelch visibility tests (17d4422)
- fix: runtime warm off kills warm server + expanded Suite 3 tests (821d7f0)
- test: add warm-on e2e coverage to test_warm_off.ps1 (d18d469)
- fix: warm server still spawned when warm off was set (#120) (9ccf9a6)
- test: add regression tests for Set-StrictMode compat (#151) (403a936)
- fix: CWD hook guard now works under Set-StrictMode (#151) (57269b7)
- Add squelch CWD change benchmark (bench_squelch_cwd.ps1) (6f14b7d)
- Fix slow squelch: detect CSI 3J + reduce safety timeout to 500ms (207144c)
- Fix warm claim flash: add squelch to dump_layout_json_fast + use CSI 2J (fec1a5f)
- Event-driven squelch: use OSC 9999 sentinel instead of fixed 800ms timeout (4a5ba47)
- Eliminate flash of injected cd command during warm session claim (94f65d7)
- Fix root directory cd not working and eliminate flash on session claim (7da0dfb)
- docs: add missing config options from recent issue fixes (4cb76d2)
- fix: config-based warm off now works reliably (#120) (a730f60)
- fix(#150): restore original PredictionSource when allow-predictions is on (dc20bbc)
- fix: text overflow in status bar, menus, and pane boundaries (72bf7c4)
- feat: add option to disable warm panes (#120) (aea803e)
- Add allow-predictions option to let users keep PSReadLine predictions (#150) (4efd7c1)
- test: add 38-case integration test for set-hook -ga append (#133) (17ab525)
- fix: set-hook -ga (append) now works per tmux semantics (#133) (75603a9)
- Hide injected cd command from user on warm session claim (ae510e2)
- fix: improve command prompt editing in client mode (fixes #149) (2d6b113)
- fix(#146): add scrolling to static popups, fix command dispatch architecture (c582a21)
- fix(#146): list commands now show popup overlay from command prompt (32a4c3f)
- fix: pane removal focus loss and active pane misreport (#140) (10edfe1)
- fix: quote session/window/pane names in control protocol commands (191a763)
- fix(display-panes): unify prefix q with server display-panes path (#72) (797e052)
- fix(nav): wrapped directional pane navigation stays in same column/row (#141) (693540f)
- fix: display-panes pane selection and base index in server mode (#143, #72) (e9cdb93)
- fix: display-panes no longer freezes the client (#144) (caaa484)
- fix: source-file command not working inside session (#145) (7e535e8)
- fix(#146): list commands now work from within a psmux session (be03942)
- fix: zoom wrap nav, warm pane spawn, test stabilization, SKILL.md (b47782e)
- FIX: Update tppanel link to new address (edfa57c)
- fix: eliminate env var echo in warm panes, replace PTY injection with process-level env vars (#137) (8c98d27)
- fix: make window_zoomed_flag per-window instead of global (fixes #125 follow-up) (388e131)
- fix(input): Shift+Enter native injection for PSReadLine compatibility (#121) (a72aa40)
- ci: add NSIS installer build to release workflow (d88f3d9)
- fix: proper test infrastructure for install_speed and paste tests (dba5f5c)
- fix: zoom navigation, show-options, default-terminal, test reliability (e4b05b1)
Downloads
Portable (zip):
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.1-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.1-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.1-windows-arm64.zip |
Installer (NSIS setup — kills running instances, adds to PATH, warmup):
| Platform | File |
|---|---|
| Windows x64 | psmux-v3.3.1-x64-setup.exe |
| Windows x86 | psmux-v3.3.1-x86-setup.exe |
| Windows ARM64 | psmux-v3.3.1-arm64-setup.exe |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.3.0
psmux v3.3.0
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Changelog (v3.2.0 → v3.3.0)
- fix(ci): publish sub-crates before main crate, bump vt100-psmux 0.16.4 and portable-pty-psmux 0.9.2 (abde5df)
- fix(ci): add --allow-dirty for crates.io publish, add WinGet schema headers (25a78de)
- chore: bump version to 3.3.0 (b7a9748)
- Update dependencies: crossterm 0.29, nix 0.31, downcast-rs 2.0, winreg 0.56; remove unused bitflags v1 (e791e2e)
- Add NSIS installer, build script, and installer test (24cc767)
- fix: add XDG plugin path support for @plugin discovery (#135) (6aae680)
- feat: document and test vim-style bind-key -n C-hjkl pane navigation (discussion #130) (6353068)
- fix(#134): zoomed wrapped directional navigation now unzooms and wraps (acb8ba8)
- fix: set-hook -g replaces (not appends) and -gu removes hooks (#133) (740b527)
- add tests for bell/activity/silence detection, window flags, allow-rename, update-environment (9633755)
- implement tmux options: bell detection, activity/silence monitoring, allow-rename, update-environment (f960a45)
- fix: map default-terminal to TERM env var, prevent hyphenated tmux options from leaking as PowerShell env vars (fixes #137) (cce1d4a)
- fix: warm claim race condition causing 'auth failed' on bare psmux (#136) (f50fe1f)
- test runner: add rich dashboard with progress bar, ETA, live stats, and category breakdown (96b687f)
- refactor: move all Rust tests to tests-rs/ directory (f69a0cc)
- fix: paste line-ending normalization (PR #131) + Shift+Enter ConPTY encoding (PR #132) (abd5e25)
- feat: auto-generate changelog in GitHub release workflow (208dfaa)
- fix: client_prefix flag not set when prefix key is pressed (closes #126) (f43977a)
- fix: window_zoomed_flag not updating immediately in status bar (closes #125) (7010f13)
- fix: forward Shift+Enter, Ctrl+Enter modifiers to child process (a761f3e)
- fix: 6 client-server mode bugs + backslash escape (#118, #123) (b37c89e)
- fix: -f global option now works correctly (#119) (5836f8f)
- chore: update all URLs and author from marlocarlo to psmux org (0dbc242)
Downloads
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.3.0-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.3.0-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.3.0-windows-arm64.zip |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/psmux/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.2.0: Instant new-session via warm server claiming
psmux v3.2.0
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Downloads
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.2.0-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.2.0-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.2.0-windows-arm64.zip |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/marlocarlo/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/marlocarlo/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.1.0-fix-70-71
psmux v3.1.0-fix-70-71
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Downloads
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.1.0-fix-70-71-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.1.0-fix-70-71-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.1.0-fix-70-71-windows-arm64.zip |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/marlocarlo/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/marlocarlo/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility
v3.1.0-fix-103
psmux v3.1.0-fix-103
Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal.
Downloads
| Platform | File |
|---|---|
| Windows x64 (Intel/AMD 64-bit) | psmux-v3.1.0-fix-103-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.1.0-fix-103-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.1.0-fix-103-windows-arm64.zip |
Installation
Via Scoop (recommended):
scoop bucket add psmux https://github.com/marlocarlo/scoop-psmux
scoop install psmuxVia Chocolatey:
choco install psmuxVia WinGet:
winget install marlocarlo.psmuxVia Cargo:
cargo install psmuxVia PowerShell:
irm https://raw.githubusercontent.com/marlocarlo/psmux/master/scripts/install.ps1 | iexManual Installation:
- Download the zip matching your architecture
- Extract to a folder in your PATH
psmux,pmux, andtmuxcommands will all be available
What's Included
psmux.exe- Main executablepmux.exe- Aliastmux.exe- Alias for tmux compatibility