Skip to content

Windows Terminal Preview v1.18.1421.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@DHowett DHowett released this 23 May 16:59
· 847 commits to main since this release

Welcome to the Q2 release of Windows Terminal! Since we moved to a quarterly release cycle, these release notes have
really gotten out of control. Buckle up!

Note Well, the change from v1.17.1073 where we would munge our version number didn't live much longer than a single release. We finally rejoined the Windows 10 and Windows 11 packages!

Why are there so many packages? How do I choose?

Please visit our page documenting the Windows Terminal Distributions!

Features

  • You can now drag tabs between windows or drop them off in space to make a new window! (#14866) (#14901) (#14935)
    • All instances of Windows Terminal now run in the same process (#14843); please know that this may expose some
      reliability issues. This is a preview build! It might break! Please let us know if it does.
    • Terminal has learned to (optionally) keep running without any windows open (#14944)
      • Enable global setting compatibility.allowHeadless (boolean, default false).
      • This will allow you to summon a "Quake mode" window even if there aren't any other Terminal windows open!
    • You can move tabs or panes individually to new windows with a new action in the command palette, as well (#15258)
      • We have extended the moveTab and movePane actions with support for a window parameter; the format is the
        same as that of the -w command line argument.
    • As a side effect of this work, Terminal no longer locks the directory from which it was spawned (rejoice!)
    • Please note: Due to a bug in Windows 10, every window you close will leak about 15MiB of memory. This is
      intentional and prevents a crash (yeah, not amazing. We're tracking a fix!) (#15397)
  • The experimental new text rendering engine AtlasEngine is now newer and still experimental!. It has been
    nearly completely rewritten with support for overlapping text! (#14959)
    • Practically speaking, this means that it will no longer cut off italic text, Emoji, or "complex" scripts. It
      will continue to clip box drawing glyphs to ensure that they look great. (#15343)
    • We've ensured that it still supports animated shaders (#15353), Han unification (#15358), and locl glyph variants (#15278)
    • It will now be used to display the Appearance preview in the Settings UI for profiles for which it is enabled (#15355)
  • Terminal now offers an experimental, optional right-click context menu (#14775) (#14252) (#15079)
    • Enable the menu with the profile setting experimental.rightClickContextMenu (boolean, default false)
    • You can invoke the menu--even if it is disabled--with action showContextMenu (#14254)
    • When you have shell integration enabled (FTCS marks, mentioned below), you can use the menu to select a command or
      its output (#15020)
  • You can now customize the height (and width) of character cells in the terminal (#14255)
    • See the "line height" setting in Profile -> Appearance
    • Configurable via JSON in $profile.font.cellWidth and $profile.font.cellHeight (string, see below, default
      automatically calculated for optimal rightness)
      • Valid units include:
        • 1.0, 100%: multiplier or percent of font size
        • 12px: raw size in device independent pixels (supports fractional pixels)
        • 12pt: raw size in font points (1/72 of an inch; supports fractional points)
        • 1ch: multiplier of font advance width (supports fractional multiplier)
  • Thanks to @ianjoneill, Terminal is now way better at handling environment variables.
    • New tabs/panes will now automatically reload the system environment (#14999) (#14839)
      • You can disable this feature with the global JSON setting compatibility.reloadEnvironmentVariables (bool,
        default true)
    • Profiles can now contain environment variables! (#15082)
      • Set JSON setting environment (map string -> string; default null)
        • As an example, "environment": { "COOL": "very", "HOW_COOL_IS_THIS": "it is %COOL% cool" }
  • The "About" dialog will now inform you when an update is available (if you are using the "MSIX bundle" or
    "preinstallation kit" distributions; see below) (#13437)
  • "Open Terminal Here" now supports Ctrl+Shift to launch an elevated session (#15137) (thanks @jamespack!)
  • If you are using the FTCS "start of command", "start of output" and "end of output" marks (OSC 133), you can now use
    the selectCommand and selectOutput actions to select the command or output as demarcated by those sequences (#14807)
  • You can now enable or disable read-only mode, rather than just toggling it, with the enableReadOnly and
    disableReadOnly actions (#14995) (thanks @Swinkid!)
  • You can now immediately restart a connection via the restartConnection action (#15241)
  • We have made some changes to the officially supported list of Terminal distributions!
    • The "unpackaged" distribution of Terminal is now officially supported on Windows 10 (10.0.19041.1 and higher) and
      Windows 11 (10.0.22000.1 and higher)! (#15034)
    • We now offer support for running in portable mode, where settings are saved into a directory alongside the
      app (#15051)
    • If you have multiple unpackaged or portable installations of Terminal, they will now properly isolate from
      eachother (#15118)
    • LEARN MORE at our new documentation page for Windows Terminal Distributions!
    • In 1.18 and above: We've removed any runtime dependency on the "desktop" C++ Runtime Library (#14733) (#15010) (#15097)
      • If you are installing 1.17 or below, you still need to install a VC++ runtime. Even in portable mode. Sorry.
  • We have added another way of detecting whether "Default Terminal" is available on your OS 👀 (#15040)
  • $theme.tab.showCloseButton now supports activeOnly, to display the x only on the active tab (#15237) (thanks @kovdu!)

Changes

  • file: URIs emitted by OSC 8 now support wsl$; URIs emitted by OSC 8 now support all valid schemas (#14993)
  • The "Adjust Indistinguishable Text" feature now uses the Oklab color space (by Björn Ottosson) (#15283)
    • It no longer has a measurable performance impact, either, so feel free to turn it on!
  • Terminal will now send individual key down and key up events to console applications (#15130) (thanks @j4james!)
  • We've refactored how Unicode input works for the ReadConsoleInput APIs in the Console and Terminal (#14745)
  • Any WSL distributions named rancher-desktop or rancher-desktop-data will now be ignored (#15166) (thanks @jamespack!)
    • Really sorry if you were using those for your day-to-day WSLing, but... what?

User Interface and Usability

  • Terminal has updated to Microsoft.UI.Xaml 2.8 (#15078) (#15183) (#15280) (#15313) (#15217)
  • We have added a Close Pane action to the tab context menu (#15198) (thanks @joadoumie!)
  • Since we have so many Close-related actions in the tab context menu, they've moved into a Close... submenu (#15250)
  • The Profile Appearance preview now displays a more relevant and interesting preview (#15363)
  • We rewrote a bunch of the subtitles in the Settings UI for diction and flow (#15362) (#15361)
  • Rejoice! We have reintroduced the original Windows Terminal UI themes under the names Dark (Legacy), Light (Legacy) and System (Legacy) (#15108)
  • You will now be reprimanded harshly for choosing a proportional font (#15195) (thanks @jamespack!)
  • Connection restarting with Enter (after hangup) or via the new action above is now safer and more reliable (#15240)

Performance

  • We have refactored text output to achieve a roughly 4x speedup in the common case (#14821)
  • The "Azure Cloud Shell" connection no longer depends on "cpprestsdk", the removal of which shrinks our package
    by about 3MB per architecture! (#14776)
    • Due to differences in credential storage, this will require you to go through the Device Code authentication flow
      again.
  • Terminal no longer needs to shell out to reg.exe to manipulate the registry to work around a platform
    limitation (#15028) (#15050)

VT and Compatibility

  • Thanks to @j4james, we now support a whole new heap of control sequences! Thank you!
    • ... horizontal margins via DECSLRM (requires `DECSLRM) (#15084)
    • ... LNM (Line Feed/New Line Mode) (#15261)
    • ... DECAC queries via DECRQSS (#14990)
    • ... DECRQCRA, to checksum a region of the screen (#14989)
    • ... presentation state reports, via DECRQPSR and DECRSPS (#14998)
    • ... a more detailed Device Attributes report DA (#14906)
    • (with additional thanks to @al20878 for hands-on validation against the original hardware ❤️)
  • The VT engine will now filter out control characters that don't do anything (#15075) (thanks @j4james!)
  • In addition, @michalnpl added support for querying the window size in cells via CSI 18 t! (#15295) (thanks @michalnpl!)
  • Merge the LineFeed functionality into AdaptDispatch (#14874) (thanks @j4james!)

Bug Fixes

  • centerOnLaunch no longer overrides the restoration of window positions (#15179)
  • Indirect icon references (like foo.exe,-123) now work in the jump list (#15221) (thanks @jamespack!)
  • The command palette should no longer flee in terror when you activate it from the dropdown menu (#15340)
  • We believe we have staked the DesktopWindowXamlSource window that would sometimes appear through the heart like a
    vampire (#15165)
  • start /min wt and friends should now work properly (#13838) (#15213)
  • Starting Terminal with an elevate:true profile should no longer cause an admin elevation loop (oops) (#14946)
  • "Open in Terminal" no longer shows up in ZIP files (???) (#15236) (thanks @jamespack!)
  • The "Developer Command Prompt / PowerShell" profiles no longer override your starting directory (#15035)
  • Copying HTML to your clipboard no longer results in reeeeeally tiny text on high-DPI displays (#15046)
  • On very wide monitors, the Outlines shader sample no longer looks quite bad (#14971)
  • Ctrl+clicking a profile no longer ignores or breaks the profile's starting directory (#15286)

Accessibility

  • The about dialog heading is now read out properly to a screen reader (#15200) (thanks @BenConstable9!)
  • The "reset color" button in the tab color picker is now more visible to screen readers (#15257) (thanks @BenConstable9!)

UI and stuff like it

  • We have removed a 1px gap under the tabs only visible at >150% (#15164)
  • Terminal should no longer appear as an empty frame before quickly populating itself (#13811)
  • When you drag and drop a tab, that tab will now become focused (#14787) (thanks @chingucoding!)
  • @jamespack has added epxlanatory text to "Always Show Tabs" explaining why it can't be turned off sometimes (#15154) (thanks @jamespack!)
  • Opening a profile from a submenu no longer yeets keyboard focus off into space (#15077) (thanks @kkostrzewa>!)
  • When you're hovering over a URL, we now display it in a partially-encoded form to help you avoid homoglyph attacks (#15095)

Reliability and Performance

  • We will no longer scan for nearby font files unless your font is not found (improves startup perf) (#15239)
  • We've stopped creating and throwing out one MediaPlayer every time the bell sound plays (#15333)
  • The Command Palette and About dialog are now lazily constructed, saving launch time (#15203)
  • Animations are disabled during startup so as to make Terminal start a bit faster (#15204)
  • The system menu now opens when you press <kbd>Alt+Space</kbd> in the Settings UI (#15189) (thanks @jamespack!) with bugfixes (#15253)

VT and Compatibility

  • Terminal should no longer redraw in the middle of processing FTCS marks from NuShell (#14677)
  • In addition to the heap of changes above, @j4james contributed a number of VT bug fixes as well! Thank you!
    • We will now preserve the active attributes during VT resize operations (#15269)
    • Our DECSC/DECRC implementation has been updated to match the newer DEC terminals (VT420+) (#15054) (with
      thanks to @al20878 for the same type of validation mentioned above)
    • Prevent crash when VTParameters::subspan is out of range (#15235)
    • DECCRA will no longer misbehave when copying from a double-width line (#15026)
    • Delayed EOL wrap is now set in accordance with DEC STD 070 (#14936)
  • Console output modes are now tracked per buffer (so the alt buffer can have a different set of modes) (#14735) (thanks @j4james!)
  • The console hosting each application should now start up more reliably at the right size during "default terminal"
    handoff (#15298)

Code Health, WPF and Windows Console

These changes impact the Terminal developer experience or the Windows Console Host. Changes to conhost will be released
in a coming Windows update.

  • We have removed all traces of the UWP Terminal (which was an internal build for Windows 10X) (#15222)
  • Some preparation has been completed to make Terminal and Console build with clang-cl (#14870) (#14871)
  • conhost now supports bracketed paste mode (#15155) (thanks @j4james!)
  • conhost will no longer ignore the codepage stored in .LNK files (#15111) (thanks @michalnpl!)
  • The WPF control now allows you to set its Connection to null (which will clear the screen!) (#15062) (thanks @mitchcapper!)
  • The WPF control now defaults to a history length of 9001 (#15129)

With additional code health, build system automation and documentation fixes from @jamespack, @sitiom, @Smeyer025 and @j4james!

Asset Hashes

  • Microsoft.WindowsTerminalPreview_1.18.1421.0_8wekyb3d8bbwe.msixbundle
    • SHA256 08F749E71FDEDBF967AED18163005727B4CD91BDBFC93847F4172CD18F3AC417
  • Microsoft.WindowsTerminalPreview_1.18.1421.0_arm64.zip
    • SHA256 5CC4413AC36AC3C3B3C63C4A57239723FD16DF3A1FC25F620CA54BCF0B7F3FF1
  • Microsoft.WindowsTerminalPreview_1.18.1421.0_x64.zip
    • SHA256 A216681CDC0F1B9709201193862D49E54B8047604A342350A2FC98656172F67F
  • Microsoft.WindowsTerminalPreview_1.18.1421.0_x86.zip
    • SHA256 043C24AE080C71871958643D1F71976921E6C4CC553BA118846CCCA5D93278D2