Features
We've added support for a new opt-in and shell-driven suggestions UI ( #14938 ) ( #15848 )
The protocol for suggestions is not finalized, and will change before final release.
You can find more information on the Experimental Shell Completion Menu wiki page
Suggestions can take into account...
... the command you've already typed on the input line ( #15027 )
... commands you have recently submitted ( #14943 )
... any sendInput actions you have in your settings file, to be used as a sort of "snippet" ( #15664 )
The search box will now display a count of found results, and--if scrollbar marks are enabled--display graphical indicators for every match ( #14045 ) (thanks
@don-Vito and @zadjii-msft!)
You can now enable broadcast mode via the Command Palette, which will broadcast input to all panes in a tab ( #14393 ) ( #15993 )
You can now launch a profile via wt and keep its built-in command line with the --appendCommandLine flag ( #15822 ) (thanks @hanpuliu-charles!)
For example, if your PowerShell profile specifies pwsh.exe, you can run wt --appendCommandLine -p PowerShell -- -Command echo Hello, which will run pwsh.exe -Command echo Hello. That's a lot of dashes. Wow.
You can now search the web with your selected text via... ( #15539 ) (thanks @mpela81!)
...the experimental right-click context menu!
...the searchWeb action!
You can customize each action to launch any search engine by specifying the queryUrl. %s will be replaced with your query.
You can customize the default search engine for both of these by specifying the global setting searchWebDefaultQueryUrl. %s will be replaced with your query.
If you have shell integration enabled, you can enable using the mouse to reposition the text cursor ( #15758 )
{profile}. experimental.repositionCursorWithMouse (the dot is part of the name, sorry) (boolean, default false)
Theming and Scheming
You can now set the window border color on Windows 11 via the {theme}.window.frame and {theme}.window.unfocusedFrame color entries ( #15441 )
For more fun, you can set {theme}.window's experimental.rainbowFrame to true
You can now (finally!) enable support for using the acrylic material in an unfocused window ( #15923 ) ( #15944 ) (thanks @Jaswir!)
Set useAcrylic to true in {profile}.unfocusedAppearance
You can turn unfocused acrylic off globally with the global setting compatibility.enableUnfocusedAcrylic (boolean, default false)
Themes can now indicate whether tab icons should be shown in color or monochrome or hidden entirely ( #15948 ) (thanks @bundgaard!)
Set {theme}.tab.iconStyle (enum default, hidden, monochrome; default default (default))
Changes
wt -- foo will once again inherit the environment from its parent ( #15897 )
You can customize this behavior with wt --inheritEnvironment or wt --reloadEnvironment on a per-tab/per-pane basis.
You can also override this behavior with the profile setting {profile}.compatibility.reloadEnvironmentVariables (boolean, default true)
We have rewritten "cooked read", the input line used by Command Prompt, Python, and a whole host of other applications ( #15930 ) ( #15780 ) ( #15782 ) ( #15783 ) ( #15880 )
This includes changes to command history, popups ( F7 and the like), and how input is echoed to the display.
This may have a wide-ranging impact, so please file any unexpected input issues in Win32 applications!
Input event record handling has been rewritten to support wide encodings like UTF-8, to be more maintainable, and to be much simpler to read ( #15671 ) ( #15606 ) ( #15605 ) ( #15611 ) ( #15673 ) ( #15672 )
Console applications can now more reliably print characters composed of surrogate pairs (aka "We've been trying to reach you about your WriteCharsLegacy's extended Emoji support") ( #15567 )
We've added an action that opens the about dialog ( openAbout) ( #15990 )
conhost will now ignore key events with an invalid virtual keycode and a scan code of 0 (such as those emitted by strange software keyboards) ( #15753 ) (thanks @tusharsnx!)
We will no longer generate WINDOW_BUFFER_SIZE_EVENT when the viewport moves, confusing applications that translate it into a destructive operation ( #15935 )
You can now configure any copy action to dismiss or keep the selection after it runs ( dismissSelection, boolean, default true) ( #15552 ) (thanks @gonzalo-garcian!)
The text buffer has been reorganized to be (1) faster (2) smaller (3) harder, better, etc.
Rows are initialized lazily in chunks of 128 or so; we no longer spend memory on blank space you'll never see ( #15524 ) ( #15582 )
Reading, writing, initialization, etc. has been cleaned up and vectorized ( #15501 ) ( #15498 ) with fast passes and other optimizations ( #15499 ) ( #15879 ) ( #15541 ) ( #15497 )
We've rewritten resize with reflow so it's like a billion times faster and more correct ( #15701 )
If you see any issues when resizing (other than "bash prints the prompt 600 times every frame" (that's apparently just how bash works)), please file them!
We no longer load the Settings editor library on launch, saving you tens of kilobytes of memory ( #15628 ) ( #15631 )
We will now display an indicator in the tab of any disconnected/closed/crashed application. You can right-click the tab to restart it! ( #15760 ) (thanks @mpela81!)
You can now run profiles as Admin from the new tab menu by right-clicking them ( #15679 ) (thanks @jamespack!)
The profile preview in settings now shows you what a "powerline" font will look like when one is selected ( #15365 )
We actually did fix the homoglyph thing this time; hovering a URL that is pretending to be someone else through funny characters will see right through it ( #15488 )
You can now right-click a tab and move it to a new window ( #15376 ) (thanks @Jaswir!)
All text search now uses ICU, and is like blazing fast. URL detection, Search, everything is covered! ( #15858 ) ( #15998 ) ( #15892 )
For those of you debugging Terminal/the console with ETW, you can now group all API calls by originating process ( #15737 )
Also for debugging purposes, you can now add the debugTerminalCwd action to display a pop-up with Terminal's current "virtual" working directory ( #15282 )
If you are using Preview, Canary or Dev we will now set an appropriate JSON $schema so you can auto-complete new settings ( #15856 )
VT
We now support Erase Color Mode (DECECM) ( #15469 ) (thanks @j4james!)
The horizontal scrolling sequences DECIC, DECDC, DECBI and DECFI finally work! ( #15368 ) (thanks @j4james!)
@tusharsnx put a lot of work into making ITU T.416 color sequences work! He...
... added support for sub-parameters separated with
#15648 )
... added support for ODA SGR sequences ( 38:2::R:G:B, 48:...) ( #15729 ) ( #15844 )
We will now pass through kitty's underline color ( 58:...) and style ( 4:...) sequences (we won't render them yet! but maybe soon!
?) ( #15795 ) (thanks @tusharsnx!)
Bug Fixes
Accessibility
We've added automation property names to the 'Delete Color Scheme' button ( #15994 )
The key chord indicator in the command palette now has a background color ( #15677 ) (thanks @RickleAndMortimer!)
Settings now groups elements in their containers for screen readers ( #15756 )
Screen reader users can now determine which color scheme is the current default ( #15486 )
Default Terminal and Color Scheme ComboBoxes no longer crop at 200% text scale ( #15762 )
Screen readers will now announce successful pane and tab moves ( #15771 )
VT and terminal emulation
Hard Reset ( RIS) no longer disables Win32 input mode or focus event mode for pty clients (like Terminal) ( #15476 ) (thanks @j4james!)
We no longer log traces or telemetry about aggregated VT sequence use ( #15494 ) (thanks @j4james!)
We started to do this in ~2016 or so when we were trying to figure out what VT sequences applications were using. We're way beyond needing that now!
The Terminal will now enter mouse mode immediately when a Win32 console app enables it (among other output flushing changes! If you see any flickering in modern VT applications, let us know!) ( #15991 )
Scrollbar marks will now be cleared by clear (and friends) ( #15686 )
Usability and UI
We will no longer reload the settings as often when various OS knobs and switches change ( #16004 )
The tab right-click menu now remembers which terminal pane was active when it was invoked... ( #15999 )
You can once again restart the first pane in a split with Enter after it exits ( #16001 )
All actions now remember which pane originated them, so things like "export text" and "Move tab to new window" and "Duplicate" no longer summon one of the Old Ones ( #15773 )
The about dialog no longer tells you that you've got an update available to the same version you already have ( #15378 )
When the tab close button is disabled, it will no longer randomly reappear to taunt you ( #15914 )
Duplicated tabs now consider the existing configuration option for where to put tabs ( #15972 ) (thanks @codecruisedor!)
The launch parameters (position, size) now properly support negative numbers ( #15941 ) (thanks @codecruisedor!)