mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
TextureAtlas.clearTexture() guarded on pages[0].currentRow being at the origin — but merged pages are never written through currentRow, so once a page merge lands a merged page at index 0, every atlas wipe for the rest of the session silently no-ops: no content clear, no glyph-cache clear, no clear-model generation bump. Recoveries degrade to placebo, the glyph cache grows unboundedly, and the session drifts into a merge-heavy state where stale vertex data paints the tiny-glyph garble seen after unfocus-then-paste into Claude Code. Fixes in @xterm/addon-webgl patch (lib bundles + readable src): - clearTexture(): guard on any-page-has-glyphs; restore _activePages after wiping (merges permanently shrink the active set) - AtlasPage.clear(): reset _glyphs/_usedPixels so wiped pages stop distorting merge-candidate selection - renderRows merge-retry loop: check the retry budget before beginFrame() so tripping the limit cannot consume the clear-model notification and strand a stale model - GlyphRenderer.render(): clamp texture binds to the sampler budget so pages overflowing maxAtlasPages cannot TypeError and kill rendering Verified: two-terminal shared-atlas harness (storm scenario proves the no-op and its fix; 6-seed adversarial fuzzer clean), 405 unit tests in pane-manager/atlas-recovery suites, terminal-rendering golden e2e.