Repository navigation
Releases
wmux v2.60.0
Features
- Ctrl+Shift+T brings back the agent conversation of the tab you just closed. Reopening a closed tab used to give you a bare shell, even when it was running Claude, Codex, OpenCode, agy, Qwen, omp or pi. Now it resumes that conversation, through the same path session restore uses. Only the most recently closed tab resumes; reopening older ones gives plain shells, and an agent that exited normally doesn't come back. The per-provider "restore sessions" preferences don't apply, because Ctrl+Shift+T asks for exactly one tab (#447).
Contributors
Thanks to alejandronava562 for the feature.
Full Changelog: v2.59.1...v2.60.0
wmux v2.59.1
Fixes
- Ctrl+click and middle-click on a link in a browser tab open it in a new tab. They used to replace the page you were on. The link now opens in a background tab beside the current one, as in a browser, and you stay where you were. Ctrl+Shift+click and a page's own
window.open()still open in place, and in the side panel, which has no tabs, the link goes where the right-click Open link in new tab sends it (#446).
Contributors
Thanks to jpstratman for the fix.
Full Changelog: v2.59.0...v2.59.1
wmux v2.59.0
What's Changed
- fix(opencode): harden the server-half session reporter by @Mattheinrichs in #444
- fix(cli): retry idempotent reports when the pipe is busy by @Mattheinrichs in #445
Full Changelog: v2.58.1...v2.59.0
wmux v2.58.0
What's new
- Dictate into a terminal with ChatGPT (opt-in). Turn it on in Settings → Voice → Enable ChatGPT dictation, sign in to ChatGPT in the dedicated window, then use the new titlebar microphone: click to record, click Stop, and the transcript is pasted into the terminal that was selected when you started. It is never submitted: wmux sends no Enter, newlines are flattened and control characters are rejected. Broadcast input does not copy it to other panes, and if that terminal closed meanwhile, the text is shown for you to copy. Sign-in uses a separate browser profile with no wmux preload, and microphone access is granted only during a capture. Start or stop dictation has no default shortcut; bind one in Settings → Shortcuts. While the feature is off, the titlebar has no microphone and wmux never loads chatgpt.com. It drives the regular ChatGPT website rather than an API, so website changes may need adapter updates. Details in docs/chatgpt-web-dictation.md (#438).
Contributors
Thanks to nicolasjandre for the dictation feature, to richardaubin for asking that it be opt-in, and to ZvikaZ for confirming the WSL Claude session restore from #428 on 2.57.0.
wmux v2.57.0
What's new
- Split right and split down get their own buttons. The pane header shows two split buttons when there is room, each with its configured shortcut in the tooltip. Narrow panes fall back to the dropdown. The dropdown now shows your own bindings, where it used to show the defaults (#436).
- Browser panel button in the titlebar. It opens and closes the side browser panel, lights up while the panel is open, and shows your configured shortcut in its tooltip (#437).
- Count live terminals in a heap snapshot. For memory reports like #421: the installed build is minified, so xterm's own class names do not show up in a snapshot. Every terminal now carries a
WmuxLiveTerminalmarker, and every WebGL renderer aWmuxLiveWebglRenderermarker, so the constructor filter counts the ones still alive. In the DevTools console,__wmux_terminalCensus()returns how many were created, disposed and garbage collected. After a forced GC, adisposedButAliveabove zero means a leak.
Contributors
Thanks to strayge for the split buttons and the browser panel toggle, and to MarcusJenshaug1 and ConnorRobinson13 for the long memory measurements in #421.
wmux v2.56.0
What's new
- Claude Code in WSL panes reports to wmux. With agent hooks enabled, wmux now adds its Claude Code hooks to
~/.claude/settings.jsoninside each running WSL distro. Claude in a WSL pane then shows its state in the sidebar, and its session is restored when wmux restarts. It uses the same consent as the Windows hooks, and switching hooks off removes them again. Stopped distros are never started for this: one is updated the next time it is running. One-time setup in the distro's~/.bashrcis still needed; seedocs/wsl-explorer.md(#428). - Clear terminal buffer. A new command palette action, with a shortcut you can bind in Settings, clears the focused terminal's scrollback and keeps the current line. On Windows it also clears ConPTY's screen, so what you type next 8000 is drawn at the top (#434).
Fixes
- Ctrl+W in the browser panel no longer quits wmux. With a web page focused, Ctrl+W ran Electron's hidden Window → Close and quit wmux with every terminal in it. Ctrl+R reloaded the wmux UI and Ctrl+M minimized it. Pages now keep those keys (#431).
- Ctrl+W, Ctrl+T and tab and workspace cycling work from inside a page. They act on the page's pane, as in a browser. Keys a web app relies on, such as Ctrl+B and Ctrl+F, stay with the page (#432).
- Agent rows in the sidebar no longer outlive their agent. Rows now come from the same agent list as the navigator, so an agent that exited stops showing as idle. An agent that reports no state says so instead of claiming Idle, and Claude without hooks still shows as working while it runs a tool (#435).
Contributors
Thanks to alejandronava562 for the browser-panel fixes, to strayge for Clear terminal buffer and the sidebar rework, and to ZvikaZ for the detailed WSL breakdown in #428.
wmux v2.55.2
What's changed
- Hiding or closing a terminal no longer leaks it. The WebGL renderer's cursor-blink timer outlived the renderer, and kept the whole terminal alive with its scrollback. That happened on every workspace switch, parked pane or closed tab while the terminal had focus, so renderer memory climbed for as long as you worked and never came back. The timer is now stopped when the renderer is released. In a one-hour soak, post-GC private memory went from about +14 MB per workspace cycle to flat (#421, #433).
Contributors
Thanks to ConnorRobinson13 for tracing the leak to the blink timer and soak-testing the fix, and to MarcusJenshaug1 for the long-running measurements in #421.
wmux v2.55.1
What's changed
- Hidden terminals now give their GPU renderer back immediately. Switching workspaces, parking a pane or resizing used to leave each discarded WebGL context and its full-size drawing buffer alive until garbage collection. That pushed Chromium past its 16-context limit ("Too many active WebGL contexts") and held native memory that the JS heap never showed. Each one is now released as soon as the terminal is hidden (#421).
- The wmux command reference given to pi, OpenCode, Qwen, Kiro and omp no longer mentions Claude Code's subagents. Its subagent section now applies to any agent (#430).
Contributors
Thanks to MarcusJenshaug1 for the heap-snapshot and canvas accounting that located the WebGL leak, and to richardaubin for the report on pi's reference.
wmux v2.55.0
What's changed
- Browser tabs show the page title instead of
Browser, falling back to the host or file name. Names you chose still win (#423). - Splits and new tabs started from the tab bar or the keyboard reuse the active terminal's shell, so splitting a WSL pane opens WSL, not PowerShell (#422). CLI and agent splits keep the workspace default.
- Pane zoom (Ctrl+mousewheel) now zooms a terminal through its font, as Windows Terminal does: the text reflows to fill the pane and the shell gets the new size. Ctrl+wheel zooms the pane under the pointer, Ctrl+= / Ctrl+- zoom the focused pane, and Ctrl+0 resets it. The default font size stays in Settings (#420).
- Dim or italic text, such as Claude Code's thinking text, no longer gets an opaque background band on a transparent terminal or a custom background (#425).
- CMD panes track
cdagain, so a restored CMD pane reopens in its last directory (#429, #427). - Git Bash panes load wmux's bash integration automatically and report their directory as a Windows path, so
cdis restored after a restart (#427). - WSL:
.shintegration scripts ship with LF line endings,WMUX_*variables reach Windows helpers started inside WSL, and the bash integration reports to wmux over the pipe. Add[ -n "$WMUX_BASH_SCRIPT" ] && . "$WMUX_BASH_SCRIPT"to your distro's~/.bashrcto enable it (seedocs/wsl-explorer.md) (#428). - Inline Sixel and iTerm2 images no longer black out the rest of the terminal (#424).
- The first pane tab has even spacing around it (#426).
Contributors
Thanks to strayge for the CMD cwd, shell inheritance, image overlay, and tab spacing fixes, and to Jason Stratman for browser tab titles.
wmux v2.54.0
What's changed
- Add configurable F5 refresh for the focused browser, markdown, code, diff, Git, and terminal surfaces.
- Add independent pane zoom with Ctrl+mousewheel and keep whole-app zoom on Ctrl+Shift+mousewheel.
- Prevent unread badges from crowding full-width workspace titles.
- Simplify and shorten the agent guidance documentation.
- Remove the stale unused Claude instructions copy.
Contributors
Thanks to Jason Stratman for the documentation, cleanup, and sidebar fixes.