Skip to content

Releases: xtermjs/xterm.js

3.7.0

08 Sep 09:40
27c3663
Compare
Choose a tag to compare

🆕 Features

🐞 Bug fixes

📝 Documentation and internal improvements

  • Prepare terminal for upcoming buffer improvements (#1632, #1647) via @jerch
  • Only sync viewport in an animation frame (#1607) via @Tyriar
  • Stop typescript from emitting output files in typings test (#1610) via @Tyriar
  • Enforce strict equality through tslint (#1628) via @princjef
  • Document addDisposableListener in the declaration file (#1644) via @Tyriar

🎉 New real-world use cases

  • Shellvault (#1634) via @angersson

3.6.0

11 Aug 02:32
86800d2
Compare
Choose a tag to compare

🆕 Features

  • Add experimental character joiner API, this will be used for eventual ligature support (#1460) via @princjef. You can view the current shape of the API here.
  • Allow DOM and canvas renderers to be switched at runtime (#1590) via @Tyriar

🐞 Bug fixes

  • Fix JS engine deoptimization in the parser (#1555) via @jerch
  • Fix exception related to links on wrapped lines (#1570) via @nikonso
  • Fix bug in the DOM renderer where column and row values were flipped (#1574) via @vincentwoo
  • Fix exception in parser (#1578) via @Tyriar
  • Make double click to select words word across wrapped lines (#1585) via @Tyriar
  • Do not scroll to bottom when device status is reported (#1586) via @Tyriar, @tylerl0706
  • Fix rendering issues with column selection (#1594) via @Tyriar
  • Fix exception in accessibility manager (#1597) via @Tyriar
  • Fix bold inverted text when using dynamic texture atlas (#1599) via @7PH

📝 Documentation and internal improvements

⚠️ Deprecations

  • Terminal.emit is being deprecated with no replacement, see #1505 for additional context (#1569) via @Tyriar

🎉 New real-world use cases

3.5.1

14 Jul 00:16
d2b3af5
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fix special characters not drawing correctly #1566

3.5.0

10 Jul 16:31
7c3bf3a
Compare
Choose a tag to compare

This was a 2 month release due to unavailability of some team members.

🆕 Features

  • The parser was rewritten, increasing ANSI compliance and boosting speed by about 30% (#1399) via @jerch

  • A fallback DOM-based renderer is now available (#1432, #1524) via @Tyriar. This is useful for machines that have rendering issues with canvas:

    var term = new Terminal({
        rendererType: "dom"
    });
  • Column selection is now supported on alt+click (#1538) via @vsinha
    image

🐞 Bug fixes

  • Prevent Safari from calling createImageBitmap as it's implemented but returns a rejection (#1469) via @tmpfs
  • Select entire wrapped line on triple click (#1486) via @Tyriar
  • Explicitly mark event listneers as not passive (#1495) via @nikonso
  • Prevent mouse mode events from being sent when mouse mode is exited while the mouse is down (#1503) via @Tyriar
  • Prevent NPE on beginFrame call (#1512) via @Tyriar
  • Redraw the screen after drawBoldTextInBrightColors changes (#1513) via @Tyriar
  • Track character attributes when using save/restore cursor sequences (#1522) via @7PH
  • Ensure all references are released when Terminal.dispose is called, preventing memory leaks (#1525) via @Tyriar
  • Don't hide cursor when reset is triggered (#1535) via @7PH
  • Tracked the selection render state correctly (#1543) via @nikonso

📝 Documentation and internal improvements

xtermjs.org

🛑 Breaking changes

  • Since column selection is now the default for alt+click, on macOS there is a new setting to allow forcing of selection within mouse mode:

    var term = new Terminal({
        macOptionClickForcesSelection: true
    });

🎉 New real-world use cases

3.4.1

21 May 16:31
5364253
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fix "ghosting" rendering issue when using the static char atlas (#1463) via @Tyriar

3.4.0

19 May 15:24
0ad1080
Compare
Choose a tag to compare

🆕 Features

  • Added an experimental LRU-based dynamic texture atlas, this should improve both start up and overall performance when used (#1327) via @bgw. You can turn it on using the experimentalCharAtlas option in the Terminal constructor:

    const term = new Terminal({
      experimentalCharAtlas: 'dynamic'
    });
  • Improved web font support is available through the external addon xterm-webfont (#1164, #1390) via @vincentwoo

  • Added the drawBoldTextInBrightColors option to allow bold colors not to use the bright colors (#1391) via @LinusU

  • Added support for italic text (#1422) via @flybayer

🐞 Bug fixes

  • Fix a memory leak where Terminal resources were not being released after destroy/dispose was called (#1372) via @Tyriar, @hansonw
  • Don't ship the zmodem demo in the npm module (#1376) via @Tyriar
  • Don't ship test files in the npm module (#1417) via @pro-src
  • Prevent NPE when Terminal.setOption is called before Terminal.open (#1384) via @Tyriar
  • Prevent NPE when Terminal.resize is called before Terminal.open (#1385) via @johnpoth
  • Fix an exception that could happen when clicking in the terminal (#1401) via @npezza93
  • Ensure the link pointer cursor shows up when in application mode (#1446) via @Tyriar

⚠️ Deprecations

  • Terminal.destroy() is now deprecated, use Terminal.dispose():

    // v3.3
    term.destroy();
    
    // v3.4
    term.dispose();

📝 Documentation and internal improvements

  • Made the linter more strict and apply to more files (#1365, #1374, #1404, #1407, #1433) via @Tyriar
  • Remove some unused code (#1369, #1375, #1377) via @Tyriar
  • Separate foreground and background render passes (#1393) via @bgw
  • Boosted performance by minimizing the use of getters in performance critical code (#1403) via @jerch
  • Reduce the number of draws by batching background draws together (#1413) via @bgw
  • Use hex instead of octal escapes in the readme (#1420) via @pro-src
  • Call save and restore correctly on the context when drawing text (#1442) via @bgw
  • Improve import addon documentation in the README (#1444) via @pengx17
  • Fix build error related to @types/node (#1445) via @pro-src
  • Update tagline in demo (#1450) via @Tyriar
  • Update coveralls badge (#1452) via @Tyriar

🎉 New real-world use cases

3.3.0

11 Apr 16:29
048b10e
Compare
Choose a tag to compare

We have recently welcomed @bgw as a maintainer on the project due to his significant contributions around improving the character texture atlas and refactoring work.

🆕 Features

  • Use of the mouse wheel in the alt buffer will be translated into arrow events, enabling scrolling in applications like vim (#1310) via @Tyriar
  • Handle blob data in the attach addon (#1355) via @AlexandrePetit-Pas

🆕 API

For the latest version of the API, check the typings file for the version you're interested in.

  • Added a new experimental "Markers" API (#1338) via @Tyriar, this allows tracking specific lines within the terminal. This is needed as line indexes are insufficient since the terminal can trim lines from the top of the scrollback buffer and lines within the viewport can change.

    export interface IMarker extends IDisposable {
      readonly id: number;
      readonly isDisposed: boolean;
      readonly line: number;
    }
    
    export class Terminal {
      /**
       * (EXPERIMENTAL) Get all markers registered against the buffer. If the alt
       * buffer is active this will always return [].
       */
      markers: IMarker[];
    
      /**
       * (EXPERIMENTAL) Adds a marker to the normal buffer and returns it. If the
       * alt buffer is active, undefined is returned.
       * @param cursorYOffset The y position offset of the marker from the cursor.
       */
      addMarker(cursorYOffset: number): IMarker;
    }

    Any feedback on this API would be appreciated as it's not set in stone.

  • Added an API to select a range of lines (#1338) via @Tyriar:

    /**
     * Selects text in the buffer between 2 lines.
     * @param start The 0-based line index to select from (inclusive).
     * @param end The 0-based line index to select to (inclusive).
     */
    selectLines(start: number, end: number): void;
  • Added an API to scroll to a particular line (#1338) via @Tyriar:

    /**
     * Scrolls to a line within the buffer.
     * @param line The 0-based line index to scroll to.
     */
    scrollToLine(line: number): void;

🐞 Bug fixes

  • Theme colors are now validated and color names such as lime and red are now accepted (#1293) via @nikonso
  • Improve handling of transparent theme colors and allow additional formats such as #RGB (#1346) via @bgw
  • Pasting new lines on non-Windows are now normalized to \r, just like on Windows (#1296) via @olsonpm
  • Multi-line links should now work (#1303) via @Tyriar, there are still issues when you resize the terminal after a line has printed which will be resolved when reflow is implemented (#622)
  • Do not mutate options object used in the Terminal constructor (#1326) via @LucianBuzzo
  • Fix terminal when it's container specifies a rtl text layout (#1350) via @FGasper
  • Prevent falsy write values (#1366) via @Tyriar
  • Fix exception when Terminal.reset is called before Terminal.open) is called (#1381) via @Tyriar

📝 Documentation and internal improvements

  • Refactors for the character texture atlas (#1307) via @bgw
  • Always check whether the character texture atlas needs to be refreshed, regardless of whether we think character size has changed or not (#1308) via @bgw
  • Reduce duplication of interfaces around the character texture atlas (#1317) via @bgw
  • Add note about stance on shipping third party dependencies (#1332) via @Tyriar
  • Reduce use of inline styles (#1336) via @mareklibra
  • Several debt/lint related items (#1315, #1316, #1318, #1320, #1329, #1340, #1344) via @Tyriar

🎉 New real-world use cases

3.2.0

08 Mar 09:04
606c68d
Compare
Choose a tag to compare

🆕 Features

  • Screen reader support (#1182) via @Tyriar
  • alt+ctrl+{key} and alt+shift+{key} is now sent to be handled by the process (#1231) via @saamalik

🆕 API

  • Screen reader support can be turned on/off with the screenReaderMode option. This is disabled by default as it adds additional perf overhead (#1182) via @Tyriar
  • Web link support is now activated by loading the webLinks addon and calling webLinksInit (#1298) via @Tyriar

🐞 Bug fixes

  • Fix exception when resizing the terminal instance before open is called (#1280) via @AndrienkoAleksandr
  • Fix terminal screen overlaying scroll bar (#1288) via @dgriffen
  • Fix exception when double clicking scroll bar (#1290) via @Tyriar
  • Only move horizontally when alt clicking in the normal buffer (#1309) via @Tyriar

📝 Documentation and internal improvements

  • The web audio API is now used for the bell sound (#1200) via @nikonso
  • Add typings for the cols and rows options (#1302) via @nikonso
  • Add xterm.js Docker image to documentation (#1313) via @parisk

🛑️ Breaking changes

  • Bell support has been dropped in IE11 (#1200)

🎉 New real-world use cases

3.1.0

09 Feb 13:07
1dbe7b3
Compare
Choose a tag to compare

🆕 Features

  • Alt+click to move cursor (#896) via @npezza93
  • Select word on right click, defaults to true for macOS (#1114) via @nikonso
  • Support setting fontWeight and fontWeightBold (#1119, #1208) via @nikonso
  • Pause rendering automatically when terminal is offscreen or hidden (#1144) via @Tyriar
  • Ship automatically generates typings for addons (#1197) via @jsmecham - blink1073
  • Support setting terminal padding via CSS, where the scroll bar remains in the outer, padded area (#1208) via @mofux
  • Support translating option to meta on macOS (#1225, #1228) via @saamalik
  • Support transparent background via explicit setting (#1236) via @chabou

🆕 API

  • New settings
  • Setting padding on Terminal.element is now supported (#1208) via @mofux

🐞 Bug fixes

  • Correctly reset parser state for certain escape sequences (#1137) via @damz
  • Use the normal cursor not text cursor when mousing over the scroll bar (#1142) via @Tyriar
  • Fix a null pointer exception when selecting to the bottom of the buffer (#1168) via @Tyriar
  • Fix character texture atlas becoming corrupted when switching monitors with different DPI (#1172) via @Tyriar
  • Enable alt+backspace to delete a word on most shells (#1180) via @Tyriar
  • Fix issues with resizing the terminal (#1206) via @amejia1
  • Fix search addon for lines with emojis and wide chars (#1211) via @Tyriar
  • Fix cursor lagging behind when blink is on (#1217) via @Tyriar
  • Fix links sometimes not correctly activating until scroll (#1234) via @Tyriar
  • Prevent a crash that could happen after resizing the alt buffer (#1235) via @Tyriar
  • Fix context menu paste in Firefox on Windows (#1253) via @sitzmar
  • Change an id to a class that could occur multiple times (#1256) via @Tyriar, @zxdong262
  • Prevent terminal occasionally scrolling to top when hiding (#1266) via @Tyriar

⚠️ Deprecations

  • The setting enableBold is now deprecated in favor of fontWeight and fontWeightBold which can be used to achieve the same result:

    // v3.0
    term.setOption('enableBold', false);
    
    // v3.1
    term.setOption('fontWeightBold', 'normal');

📝 Documentation and internal improvements

🎉 New real-world use cases

❓ Experimental changes

  • Allow the use of modifiers in the experimental link matcher API (#1264) via @Tyriar

3.0.2

16 Jan 17:24
fe30197
Compare
Choose a tag to compare
  • #1199: Make addons UMD/require.js compatible via @ficristo
  • #1210: Ensure cursor blink state is correct when set on the Terminal constructor