Skip to content

4.19.0

Compare
Choose a tag to compare
@Tyriar Tyriar released this 29 Jun 17:19
· 1818 commits to master since this release
4a61642

πŸš€ Features

  • The minimum contrast ratio feature will now change luminance in the opposite direction if the contrast ratio isn't met (#3806, #3808) via @Tyriar. For example a red foreground on a slightly darker red background will try lighten the color and if the minimumContrastRatio option isn't met when #FFFFFF is reached it will try moving it towards #000000. This can cause somewhat unexpected results by changing explicitly styled whites to blacks for example but it's really good for accessibility.
  • The library now supports parsing #rgb, #rgba, rgb(r, g, b) and rgba(r, g, b, a) color formats (#3815, #3819, #3823) via @ChaseKnowlden, @Tyriar
  • Opaque selectionBackground is now supported in the DOM renderer (#3839) via @Tyriar
  • The symbol powerline font glyphs now use custom rendering when ITerminalOptions.customGlyphs is enabled (#3856, #3862, #3866) via @Tyriar
    image
    This has multiple benefits:
    • A patched powerlines font doesn't need to be installed to render the most common characters
    • Ugly lines due to anti-aliasing that can appear no longer do
    • The glyphs always use greyscale anti-aliasing (not sub-pixel)
    • ITerminalOptions.lineHeight is taken into account when rendering the glyph

πŸ“¦ API

  • The overview ruler is a companion feature to the decorations introduced in 4.18.0 which shows little indicators on the scroll bar (#3676, #3687, #3688, #3689, #3693, #3694, #3695, #3697, #3702, #3711, #3723, #3730, #3733, #3738, #3788, #3791, #3792, #3841) via @meganrogge, @Tyriar. To use it, add the overviewRulerOptions property to a decoration's IDecorationOptions and it will automatically show up in the overview ruler.
    const marker = term.addMarker(1);
    const decoration = term.registerDecoration({
      marker,
      x: 5,
      overviewRulerOptions: {
        color: '#FF0000',
        position: 'left'
      }
    });
    decoration.onRender(() => {
      decoration.element.style.backgroundColor = 'red';
    });
    The width of the resulting overview ruler is controlled by ITerminalOptions.overviewRulerWidth.
  • Decorations can now change a cell's background and foreground colors (#3775, #3782) via @Tyriar. When this is set, the minimum contrast ratio feature will also be in effect.
    const decoration = term.registerDecoration({
      marker,
      backgroundColor: '#ff0000',
      foregroundColor: '#ffffff'
    });
  • Decorations can now specify the layer property to allow rendering above the selection (#3785, #3800) via @Tyriar
    const decoration = term.registerDecoration({
      marker,
      layer: 'top'
    });
  • There's a new selectionForeground theme color, when set this will use a static color for selections (#3813) via @Tyriar
    const term = new Terminal({
      theme: {
        selectionBackground: '#000000',
        selectionForeground: '#FFFFFF'
      }
    });

🐞 Bug fixes

  • Fix triple click selection edge case where initial line was getting unselected (#3669) via @silamon
  • Fixing edge cases when clearing decorations via Terminal.clear (#3671, #3868) via @meganrogge
  • Handle missing compositionend events for Sogou IME (#3680) via @Eugeny
  • Fix a bug when running emacs by preferring ST over BEL (#3704) via @meganrogge
  • Fix Alt-N/E/U handling in macOS, handle Alt-Shift-Letter (#3726) via @Eugeny
  • Fix caps lock while IMEs are being used preventing lowercase input (#3728) via @serkodev
  • Exclude powerline characters from the minimum contrast ratio feature (#3740, #3742) via @meganrogge
  • Send ctrl modifier for page up/down sequences (#3761) via @Tyriar
  • Send record separator on ctrl+@ (#3763) via @robinfai
  • Switching from webgl to dom renderer will now correctly reposition decorations (#3779) via @Tyriar
  • Decorations are now rendered in the same frame as the buffer, ensuring they stay in sync (#3796, #3818) via @meganrogge
  • Fire onSelectionChange when Terminal.select is called (#3805) via @Tyriar
  • Padding is now taken into account when converting mouse coordinates to cell positions (#3826) via @Tyriar
  • Exclude box drawing and block glyphs from the minimum contrast ratio as they are typically used to blend with background colors (#3844) via @meganrogge
  • Fix a minimum contrast ratio edge case with inverted text in the DOM renderer (#3846) via @meganrogge
  • Only send the wheel mouse event when scrolling a line or more (#3869) via @pfitzseb

πŸ“ Documentation and internal improvements

πŸŽ‰ New real-world use cases


πŸ“₯ Addons

xterm-addon-search

xterm-addon-serialize

xterm-addon-web-links

xterm-addon-webgl

  • Simplified and sped up selection rendering by leveraging the decorations feature (#3782, #3860) via @Tyriar

🀝 Compatible addon versions

  • xterm-addon-attach@0.6.0
  • xterm-addon-fit@0.5.0
  • xterm-addon-ligatures@0.5.3
  • xterm-addon-search@0.9.0
  • xterm-addon-serialize@0.7.0
  • xterm-addon-unicode11@0.3.0
  • xterm-addon-web-links@0.6.0
  • xterm-addon-webgl@0.12.0

🌐 Website