Tracking the two @xterm addons the xterm.js backend deliberately does not use yet, moved out of crates/tui-test/assets/xtermjs/README.md so the vendoring notes stay short.
@xterm/addon-unicode-graphemes
Would replace the pinned @xterm/addon-unicode11. Not adopted because it:
- is marked experimental by its own package description,
- needs an
atob the QuickJS host does not provide, and
- measures two cases differently from alacritty:
| Input |
alacritty |
v11 (pinned) |
v15-graphemes |
👨👩X |
5 |
5 |
3 |
👍🏽X |
5 |
5 |
3 |
Agreeing with alacritty on width is why unicode11 is pinned where it is: a disagreement puts every cell after an emoji in a different column on the two backends, which moves what cells, the locator, and the SVG renderer report.
Revisit when it is no longer experimental, and adopt only if it still agrees with alacritty on that table.
@xterm/addon-clipboard
Implements OSC 52, which tui-test does not support on any backend today — alacritty parses it and raises ClipboardStore/ClipboardLoad, and the listener in terminal/alacritty.rs drops both.
Adding it to xterm.js alone would make things worse rather than better: OSC 52;c;? is answered by nothing today, and this would make one backend answer it, so the same sequence would behave differently depending on the selected backend.
Order matters here: OSC 52 should land in the Emulator contract and the conformance suite first; this addon is then how xterm.js implements its half.
Tracking the two
@xtermaddons the xterm.js backend deliberately does not use yet, moved out ofcrates/tui-test/assets/xtermjs/README.mdso the vendoring notes stay short.@xterm/addon-unicode-graphemesWould replace the pinned
@xterm/addon-unicode11. Not adopted because it:atobthe QuickJS host does not provide, and👨👩X👍🏽XAgreeing with alacritty on width is why unicode11 is pinned where it is: a disagreement puts every cell after an emoji in a different column on the two backends, which moves what
cells, the locator, and the SVG renderer report.Revisit when it is no longer experimental, and adopt only if it still agrees with alacritty on that table.
@xterm/addon-clipboardImplements
OSC 52, which tui-test does not support on any backend today — alacritty parses it and raisesClipboardStore/ClipboardLoad, and the listener interminal/alacritty.rsdrops both.Adding it to xterm.js alone would make things worse rather than better:
OSC 52;c;?is answered by nothing today, and this would make one backend answer it, so the same sequence would behave differently depending on the selected backend.Order matters here:
OSC 52should land in theEmulatorcontract and the conformance suite first; this addon is then how xterm.js implements its half.