Releases: microsoft/terminal
Windows Terminal Preview v0.8.10091.0
Features
-
First, the flashiest new feature: a retro-style CRT shader (EXPERIMENTAL FEATURE) (#3468)
- Enable this with
experimental.retroTerminalEffect(boolean) in your profile. This one will only take effect on the next new tab you open! - Experimental features may be removed at any time. That’s why they’re in the
experimental.namespace!
- Enable this with
-
There’s an all-new connection state manager! When a process exits, you’ll be confronted with the cold hard reality of the situation. (#3623)
- This behavior is now more configurable than ever. The venerable old
closeOnExitstill works, and still takestrue/false. That’s all fine and well. - In addition to
true/false, it now takes the string values"graceful","always"and"never".truehas becomegraceful, andgracefulmeans "if it exits without an error."neverandalwaysare exactly what they say on the tin.falsenow maps tonever.
- This behavior is now more configurable than ever. The venerable old
-
We’ve shipped support for "default settings!" This lets you specify settings that apply to all profiles. (#3892)
- You can set almost everything in the defaults block, with the notable exception of
guid. - Check out the sample below for more info.
- You can set almost everything in the defaults block, with the notable exception of
-
You can now search for
your lost keyssome really important output you might have missed! (#3590)- Search is, by default, bound to Ctrl+Shift+F in keeping with our mission to leave all Ctrl+ bindings available to commandline applications.
- It can be rebound with the
findaction. - This is not search's final form! Follow our future plans in #3920. In the long term, it should have blinking lights and moving platforms like any good boss fight.
-
Improvements to pane-splitting and tabbing key bindings:
- There is a new
splitPanekey binding that takes an optionsplit(string,"horizontal","vertical"or"auto") that seeks to replacesplitVerticalandsplitHorizontal(#3722)"auto"splits in half along the larger dimension (#4025)
newTabandsplit*can now open specific profiles with option overrides, specified by ... (#3825)profile(string, guid): a profile name or guidindex(int): a profile index in the profile listcommandline(string): a commandline to launch in the new profilestartingDirectory(string path): the path to a directory in which to launch this profiletabTitle(string): a custom title for the newly-opened pane or tab- Check out the sample below for more info.
- There is a new
-
You can now configure the number of rows that your scroll wheel (or touchpad) will scroll (#3575)
- Global setting
rowsToScroll - Valid values are
"system"(trust Windows) or any integer
- Global setting
-
We've landed the first hint of tab size customization:
tabWidthMode(#3876)- It accepts two values:
"equal"(DEFAULT): all tabs are the same size, and they shrink to a certain tolerance before scrolling"titleLength": the mode you know and love and also hate
- It accepts two values:
-
You may now opt in to grid-snapping resize with the
snapToGridOnResizeglobal setting. (#3181) (#4154)
Accessibility Features
- Terminal will now notify the accessibility subsystem, if it is listening, that the selection has changed -- but only when the selection has changed. (#2989)
- You can now navigate the contents of the buffer word-by-word using Narrator (and perhaps other screen readers) (#3659)
Changes
- Dev and Internal builds have shiny new icons (#4006)
- VT Improvements
- LF will no longer scroll outside of DECSTBM margins (#3704)
- Scrolling and erasing will now result in the correct text attributes (#3100)
- The horizontal tab character will no longer wrap off the end of the line (#3197)
- DECALN (
\x1b#8) is now supported for when you want a terminal full ofEs (#3968) - We've removed the VT52 movement operations to eventually go and figure out how to integrate them with proper VT modes (#4044)
Bug Fixes
- Punctuation (and other things) entered through non-keyboard input methods will no longer repeat hundreds of times (#4140)
- The tab row will once again get larger when the window does. Rejoice! Be free, tabs! (#4024)
- WSL consumers will now see the
WT_SESSIONenvironment variable (#4157) docker-desktopdistributions will no longer appear in the profile list (#4156)- If you had a distribution named
docker-desktop{something}and can't find it:- I'm sorry.
- Why?
- Please file a bug; We'd love to see if there's something better we can do here.
- If you had a distribution named
- Applications that try to set the console buffer size without setting the window size will no longer wipe out your session (???) (#4021)
- The cursor will appear immediately when you focus the terminal (#4032)
- Fullscreen mode now works more reliably (#3721)
- Moving focus between grouped panes should now move in the way you expect (#3958)
- Heaps of crash fixes (#3806) (#3835) (#3936) (#3908)
- When you try to use VT to set color table entry 256 you won't be able to, but Terminal will at least not beef it when you do (#3938)
Pane-splitting and tabbing arguments
Default settings example
Old busted jawn
"profiles": [
{
"commandline": "cmd.exe",
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"fontFace": "Cascadia Code PL",
"colorScheme": "Vintage"
},
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"name": "PowerShell Core",
"source": "Windows.Terminal.PowershellCore",
"fontFace": "Cascadia Code PL",
"colorScheme": "Vintage"
},
{
"guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
"name": "Debian",
"source": "Windows.Terminal.Wsl",
"fontFace": "Cascadia Code PL",
"colorScheme": "Vintage"
}
],New hotness
"profiles": {
"defaults": {
"fontFace": "Cascadia Code PL",
"colorScheme": "Vintage"
},
"list": [
{
"commandline": "cmd.exe",
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd"
},
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"name": "PowerShell Core",
"source": "Windows.Terminal.PowershellCore"
},
{
"guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
"name": "Debian",
"source": "Windows.Terminal.Wsl"
}
]
},Windows Terminal Preview v0.7.3451.0
This is the second servicing release in the 0.7 line. It contains the following bug fixes.
Bug Fixes
suppressApplicationTitleshould be way better at suppressing the application title, like it says on the tin (#3837) (#3859)- We've ironed out a bunch of crashes that could happen when tabs were closing, being closed, or out on their lunch breaks. (#3835) (thanks @mkitzan!)
- On the off chance that you wanted to do chunked word selection somewhere where there were a bunch of colors at the top left of the screen, you can now actually do that without Terminal buying the farm. (#3566)
Windows Terminal Preview v0.7.3382.0
This is the first servicing release in the 0.7 line. It contains the following bug fixes.
Bug Fixes
- Launching (or using, or thinking about) Windows Terminal when your display scale is set to something that isn't a nice round number will no longer crash. (#3784)
- Resizing the window, moving it to another monitor, or snapping it all over the place should crash a whole lot less. (#3832)
copyandcopyWithoutNewlineswere accidentally swapped when we implemented key binding arguments. They aren't anymore! (#3823)- Our titlebar buttons fit in with the rest of Windows slightly better. (#3777)
Windows Terminal Preview v0.7.3291.0
Features
- Split Panes! The keybindings for splitting are now included by default. (#3585)
- Our window borders have gotten a significant makeover. THE BORDERS ARE NOW GREAT. THE THICKNESS IS GONE. (#3394)
- Known Issue: If Windows is set to dark theme, and you've got the "use my accent color on title bars" setting turned off, your window borders will be white. Really quite white. Even so, we think this is a significant step up.
- They will no longer hang over onto other monitors when you maximize Terminal.
- They will no longer accidentally blow up to gargantuan sizes like "an inch on each side."
- The resize handles are now, largely, exactly where you'd expect them.
- Huge thanks to @greg904 for working tirelessly to bring this one in!
- All input method editors (Ink, Emoji, Chinese, Japanese and Korean, as well as various others) now appear, appear in the right place, offer input feedback, and actually work. (#1919)
- You can now turn off dynamic titles with
suppressApplicationTitle; when you do so, a tab will retain thenameortabTitleof its originating profile (#2814) - RTF data is now copied to the clipboard (#3535)
- We've finally caught up with the state of the art as it was in 1997, so more applications (usually the older ones) will receive colored content on paste.
- You can now set the background color of a selection using
selectionBackground(at the profile level) (#3471) - Tabs can now be reordered! (#3478)
- Known Issue: You cannot reorder the tabs when running as admin. We're tracking this in #3581.
- You can try, but it will definitely crash.
- Known Issue: You cannot reorder the tabs when running as admin. We're tracking this in #3581.
- Fullscreen mode now exists and you can enter it using Alt+Enter or F11 (#3408)
- You can rebind fullscreen mode with the
toggleFullscreencommand.
- You can rebind fullscreen mode with the
- Azure Cloud Shell will now be offered on ARM64 devices (#3489)
- Key bindings now support arguments; check the default settings for some examples of how this works (#3391)
- As an example so you don't have to crack the settings open:
"command": "newTabProfile0"is now better expressed as"command": { "action": "newTab", "index": 0 }. It looks more verbose, but wow is it ever more flexible.
- As an example so you don't have to crack the settings open:
- A key binding, Ctrl+0, has been added to reset a terminal's font size to "default" (if you've zoomed it) (#3505)
- Rebind this with the command
resetFontSize
- Rebind this with the command
Changes
- The "Active Terminal" and "Focused Control" are now decoupled (#3540)
- We're a lot less likely to lose track of who is the terminal of repute in a multi-pane situation.
- Improvements to the Azure connection:
- All of its messages are now localizable (#3463)
- There's now more padding to the left of the tabs (#3513)
- Clicking the scroll arrow buttons will now move one line at a time (#3397)
- We've revamped how we launch processes to better support fixing #2563 (and others) (#3461)
- Various bits of internal refactoring; break everything out of App except Xaml platform init (#3465)
VT Improvements
- The Save/Restore Cursor sequences
DECSCandDECRCare now better-supported (#3160) - ... so is
HPA(#3368)
Bug Fixes
backgroundImagenow expands environment variables (#3204)- Increase and decrease font size using keybindings works (#3629)
- Paste now replaces
\r\nline endings with\r(#3449)- Pasting content is now at least 98% less annoying.
- Alt+Arrow-Keys no longer print extra characters (#3117)
- When you’re scrolled up, pasting now scrolls down to the prompt when using snapOnInput (#3521)
- Terminal should no longer shuffle off this mortal coil when DWM buys the farm, like sometimes when your display topology changes (#3460)
- Quickly opening and closing tabs will crash less (#3256)
- Printing a binary file to your terminal using WSL won’t cause it to misbehave quite as badly (#3380)
- As a question, though, why would you do this? This came to us as a repro that was legitimately phrased as "Just run
cat /bin/*".???
- As a question, though, why would you do this? This came to us as a repro that was legitimately phrased as "Just run
Windows Terminal Preview v0.6.2951.0
Features
- There's now a setting for launching the Terminal in a specific initial position on your screen or to have it maximized when it starts up (#2817)
- Set
initialPositionto a string of the formatx, yto force the terminal to launch in that position. Like,100, 200. - The position specified is relative to your primary monitor. Negative values will be to the left of (x) or above (y) the primary monitor.
- Set
launchModetomaximizedto request that Terminal start up maximized on the monitor it would have landed on based on itsinitialPosition
- Set
- If you chose a color scheme that didn't exist, you got the wonderful black-on-black color scheme that was excellent for readability. Now instead, you get a warning that the settings couldn't find a valid scheme and we choose the default Campbell scheme instead so you can actually see things. (#3033)
- Terminal now also warns you about closing many tabs when clicking the X button on the window frame, like a browser (#3049)
- There are new keybindings,
increaseFontSizeanddecreaseFontSize(bound by default to Ctrl+= and Ctrl+-) that help you increase and decrease the font size. (#2700)
Changes
- We've upgraded to the latest version of WinUI, 2.2! There's a bunch of improvements in our tab bar, including... (#3027)
- ... the ability to scroll your tabs with
<and>buttons - ... the ability to see all of your tabs
- ... a much more accessible color scheme
- A KNOWN BUG where the tab bar won't expand when you make the window wider; this is being tracked by #3300.
- (workaround: open a new tab)
- ... the ability to scroll your tabs with
- Performance improvements
- We now defer rendering the cursor until we know we're done printing text (#2960)
- We got a little excited about updating the cursor and would spend most of our time drawing the cursor blinking on and off or moving through the buffer, even while we were writing more text. Now, we control ourselves and only draw the cursor when done emitting a segment of text. This improves drawing and buffering performance.
- Things that change color in the middle of a line will now do so less slowly (#2937)
- Runs of simple characters will no longer incur an expensive layout pass (#2959)
- Re-instates text complexity check during text rendering to make simple/basic/ASCII text skip all analysis phases and render faster (less CPU!)
- We now defer rendering the cursor until we know we're done printing text (#2960)
- Characters of unknown width are now considered to be one cell wide (#2928)
- Improves layout of all glyphs that are "ambiguous" per the Unicode standard by forcing them to be narrow, as most other Terminals do. This should improve table/box drawing.
- If you see some emoji that have been crushed, smushed or smashed, please mention them by codepoint in #900.
- Emoji are almost all ambiguous, so this is troublesome.
Bug Fixes
- We'll no longer crash if you open a tab, close it, then try to draw some unexpected characters in any other tab (#2928)
- Weird enough, this was the same fix as the "ambiguous width" one above. Your homework is figuring out why!
- Text copied to the clipboard will, in a lot more cases, have the right number of line endings (#3239)
- Characters like
:and'will now make their way to legacy applications in a way they can understand (#3199)- (some old Windows applications, or new ones that are written to target consoles that have been dead and gone for tens of years, were trying to read the scancode out of a key event. Terminal wasn't putting the right one in sometimes.)
- correctly inform connection of resize events (#3228)
- Fix for Visual Studio 2019 preview embedded terminal component to relay resizing events correctly. - Revert "Patch fix for #1360 (#2924)" (#3212)
- See below. We tried fixing full-width characters at end-of-line and introduced a bunch of crashes, so this rolls it back to stop the crashes. - TermControl: force all ambiguous glyphs to be narrow (#2928)
- Improves layout of all glyphs that are "ambiguous" per the Unicode standard by forcing them to be narrow, as most other Terminals do. This should improve table/box drawing. - Replace ExpandEnvironmentStrings double calling with wil helper (#3198)
- Cleanliness fix. Turns out we don't need to jump through 12 hoops to expand environment variables because WIL has a nice helper. This makes us use it and stop the hoop jumping. - Defer cursor redrawing when writing the buffer (#2960)
- We got a little excited about updating the cursor and would spend most of our time drawing the cursor blinking on and off or moving through the buffer, even while we were writing more text. Now, we control ourselves and only draw the cursor when done emitting a segment of text. This improves drawing and buffering performance. - You can now use font names longer than 32 characters (#3107)
- We used to believe that font names could only be 32 characters or less because 32 characters would be enough for anyone. Now we believe that font names can be any length they choose to be.
- Two tabs emitting output at the same time will no longer corrupt oneanother (#3110)
- If you have a
globalsobject in your settings file, it will no longer cause the rest of your settings to be ignored. - VT fixes
- Alt+Backspace followed by Enter will no longer result in the application receiving Alt+Enter (#2823)
- NUL will no longer show up in the buffer (#3015)
- Some applications spend a lot of time talking about nothing. We used to listen to them and broadcast their nothingness to the world. Now we ignore them and save everyone from having to hear that. (Applications that used NUL to waste time don't have an effect of inserting space into the buffer anymore.)
- The terminal will now know when the application wants to hide the cursor. It won't do anything about it, but it'll know. (#2829)
- The line above, but for extended text attributes like underline, strikethrough, and italics. Remember, the Terminal won't do anything with this newfound knowledge. (#2917)
Windows Terminal Preview v0.5.2762.0
Changes
- Terminal has been updated to include Cascadia Code 1910.04. (#3048)
Bug Fixes
- The maximize/restore button will now reflect the state of the window (#3025)
- You can once again double-click on the titlebar (#3024)
- You always could, but sometimes it wouldn't do anything. Now it will! Bonus: it'll do what you expect.
- Update cmd's default profile to disable acrylic (#3020)
- VT fixes
- "Exotic" inputs like Alt+< and any other Alt+ that isn't a letter (as defined by US-ASCII) will work more reliably (#2836)
- make filling chars (and, thus, erase line/char) unset wrap (#2831)
- Fix a number of crashes at the WinRT boundary (including some clipboard issues!) (#2927)
- PowerShell now has its own theme so it stops eating your
background(#2936)
Windows Terminal Preview v0.5.2681.0
Bug Fixes
- The rightmost column of the screen will now be cleared properly for
ELand (because of how the console hosting layer works,)ED+cls(#2879)
Windows Terminal Preview v0.5.2661.0
Features
- You’re going to find a new font on your system. Enjoy it! It’s called “Cascadia Code,” and it’s also an early version. It looks pretty good in terminals. (#2806)
- Your settings are going to get way better from here on in.
- WSL distributions will automatically show up in your menu, ready to use! (#2603) (#2798) (#2789)
- Special feature for upgraders only: existing profiles that point to long-dead distributions will not be removed.
- You can go clean up your key bindings and color schemes. (#2515)
- If you’ve been selfhosting with us since v0.1 and have never taken our advice to delete your profiles, you’re going to have two copies of CMD and PowerShell.
- It’s up to you how you’d like to proceed. You can probably delete one of each.
- There’s a settings schema! If you’re using VS Code, it can help you not write typos. (#2803)
- WSL distributions will automatically show up in your menu, ready to use! (#2603) (#2798) (#2789)
Changes
- You can now use short hex color codes (like
#ccc) in your settings. (#2658) - You can now hide profiles (key: hidden) (#2801) (#2800)
- Some new defaults have landed (#2378)
- Padding: 8 all around
- Font size: 12? I think it’s actually 12, but the commit says 11. Good hygiene in commit messages is important, folks!
- A new binding command,
closeWindow, has been added. By default, it will bind to alt+f4. It’ll prompt you before exiting! (#2526) (#2858) - When you double-click a word delimiter, it’ll select all delimiters. Same thing when you drag over one. (#2511)
- Space is special – space is different from the other delimiters in that selecting a period or a slash won’t automatically select every space on the screen (oops).
Bug Fixes
- Terminal will no longer take a trip upstate when it fails to put something on the clipboard (#2590)
- Terminal will be more resilient when your display adapter disappears (#2830)
- Making the window smaller now has a lower chance of crashing when the alternate buffer is engaged (#2666)
- You can now select text with your Surface Pen (or other pen) (#2586)
- Running CLS in CMD will now clear the active screen buffer (not the wrong one, and definitely not a screen buffer on some other computer) (#2729)
- HTML Copy improvements:
- [conhost] When you launch with VT mode enabled, tab stops are now set (#2816)
- Poorly-behaved legacy applications that like to print literal control characters are no longer going to be very sad and wrong when they do. (#1964)
VirtualTerminalLevel= 1 is now engaged by default for Windows Terminal (and other pseudoconsole hosts) (#2824)- A huge contributor to the bug where copy forgot to include newlines has been addressed (#2797)
- Accessibility should be somewhat less crashy (#2609)
- VT handling improvements (conhost)
RISwill properly clear the display and the scrollback (#2367)- The VT scrolling commands now check their boundaries better (#2505)
ILandDLnow have proper margin handling (#2731)DECSTBMclipping is now applied more consistently (#2764)- Lines inserted will maintain their RGB/256-color attributes (#2668)
- Hygiene: The panes implementation is now more consistent (#2494)
- Hygiene: TerminalApp and Page are now more cleanly separated so that we can support different hosting environments. (#2208)
Windows Terminal Preview v0.4.2382.0
Features
- HTML Copy! (#1224) (#2038)
- HTML copy is incontrovertible.
- If you want to paste plain text, the receiving application should provide that option.
- HTML copy is incontrovertible.
- There have been significant improvements to tab titles (#2373)
- tabTitle is no longer an override
- Any opened tab will default to being named after its profile (or tabTitle, if it is set)
- The shell can read and change this title.
- CMD likes to append the running command name to the existing title. It can now do that!
- You can now double-click and drag to continue selecting words (#2184)
- …and triple-click and drag to continue selecting lines!
- Your settings will no longer roam from machine to machine. (#2298)
- We always thought it’d be a good idea to roam settings, but really it ended up being a lot more trouble than it was worth.
- No longer will your WSL and PowerShell Core profiles from Machine A cause WT to fail to run on Machine B!
- We’ll migrate them to local storage for you.
- Even if you're using a symbolic link!
- You can now bind Ctrl+C to copy and it’ll still send a literal
^Cif you don’t have any text selected (#2446) - A new selection mode,
copyOnSelect, has been added: Text will be copied to your clipboard when you select. Immediately. (#2152) - A broader range of settings errors will now result in useful diagnostics instead of useless diagnostics. (#2422)
- A new key binding action,
openNewTabDropdown, has been added. By default, we bind it to Ctrl+Shift+Space.- As with all new default bindings, it will only be added for new users.
Changes
- Azure Cloud Shell no longer identifies itself as Visual Studio Code (#2219)
- (Dev builds only) Azure Cloud Shell only shows up if it would actually work on your build. (#2195)
- The settings file will never be rewritten once it exists. (#2475)
- (on 100%-scale displays) UIA text ranges will now appear in the right place on-screen (#2423)
Bug Fixes
- Powershell should no longer crash when you close its tab (#2198)
- Applications will now receive proper exit events when you close their tabs.
- Tab icons now flicker 100% less often (#2376)
- We won’t crash when you try to split panes for ants -- thanks @richardszalay! (#2450)
- Data copied to the clipboard will be kept once you exit WT (#2486)
- It’s a bit harder to accidentally detach the window from its dropdown menu. (#2438)
- The box cursor will be 74% less blurry and 100% more cool (#2491)
- Underlines won’t be in the wrong color any longer! (#2491)
- The windows key will no longer snap on input. (#2514)
- Azure Cloud Shell will no longer fail when it can't figure out a tenant's name (#2508)
{ // Ctrl+Shift+U will launch the Ubuntu profile "command": { "action": "newTab", "profile": "Ubuntu" }, "keys": [ "ctrl+shift+u" ] }