Skip to content

v2.7.4 — Terminal Stability (Hang / Paste / Copy / Selection)

Choose a tag to compare

@openwong2kim openwong2kim released this 06 May 23:45
· 287 commits to main since this release

Terminal stability fixes (4-bug roundup)

#1 Hang on large output (CPU/RAM full blast)

  • PTYBridge onData 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

  • useTerminal Ctrl+V / Ctrl+Shift+V handlers now use 4096-byte chunking (was a single write that hit the 100KB main-side backstop)
  • pty.handler adds console.warn when the 100KB backstop fires (was silent drop)

#3 Copy completely broken

  • clipboard.handler silent 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 6 SelectionService clears selection unconditionally on any rowsChanged)
  • New Terminal option: windowsPty: { backend: 'conpty', buildNumber: 21376 } (xterm 6 ConPTY-aware reflow)

Refactor (DRY helpers)

  • src/renderer/utils/clipboardChunk.tspastePtyChunked()
  • src/renderer/utils/copyWithFeedback.tsrunCopyWithFeedback()
  • src/renderer/utils/fitGuard.tsshouldFitWhilePreservingSelection()

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

  • @cloim made their first contribution in #10

Full Changelog: v2.7.3...v2.7.4