Releases: psmux/psmux
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
v3.1.0-fix-102
psmux v3.1.0-fix-102
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-102-windows-x64.zip |
| Windows x86 (Intel/AMD 32-bit) | psmux-v3.1.0-fix-102-windows-x86.zip |
| Windows ARM64 (Snapdragon/Surface Pro X) | psmux-v3.1.0-fix-102-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