fix(desktop,web): bump @xterm/* to beta.289 line for shared-atlas garble fix

Merged
AV
4mo ago
+55-38

Problem

Terminal panes intermittently render garbled multicolor glyph fragments (layout intact, text unreadable), typically after heavy scrolling through colorful TUI output (Claude Code). Copying the garbled region yields correct text — the buffer is fine, the WebGL renderer is drawing from wrong texture-atlas positions.

Root cause (upstream)

xterm.js shares one WebGL glyph texture atlas across all terminals with the same font/theme/DPR — which is every pane in Superset, including parked/reused runtimes. When glyph churn triggers an atlas page merge in one terminal, the invalidation signal was a consume-once flag: the first renderer to call beginFrame() ate it and rebuilt its model; every sibling renderer kept stale glyph→texture coordinates and drew garbage.

Same class of bug we bumped for once before (#4892/#4893).

Changes

  • Bump all @xterm/* deps to the beta.289 release line across apps/desktop, apps/web, packages/shared, packages/host-service (addon-webgl pairs at beta.288 — its numbering trails core by one, same as our previous 219/220 pin)
  • bunfig.toml: scoped minimumReleaseAgeExcludes for @xterm/* only — the release is 1 day old and inside our 3-day supply-chain gate. Versions are pinned exact; the exclusion is dated and safe to remove after 2026-07-16.

Verification

  • bun run typecheck — green (35 tasks; the one docs failure was stale fumadocs codegen in a fresh worktree, passes on re-run)
  • bun run lint — clean
  • packages/shared wheel-handler + identity-coupling tests: 26 pass
  • packages/host-service terminal tests (@xterm/headless consumer): 88 pass

Note: the upstream issue lists a second, still-unfixed failure mode (atlas page-cap overflow → render-loop exception). This PR addresses the garbling; worth tracking upstream PR 2 of the split.


Open in Stage

Summary by cubic

Bump @xterm/* to the beta.289 line to pick up the shared WebGL glyph atlas fix, removing garbled multicolor text after heavy scrolling. Applies to desktop and web terminals.

  • Dependencies
    • @xterm/xterm → 6.1.0-beta.289, @xterm/addon-webgl → 0.20.0-beta.288; align other @xterm/* to beta.289 across desktop, web, shared, and host-service, except @xterm/addon-ligatures which stays at 0.11.0-beta.220 due to a Vite build issue (node:diagnostics_channel).
    • Add dated minimumReleaseAgeExcludes for @xterm/* in bunfig.toml to allow these releases; remove after 2026-07-16.

Summary by CodeRabbit

  • Maintenance
    • Updated terminal components and extensions to newer XTerm releases across the desktop, web, and shared application experiences.
    • Improved package installation handling for the updated terminal components.
    • No new user-facing features or workflow changes were introduced.