[3.2.2] - 2026-08-01
Added
[keybindings]entries can be disabled with"none"(also
"off"/"disabled"), letting the key pass through to the shell
instead of falling back to the default shortcut.- OSC 8 hyperlinks: links emitted by applications in panes (
ls --hyperlink, gcc/rustc diagnostics, delta, starship, …) are stored
per cell — including theid=grouping parameter — and re-emitted
to the host terminal, so they stay Ctrl+clickable in Windows
Terminal / WezTerm. URIs are sanitized (control characters stripped,
length-capped) so a malicious child cannot smuggle escape sequences
into the render stream, erased cells never stay clickable, and
SGR 0 correctly leaves links open (they are orthogonal to SGR).
[3.2.1] - 2026-08-01
Added
- Extended underlines (SGR
4:x, 58, 59): curly / double / dotted /
dashed underline styles and independent underline colors
(58:5:n/58:2::r:g:b, colon and legacy semicolon forms) are now
parsed per cell and re-emitted to the host terminal. nvim's LSP
diagnostics (curly underlines) and modern prompts render correctly in
Windows Terminal / WezTerm.
Fixed
- SGR colon subparameters are now parsed correctly. Previously
:
was treated like;, so4:3(curly underline) was misread as
"underline + italic" and58:5:196(underline color) accidentally
enabled blink. The CSI parser now tracks subparameters separately,
which also hardens it against other:-form sequences.
[3.2.0] - 2026-08-01
Added
- win32-input-mode passthrough (DECSET 9001): wtmux now honors the
win32-input-mode request every pane's conhost issues at startup and
forwards the original Win32 key records (CSI Vk;Sc;Uc;Kd;Cs;Rc _)
instead of lossy legacy VT bytes. Applications that read the console
withReadConsoleInputWnow receive full modifier state — notably
Shift+Enter / Ctrl+Enter / Alt+Enter, which legacy VT collapses to
plain Enter — as well as key-release events. A pane's kitty keyboard
flags take priority over win32-input-mode when both are active.
Verified end-to-end through ConPTY by the
conpty_win32_input_roundtrip_reproharness. (#2) - OSC 52 clipboard (write-only): applications in panes — nvim, or
tmux/CLI tools inside ssh and WSL — can set the host clipboard with
OSC 52 ; c ; <base64>. Read requests (?) are deliberately not
answered so child programs cannot silently read the clipboard. (#2) - Focus reporting (DECSET 1004): panes that enable mode 1004
receiveCSI I/CSI Owhen the host terminal gains or loses focus
and when wtmux's own pane focus moves between panes, like tmux's
focus-events. (#2)
[3.1.0] - 2026-08-01
Added
-
Kitty keyboard protocol (panes): applications running inside a
pane can now enable the kitty keyboard protocol's disambiguate
escape codes (flag 1) and report event types (flag 2) progressive
enhancements viaCSI = u/CSI > u/CSI < u, and query support
withCSI ? u. With flag 1 active, Esc, Ctrl/Alt-modified keys and
modified Enter/Tab/Backspace are reported unambiguously as
CSI code;mods u(e.g. Ctrl+I vs Tab, Shift+Enter vs Enter); with
flag 2, key releases of escape-coded keys are reported as
CSI code;mods:3 u. Flag stacks are tracked per screen (main /
alternate), unsupported flag bits are masked so the query reply never
over-advertises. Verified to survive the ConPTY hop in both
directions (diagnostic harness:conpty_kitty_roundtrip_repro).
This chiefly benefits VT-input applications in panes — neovim, and
Linux TUIs (helix, fish 4, kakoune) inside WSL or ssh sessions. -
Nested-session guard: launching
wtmuxinside a wtmux pane now
exits with an error instead of starting a nested instance (which
would fight over the prefix key and stack ConPTY inside ConPTY),
mirroring tmux's$TMUXcheck. CLI subcommands (send-keys,
list-keys, ...) still work inside panes. Unset theWTMUX
environment variable to force nesting.
Fixed
- Multi-pane mode now honors the focused pane's terminal modes when
encoding key input (e.g. DECCKM application cursor keys); previously
it always used default modes.