Xterm.js Versions Save

A terminal for the web

4.16.0

2 years ago

Make sure you update your xterm.css file if you have your own copy as there were some changes made there (https://github.com/xtermjs/xterm.js/issues/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

  • Fix length calculation of wide unicode characters (#3236) via @gera2ld
  • Add support for a custom web links regex (#3576) via @Heysunk

xterm-addon-webgl

  • Fix wide character overflow behavior (#3554) via @acid-chicken

🤝 Compatible addon versions


🌐 Website

4.15.0

2 years ago

🚀 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


🌐 Website

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

4.14.1

2 years ago

🐞 Bug fixes

  • Prevent double input when screen reader mode is enabled (#3467) via @Tyriar, @martinpitt

4.14.0

2 years ago

🚀 Features

  • Pixel perfect box drawing and block characters (#3416, #3428) via @meganrogge, @Tyriar image image
  • 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 image
  • 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
  • \ 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

  • Support for node via xterm-headless (#3421) via @Tyriar

xterm-addon-webgl

  • Fix an exception when disposing of the webgl addon (#3454) via @meganrogge

🤝 Compatible addon versions


🌐 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 image

4.13.0

2 years ago

🐞 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

3 years ago

🚀 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

  • 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


🌐 Website

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

4.11.0

3 years ago

🚀 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

  • Fix demo debugging (#3240) via @Tyriar

🎉 New real-world use cases

  • Add nxshell (#3244) via @nxshell

📥 Addons

xterm-addon-serialize

  • Improve typings (#3241) via @mmis1000
  • Restore layout and cursor (#3101) via @mmis1000

xterm-addon-webgl

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

🤝 Compatible addon versions

4.10.0

3 years ago

🚀 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

  • TRASA (#3116) via @bhrg3se
  • Commas (#3207) via @CyanSalt
  • Devtron (#3228) via @nishant-d

📥 Addons

xterm-addon-fit

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

xterm-addon-ligatures

  • Update font-finder version (#3188, #3213) via @UziTech
  • Fix the selection not expanding to the left when appropriate (#3125) via @kena0ki

xterm-addon-serialize

  • Fix the addon's benchmark (#3109) via @mmis1000

🤝 Compatible addon versions

4.9.0

3 years ago

📦 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

  • Repl.it (#3021) via @sergeichestakov
  • TeleType (#3040) via @akshaykmr
  • Intervue (#3046) via @Intervue

📥 Addons

xterm-addon-serialize

  • Fix CJK handling (#3067) via @mmis1000

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

3 years ago

🐞 Bug fixes

  • Fix console errors about passive handlers (#3005) via @Tyriar
  • Fix renderer not showing any text (#3006) via @Tyriar