Files
xterm.js/addons
Anthony Kim f9b043274d Fix atlas page overflow: merge same-size pairs, evict as last resort
TextureAtlas._createNewPage only merged exactly-4 same-size page sets; with a
heterogeneous size mix (e.g. 1024+512+512+512) it pushed past maxAtlasPages
instead. GlyphRenderer's GL texture array and fragment-shader sampler array
are sized to exactly maxAtlasPages, so the next render threw TypeError:
Cannot read properties of undefined (reading 'version') and rendering froze
(single-terminal breakage under long heavy-CLI sessions, vscode#322756).

- Generalize merge selection to the largest same-size group of 2-4 pages
  (preferring 4, then larger sizes); AtlasPage already supported non-quad
  merges. Net page count never exceeds the cap.
- Derive merging page indexes via _pages.indexOf instead of glyphs[0]
  .texturePage, which is empty-page safe.
- Last resort when no same-size pair exists below max texture size (only
  possible when almost all pages are at max size): evict all pages; glyphs
  re-rasterize on demand and models rebuild via pagesVersion.
- Defensive clamp in GlyphRenderer.render so any future overflow renders
  untextured glyphs and logs a warning instead of throwing mid-frame.

WebglAtlasOverflow now passes (was 4x TypeError); full webgl suite 75/75.
2026-07-04 13:01:13 -07:00
..