Windows Terminal 1.21 turned out to have WAY more in it than we had expected--we were busy doing things like sudo for Windows and File Explorer's 7zip, RAR and tar support... and still we ended up landing a bunch of Terminal work too!
Enjoy!
Features
Terminal will now remember and restore the contents of the screen when you use the "Open windows from a previous session" startup option! ( #16598 ) ( #17022 ) ( #16970 ) ( #16998 ) ( #17182 ) ( #16601 ) ( #17113 )
Buffer snapshots are stored in human-readable (albeit UTF-16) VT-encoded text in your package's local state directory, next to your settings. This directory is typically secured to your user account, but if you are using the portable distribution be aware of the implications.
You can now specify multiple active fonts; glyphs which are not found in your first font will be sought in all later fonts ( #16821 ) ( #16993 )
{profile}.font.face now supports comma-separated face names, e.g. Courier New, Cascadia Code PL, Bahnschrift
Metrics will be based on your primary font.
Unfortunately, the preview window doesn't usually use any non-existent glyphs so you won't really be able to preview it...
Terminal now renders pixel-perfect block elements, box-drawing characters and PowerLine symbols, as well as high-fidelity textured shade glyphs ( #16729 ) ( #16760 )
We know this can be a controversial feature, so you can turn it off by disabling "Built-in Glyphs" in the Settings (or in JSON: {profile}.font.builtinGlyphs, boolean, default true)
You can now customize the OpenType Features and Axes of your font stack in the Settings UI ( #16104 ) ( #16678 ) ( #16790 ) ( #17164 ) ( #17173 )
Rounding out the above font changes, you can also turn off full-color emoji (setting {profile}.font.colorGlyphs, boolean, default true) for when you really want to eat a wireframe burrito ( #16871 )
We've completely rewritten prompt marks--they now reflow on resize, clear properly, and more!--in preparation for calling them Stable ( #16937 ) ( #16938 ) ( #17138 ) ( #17144 )
You amazing pixel shader authors can now load up an image as a texture with the experimental.pixelShaderImagePath setting ( #14073 ) (thanks @mrange!)
It will be accessible in register t1, type Texture2D. See the BackgroundImage shader for a small sample.
You can now run terminal panes side-by-side with non-terminal things... ( #17009 ) ( #17169 ) ( #16170 ) ( #16172 ) ( #17174 ) ( #17110 ) ( #16914 )
...like our experimental (and ephemeral!) "scratchpad", which shows up as a free-form text box next to your terminal.
Add the action {"action":"splitPane","type":"scratchpad"} to try it out.
?? We may remove or meaningfully change the scratchpad in a future version.
We have rewritten the Input Method Editor (IME) integration from the ground up ( #17067 )
JSON Fragment Extensions can now add custom actions ( #16185 )
You can now access the features from the experimental. namespace in the Settings UI ( #16809 )
The original text rendering engine (versions 0.1 to 1.20) has moved on to the next life, and will not be returning. RIP.
? ( #16278 )
Changes
Behavior Change! The Pane keybindings Alt+Shift++ and Alt+Shift+- will now duplicate your active profile ( #16951 )
@tusharsnx totally rewrote how search highlighting works to make it more robust and responsive ( #16611 ) (thanks @tusharsnx!) plus additional fixes from the team ( #17132 ) ( #17092 )
Terminal will now delete its in-box color schemes from your local settings file, unless you've modified them ( #12800 )
You can no longer edit the color schemes that come with Terminal without copying them
We've finally added new color schemes: Dark+, CGA and IBM ( #16953 )
We have started laying the groundwork for action binding--also known as "exploding your settings file with actions"--so please be on the lookout for any strangeness! There shouldn't be any user-visible impact. Yet. Yeeetttt. ( #16823 ) ( #16904 ) ( #17145 ) ( #17146 )
Moving the cursor around was surprisingly expensive, so we paid to make that cost go away ( #15500 )
You can now control the behavior of the Atlas engine in finer detail on the "Rendering" settings page ( #16939 )
Profiles now default to the icons of their .exe files, if those can be determined. If you want your profile to have no icon, you must set the icon to "none" (or check the "Hide icon" box in Settings) ( #15843 )
UI
The Search box now animates in and out, looking very chic ( #16808 ) (thanks @tusharsnx!)
Instances of "it'll" have been replaced with "it will" to adhere to Microsoft Style Guidelines ( #16955 ) (thanks @hellocharli!)
We've restyled the Warning and Error displays around the font settings so that they're more readable ( #16876 )
VT Compatibility
You can now set the window (tab, pane) title with DECSWT (Set Window Title) in addition to XTerm's OSC 2 ( #16804 ) (thanks @j4james!)
We now support DECAUPSS, DECRQUPSS and ACS, which completes the 8-bit interface architecture ( #16547 ) (thanks @j4james!)
Bug Fixes
Double-clicking a word on the left side of the screen will no longer select parts of your RPROMPT (or right prompt) ( #17170 )
Double-clicking a word in a double-width or double-height row now actually selects the right word ( #16812 ) (thanks @tusharsnx!)
Our light color schemes no longer have a truly unusable selection highlight color ( #16789 ) (thanks @uoRetr0!)
Once again, we've fixed an issue where hyperlinks are detected in the wrong place if there's a wide character ( #16775 ) (thanks @comzyh!)
You can no longer use the Settings UI to enter an initial size that is out of bounds ( #16989 ) (thanks @chingucoding!)
The experimental repositionCursorWithMouse actually works after you've scrolled the screen (lol) ( #16950 )
doskey macros once again (and I mean, "since 2015"?) work on inputs with more than one consecutive space character ( #17129 )
We've fixed a number of issues that may have resulted in cursors being left on the screen ( #17181 )
URLs that touch the right side of the screen or get resized are once again clickable ( #17120 )
Reliability
Tearing off a tab should no longer, in some circumstances, explode your Terminal ( #17069 ) (thanks @tusharsnx!)
The Atlas engine has gotten somewhat better at reporting errors ( #17193 )
The Atlas engine will no longer occasionally crash when rendering characters in the Unicode Private Use Area ( #16894 )
Performance
The console hosting backend no longer spuriously repaints single characters ( #17194 ) (thanks @j4james!)
VT Compatibility
DCS sequences that span packets will no longer get sliced in half and--in so being--destroyed ( #17195 ) (thanks @j4james!)
Packaging Changes
Terminal distributions now come with an additional library, Microsoft.Terminal.UI.dll. Its .winmd is not required. ( #15107 )
Code Health
We're trying something new, where we don't delete all of the code health improvements and just put them right in the changelog.
Code Health improvements included in this release
Remove in-product uses of std::bind( #16870 )
A minor cleanup of ProfileViewModel( #16788 )
Add a script to publish a folder of binaries as a GH release ( #13629 )
Add an automated conhost benchmark tool ( #16453 )
Add an experimental "scratchpad pane", for testing ( #16171 )
Add more profile GUID tests ( #17030 ) (thanks @chingucoding!)
Add new and extend existing til::string helpers ( #16772 )
Add VSCode configs for better out-of-box LSP support ( #16920 ) (thanks @tusharsnx!)
build: force the latest VCToolsVersion; see DD-1541167 for more ( #17156 )
Implement MVVM for the Actions page ( #14292 )
Make ColorFromXOrgAppColorName both smaller and more correct ( #16824 )
Make the Settings Model tests into proper CI tests ( #16773 )
Remove dependency on IsGlyphFullWidth for IRM/DECSWL ( #16903 )
Remove VtApiRoutines( #16954 )
Replace til::bit_cast with std::bit_cast( #16948 )
Replace til::some with til::small_vector( #16952 )
Replace usages of TYPED_EVENT with til::event( #16837 )
Use .rc files in TSM instead of string literals ( #16844 )
Use float instead of double by default ( #17100 )
AtlasEngine: Improve debuggability ( #17136 )
With additional thanks to @Jvr2022 for keeping our dependencies up to date.