Back to Blog
Features, Release
October 23, 2026
Max Binshtok•nash Core Team

Modified Keys in Mux Panes

Nash 0.11.5 lets mux panes receive extended keyboard input, including native Shift+Enter, rather than treating every program like a legacy shell. This covers Unix and TLS domains, SSH domains using Nash multiplexing, and panes created with [mux] enabled = true. It does not change the limitations of tmux control-mode domains.

The release also adjusts tab selection and highlighting. Before testing the keyboard changes against an existing mux server, plan its restart: this release uses a new protocol.

Let the Program Choose Its Keyboard Mode

The server now reports each pane's keyboard encoding to the GUI. The GUI can then encode keys for the application actually running there. Kitty keyboard input includes Command/Super modifiers, requested key releases, lock-key state, alternate keys, and associated text.

Kitty keyboard support is off by default. Set enable_kitty_keyboard = true in the Lua configuration used by both the GUI and the server. With the bundled configuration, a minimal ~/.config/nash/custom.lua is:

return { enable_kitty_keyboard = true }

If that file already returns configuration, add the field to it rather than replacing your other overrides. A remote server reads configuration on its own host; changing only the local GUI is not enough. The application must also request the protocol.

Mode changes take a network trip to reach the GUI. The server checks encoded keys against its current mode and re-encodes them when necessary, so an exiting Kitty application does not leave its shell receiving stale Kitty key bytes. Predicted local echo is not used for these GUI-encoded keys.

Keep Shift+Enter Native Where It Is Supported

The bundled ShiftEnterOrNewline action now uses the reported mode in mux panes, as it does in direct PTY panes. If the program can distinguish Shift+Enter from Enter, the original key passes through. Otherwise the action sends ESC CR, the legacy multiline input that zsh's default binding reads as an inserted newline.

An old unconditional Shift+Enter override can still replace that behavior. Review it before diagnosing a program's keyboard support. The action remains direct-key-binding only: it is not for the command palette, Multiple, or Lua window:perform_action calls.

Tmux control-mode panes still receive ESC CR because they do not expose their keyboard mode. Running tmux inside a direct PTY is different: tmux can negotiate extended keys itself, so a legacy shell inside it is not guaranteed a multiline newline. See Keyboard.

Make Tab Behavior More Predictable

Under [tab.highlight], pill_alignment accepts left, center, or right. For top_line, it positions the inactive custom-color pill and anchors the stroke's growth when selected. It does not affect tinted or none.

Color inheritance is now limited to tabs opened immediately after the current tab, including tasks targeting new_tab_after_current. Tabs opened at the end, including the new-tab button and new_tab tasks, do not inherit it.

ActivateTab also clamps out-of-range indices: with three tabs, SUPER+5 selects the third. Excessively negative indices select the first. Positive past-the-end nash cli activate-tab --tab-index values still report an error. See Tabs.

Restart Only When Work Can Stop

Nash 0.11.5 uses mux protocol 50. An older server needs replacement; installing a new binary does not upgrade the running process. Inspect it with nash mux status. On Unix, nash mux restart replaces it; on Windows, stop nash-mux-server manually before starting the replacement.

Restart destroys the server's panes and their running processes. Save work first. This is not a detach and reconnect. The mux commands reference explains the upgrade boundary.