Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency xterm to v5 #65

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 15, 2022

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
xterm 4.18.0 -> 5.3.0 age adoption passing confidence

Release Notes

xtermjs/xterm.js (xterm)

v5.3.0

Compare Source

🚀 Features

📦 API
  • There's a new trace log level (#​4687, 4709) via @​Tyriar
    const term = new Terminal({
        logLevel: 'trace'
    });
  • New logger delegate option (#​4563, #​4564) via @​Tyriar. This new API allows the embedder to define the logging behavior, instead of always using to console
    const term = new Terminal({
        logger: {
            trace: (e, args) => console.log('trace: ', e, args),
            debug: (e, args) => console.log('debug: ', e, args),
            info: (e, args) => console.log('info: ', e, args),
            warn: (e, args) => console.log('warn: ', e, args),
            error: (e, args) => console.log('error: ', e, args)
        }
    });
  • New ignoreBracketedPasteMode option that allows explicitly disabling bracketed paste mode, regardless of whether the shell enables it or not (#​4636) via @​Tyriar
    const term = new Terminal({
        ignoreBracketedPasteMode: true
    });
  • New cursorInactiveStyle option (#​4657) via @​tisilent
    const term = new Terminal({
        cursorInactiveStyle: 'none'
    });

🐞 Bug fixes

📝 Documentation and internal improvements

🎉 New real-world use cases


📥 Addons

xterm-addon-canvas
xterm-addon-image
xterm-addon-ligatures
xterm-addon-serialize
xterm-addon-webgl

🤝 Compatible addon versions

Addon Version
xterm-addon-attach 0.9.0
xterm-addon-canvas 0.5.0
xterm-addon-fit 0.8.0
xterm-addon-image 0.5.0
xterm-addon-ligatures 0.7.0
xterm-addon-search 0.13.0
xterm-addon-serialize 0.11.0
xterm-addon-unicode11 0.6.0
xterm-addon-web-links 0.9.0
xterm-addon-webgl 0.16.0

🌐 Website

Pull from https://github.com/xtermjs/xtermjs.org/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aclosed

v5.2.1

Compare Source

🐞 Bug fixes

v5.2.0

Compare Source

🚀 Features

📦 API
  • Improved Windows workarounds with the new windowsPty option (#​4539) via @​Tyriar

    const term = new Terminal({
      windowsPty: {
        backend: 'conpty',
        buildNumber: 19000
      }
    });

🐞 Bug fixes

📝 Documentation and internal improvements

⚠️ Deprecations

  • windowsMode has been deprecated in favor of windowsPty
    // Before 5.2
    term = new Terminal({ windowsMode: true });
    // After 5.2
    term = new Terminal({
      windowsPty: {
        backend: 'conpty',
        buildNumber: 19000
      }
    });

🎉 New real-world use cases


📥 Addons

xterm-addon-canvas
xterm-addon-search
xterm-addon-webgl

🤝 Compatible addon versions

  • xterm-addon-attach@...
  • xterm-addon-fit@...
  • xterm-addon-ligatures@...
  • xterm-addon-search@...
  • xterm-addon-serialize@...
  • xterm-addon-unicode11@​...
  • xterm-addon-web-links@...
  • xterm-addon-webgl@...

v5.1.0

Compare Source

🚀 Features

Multiple texture atlas page support (#​4244, #​4252, #​4274) via @​Tyriar

Instead of there being a hard cap of 1024x1024 on the size of the texture atlas backing the canvas and webgl renderers, multiple textures are now supported. Each individual texture is now 512x512 which allows faster uploading to the GPU and will continually merge until the maximum of 4096x4096 is reached.

The benefits in simple terms of this change are:

  • Less time from drawing a glyph to rendering it
  • Less CPU is used when lots of glyphs are used
  • Essentially unlimited space for glyphs, which is good for certain use cases but will also let us explore things like "perfect" dotted and curvy underlines in the future

Here is an example of a 512x512 texture atlas page right after the terminal has loaded and printed a powerline-based prompt:

image

And here is the 1024x1024 page after a lot of glyphs have rendered:

image

Slash and triangle custom glyphs (#​4313) via @​Tyriar

Eight new powerline extra custom glyphs are supported:

image

New option scrollOnUserInput (#​4289) via @​JasonXJ

You can now specify whether to scroll to the bottom of the terminal on user input, previously this was the default and only behavior. This new setting is enabled by default.

const term = new Terminal({ scrollOnUserInput: false });

🐞 Bug fixes

🏎️ Performance

📝 Documentation and internal improvements

🛑 Breaking changes

  • There is a new allowNonHttpProtocols property on ILinkHandler which forces the embedder to opt-in to non-http(s) protocols. This is a breaking change in a minor release as it could improve security of embedders.
    // before 5.1.0
    const term = new Terminal({
      linkHandler: {
        ...
      }
    };
    
    // after 5.1.0
    const term = new Terminal({
      linkHandler: {
        // If you explicitly support and sanitize the links
        allowNonHttpProtocols: true,
        ...
      }
    };

🎉 New real-world use cases


📥 Addons

xterm-addon-attach
xterm-addon-canvas
xterm-addon-serialize
xterm-addon-webgl
xterm-addon-web-links
  • Major rework of the addon (#​4288) via @​jerch. This adds support for more URLs, fixes underlines sometimes being incorrect and changes the regex. There will be regressions in previous behavior with this but overall it's in a much better state. If you find any problems please report them to us.
  • Add 1024 character limit (#​4251) via @​Tyriar

🤝 Compatible addon versions

  • xterm-addon-attach@0.7.0
  • xterm-addon-fit@0.7.0
  • xterm-addon-ligatures@0.6.0
  • xterm-addon-search@0.11.0
  • xterm-addon-serialize@0.9.0
  • xterm-addon-unicode11@​0.5.0
  • xterm-addon-web-links@0.8.0
  • xterm-addon-webgl@0.14.0

v5.0.0

Compare Source

v5 is here! This is our largest release in a long time, maybe ever 👀

Since this was a major version bump, we used the opportunity to clean up the API and make other breaking changes. Many of these changes enabled a significant reduction in the xterm module bundle size which went from 379kb to 265kb for a 30% reduction!

🚀 Features

Underline style and color support (#​3921, #​3976, #​3980, #​4053, #​4068, #​4074, #​4077, #​4109) via @​Tyriar

Underline style and color sequences such as CSI 4:2m ST for double underlines are now supported:

image

Some work was also done to improve underline rendering overall, characters with long descenders don't overlap with the underline:

image

Hyperlink escape sequence support (#​4005, #​4087, #​4088) via @​Tyriar, @​jerch

Building upon the improved underline rendering, hyperlink escapes outlined in this gist are now supported. They will be rendered using a dashed underline (like CSI 4:5m ST):

image

Along with this is a new linkHandler option which allows controling hover, leave and activate events, for example to show a custom tooltip. VS Code's implementation looks like this:

image

Smooth scroll support (#​3940) via @​Tyriar

The new smoothScrollDuration allows setting a duration in milliseconds to animate scroll between the origin and target positions. This is most useful when using a physical mouse (not a trackpad) to help not disorient the user when scrolling with the mouse wheel.

Canvas renderer addon (#​3949, #​3950, #​3954, #​3959, #​3961, #​3981) via @​Tyriar

The canvas renderer has moved into an addon, significantly reducing the bundle size of the xterm module. This used to be the default renderer and is now recommended only as a fallback to the webgl addon if that does not work for some reason (eg. no webgl2 support).

New VT feature support (#​4093, #​4095, #​4098)via @​jerch

xterm.js handles several new VT sequences:

Other features

🐞 Bug fixes

📝 Documentation and internal improvements

🛑 Breaking changes

  • bellSound and bellStyle options as well as the previously builtin sound have been removed (#​3941) via @​Tyriar. This reduces the bundle size while still allowing the embedder to support the terminal bell via the Terminal.onBell API

    // before 5.0.0
    term = new Terminal({
      bellStyle: 'sound'
    });
    
    // after 5.0.0
    term = new Terminal();
    term.onBell(() => {
      // Play a sound
    });
  • The link matcher API registerLinkMatcher and deregisterLinkMatcher have been removed in favor of the link provider API (#​3944) via @​Tyriar.

  • The allowProposedApi option now defaults to false, set this to true to opt-in to proposed API usage if you understand the implications (#​3945) via @​Tyriar

    // before 5.0.0
    term = new Terminal({});
    term.someProposedApi();
    
    // after 5.0.0
    term = new Terminal({
      allowProposedApi: true
    });
    term.someProposedApi();
  • The deprecated addMarker API has been removed in favor of registerMarker (#​3946) via @​Tyriar. They are functionally equivalent.

  • The deprecated getOption and setOption APIs have been removed in favor of options (#​3947) via @​Tyriar

    // before 5.0.0
    term.setOption('scrollback', 1000);
    console.log(term.getOption('scrollback'));
    
    // after 5.0.0
    term.options.scrollback = 1000;
    console.log(term.options.scrollback);
  • The deprecated writeUtf8 API has been removed in favor of write (#​3947) via @​Tyriar.

    const arr = new Uint8Array(10);
    
    // before 5.0.0
    term.writeUtf8(arr);
    
    // after 5.0.0
    term.write(arr);
  • ISelectionPosition have been removed from the API in favor of IBufferRange (#​3952) via @​Tyriar

  • cols and rows options can now only be set in the constructor (#​3960, #​3972, #​4078) via @​Tyriar, @​silamon

    // before 5.0.0
    term.setOption('cols', 10);
    
    // after 5.0.0
    term.resize(10, term.rows);
  • ITheme.selection has been renamed to selectionBackground for consistency (#​3964) via @​Tyriar

    // before 5.0.0
    term.options.theme = { selection: '#​000000' };
    
    // after 5.0.0
    term.options.theme = { selectionBackground: '#​000000' };
  • The Terminal.options getter now returns a Required<ITerminalOptions> instead of just ITerminalOptions for better correctness. Along with this change fastScrollModifier now accepts 'none' instead of undefined

    // before 5.0.0
    new Terminal({ fastScrollModifier: undefined });
    
    // after 5.0.0
    new Terminal({ fastScrollModifier: 'none' });

🎉 New real-world use cases


📥 Addons

xterm-addon-canvas
xterm-addon-fit
xterm-addon-ligatures
xterm-addon-web-links
  • The link matcher-based implementation has been removed in favor of the link provider implementation (#​3944) via @​Tyriar
xterm-addon-webgl

More efficient GPU memory usage using new texture atlas packing strategy (#​3979) via @​Tyriar

The previous naive texture packing strategy which only allowed adding to the "active row" or below has been replaced with a new strategy that uses multiple active rows and adds glyphs to the most suitable row based on its pixel height. This leads to more effective usage of the texture xterm.js uploads to the GPU, meaning it's harder to reset the texture when it becomes filled (which is more likely to happen when screen scale is high).

Before:

image

After:

image

Other changes


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@vercel
Copy link

vercel bot commented Sep 15, 2022

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated
productdevbook-com ❌ Failed (Inspect) Mar 17, 2023 at 1:54AM (UTC)

@renovate renovate bot force-pushed the renovate/major-xterm-monorepo branch from 2019366 to 3a0147c Compare September 7, 2023 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants