Skip to content

1.2.3

Choose a tag to compare

@umzcio umzcio released this 30 Jul 04:03
· 44 commits to main since this release

Terminal fixes.

The garbled terminal

Every terminal showed a line of %%%%%%% and a small stray box above the prompt, and typed characters smeared across it.

The cause was not terminal output at all. xterm.js ships internal helper elements — a character-measurement probe whose text content is literally 32 percent signs, plus an offscreen input textarea — and relies on its own stylesheet to hide them. That stylesheet (@xterm/xterm/css/xterm.css) was never imported, so both rendered as visible page content in normal flow, directly above the prompt.

Also fixed

  • The pty is now spawned at the renderer's measured viewport size instead of a hardcoded 80×24 followed by a resize. The shell prints its first prompt immediately, and zsh pads its end-of-line marker to exactly one terminal width before erasing it — so starting at the wrong width left stray marks and desynchronized the shell's cursor model.
  • Opening a terminal on a project whose folder no longer exists (moved, renamed, deleted, or on an unmounted drive) now shows a clear explanation instead of a raw Error invoking remote method banner.

Hardening

  • The path guard that restricts terminals to known project directories is unchanged and still strict, but it no longer echoes the requested filesystem path back to the renderer.
  • Pty dimensions crossing the IPC boundary must now be integers within [1, 1000] on both create and resize. Previously only finiteness was checked, so values like 2.5 and 1e9 reached node-pty.