🚀 Features
- A new addon is available that serializes the buffer as a string, allowing restoring the majority of the state to a new terminal by calling
Terminal.write(serializedState)
. See thexterm-addon-serialize
section below for more info. - A new addon to enable unicode 11 support, which can fix many emoji-width related bugs on modern operating systems. See the
xterm-addon-unicode11
section below for more info. - Support alt-clicking in multi-line prompts in the normal buffer (#2670) via @kumaran-14
📦 API
- Support for some window manipulation/reporting sequences (#2393) via @jerch. These must be enabled explicitly via the new
windowOptions
option as they have security implications. - Allow the thickness of the bar cursor to be configured (#2590) via @npezza93
new Terminal({ cursorStyle: 'bar', cursorBarWidth: 3 });
- The parser API is now stable (#2689) via @Tyriar
🐞 Bug fixes
- Speed up double disposing an object (#2616) via @sdegutis
- Implement hidden attribute rendering in DOM renderer (#2625) via @Tyriar
- Fix canvas selection supporting
#rrggbbaa
color format (#2629) via @ivanwonder - Improve handling of full width characters in buffer writes (#2644) via @jerch
- Flag lines as being wrapped after a CUP occurs at the end of a line in windowsMode (#2667) via @Tyriar
- Properly separate DOM renderer cursor animations for each terminal to avoid conflicts when multiple terminals are visible with different themes (#2676) via @jeffbaier
- Fix various characters in the DEC graphics charset (#2679) via @jerch
- Remove
;
and:
from the defaultwordSeparator
option so more URLs are selected fully with double click (#2680) via @Tyriar - Fix DOM renderer not rendering cursor correctly immediately after changing
cursorBlink
orcursorStyle
(#2684) via @Tyriar - Handle links safely by removing opener from window (#2688) via @Tyriar
📝 Documentation and internal improvements
- Implement tooling to document and extract the supported VT features of xterm.js (#2386) via @jerch
- Update node-pty to v0.9 (#2621) via @jerch
- Reducing internal circular dependencies (#2637, #2640) via @Tyriar
- Improve the structure of the color helper library (#2653) via @Tyriar
- Fix failing Linux unit tests not failing job in CI (#2682) via @Tyriar
- Remove old unused options from codebase and API (#2685) via @Tyriar
🛑 Breaking changes
- APIs starting with
add
in the experimental parser API have been removed in favor ofregister
as it enters stable status (#2651) via @Tyriar
⚠️ Deprecations
addMarker
is now deprecated, move over toregisterMarker
which is functionally equivalent (#2651) via @Tyriar
🎉 New real-world use cases
📥 Addons
xterm-addon-attach
xterm-addon-serialize
This new addon has allows serializing terminal state (text, color and style currently) and writing it to new Terminal
objects to restore it (#2369, #2618, #2687) via @JavaCS3
const t = new Terminal();
const serializeAddon = new SerializeAddon();
t.loadAddon(serializeAddon);
await new Promise(r => t.write('foo \x1b[31mbar', r));
const state = serializeAddon.serialize();
console.log(state); // 'foo \x1b[31mbar'
xterm-addon-unicode11
This new addon can be enabled to resolve unicode character widths based on version 11 of unicode (#2568) via @jerch.
const t = new Terminal();
// 🤣 is now single width (unicode 6)
const unicode11Addon = new Unicode11Addon();
t.loadAddon(unicode11Addon);
t.unicode.activeVersion = '11';
// 🤣 is now treated as double width
xterm-addon-webgl
- Implement hidden attribute rendering (#2625) via @Tyriar
- Fix adding the webgl texture atlas to the DOM (#2626, #2628) via @Tyriar
- Fix rendering of selection over inverse cells (#2650) via @Tyriar
🤝 Compatible addon versions
xterm-addon-attach@0.5.0
xterm-addon-fit@0.3.0
xterm-addon-search@0.5.0
xterm-addon-serialize@0.1.2
xterm-addon-ligatures@0.2.1
xterm-addon-unicode11@0.1.1
xterm-addon-web-links@0.2.1
xterm-addon-webgl@0.5.0
(not 0.5.1, see #2759)