Releases: xtermjs/xterm.js
Releases · xtermjs/xterm.js
4.16.0
Make sure you update your xterm.css file if you have your own copy as there were some changes made there (#3579).
🚀 Features
- Add support for OSC 4/10/11/2 which enables programs to set and report colors within the terminal (#3524) via @jerch
📦 API
- Set multiple options through the
Terminal.options
API (#3546, #3586) via @silamon// before term.setOption('rendererType', 'dom'); term.setOption('fontSize', 12); // after term.options = { rendererType: 'dom', fontSize: 12 };
- The link provider API is no longer marked as experimental (#3587) via @Tyriar
🐞 Bug fixes
- Prevent duplicate IME input on Linux (#3535) via @Eugeny
- Clear line wrapped status on EL 2 (erase all in line) (#3536) via @silamon
- Allow shift+wheel to bubble up the DOM (#3551) via @Tyriar
- Fix canvas renderer color changes (#3553) via @jerch
- Prevent character joiners that throw from taking down whole terminal (#3565) via @LabhanshAgrawal
- Add tabIndex to the accessibility tree element to enable screen reader browse mode (#3572) via @Tyriar
- Fix keystroke being ignored on US intl keyboard layouts after entering quotes (#3574) via @Tyriar
- Take terminal padding into account when determining link area (#3580) via @Tyriar
- Don't include trailing EOL when selecting multiple lines that end at the right edge (#3583) via @Tyriar
📝 Documentation and internal improvements
- Fix issues reported by the putout linter (#3538) via @coderaiser
- Fix unexpected error in incremental compiles (#3560) via @silamon
- Mark
IKeyboardEvent.keyCode
as deprecated (#3582) via @Tyriar - Improve debug logging of parsing data to include a character code array (#3588) via @Tyriar
🎉 New real-world use cases
- Tess (update) (#3577) via @SquitchYT
📥 Addons
xterm-addon-search
xterm-addon-web-links
xterm-addon-webgl
- Fix wide character overflow behavior (#3554) via @acid-chicken
🤝 Compatible addon versions
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
xterm-addon-unicode11@...
[email protected]
[email protected]
🌐 Website
- Fix a typo (xtermjs/xtermjs.org#166) via @BD103
4.15.0
🚀 Features
- Add support for focus reporting mode (#3506) via @Tyriar
- Improve text alignment by setting text baseline conditionally by browser (#3370) via @dstein64
📦 API
- Add API to clear canvas renderer texture atlas (#3481) via @Tyriar
- Expose typed options via
terminal.options
(#3448) via @silamon
🐞 Bug fixes
- Check type of cols & rows before resizing (#3532) via @jeffg2k
- Maintain scrollbar visibility when width changes (#3504) via @yume-chain
- Properly stop default browser scroll action via (#3518) via @jerch
- Support text cursor enable mode in the DOM renderer (#3503) via @jerch
📝 Documentation and internal improvements
- Improve
InputHandler
tests (#3523) via @jerch - Improve deserialize documentation (#3512) via @Tyriar
- Add Mocha Test Explorer to devcontainer (#3479) via @silamon
- Update npmignore files (#3476) via @silamon
⚠️ Deprecations
Use term.options
over term.setOption
/getOption
:
// before
term.setOption('rendererType', 'dom');
// after
term.options.rendererType = 'dom';
🎉 New real-world use cases
- goormIDE (#3495) via @MyunghoBae
- FleetDeck (#3484) via @JohanKnutzen
📥 Addons
xterm-addon-serialize
- Support strikethrough (#3480) via @silamon
- Enable granularity in what gets serialized (#3473) via @Tyriar
xterm-addon-webgl
- Fix cursor blink for webgl (#3520) via @meganrogge @Tyriar
🤝 Compatible addon versions
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
🌐 Website
Pull from https://github.com/xtermjs/xtermjs.org/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aclosed
4.14.1
4.14.0
🚀 Features
- Pixel perfect box drawing and block characters (#3416, #3428) via @meganrogge, @Tyriar
xterm-headless
is a new package available on npm that allows xterm to run in a headless mode within node.js (#3212, #3214, #3413, #3414, #3420, #3421) via @Tyriar, @joyceerhl- New strikethrough style support and underline support in the WebGL renderer (#3343, #3384, #3386, #3387) via @silamon, @Tyriar
- The scroll bar is now hidden when the scrollback option is set to 0 (#3398) via @Puneethnaik
📦 API
- The new readonly
modes
API exposes the terminal's internal modes (#3418) via @Tyriar. These are used for example in the xterm-addon-serialize to enable mode serialization.if (terminal.modes.applicationCursorKeysMode) { // DECCKM is enabled (CSI ? 1 h) }
🐞 Bug fixes
- Fix issue where scrollbar would be visible after clearing the scrollback with an escape sequence (#3372) via @Puneethnaik
- Fix cursor ghosting in canvas and webgl renderer when device pixel ratio is not 1 (#3392, #3393) via @Tyriar
- Fixed the cursor blink component not being property disposed of (#3403) via @Eugeny
- Remove role=document from terminal element (#3419) via @Tyriar
- Ensure underscore glyphs remain within the cell bounds (#3426) via @Tyriar
- Handle input from macOS and Windows emoji IMEs (#3429) via @Eugeny
- Properly handle dead keys and altgr (#3430, #3432, #3437) via @Eugeny
- Fix parser throughput regressions which should improve throughput approximately 2-3x (#3452) via @Tyriar
- Don't break the terminal when undefined is passed into the Terminal ctor explicitly (#3453) via @silamon
📝 Documentation and internal improvements
- The screen reader mode now gets updated at most once per second to avoid layout thrashing (#3399) via @pattch
- Fix some eslint errors in test code (#3415) via @Tyriar
- Improve demo usability by moving options into a side panel (#3439, #3447) via @simran916
- Use a common function to launch the test playwright browser (#3444) via @daiyam
- Allow running specific tests and support VS Code's mocha test explorer extension (#3445) via @daiyam
- Add a simple load test to the demo (#3451) via @Tyriar
- Reduce playwright test flakiness (#3458) via @Tyriar
- Switch the active unicode version in the demo when the unicode11 addon is activated/deactivated (#3462) via @anirudh1713
🎉 New real-world use cases
- HashiCorp Nomad (#3407) via @DingoEatingFuzz
- TermPair and gdbgui (#3409) via @cs01
📥 Addons
xterm-addon-ligatures
- Fix
navigator
typing issues (#3371) via @LabhanshAgrawal
xterm-addon-search
xterm-addon-serialize
- Support for node via xterm-headless (#3421) via @Tyriar
- Serializing terminal modes is now supported (#3418) via @Tyriar
- Add missing repository key to package.json (#3431) via @Tyriar
xterm-addon-unicode11
xterm-addon-webgl
- Fix an exception when disposing of the webgl addon (#3454) via @meganrogge
🤝 Compatible addon versions
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
🌐 Website
- Improve run on Linux instructions (xtermjs/xtermjs.org#152) via @Tyriar
- The website now has a new demo on the home page which shows off more of xterm.js' functionality (xtermjs/xtermjs.org#153, xtermjs/xtermjs.org#155, xtermjs/xtermjs.org#156, xtermjs/xtermjs.org#158) via @Tyriar
4.13.0
🐞 Bug fixes
- Improve EOL handling (#2979, #3362) via @jerch
- Select all characters of a wrapped link (#3363) via @meganrogge
- Use IEvent from xterm (#3334) via @UziTech
📝 Documentation and internal improvements
- Remove Shellvault from README (#3366) via @angerson
- Upgrade to node v14 (#3344) via @silamon
- Improve linting (#2953) via @coderaiser
- Update local fonts query (#3337) via @LabhanshAgrawal
🎉 New real-world use cases
- Command line for everyone (#3345) via @tsadarsh
- Tess (#3352) via @SquitchYT
🤝 Compatible addon versions
4.12.0
🚀 Features
- Double click to select a word will now use link providers registered via the API (#3230) via @marvinthepa
- Support the ligatures addon with the DOM renderer (#3285) and WebGL renderer (#3286) via @Tyriar
📦 API
- Support async parser handlers (#3222, #3256, #3257, #3267) via @jerch. This enables for example custom parser handlers to defer heavy work to a worker thread. Note that this will block the terminal and you should generally stay away from this API unless it's a lot of work that would block the UI thread.
// Handle \x1b[<params>+Z using an asynchronous handler terminal.parser.registerCsiHandler({intermediates:'+', final: 'Z'}, async params => { await new Promise(res => setTimeout(res, 50)); return false; });
- Add
onBell
event API so embedders can handle the bell however they want (#3290, #3295) via @bmf-ribeiroterminal.onBell(() => customBellImpl());
🐞 Bug fixes
- Emit onScroll events when the user is scrolling (#3205, #3313) via @schrej, @Tyriar
- Fix an issue where some IMEs would not accept input (#3251) via @Python-37
- Don't pad powerline glyph textures and improve vertical alignment (#3279) via @Tyriar
- Test fixes (#3296) via @Tyriar
- Fix exception when playing bell before
open
is called (#3314) via @jeanp413 - Fix double click and drag up when selecting link provider word (#3318) via @meganrogge
- Make sure all rows get refreshed when typing (#3332) via @Tyriar
📝 Documentation and internal improvements
- Use RenderService.dimensions instead of CharSizeService for textarea position (#3169) via @kena0ki
- Lint codebase using putout (#3269) via @coderaiser
- Move scroll implementation to buffer service (#3277) via @meganrogge
- Improve lint rules (#3282) via @Tyriar
- Convert CharacterJoinerRegistry to a service (#3284) via @Tyriar
- Improve diagnostics when polling tests time out (#3294) via @Tyriar
- Start demo server before running integration tests (#3298) via @bmf-ribeiro
- Enable Windows integration tests (#3299) via @bmf-ribeiro
- Many improvements to readme (#3322) via @vladdoster
- Improve tasks.json (#3327) via @Tyriar
🎉 New real-world use cases
- gifcast (#3258) via @dstein64
- WizardWebssh, Wizard Assistant (#3291) via @whattheserver
📥 Addons
xterm-addon-ligatures
- Enable the use of ligatures outside of Electron by leveraging the
navigator.fonts
API (#3264) via @LabhanshAgrawal
xterm-addon-webgl
- Remove experimental node from readme (#3273) via @Tyriar
- Add onContextLoss API (#3276) via @meganrogge
🤝 Compatible addon versions
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
🌐 Website
4.11.0
🚀 Features
📦 API
- Add hover and leave callbacks for link providers (#3233) via @marvinthepa
🐞 Bug fixes
- Always resize characters on zoom (#3243) via @jeanp413
- Detect parent when open is called in a web component (#3239) via @hantatsang
📝 Documentation and internal improvements
🎉 New real-world use cases
📥 Addons
xterm-addon-serialize
xterm-addon-webgl
🤝 Compatible addon versions
4.10.0
🚀 Features
- Support OSC 4 ; c ; spec (#3163) via @slawekzachcial
📦 API
- New setting to disable the alt click to move cursor feature (#3181) via @awmottaz
new Terminal({ altClickMovesCursor: false });
🐞 Bug fixes
- Properly render when showing an element if the terminal was opened on a hidden element (#3089) via @UziTech
- Move role=document to xterm element (#3099) via @Tyriar
- Fix webgl addon publishing (#3100) via @Tyriar
- Fix a memory leak related to markers (#3114) via @jerch
- Support shadow root in focus calculation (#3170) via @blois
- Mark the row container as a role=list (#3172) via @KKoukiou
- Prevent cmd+shift+a to select all on macOS (#3187) via @chenjigeng
- Prevent input characters using IME from being duplicated (#3194) via @kena0ki
- Filter U+FEFF (BOM) when decoding input data (#3200) via @kena0ki
- Cache API buffer object, fixing a potential embedder memory leak when using the buffer API (#3203, #3204) via @meganrogge
- Fire onSelectionChange on empty selection (#3215, #3227) via @marvinthepa
- Fire onSelectionChange on right click select (#3219) via @marvinthepa
📝 Documentation and internal improvements
- Create TS projects for addon tests (#3086) via @Tyriar
- Upgrade to Playwright v1 (#3087) via @Tyriar
- Type in readme (#3113) via @zaataylor
- Fix lint issues from putout linter (#3133) via @coderaiser
- Fix exception in demo (#3136) via @kena0ki
- Upgrade to webpack 5 (#3161) via @nasrob
- Use Array.prototype.includes over indexOf (#3175) via @dsanders11
- Avoid innerHTML to become trusted types compliant (#3190) via @jrieken
- Freeze default ANSI colors to prevent accidental mutation (#3209) via @Nokel81
- Fix demo when launching via git bash (#3210) via @meganrogge
- Clean up parser handler interface (#3223) via @jerch
- Replace expect usage with assert (#3229) via @jerch
🎉 New real-world use cases
📥 Addons
xterm-addon-fit
xterm-addon-ligatures
xterm-addon-search
xterm-addon-serialize
🤝 Compatible addon versions
4.9.0
📦 API
- Add number support to
fontWeight
andfontWeightBold
options (#3062) via @IllusionMH, this now matches the types that the CSS style supports. - Support optional
dispose
function onILink
(#3073) via @Tyriar, this allows consumers to be notified when links are no longer needed which was difficult to observe before.
🐞 Bug fixes
- Fix renderer pausing when
Terminal.open
is called during an animation (#3008) via @andrew-schlackman - Use document role instead of list for the terminal (#3020) via @Tyriar
- Constructor options are now validated just like when using
setOption
(#3064) via @IllusionMH - Fix rendering of multi-line selection when only top row is visible (#3081) via @Tyriar
- Fix first/last line of selection sometimes not rendering with the canvas renderer (#3082) via @Tyriar
📝 Documentation and internal improvements
- Remove the no longer supported Dockerfile from the repo (#3026) via @Tyriar
- Update to TypeScript 4 (#3059) via @Tyriar
🛑 Breaking changes
getOption('fontWeight')
andgetOption('fontWeightBold')
now returnsstring | number
instead ofstring
:This change accepted as the impact on consumers should be minimal due to the low usage of the API.// before 4.9.0 const weight: string = term.getOption('fontWeight'); // after 4.9.0 const weight: string | number = term.getOption('fontWeight');
🎉 New real-world use cases
- Repl.it (#3021) via @sergeichestakov
- TeleType (#3040) via @akshaykmr
- Intervue (#3046) via @Intervue
📥 Addons
xterm-addon-serialize
xterm-addon-webgl
- Expose
WebglAddon.clearTextureAtlas
API (#3075) via @Tyriar, this is useful to completely clear the atlas when corruption may have happened (eg. when canvas textures are lost after system sleep/resume). - Fix rendering of multi-line selection when only top row is visible (#3081) via @Tyriar
🤝 Compatible addon versions
[email protected]
[email protected]
[email protected]
(this addon may have issues)[email protected]
[email protected]
[email protected]
[email protected]
[email protected]