Windows Terminal Preview v1.18.1421.0
Pre-release
Pre-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, defaultfalse
). - This will allow you to summon a "Quake mode" window even if there aren't any other Terminal windows open!
- Enable global setting
- 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
andmovePane
actions with support for awindow
parameter; the format is the
same as that of the-w
command line argument.
- We have extended the
- 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)
- All instances of Windows Terminal now run in the same process (#14843); please know that this may expose some
- 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)
- Practically speaking, this means that it will no longer cut off italic text, Emoji, or "complex" scripts. It
- Terminal now offers an experimental, optional right-click context menu (#14775) (#14252) (#15079)
- Enable the menu with the profile setting
experimental.rightClickContextMenu
(boolean, defaultfalse
) - 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)
- Enable the menu with the profile setting
- 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 size12px
: 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)
- Valid units include:
- 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,
defaulttrue
)
- You can disable this feature with the global JSON setting
- Profiles can now contain environment variables! (#15082)
- Set JSON setting
environment
(mapstring
->string
; defaultnull
)- As an example,
"environment": { "COOL": "very", "HOW_COOL_IS_THIS": "it is %COOL% cool" }
- As an example,
- Set JSON setting
- New tabs/panes will now automatically reload the system environment (#14999) (#14839)
- 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
theselectCommand
andselectOutput
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.
- The "unpackaged" distribution of Terminal is now officially supported on Windows 10 (10.0.19041.1 and higher) and
- We have added another way of detecting whether "Default Terminal" is available on your OS 👀 (#15040)
$theme.tab.showCloseButton
now supportsactiveOnly
, to display thex
only on the active tab (#15237) (thanks @kovdu!)
Changes
file:
URIs emitted byOSC 8
now supportwsl$
; URIs emitted byOSC 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
orrancher-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)
andSystem (Legacy)
(#15108) - You will now be reprimanded
harshlyfor 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.
- Due to differences in credential storage, this will require you to go through the Device Code authentication flow
- 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 viaDECRQSS
(#14990) - ...
DECRQCRA
, to checksum a region of the screen (#14989) - ... presentation state reports, via
DECRQPSR
andDECRSPS
(#14998) - ... a more detailed Device Attributes report
DA
(#14906) - (with additional thanks to @al20878 for hands-on validation against the original hardware ❤️)
- ... horizontal margins via
- 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
- SHA256
- Microsoft.WindowsTerminalPreview_1.18.1421.0_arm64.zip
- SHA256
5CC4413AC36AC3C3B3C63C4A57239723FD16DF3A1FC25F620CA54BCF0B7F3FF1
- SHA256
- Microsoft.WindowsTerminalPreview_1.18.1421.0_x64.zip
- SHA256
A216681CDC0F1B9709201193862D49E54B8047604A342350A2FC98656172F67F
- SHA256
- Microsoft.WindowsTerminalPreview_1.18.1421.0_x86.zip
- SHA256
043C24AE080C71871958643D1F71976921E6C4CC553BA118846CCCA5D93278D2
- SHA256