Releases: xtermjs/xterm.js
2.4.0
In xterm.js 2.4 we are introducing a great new feature, improvements and fixes!
First off, let's start with what's new!
🆕 WebLinks
Now xterm.js will detect and WebLinks in the terminal's buffer and convert them to a
elements, which you can click to navigate to them (all link elements open in a new browser tab by default).
For more information on this take a look a the corresponding Pull Request: #538.
☣️ Experimental
The new built-in WebLinks mechanism is not just for "web links". We exposed a few experimental APIs that let you match custom link formats (e.g. local file paths) to make this suit your needs better. For more information take a look at the corresponding Pull Request: #538.
TIP: You can even register multiple link matchers and assign priorities.
🆕 Add-on API
Xterm.js now has a public API for importing and using it's add-ons. Check it out at http://xtermjs.org/docs/.
Improvements and fixes
- Send more accurate mouse coordinates (#556)
- Hide the internal CharMeasure element from assistive technologies (#557)
- Fix demo on Windows (#569 and #584)
- Make blink animation work even with non-white colored cursors (#545)
- Stop
fit
add-on from crashing, with a non-existent parent element (#544) - Fix "Autowrap Mode" after "Soft Terminal reset" (#541)
- Introduce testing with jsdom as part of the WebLinks feature (#571)
🆓 Bonus: Coverage stats via coveralls.io
OK, that's nothing special but now we can be easily aware about the testing coverage status of the repository and easily make sure to improve this rate as time passes: #565.
2.3.2
2.3.1
2.3.0
Xterm.js 2.3.0 is a big release with a lot of goodies, and some huge strides in performance. This gif demonstrates v2.2.0 vs 2.3.0:
Performance improvements
- A circular list is now used to manage the buffer, so any new rows that come in once the buffer is full will override rows. This reduces the time spent allocating space for arrays and garbage collecting (#422).
- Significantly reduce the amount of times the viewport is redrawn and use an animation frame to prevent skipping frames (#438).
- Introduced a new experimental option
useFlowControl
which will send the newly implementedXOFF
andXON
to the pty process to make sure it doesn't get too far ahead of xterm.js (#447). This makes sending signals to the running process far more responsive and prevents lock ups. Note that this option is disabled by default because the popular oh-my-zsh overrides ^S and ^Q by default (see #513). - Refactor the parser for performance (#462).
- Remove comments from the build artifacts (#485).
Features
- Make alt+←/→ on Mac skip words (#417).
- Add a
disableStdin
option that will completely disable all input handling (#453). - Add a
tabStopWidth
option to customize the size of tabs (#497) - Support flow control (
^S
forXOFF
,^Q
forXOFF
) (#447). - Support setting cursor style CSI control sequence (eg.
\e[3 q
for blinking underline) (#492). - Support British, Dutch, Finnish, French, French Canadian, German, Italian, Norwegian/Danish, Spanish, Swedish and Swiss VT100 character sets (#499).
Bug fixes
- Immediately synchronize the scroll bar when the alt buffer is switched in (#431).
- Size wide characters to exactly 2 character widths (#440).
- Apply
scrollback
andcursorBlink
options immediately after thesetOption
call (#477, #479) - Don't drop the selection when only a modifier key is pressed (#482).
- Fixed the scroll bar state breaking when resizing an invisible terminal (#495).
- Fixed tab stops not being refreshed correctly after a resize, this made the output of ls wrap incorrectly sometimes (#498).
- Align several control sequence behavior to act like xterm, see the issue for more details (#500).
- Fix exception when setting scroll region and calling eraseLeft/eraseRight (#514, #520).
- Fix issue when resizing hidden terminals with the fit addon (#525)
Internal improvements
- The migration to TypeScript is coming along nicely with the renderer, parser and majority of the input handling code being converted.
tslint
is also now run in continuous integration (#411). npm
script andpackage.json
improvements (#419, #402)- Improved the docker image (#403).
- Use
gulp
as the build system (#435). - Make the demo support Windows (#442).
- Fix many of the xterm tests (#500).
- Bundle top level js and json files in
npm
so xterm.js can be built after installing from npm (#502).
2.2.3
📢 Fixes issues with missing files in npm release after 2.2.2 (#414).
Xterm.js 2.2.0 is a generally uneventful release, except for the fact that we started 📢 migrating the code base to TypeScript.
- 📢 Started migrating the code base to TypeScript (#296, #353, #355, #370, #371, #372, #383, #392)
- Added ttyd to real-world uses 🎉 (#347)
- Documentation improvements for the
open
,scroll
andtitle
events (#351) - Implemented the
^\
string terminator (#377) - Further improvements in the scroll back feature introduced in 2.1.0 (#379, #367)
- Cleaned up license declaration in the documentation (#388)
- Fixed browser jumping issues when focusing on xterm (#391)
Bugfixes from 2.2.0
2.2.2
📢 Fixes issues with requiring xterm.js with Browserify and SystemJS after 2.2, when installed via NPM (#397, #412).
This was fixed in #398 by pointing the main
field of package.json
to the lib
directory, which is ignored by Git, but published to NPM.
Xterm.js 2.2.0 is a generally uneventful release, except for the fact that we started 📢 migrating the code base to TypeScript.
- 📢 Started migrating the code base to TypeScript (#296, #353, #355, #370, #371, #372, #383, #392)
- Added ttyd to real-world uses 🎉 (#347)
- Documentation improvements for the
open
,scroll
andtitle
events (#351) - Implemented the
^\
string terminator (#377) - Further improvements in the scroll back feature introduced in 2.1.0 (#379, #367)
- Cleaned up license declaration in the documentation (#388)
- Fixed browser jumping issues when focusing on xterm (#391)
Bugfixes from 2.2.0
2.2.1
📢 dist/addons
, instead of addons
. Please update the path you use to load add-ons in your applications accordingly 🙂 .
Xterm.js 2.2.0 is a generally uneventful release, except for the fact that we started 📢 migrating the code base to TypeScript.
- 📢 Started migrating the code base to TypeScript (#296, #353, #355, #370, #371, #372, #383, #392)
- Added ttyd to real-world uses 🎉 (#347)
- Documentation improvements for the
open
,scroll
andtitle
events (#351) - Implemented the
^\
string terminator (#377) - Further improvements in the scroll back feature introduced in 2.1.0 (#379, #367)
- Cleaned up license declaration in the documentation (#388)
- Fixed browser jumping issues when focusing on xterm (#391)
Bugfixes from 2.2.0
- Checkout addons in
dist/addons
(b76b2d0)
2.2.0
Xterm.js 2.2.0 is a generally uneventful release, except for the fact that we started 📢 migrating the code base to TypeScript.
- 📢 Started migrating the code base to TypeScript (#296, #353, #355, #370, #371, #372, #383, #392)
- Added ttyd to real-world uses 🎉 (#347)
- Documentation improvements for the
open
,scroll
andtitle
events (#351) - Implemented the
^\
string terminator (#377) - Further improvements in the scroll back feature introduced in 2.1.0 (#379, #367)
- Cleaned up license declaration in the documentation (#388)
- Fixed browser jumping issues when focusing on xterm (#391)
2.1.0
- 🆕 Scroll API (#308)
- 🆕 Terminado addon (#303)
- Multiple IME improvements (#323, #320, #301, #299)
- Stop scrolling when output is being rendered and viewport is scrolled up (#336)
- Fix addon loading (#304)
- Documented Terminal constructor (#321)
- Add
main
field inbower.json
(#337) - Fix right-click copy and paste in Mozilla and IE (#342, #345)
- Fix right-click error when no selection exists (#332)
- Fix paste in IE (#334)
- FIx copy in IE (#339)
2.0.1
🎉 We are excited to announce new major release: 2.0 🎉
Official announcement: http://xtermjs.org/blog/articles/2016-10-03-xtermjs-2.0
Major changes
- Xterm.js now is broken into multiple ES2015 modules and compiled with Babel (#251)
- 🆕 Introduced new website http://xtermjs.org/ with docs and blog
⚠️ API breakages
- Xterm.js should be loaded from the
dist
directory, where the built files reside, instead ofsrc
, where the unbuilt modules reside
Updates
- 🆕 API to set terminal options:
setOption
(#272) - 🆕 API to get terminal options:
getOption
(#282) - 🆕 API to clear terminal:
clear
(#276) - Fix scrolling in applications like Vim (#243)
- Better support for xterm function keys (#252)
- Better mouse support in terminal (#268)
- Support mouse wheel events in applications like Vim (#289)
- Fix right-click copy/paste regression introduced in 1.1.0 (#293)
Bugfixes from 2.0.0
- Checkout built files into repository (5ce522a)