Replace xterm.js with ghostty-web

Migrate from xterm.js to ghostty-web (Ghostty WASM terminal emulator).

Benefits:
- WASM-compiled parser from Ghostty (same code as native app)
- Better Unicode/complex script handling
- Simpler initialization (no viewport.scrollBarWidth issues)
- ~400KB WASM bundle

Changes:
- Update package.json: remove @xterm/* deps, add ghostty-web
- Rewrite terminal.ts using ghostty-web API
- Use built-in FitAddon with observeResize()
- Remove WebGL/Canvas/Unicode11/WebLinks/Clipboard addons
- Remove xterm.css (ghostty uses canvas renderer)
- Add ghostty-vt.wasm to static assets
- Update HTML template and tests

BREAKING: Major version bump to 0.4.0
This commit is contained in:
GitHub Copilot
2026-01-28 00:54:50 +00:00
parent 712cc72911
commit 3f6cfd4e96
12 changed files with 98 additions and 1273 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "textual-webterm"
version = "0.3.32"
version = "0.4.0"
description = "Serve terminal sessions over the web"
authors = ["Will McGugan <will@textualize.io>"]
license = "MIT"
@@ -8,8 +8,8 @@ readme = "README.md"
packages = [{include = "textual_webterm", from = "src"}]
include = [
{ path = "src/textual_webterm/static/monospace.css" },
{ path = "src/textual_webterm/static/css/xterm.css" },
{ path = "src/textual_webterm/static/js/terminal.js" },
{ path = "src/textual_webterm/static/js/ghostty-vt.wasm" },
]
[tool.poetry.dependencies]