Two remaining sources of resize jitter: - The canvas backing store was resized in a deferred animation frame, so every drag step painted one frame with the old backing stretched into the new element box before the repaint landed. ResizeObserver callbacks run before paint, so fit() now applies the backing size, DPR transform, and a full repaint synchronously — the browser never composites a stale frame. - Every row-boundary crossing notified the PTY immediately, making the shell reprint its prompt mid-drag. The local Ghostty grid still reflows instantly, but the resize RPC now settles 150ms after the last change, so applications redraw once for the final size. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wout Stiens committed on 7/31/2026, 10:42:19 AMparentc94e6bf
1 file changedLine totals unavailable