Skip to content

Releases: xtermjs/xterm.js

4.16.0

22 Dec 19:00
10e4d07
Compare
Choose a tag to compare

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


📥 Addons

xterm-addon-search

  • Fix length calculation of wide unicode characters (#3236) via @gera2ld

xterm-addon-web-links

xterm-addon-webgl

🤝 Compatible addon versions


🌐 Website

4.15.0

05 Nov 18:11
e40cf80
Compare
Choose a tag to compare

🚀 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

⚠️ Deprecations

Use term.options over term.setOption/getOption:

// before
term.setOption('rendererType', 'dom');

// after
term.options.rendererType = 'dom';

🎉 New real-world use cases


📥 Addons

xterm-addon-serialize

xterm-addon-webgl

🤝 Compatible addon versions


🌐 Website

Pull from https://github.com/xtermjs/xtermjs.org/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aclosed

4.14.1

10 Sep 17:03
d32c6db
Compare
Choose a tag to compare

🐞 Bug fixes

4.14.0

09 Sep 14:09
cdaea7b
Compare
Choose a tag to compare

🚀 Features

📦 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


📥 Addons

xterm-addon-ligatures

xterm-addon-search

  • \ is now correctly treated as a non-word character (#3405) via @alur

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

🤝 Compatible addon versions


🌐 Website

4.13.0

11 Jun 21:17
a11ba0a
Compare
Choose a tag to compare

🐞 Bug fixes

📝 Documentation and internal improvements

🎉 New real-world use cases


🤝 Compatible addon versions

4.12.0

11 May 14:24
24f431b
Compare
Choose a tag to compare

🚀 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-ribeiro
    terminal.onBell(() => customBellImpl());

🐞 Bug fixes

📝 Documentation and internal improvements

🎉 New real-world use cases


📥 Addons

xterm-addon-ligatures

  • Enable the use of ligatures outside of Electron by leveraging the navigator.fonts API (#3264) via @LabhanshAgrawal

xterm-addon-webgl

🤝 Compatible addon versions


🌐 Website

  • Add async parser handlers section (#137) via @jerch

4.11.0

09 Mar 18:39
ee88fca
Compare
Choose a tag to compare

🚀 Features

📦 API

🐞 Bug fixes

📝 Documentation and internal improvements

🎉 New real-world use cases

📥 Addons

xterm-addon-serialize

xterm-addon-webgl

  • Properly render when resizing or writing if a selection exists (#3232) via @jeanp413

🤝 Compatible addon versions

4.10.0

29 Jan 17:40
4b29b8a
Compare
Choose a tag to compare

🚀 Features

📦 API

  • New setting to disable the alt click to move cursor feature (#3181) via @awmottaz
    new Terminal({
      altClickMovesCursor: false
    });

🐞 Bug fixes

📝 Documentation and internal improvements

🎉 New real-world use cases


📥 Addons

xterm-addon-fit

  • Fix exception related to proposing infinite dimensions (#3088) via @UziTech

xterm-addon-ligatures

xterm-addon-search

  • Fix the selection not expanding to the left when appropriate (#3125) via @kena0ki

xterm-addon-serialize

🤝 Compatible addon versions

4.9.0

08 Sep 23:56
3504e2e
Compare
Choose a tag to compare

📦 API

  • Add number support to fontWeight and fontWeightBold options (#3062) via @IllusionMH, this now matches the types that the CSS style supports.
  • Support optional dispose function on ILink (#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') and getOption('fontWeightBold') now returns string | number instead of string:
    // before 4.9.0
    const weight: string = term.getOption('fontWeight');
    
    // after 4.9.0
    const weight: string | number = term.getOption('fontWeight');
    This change accepted as the impact on consumers should be minimal due to the low usage of the API.

🎉 New real-world use cases


📥 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

4.8.1

10 Jul 20:24
eeb095b
Compare
Choose a tag to compare

🐞 Bug fixes