diff --git a/.eslintrc.json b/.eslintrc.json index 8c475982..acd85af6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,6 +23,8 @@ "addons/addon-image/src/tsconfig.json", "addons/addon-image/test/tsconfig.json", "addons/addon-ligatures/src/tsconfig.json", + "addons/addon-progress/src/tsconfig.json", + "addons/addon-progress/test/tsconfig.json", "addons/addon-search/src/tsconfig.json", "addons/addon-search/test/tsconfig.json", "addons/addon-serialize/src/tsconfig.json", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2f39e6b..43dae881 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,6 +44,9 @@ jobs: ./addons/addon-ligatures/lib/* \ ./addons/addon-ligatures/out/* \ ./addons/addon-ligatures/out-*/* \ + ./addons/addon-progress/lib/* \ + ./addons/addon-progress/out/* \ + ./addons/addon-progress/out-*/* \ ./addons/addon-search/lib/* \ ./addons/addon-search/out/* \ ./addons/addon-search/out-*/* \ @@ -63,7 +66,7 @@ jobs: ./addons/addon-webgl/out/* \ ./addons/addon-webgl/out-*st/* - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: build-artifacts path: compressed-build.zip @@ -105,7 +108,7 @@ jobs: run: | yarn --frozen-lockfile yarn install-addons - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: build-artifacts - name: Unzip artifacts @@ -147,7 +150,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} job: build - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: build-artifacts - name: Unzip artifacts @@ -167,9 +170,9 @@ jobs: strategy: matrix: node-version: [18] # just one as integration tests are about testing in browser - runs-on: [ubuntu] # macos is flaky + runs-on: [ubuntu-22.04] # macos is flaky browser: [chromium, firefox, webkit] - runs-on: ${{ matrix.runs-on }}-latest + runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }}.x @@ -188,7 +191,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} job: build - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: build-artifacts - name: Unzip artifacts @@ -212,6 +215,8 @@ jobs: run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-fit - name: Integration tests (addon-image) run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-image + - name: Integration tests (addon-progress) + run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-progress - name: Integration tests (addon-search) run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-search - name: Integration tests (addon-serialize) @@ -244,7 +249,7 @@ jobs: yarn install-addons - name: Install playwright run: npx playwright install - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: build-artifacts - name: Unzip artifacts diff --git a/README.md b/README.md index 39b7b52e..130219ec 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,9 @@ 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). +- [**ecmaOS**](https://ecmaos.sh): A kernel and suite of applications tying modern web technologies into a browser-based operating system. +- [**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. 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 { /** 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 || [ '<--', '<---', '<<-', '<-', '->', '->>', '-->', '--->', '<==', '<===', '<<=', '<=', '=>', '=>>', '==>', '===>', '>=', '>>=', - '<->', '<-->', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '-------->', - '<~~', '<~', '~>', '~~>', '::', ':::', '==', '!=', '===', '!==', - ':=', ':-', ':+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+:', '-:', '=:', ':>', - '++', '+++', '', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '::', ':::', + '<~~', '', '/>', '~~>', '==', '!=', '/=', '~=', '<>', '===', '!==', '!===', + '<:', ':=', '*=', '*+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+*', '=*', '=:', ':>', + '/*', '*/', '+++', ' ---> * <== <=== <<= <= => =>> ==> ===> >= >>= - * <-> <--> <---> <----> <=> <==> <===> <====> --------> - * <~~ <~ ~> ~~> :: ::: == != === !== - * := :- :+ <* <*> *> <| <|> |> +: -: =: :> - * ++ +++ <---> <----> <=> <==> <===> <====> :: ::: + * <~~ /> ~~> == != /= ~= <> === !== !=== + * <: := *= *+ <* <*> *> <| <|> |> +* =* =: :> + * /* +++ ---> ->- >- >>-', + '=<< =< =<= <== <=== <<= <= => =>> ==> ===> =>= >= >>=', + '<-> <--> <---> <----> <=> <==> <===> <====> :: ::: __', + '<~~ /> ~~> == != /= ~= <> === !== !=== =/= =!=', + '<: := *= *+ <* <*> *> <| <|> |> <. <.> .> +* =* =: :>', + '(* *) /* */ [| |] {| |} ++ +++ \/ /\ |- -|