Three renderer reliability fixes: - Register the write-PTY trampoline with table.grow(1) + table.set instead of a grow init value: WebKit stores the init value with broken type information and every later call_indirect through it traps with a signature mismatch, which killed the surface on the first terminal reply (resize size reports made it look like resizing broke the terminal: cleared canvas, dead render loop, lost focus). Verified with an isolated WebKit probe: grow-init traps, grow-then-set delivers. - Selection no longer splits text runs: since selection tints only the background overlay, splitting runs at selection edges just shifted glyph spacing whenever the face's true advance differed from the measured cell width. - Re-measure cell metrics when document.fonts finishes loading faces: a cold load could measure the grid from a fallback font and render with the real one, producing wrong advances and a cursor detached from the text. The surface now refits itself when the loaded faces change the measurement. End-to-end verified in WebKit against the dev server: typing after resize, drag selection with the action menu, no page errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wout Stiens committed on 7/31/2026, 10:24:17 AMparent6a31d5e
3 files changedLine totals unavailable