Releases: xtermjs/xterm.js
3.7.0
🆕 Features
- Add support for the "Not italic" escape code,
\x1B[23m
(#1613) via @shroudedcode - Draw link underlines in the color of the linked text (#1626) via @peacefullatom
🐞 Bug fixes
- Fix incorrect reference in the attach addon (#1619) via @meefik
- Avoid unnecessary line redraws (#1622, #1624) via @princjef, @Tyriar
- Fix crosshair cursor not going away after hitting alt+tab (#1636) via @peacefullatom
- Fix the
convertEol
option not applying viasetOption
(#1645) via @jerch
📝 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
🆕 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
- Better surface API documentation in the README (#1556) via @Tyriar
- Move developer documentation to wiki (#1558) via @Tyriar
- Use yarn (#1563) via @Tyriar
- Remove Travis.CI (#1564, #1598) via @Tyriar
- Add clarifying note about how experimental APIs work (#1581) via @Tyriar
- Remove jsdoc types (#1583) via @Tyriar
- Use constants for null cell values (#1588) via @Tyriar
- Fix sourcemaps in the demo (#1601) via @segevfiner
⚠️ 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
3.5.0
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
🐞 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
- Several improvements to the npm test scripts (#1388) via @Tyriar
- Add more naming conventions to linter (#1421) via @Tyriar
- Added VSTS build badge (#1457) via @Tyriar
- Performance improvements to adding characters to the buffer (#1466) via @jerch
- Correct lib values in tsconfig (#1472) via @Tyriar
- Support incremental xterm.js builds (#1474) via @Tyriar
- Replace let with const where possible (#1477) via @lgeiger
- Clean up TS references (#1483) via @AndrienkoAleksandr
- Add readme for fit addon (#1485) via @Tyriar
- Enable noImplicitAny TS compiler option (#1487) via @Tyriar
- Improve demo to show all options in a nice way (#1488) via @Tyriar
- Fix npm start on Windows (#1489) via @nikonso
- Fix demo string options (#1490) via @nikonso
- Fix typo in README (#1491) via @pro-src
- Fix copyright line breaks (#1497) via @Tyriar
- Add a code of conduct (#1500) via @Tyriar
- Add more granular github issue templates (#1501) via @Tyriar
- Start of code layering improvements (#1508) via @Tyriar
- Pin node-pty to 0.7.6 (#1531) via @Tyriar
- Allow the terminal to be recreated after disposing the terminal in the demo (#1542) via @nikonso
- Fix typo in function name (#1537) via @Tyriar
- Remove old parser code (#1547) via @Tyriar
xtermjs.org
- Generate docs using typedoc (xtermjs/xtermjs.org#44) via @pro-src
- Validate links in generated docs (xtermjs/xtermjs.org#46) via @pro-src
- Synchronize site with xterm.js README (xtermjs/xtermjs.org#49) via @pro-src
- Update terminado guide for new addon API (xtermjs/xtermjs.org#50) via @pro-src
- Move real world uses section below getting started (xtermjs/xtermjs.org#55) via @pro-src
- Add favicon (xtermjs/xtermjs.org#56) via @pro-src
🛑 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
- GoTTY (#1475) via @cathy-zhao
- genact (#1494) via @svenstaro
- cPanel & WHM (#1510) via @FGasper
- Nutanix (#1517) via @JonKohler
3.4.1
3.4.0
🆕 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 theTerminal
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
🐞 Bug fixes
- Fix a memory leak where
Terminal
resources were not being released afterdestroy
/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 beforeTerminal.open
(#1384) via @Tyriar - Prevent NPE when
Terminal.resize
is called beforeTerminal.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, useTerminal.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
- Hyper (#1299) via @jonaustin
- diag.ai (#1438) via @ledbit
3.3.0
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
andred
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 beforeTerminal.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
🆕 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 callingwebLinksInit
(#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
androws
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
- FreeMAN (#1282) via @matthew-matvei
3.1.0
🆕 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
🐞 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 offontWeight
andfontWeightBold
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
- Remove repo redirect in package.json (#1188) via @Tyriar
- Set master package.json version to x.y.z-master (#1192) via @Tyriar
- Refactor char atlas generation to enable generation with web worker in the future (#1198) via @Tyriar
- tslint improvements/refactors (#1214, #1249) via @Tyriar
- Remove OSX from TravisCI (#1218) via @Tyriar
- Refactors to reduce duplication of interfaces and increase type checking (#1222, #1224, #1227) via @Tyriar
- Remove legacy .gitignore rules (#1244) via @Tyriar
- Run tsc as a TravisCI job (#1258) via @Tyriar
- Upgrade to TypeScript 2.7 (#1263) via @Tyriar
- Fix getting started steps in README (#1271) via @krasimir
- Add watch gulp task (#1273) via @parisk
🎉 New real-world use cases
- electerm (#1177) via @zxdong262
- Kubebox (#1191) via @astefanutti
- Azure Cloud Shell (#1205) via @jluk
- atom-xterm (#1207) via @amejia1
- rtty (#1223) via @zhaojh329
- Pisth (#1229) via @ColdGrub1384
- AbstruseCI (#1230) via @jkuri
- SQL Operations Studio (#1250) via @Tyriar