feat(electrobun): upgrade to xterm 6.0.0, disable incompatible Canvas/Image addons (DOM renderer)

This commit is contained in:
Hibryda 2026-03-23 16:22:30 +01:00
parent adee8e03c5
commit b506dfc39a
3 changed files with 22 additions and 32 deletions

View file

@ -25,9 +25,9 @@
"@formatjs/intl": "^4.1.4",
"@formatjs/intl-pluralrules": "^6.3.1",
"@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "^0.10.0",
"@xterm/addon-fit": "^0.11.0",
"@xterm/addon-image": "^0.8.0",
"@xterm/xterm": "^5.5.0",
"@xterm/xterm": "^6.0.0",
"dompurify": "^3.3.3",
"electrobun": "latest",
"lucide-svelte": "^0.577.0",
@ -1604,13 +1604,10 @@
}
},
"node_modules/@xterm/addon-fit": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz",
"integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==",
"license": "MIT",
"peerDependencies": {
"@xterm/xterm": "^5.0.0"
}
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.11.0.tgz",
"integrity": "sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==",
"license": "MIT"
},
"node_modules/@xterm/addon-image": {
"version": "0.8.0",
@ -1622,10 +1619,13 @@
}
},
"node_modules/@xterm/xterm": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==",
"license": "MIT"
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-6.0.0.tgz",
"integrity": "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==",
"license": "MIT",
"workspaces": [
"addons/*"
]
},
"node_modules/acorn": {
"version": "8.15.0",

View file

@ -31,9 +31,9 @@
"@formatjs/intl": "^4.1.4",
"@formatjs/intl-pluralrules": "^6.3.1",
"@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "^0.10.0",
"@xterm/addon-fit": "^0.11.0",
"@xterm/addon-image": "^0.8.0",
"@xterm/xterm": "^5.5.0",
"@xterm/xterm": "^6.0.0",
"dompurify": "^3.3.3",
"electrobun": "latest",
"lucide-svelte": "^0.577.0",

View file

@ -1,9 +1,12 @@
<script lang="ts">
import { onMount, onDestroy } from 'svelte';
import { Terminal } from '@xterm/xterm';
import { CanvasAddon } from '@xterm/addon-canvas';
import { FitAddon } from '@xterm/addon-fit';
import { ImageAddon } from '@xterm/addon-image';
// CanvasAddon and ImageAddon require xterm ^5.0.0 — disabled on xterm 6.x
// xterm 6's default renderer uses DOM (no Canvas/WebGL needed)
// TODO: re-enable when @xterm/addon-canvas releases a 6.x-compatible version
// import { CanvasAddon } from '@xterm/addon-canvas';
// import { ImageAddon } from '@xterm/addon-image';
import { appRpc } from './rpc.ts';
import { fontStore } from './font-store.svelte.ts';
import { themeStore } from './theme-store.svelte.ts';
@ -55,21 +58,8 @@
const openAndLoadAddons = () => {
term.open(termEl);
// Now safe to load addons that depend on _linkifier2
try { term.loadAddon(new CanvasAddon()); } catch (e) {
console.warn('[Terminal] CanvasAddon failed:', (e as Error).message);
}
try {
term.loadAddon(new ImageAddon({
enableSizeReports: true,
sixelSupport: true,
sixelScrolling: true,
sixelPaletteLimit: 4096,
showPlaceholder: true,
}));
} catch (e) {
console.warn('[Terminal] ImageAddon failed:', (e as Error).message);
}
// xterm 6.x uses improved default DOM renderer — no Canvas/WebGL addon needed
// Re-enable when addons release 6.x-compatible versions
fitAddon.fit();
};