v2.16.0
Bundles everything merged since v2.15.0 (#81, #84). The headline is tmux-style persistence — closing the window now keeps your daemon and sessions alive and reattaches them on next launch — plus the fix for recovered sessions rendering blank on relaunch, a multiline-paste fix for PowerShell, and a batch of dogfood-driven stability and UX changes.
Added
- Quit keeps your sessions running. The tray now offers "Quit (keep sessions running)" — it detaches the UI while the daemon and all PTYs survive, and the next launch reattaches them — plus a separate "Shut down wmux (close all sessions)" for a full teardown. This is the tmux model the README always described.
Ctrl+Shift+Arrowmoves focus between panes (and between grid tiles in multiview) in all four directions. BareCtrl+Arrowis intentionally unbound.- Completion blink. A pane whose agent just finished (or is waiting / awaiting input) blinks its border, and its background tab shows a status dot, so you can see which terminal needs you without hunting. Clears on focus; respects
prefers-reduced-motion.
Changed
- Quit now detaches instead of killing the daemon.
before-quitpreviously tried to shut the daemon down on every quit (the opposite of tmux), and a hung handler could orphan it. The default quit now only detaches; full shutdown is explicit and guaranteed to exit. - RAM readout is real RSS (
app.getAppMetricsworking-set sum) instead of the renderer's JS heap, so the StatusBar number reflects actual process memory. - Removed the token-usage chip. The regex-scraped per-pane token estimate was unreliable and is gone, along with its IPC and tracker. The measured 5h / 7d usage-percentage widget stays.
- Right-click copy keeps the selection and no longer collides with the paste gesture (a fast second right-click used to paste over a just-copied selection).
- Multiline paste into PowerShell inserts a clean multiline command instead of injecting whitespace at every line break (see Fixed).
Fixed
- Recovered sessions no longer render blank on relaunch (#81). Daemon reattach ran inside the terminal-creation effect behind an
isCurrentguard evaluated before the effect assigned the terminal ref, sopty.reconnectnever fired (live daemon sessions, zero attach). Reattach moved to a dedicated effect that runs after the ref is set and also fires ondaemon:connected(late-connect / respawn). - Orphan daemon on quit. A hung
before-quitpipe-close could leavewmux.exerunning after the window closed; full shutdown now force-exits within a bounded timer. - Multiline paste injected whitespace in PowerShell (#84).
normalizePasteTextcollapsed every newline to a lone CR, but inside a bracketed-paste body PSReadLine treats CR as Enter and misplaces the cursor (PSReadLine #3939, #417, which both recommend LF). It now emits LF as the in-body separator when bracketed (CR otherwise), fixing all four paste paths (Ctrl+V, Ctrl+Shift+V, right-click, Shift+Insert /onData). Verified against real pwsh 7.6 / PSReadLine 2.4.5. prefix+ arrow keys. Session load now merges the saved prefix config over the defaults instead of replacing it wholesale, so arrow-key pane-focus bindings survive a reload.- WebGL context thrash. An LRU pool (max 12) caps live WebGL terminal contexts, preventing the "too many contexts" eviction that could blank panes when 16+ are visible at once.
Security
- Paste-injection guard (#84). The bracketed-paste body sanitizes a raw ESC to
U+241B, so pasted text can no longer forge theESC[201~close marker and run trailing bytes as a command.
Docs
- Dropped the removed
Ctrl+Up/Downscroll-bookmark jump shortcut from the README.Ctrl+Mmarking and the gutter indicators still work.
What's Changed
- fix(terminal): reattach recovered daemon sessions on relaunch + tmux persistence/stability batch by @openwong2kim in #81
- fix(terminal): paste multiline as LF in bracketed paste (PowerShell whitespace) by @openwong2kim in #84
Full Changelog: v2.15.0...v2.16.0