Follow-up to https://github.com/xtermjs/xterm.js/issues/5896 / PR #5966. Converting addons to ../../../src/common relative imports broke unit tests: esbuild emits addon code under addons/*/out-esbuild/ without mirroring the shared tree, so Node could not load TypeScript sources at runtime (Cannot find module '../../../src/common/Lifecycle'). Core src/, test/, and headless continue to use relative imports with no common/* path mappings. Addons keep the prior model until build layout can share out-esbuild the same way as the main package. Changes: - Restore common/* and browser/* paths in addon src/test/benchmark tsconfigs - Revert addon imports to common/ and browser/ path-mapped specifiers - Restore NODE_PATH=out-esbuild in bin/test_unit.js for Mocha resolution - Restore webpack resolve.alias on addons that bundle against out/ Fixes CI test-unit failures on remove-path-mappings-5896. Co-authored-by: Cursor <cursoragent@cursor.com>
@xterm/addon-webgl
An addon for xterm.js that enables a WebGL2-based renderer. This addon requires xterm.js v4+.
Install
npm install --save @xterm/addon-webgl
Usage
import { Terminal } from '@xterm/xterm';
import { WebglAddon } from '@xterm/addon-webgl';
const terminal = new Terminal();
terminal.open(element);
terminal.loadAddon(new WebglAddon());
See the full API for more advanced usage.
Handling Context Loss
The browser may drop WebGL contexts for various reasons like OOM or after the system has been suspended. There is an API exposed that fires the webglcontextlost event fired on the canvas so embedders can handle it however they wish. An easy, but suboptimal way, to handle this is by disposing of WebglAddon when the event fires:
const terminal = new Terminal();
const addon = new WebglAddon();
addon.onContextLoss(e => {
addon.dispose();
});
terminal.loadAddon(addon);
Read more about handling WebGL context losses on the Khronos wiki.