v2.7.4 — Terminal Stability (Hang / Paste / Copy / Selection)
Terminal stability fixes (4-bug roundup)
#1 Hang on large output (CPU/RAM full blast)
PTYBridgeonData hot path: 8ms micro-batch accumulator (was unbatched, 5 sync middlewares per chunk)OscParser: char-by-char string concat → slice-based segment extraction (O(n²) → O(n))ActivityMonitor: 100ms timestamp guard on clearTimeout/setTimeout reschedule storms
#2 Ctrl+V paste partial drop
useTerminalCtrl+V / Ctrl+Shift+V handlers now use 4096-byte chunking (was a single write that hit the 100KB main-side backstop)pty.handleraddsconsole.warnwhen the 100KB backstop fires (was silent drop)
#3 Copy completely broken
clipboard.handlersilent returns → typed throw (CLIPBOARD_INVALID_TYPE,CLIPBOARD_TOO_LARGE,CLIPBOARD_WRITE_FAILED) — surfaces Win32 clipboard lock contention (KeePass / RDP / browser tabs)- 4 call sites (
useTerminal×3 +Terminal.tsx) await + try/catch, selection preserved on failure - New
showCopyErrorToast(i18n: en/ko/ja/zh)
#4 Multi-line selection: only last paragraph copied
hasSelection()guard on ResizeObserver fit() and font/theme effects (xterm 6SelectionServiceclears selection unconditionally on any rowsChanged)- New
Terminaloption:windowsPty: { backend: 'conpty', buildNumber: 21376 }(xterm 6 ConPTY-aware reflow)
Refactor (DRY helpers)
src/renderer/utils/clipboardChunk.ts—pastePtyChunked()src/renderer/utils/copyWithFeedback.ts—runCopyWithFeedback()src/renderer/utils/fitGuard.ts—shouldFitWhilePreservingSelection()
Tests
- 70 files / 776 passed (+49 new tests, 0 regressions)
- tsc + daemon-tsc clean
Full Changelog: v2.7.3...v2.7.4
What's Changed
- feat(cross-platform): batch 2A — icons, errors, shortcuts, boot-id Unix by @openwong2kim in #12
- feat(cross-platform): batch 2C — wmux mcp CLI + brew detector + macOS error wire-up + SMAppService research by @openwong2kim in #13
- Use detected shells for default terminal selection by @cloim in #10
- Fix PowerShell prompt OSC rendering by @cloim in #11
- feat(cross-platform): allow Unix shell basenames in PTY allowlist by @openwong2kim in #14
New Contributors
Full Changelog: v2.7.3...v2.7.4