- TerminalInputHandler reads bytes with getch() and assembles UTF-8
itself, waiting up to a second for a character's continuation bytes.
The frontend reads the rest of an input batch with a zero timeout, and
get_wch() then gave up on a character whose bytes had not all arrived;
ncurses discarded the rest as an invalid sequence, so text pasted over
a slow link silently lost characters and what followed them (typing
'ab\xc3', then '\xa9cd' 50 ms later saved 'ab').
- Visual-line insert, delete, backspace and newline carried the cursor's
byte column to the other selected lines, splitting multibyte
characters there (the saved file became invalid UTF-8). The column is
now carried as a character count.
- Visual-line delete-char left the cursor on the last selected line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015rcVQiiWyTzoNrsvLSaAfB