Files
orca/tests
Neil 2367c160d3 fix(terminal): paint a new WebGL canvas through an open synchronized frame instead of flashing blank (#37604)
* fix(terminal): paint a new WebGL canvas inside a synchronized frame instead of leaving it blank

A replaced WebGL renderer's first paint went through terminal.refresh(), which
xterm buffers while DEC 2026 synchronized output is held. The old canvas is
already gone, so the pane showed an empty canvas until the program closed its
frame. Over a remote link Codex's frames often span packets, so revealing a
remote worktree flashed blank/content for under a second, only with WebGL.

Paint a just-attached or just-resized canvas at once. A canvas created while
its renderer is paused (hidden worktree) is remembered until its first paint,
so the reveal present paints it through the open frame instead of waiting.
Also drop the WebGL rebuild after every reattach replay: it worked around an
atlas problem that no longer exists and replaced the renderer on every reveal.

* fix(terminal): limit a never-painted canvas to one mid-frame paint

* test(terminal): prove a swapped WebGL canvas paints through spinner sync frames

* fix(terminal): clear the never-painted mark on any forced paint; drop e2e casts

* test(terminal): keep the spinner repro inside the flaky-pattern ratchet
2026-11-05 01:49:43 -08:00
..