A string with no ST swallowed every later sequence, RIS included, and
Clear Screen could not recover the tab. Any ESC now ends it, as in xterm,
and the sequence it starts is dispatched. The shipped setting needed Kitty.
Also: REP, SCOSC/SCORC, DECOM-relative CPR, `:` subparams and more DECRQM
modes answered; new rows inserted in one edit; controls stripped from
pastes; wide-char mouse columns.
- vterm_open shows an error dialog when the command cannot start,
instead of a tab that silently vanishes
- on_text_command hands paste straight to vterm_paste_text;
VtermPasteCommand only forwarded
- VtermCloseCommand was bound nowhere; closing the tab already kills
the process
- wheel_lines fallback matches the shipped 1; README said three
- Architecture.md: per-theme scheme files and managers, command table
- OSC 52 is ignored: any output, cat'd or remote, could plant a command
on the clipboard to paste
- kill(): terminate(force=True), so a child ignoring HUP and INT does
not outlive its tab with the pty open
- reader pauses once 64 unparsed reads wait, so a large dump blocks the
child at the pty instead of being buffered whole in memory
- tests/_bootstrap.py: add every Lib/python3* directory; Package Control
puts the libraries under the active plugin host's own directory
- draw(): a zero-width non-combining char (VS16, ZWJ) or a stray control
byte dropped the rest of the run; skip the char instead
- quantize_256: grey 248 mapped to slot 256 and aborted the SGR
- trim_history: the cap now counts rows above the screen, so a value
below the screen height (0: no scrollback) no longer cuts the screen
- "No theme" sampled the focused terminal's own colours; sample a
non-terminal view instead
- vterm.sublime-settings: Apple Terminal is the default again, kitty
commented out, as the README says
Sublime recreates every TextCommand instance whenever any plugin loads,
which dropped colored_lines and restarted the region key counter: old
overlays were never erased and keys were reused. RenderState now lives on
terminal.render_state, which survives reloads.
The renderer pinned a viewport dragged into sublime's past-end room. With
scroll_past_end off there is no such room: sublime clamps to bottom_y, so the
trigger can only fire against a stale anchor, which following() already
resolves on the next frame.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>