From 932b65ef6779bf818f13d33a24f291da61feb02f Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Tue, 22 Oct 2024 14:46:43 +0100 Subject: [PATCH 01/13] Add pyTermTk HTML5 Exporter project to Real-world uses --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 39b7b52e..ede1b97e 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,7 @@ Xterm.js is used in several world-class applications to provide great terminal e - [**OpenSFTP**](https://opensftp.com): Super beautiful SSH and SFTP integrated workspace client. - [**balena**](https://www.balena.io/): Balena is a full-stack solution for developing, deploying, updating, and troubleshooting IoT Edge devices. We use xterm.js to manage & debug devices on [balenaCloud](https://www.balena.io/cloud). - [**Filet Cloud**](https://github.com/fuglaro/filet-cloud): The lean and powerful personal cloud ⛅. +- [**pyTermTk**](https://github.com/ceccopierangiolieugenio/pyTermTk): Python Terminal Toolkit - a Spiced Up Cross Compatible TUI Library 🌶️, use xterm.js for the [HTML5 exporter](https://ceccopierangiolieugenio.github.io/pyTermTk/sandbox/sandbox.html). - [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D) Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only. From 9e1d5ba7db595e24db28b9e4d8a362f44ed53a5d Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Mon, 11 Nov 2024 18:57:03 -0800 Subject: [PATCH 02/13] chore(addons/fit): fix typo Reprepresents -> Represents --- addons/addon-fit/typings/addon-fit.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/addon-fit/typings/addon-fit.d.ts b/addons/addon-fit/typings/addon-fit.d.ts index e3d20e29..784b55d1 100644 --- a/addons/addon-fit/typings/addon-fit.d.ts +++ b/addons/addon-fit/typings/addon-fit.d.ts @@ -39,7 +39,7 @@ declare module '@xterm/addon-fit' { } /** - * Reprepresents the dimensions of a terminal. + * Represents the dimensions of a terminal. */ export interface ITerminalDimensions { /** From 8d23cbc05196be32017c103171deb0e77400ccc0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 22:41:31 +0000 Subject: [PATCH 03/13] Bump cross-spawn from 7.0.3 to 7.0.6 Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6. - [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md) - [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6) --- updated-dependencies: - dependency-name: cross-spawn dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 777abc0a..5ed534e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1669,9 +1669,9 @@ cross-env@^7.0.3: cross-spawn "^7.0.1" cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" From 9c66ad11399cc362dcc94e7f131bbb0f9555ba72 Mon Sep 17 00:00:00 2001 From: JackieL Date: Tue, 19 Nov 2024 14:58:32 +0800 Subject: [PATCH 04/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 39b7b52e..5102c69d 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,7 @@ Xterm.js is used in several world-class applications to provide great terminal e - [**OpenSFTP**](https://opensftp.com): Super beautiful SSH and SFTP integrated workspace client. - [**balena**](https://www.balena.io/): Balena is a full-stack solution for developing, deploying, updating, and troubleshooting IoT Edge devices. We use xterm.js to manage & debug devices on [balenaCloud](https://www.balena.io/cloud). - [**Filet Cloud**](https://github.com/fuglaro/filet-cloud): The lean and powerful personal cloud ⛅. +- [**LabEx**](https://labex.io): LabEx: Interactive learning platform with hands-on labs and xterm.js-based online terminals, focused on learn-by-doing approach. - [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D) Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only. From db621d7294866ed75fe0066b7bdab1df61c11f9a Mon Sep 17 00:00:00 2001 From: JackieL Date: Tue, 19 Nov 2024 14:59:53 +0800 Subject: [PATCH 05/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5102c69d..7883f870 100644 --- a/README.md +++ b/README.md @@ -226,7 +226,7 @@ Xterm.js is used in several world-class applications to provide great terminal e - [**OpenSFTP**](https://opensftp.com): Super beautiful SSH and SFTP integrated workspace client. - [**balena**](https://www.balena.io/): Balena is a full-stack solution for developing, deploying, updating, and troubleshooting IoT Edge devices. We use xterm.js to manage & debug devices on [balenaCloud](https://www.balena.io/cloud). - [**Filet Cloud**](https://github.com/fuglaro/filet-cloud): The lean and powerful personal cloud ⛅. -- [**LabEx**](https://labex.io): LabEx: Interactive learning platform with hands-on labs and xterm.js-based online terminals, focused on learn-by-doing approach. +- [**LabEx**](https://labex.io): Interactive learning platform with hands-on labs and xterm.js-based online terminals, focused on learn-by-doing approach. - [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D) Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only. From bc7288a38908231a2f1642706d84307abe511c9c Mon Sep 17 00:00:00 2001 From: Jay Mathis Date: Thu, 12 Dec 2024 21:40:46 -0600 Subject: [PATCH 06/13] Update README.md - add ecmaOS as Use Case --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 39b7b52e..fc2a6cea 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,7 @@ Xterm.js is used in several world-class applications to provide great terminal e - [**OpenSFTP**](https://opensftp.com): Super beautiful SSH and SFTP integrated workspace client. - [**balena**](https://www.balena.io/): Balena is a full-stack solution for developing, deploying, updating, and troubleshooting IoT Edge devices. We use xterm.js to manage & debug devices on [balenaCloud](https://www.balena.io/cloud). - [**Filet Cloud**](https://github.com/fuglaro/filet-cloud): The lean and powerful personal cloud ⛅. +- [**ecmaOS**](https://ecmaos.sh): A kernel and suite of applications tying modern web technologies into a browser-based operating system. - [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D) Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only. From 9824230cafffe8483ba90d7f6f7969da2d342b11 Mon Sep 17 00:00:00 2001 From: Jacob Bandes-Storch Date: Tue, 17 Dec 2024 12:20:55 -0800 Subject: [PATCH 07/13] Fix ReferenceError in publish.js --- bin/publish.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/publish.js b/bin/publish.js index 0a43b7c4..59771cd8 100644 --- a/bin/publish.js +++ b/bin/publish.js @@ -114,8 +114,7 @@ function checkAndPublishPackage(packageDir, repoCommit, peerDependencies) { stdio: 'inherit' }); if (result.status) { - error(`Spawn exited with code ${result.status}`); - process.exit(result.status); + throw new Error(`Spawn exited with code ${result.status}`); } return { isStableRelease, nextVersion }; From 0433fb8a4b03e778e184552be16e6a286f09f813 Mon Sep 17 00:00:00 2001 From: cweijan Date: Tue, 7 Jan 2025 22:57:40 +0800 Subject: [PATCH 08/13] Fixed CapsLock triggering input twice in MacOS. --- src/browser/input/CompositionHelper.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/browser/input/CompositionHelper.ts b/src/browser/input/CompositionHelper.ts index 9891709f..b87ebbea 100644 --- a/src/browser/input/CompositionHelper.ts +++ b/src/browser/input/CompositionHelper.ts @@ -93,7 +93,8 @@ export class CompositionHelper { */ public keydown(ev: KeyboardEvent): boolean { if (this._isComposing || this._isSendingComposition) { - if (ev.keyCode === 229) { + if (ev.keyCode === 20 || ev.keyCode === 229) { + // 20 is CapsLock, 229 is Enter // Continue composing if the keyCode is the "composition character" return false; } From 408d0995dddbe7b8e078cc68fb97d3f6166df7d0 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:26:15 -0800 Subject: [PATCH 09/13] Support detailed ligatures and variants Fixes #5284 --- addons/addon-ligatures/src/LigaturesAddon.ts | 13 +++++--- addons/addon-ligatures/src/Types.ts | 1 + .../typings/addon-ligatures.d.ts | 30 ++++++++++++------ addons/addon-webgl/src/GlyphRenderer.ts | 4 +-- demo/client.ts | 31 +++++++++++++++---- src/browser/renderer/shared/TextureAtlas.ts | 26 +++++++++++----- src/browser/renderer/shared/Types.ts | 4 +-- 7 files changed, 77 insertions(+), 32 deletions(-) diff --git a/addons/addon-ligatures/src/LigaturesAddon.ts b/addons/addon-ligatures/src/LigaturesAddon.ts index 47fbc323..2bde9cf6 100644 --- a/addons/addon-ligatures/src/LigaturesAddon.ts +++ b/addons/addon-ligatures/src/LigaturesAddon.ts @@ -15,19 +15,22 @@ export interface ITerminalAddon { export class LigaturesAddon implements ITerminalAddon , ILigaturesApi { private readonly _fallbackLigatures: string[]; + private readonly _fontFeatureSettings?: string; private _terminal: Terminal | undefined; private _characterJoinerId: number | undefined; constructor(options?: Partial) { + // Source: calt set from https://github.com/be5invis/Iosevka?tab=readme-ov-file#ligations this._fallbackLigatures = (options?.fallbackLigatures || [ '<--', '<---', '<<-', '<-', '->', '->>', '-->', '--->', '<==', '<===', '<<=', '<=', '=>', '=>>', '==>', '===>', '>=', '>>=', - '<->', '<-->', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '-------->', - '<~~', '<~', '~>', '~~>', '::', ':::', '==', '!=', '===', '!==', - ':=', ':-', ':+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+:', '-:', '=:', ':>', - '++', '+++', '', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '::', ':::', + '<~~', '', '/>', '~~>', '==', '!=', '/=', '~=', '<>', '===', '!==', '!===', + '<:', ':=', '*=', '*+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+*', '=*', '=:', ':>', + '/*', '*/', '+++', ' ---> * <== <=== <<= <= => =>> ==> ===> >= >>= - * <-> <--> <---> <----> <=> <==> <===> <====> --------> - * <~~ <~ ~> ~~> :: ::: == != === !== - * := :- :+ <* <*> *> <| <|> |> +: -: =: :> - * ++ +++ <---> <----> <=> <==> <===> <====> :: ::: + * <~~ /> ~~> == != /= ~= <> === !== !=== + * <: := *= *+ <* <*> *> <| <|> |> +* =* =: :> + * /* +++