Preview has finally diverged from Stable! Rejoice!
Features
- Terminal can now pass raw modifier keys and other raw Windows input through to the connected application (#6309), bug fixes (#6431) (#6442) (#6461) (#6516) (#6517)
- This enables a number of PSReadline key bindings and the modifier-hold behavior of FAR Manager, ZTreeWin, and tens of other applications that were using traditional Win32 input records.
- COMPATIBILITY We have specified and implemented a new optional terminal input mode (specification)
- Terminal emulators on Windows (VSCode, PuTTY, ...) can implement the feature as specified and produce full-fidelity Win32 input messages
- Terminals that do not do so will not be impacted and should continue to function as normal.
- You can now right-click on a directory and choose "Open Windows Terminal here"! (#6100)
- However, due to a bug that's fixed in insider builds you can't do that from the "background" of that directory... (#6415)
- We're hoping that once this bug fix is tested, we can get it out in earlier versions of Windows.
- However, due to a bug that's fixed in insider builds you can't do that from the "background" of that directory... (#6415)
- We've added a context menu that will appear when you right-click a tab!
- You can now open a split pane from the menu by holding down Alt when you click it (#5928)
Settings
- You can now specify the default profile by name (!) (#5706)
- With this change, you no longer need to visit the GUID recycler to make a new profile. GUIDs are (pretty much) an implementation detail.
- Terminal will no longer complain if you leave trailing commas in your "JSON" settings (#6312)
- What even is JSON anymore?
- Yes, we perhaps chose a poor configuration format given that we expected users to have to hand-edit it.
openSettings
learned a new argument,target
(per-binding, enum"defaultsFile"
,"settingsFile"
) (#6299)target
defaults tosettingsFile
- We've added a new default binding (finally) to open the defaults: Ctrl+Alt+,
- You can now opt in to automatic startup with the
startOnUserLogin
setting (global, boolean, defaultfalse
) (thanks @jelster!) (#4908)- The first time you toggle this to
true
, Terminal will ask again for your permission to become a startup task - If you're one of the 0% of people running terminal unpackaged, this won't work for you.
- The first time you toggle this to
launchMode
now supports"fullscreen"
(#6060)- We've added support for a new
tabWidthMode
,"compact"
(#5787)- When compact sizing is enabled, only the focused tab will display its title.
- AltGr/Ctrl+Alt aliasing can now be toggled with the
altGrAliasing
setting (profile, boolean, defaulttrue
) (thanks @lhecker!) (#6212)- We learned that while some people want Ctrl+Alt to act like AltGr, others don't. If you're one of the ones that doesn't: rejoice!
- We now support
fontWeight
(profile, integer or enum, default"medium"
/400
) (#6048)
Command-line invocation, wt.exe
- Terminal can now be launched (through the
wt
execution alias)--fullscreen
or--maximized
(#6139) new-tab
andsplit-pane
now support--title
(which predictably overrides the application title) (#6296)wt
learned the--version
argument (#5501)
Terminal Basics
- conhost (and therefore, to an extent, Terminal) is now a more faithful VT52 emulator (thanks @j4james!) (#4789)
- We've added support for
DECANM
and a great number of VT52 input encodings.
- We've added support for
- conhost now supports 31 VT character sets (up from 2) and the
DOCS
sequence to switch to ISO-2022 mode (thanks @j4james!) (#4496)- There was also a persistent bug where tmux would occasionally
Shift In
/Shift Out
for what appeared to be no reason, corrupting the display- Better support for character sets = better support for
SI
/SO
= no more tmux graphical corruption!
- Better support for character sets = better support for
- There was also a persistent bug where tmux would occasionally
- You can now drag and drop snippets of text onto the Terminal and it'll do roughly what you'd expect (#5865)
Changes
UI
- Right-clicking the negative space between the tabs and the caption buttons will now open the system menu (#6443)
Windows Terminal (Preview)
is nowWindows Terminal Preview
¯\_(ツ)_/¯ (#6418)
Internal/VT/Conhost
- We've changed the internal representation for 256-color text (thanks @j4james!) (#5834)
- COMPATIBILITY It is no longer possible to combine VT and the legacy console API to "brighten" text.
- If you're going to brighten dark colors, do it with
FOREGROUND_INTENSITY
or go full-VT.
- Color conversions (24-bit/256->16) are now more efficient but do not take into account the active palette (thanks @j4james!) (#6358)
- It turns out that color conversion was utterly broken for
ReadConsoleOutputAttribute
and nobody ever noticed, but that's also fixed now too. I expect that of the 0 people who noticed it was broken, 100% of them will rejoice that it's been fixed.
- It turns out that color conversion was utterly broken for
- The dispatching of SGR sequences has been improved (thanks @j4james!) (#5758)
- Internal work is underway to support a "command palette" (#6351)
Bug Fixes
- The cursor will no longer obscure text, unless that text is the same color as the cursor (#6337)
- Known issue: underlines are now drawn on top of the cursor. Follow #6499 for updates.
- Text copied from the File Explorer's "Copy Address" option will now be pasteable (thanks @aldahick!) (#6146)
- Win32-OpenSSH 7.7 is here to stay, so we decided to fix the issue that allowed it to break mouse input (#6485)
- All tabs will now be created with a title so they stop looking so empty and vengeful (thanks @greg904!) (#6433)
- The keen-eyed among you may have noticed that the 6x6x6 xterm color cube was totally horked. Thanks to @j4james, this egregious sin has been corrected (#5999)
- Maximized terminal windows will finally put their tab strips right at the top of the screen. Unrelatedly, Paul Fitts called to let us know about this one weird law (#5881)
- The maximize/restore button now more accurately tracks the state of the window (#5988)
- Some of you thought it would be a good idea to close a tab while dragging it around. I couldn't figure out why you wanted to do that, but it will at least now not do something strange... (#5883)
- Every time the window was resized, we'd lose track of another GDI handle. Now, we don't (#6229)
- Our caption buttons now fade like everyone else's when you hover over them (thanks @AnuthaDev!) (#6303)
Performance
I'm going to let these changelog entries speak for themselves, as they've done the problem better justice than I could:
- (@skyline75489) "Skip glyph shaping analysis when the entire text is simple" (#6206)
- (@greg904) "Add fast path to til::bitmap::translate using bitshifts" (#6493) (#6501)
- (@greg904) "Reduce latency with DXGI 1.3 GetFrameLatencyWaitableObject" (#6435)
- (@greg904) "Throttle scrollbar updates in TermControl to ~one per 8ms" (#4608)
- "Improve perf by avoiding vector reallocation in renderer clusters and VT output graphics options" (#6420)
Bug Fixes in conhost
A number of bugs were fixed in the traditional Windows Console Host--you won't see them in Terminal, but they'll be coming soon to a Windows Insider Build near you.
- Cursor visibility will be restored when you're done with your IME (thanks @j4james!) (#6207)
- The IME will no longer draw lines (underlines, overlines, leftlines, etc.) incorrectly (#6223)
- If you launch conhost through a shortcut without an icon, we'll now go digging to find one for you (thanks @malxau!) (#6277)