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.optionsAPI (#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.keyCodeas 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 
InputHandlertests (#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-headlessis 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 
modesAPI 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 
navigatortyping 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
🤝 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 
onBellevent 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 
openis 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.fontsAPI (#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 
fontWeightandfontWeightBoldoptions (#3062) via @IllusionMH, this now matches the types that the CSS style supports. - Support optional 
disposefunction 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.openis 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 | numberinstead 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.clearTextureAtlasAPI (#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]