Commit Graph

4980 Commits

Author SHA1 Message Date
Pankaj Bhojwani
9a0e91094a update comment 2026-08-27 13:36:41 -07:00
Pankaj Bhojwani
f8e1755918 format 2026-08-18 14:39:44 -07:00
Pankaj Bhojwani
7c40e2c654 spell 2026-08-18 14:34:12 -07:00
Pankaj Bhojwani
d0d97e61d4 doc fix 2026-08-18 11:35:37 -07:00
Pankaj Bhojwani
ff57910c4b unpackaged fix 2026-08-18 11:25:18 -07:00
Pankaj Bhojwani
20c8410590 alias 2026-08-13 15:39:41 -07:00
Pankaj Bhojwani
71427de8d2 another stale line 2026-07-23 10:46:09 -07:00
Pankaj Bhojwani
bd38b0892f update doc 2026-07-22 14:53:01 -07:00
Pankaj Bhojwani
6c4a0354bc some stale stuff 2026-07-22 10:54:28 -07:00
Pankaj Bhojwani
e26675d578 remove get capabilities 2026-07-13 16:06:44 -07:00
Pankaj Bhojwani
3c762e4fb3 okay it works here 2026-07-09 13:32:58 -07:00
Pankaj Bhojwani
3096e1d285 cleanup fuzzer 2026-07-07 15:46:23 -07:00
Pankaj Bhojwani
a9db78dfb7 remove event sink 2026-07-06 15:50:39 -07:00
Pankaj Bhojwani
e31ceab487 real clsids 2026-07-06 15:15:04 -07:00
Pankaj Bhojwani
0899ce291c read last prompt fix 2026-06-24 10:40:59 -07:00
Pankaj Bhojwani
f27e828660 Merge branch 'main' of https://github.com/microsoft/terminal into dev/pabhoj/wtcli 2026-06-23 13:40:00 -07:00
Anshika Jain
8824b02a78 Always use MRU tab focus on tab close regardless of TabSwitcherMode (#20272)
## Summary
Always focus the MRU (most recently used) tab when closing the current
tab, regardless of TabSwitcherMode setting.

## References
Fixes #19819

## Detailed Description
Removed the `TabSwitcherMode` check in `_RemoveTab` (TabManagement.cpp)
so tab-close focus behavior is always MRU-based, decoupling it from the
tab switcher preference as noted by @DHowett.

## Validation Steps
- Opened 3 tabs, navigated Tab3 → Tab1, closed Tab1
- With fix: Tab3 focused  (MRU)
- Without fix: Tab2 focused (next in order)

## PR Checklist
 Closes #19819
2026-06-23 18:20:08 +00:00
Phil Scott
0c4881bc9c Fixes xbox controller crashing the Terminal (#20234)
## Summary of the Pull Request
Fixes a denial of service by a toddler with an Xbox controller wanting
to play Forza. They can impatiently press up and down and close out the
terminal window.

Issue is upstream in WinUI, but I think this gathers things into a state
where Terminal can at least recover by adding a `GettingFocus` handler
on the `TabViewItem` that cancels that gamepad focus move before it
reaches the framework handler.

## References and Relevant Issues
Issue #19671 and #20089

## Validation Steps Performed
Handed a controller to my toddler while working in terminal. I also
banged on the keys myself.

## PR Checklist
Closes #19671 
Closes #20089
2026-06-23 10:27:17 -07:00
Dustin L. Howett
05b613cf06 Pre-warm SHGetKnownFolder to avoid a deadlock in the nvidia driver (#20351)
The nvidia driver attempts to use SHGetKnownFolder (which has its own
lock!) under the loader lock, which occasionally triggers a deadlock
when we attempt to do the same thing during settings load.

Closes #20350 (superseded)
Closes #20348

Co-authored-by: gleb <46842077+groovg@users.noreply.github.com>
2026-06-22 18:09:00 -05:00
Danyal Ahmed
d288fa09d6 Fix font face keyboard selection crash (#20255)
## Summary

Fixes a crash in the Settings UI font face control when selecting a font
suggestion with the keyboard and pressing Enter.

The font face `AutoSuggestBox` path was explicitly unfocusing the box
after a chosen suggestion was submitted. During the keyboard suggestion
commit path, that `Focus(FocusState::Unfocused)` call can trigger a
WinUI/XAML crash before the settings model update completes.

This change avoids explicitly unfocusing the `AutoSuggestBox` in the
chosen-suggestion path and instead commits the selected font and moves
focus to the parent container.

Fixes #20245.

## Validation

Manually validated with a local `CascadiaPackage` Debug x64 build:

- Reproduced the crash before the fix.
- Opened Settings → Defaults → Appearance → Font face.
- Typed a partial font name.
- Used arrow keys to select a suggestion.
- Pressed Enter.
- Verified Terminal no longer crashes.
- Verified the selected font is applied and Save works.
2026-06-22 14:53:05 -07:00
BamBamTram32
d21b580353 Update README.md (#20273)
Improved README accessibility alt text
2026-06-22 21:18:38 +00:00
Pankaj Bhojwani
e4d1064aa2 another vcxproj fix 2026-06-22 13:46:57 -07:00
Dustin L. Howett
0732b483ac Reflect OS PR !15916518: conhost: add ETL to our Feature Tests (#20334)
This may help us diagnose the OneCore windowing failures.

Related work items: MSFT-62650388
2026-06-22 12:16:54 -07:00
Pankaj Bhojwani
74af0a307c missed appxmanifest and vcxproj 2026-06-22 10:12:31 -07:00
Windows Console Service Bot
47253ef22b Localization Updates - main - 06/17/2026 03:05:24 (#20330)
Co-authored-by: Console Service Bot <consvc@microsoft.com>
2026-06-19 22:53:08 +00:00
Pankaj Bhojwani
f43921c58a some build errors 2026-06-17 10:22:33 -07:00
Mike Griese
1282d56a33 Add support for "workspaces" based on window names (redux) (#20314)
This adds a new feature to the Windows Terminal: "Workspaces"

Workspaces are very shamelessly inspired by Edge workspaces of the same
name.

The core idea is that when users name a window and they close that
window, we will persist that Windows layout and buffers, seperately from
the rest of window restoration. So a user can open a named window, open
some profiles, some panes, do some stuff in it, then close it, and we
will keep that state around for the next time the user opens that window
name.

Unnamed windows still behave the same. If you close an unnamed window,
and it's not the last window, then we won't persist the state of it.

To facilitate restoring named windows, we add a `openWorkspace` action.
This allows us to persist the open workspace action in the window layout
restoration path. So when we deserialize the list of tab layouts, and
open workspace action will tell us, hey, go retrieve this known
workspace from the state.json, instead of trying to serialize the window
state in two places.

As demoed in the video, we add a flyout to list the windows that the
user has open, and the named workspaces that they have saved. This
allows users to quickly reopen previously closed workspaces, as well as
quickly rename a window, thereby adding it to the list of saved
workspaces. This button can also be hidden using the theme settings.

Closes #17084

(this is a reboot of #20162, but with the event from #20311)
2026-06-16 16:59:17 -05:00
Dustin L. Howett
94dfb15916 Import changes from os.2020 (#20322)
Sometimes, changes like this just appear and we have to deal with them.
2026-06-16 17:56:17 +00:00
Dustin L. Howett
b7108c6528 Don't ignore the user's default environment inheritance setting for wt (#20321) 2026-06-15 15:41:29 -05:00
Mike Griese
9853bc9607 Update formatting scripts for Preview-only VS and pwsh 7 (#20312)
This is a pair of changes to make the code formatting scripts work,
circa 2026.

* If you only have VS Insiders installed, then vswhere can't actually
find a clang-format to build with. You need `-prerelease` to let it also
find preview builds of VS.
* Years ago we updated OpenConsole.psm1 to only support pwsh 7. I, of
course, use `cmd` as my dev env for terminal, so I use `runformat.cmd`,
which always shelled to `powershell` (5). This updates that tool to use
pwsh 7. Clearly this impacted only me ever.

related to #20162
2026-06-11 17:02:51 -05:00
Mike Griese
2c9d15200e Convert the Open New Window handler to an event (#20311)
From ye old days where we were a multi-process app, we would
`shellexecute` to create a new Terminal process when we wanted to open a
new window.

Now that we're all one process (#18215), this dance doesn't make sense
anymore.

So: let's just add a bunch of plumbing to take the IContentArgs up to
the emperor and have it hand them back to a new window.

(this will be used to resurrect #20162)
2026-06-11 16:26:34 -05:00
Dustin L. Howett
60a58c93d7 Update the WinGet configs, vsconfig and README for VS 2026 (#20313) 2026-06-10 23:22:02 +00:00
Dustin L. Howett
fc958b13ce Move to Visual Studio 2026, SDK 26100 and toolset v145 (#20225) 2026-06-10 17:43:30 -05:00
Dustin L. Howett
56bb43c265 chore: upgrade gsl to 4.2.2 (#20306)
GSL 4.2.2 contains a fix for a warning (in GSL itself, natch!) that was
making MSVC quite upset with us.
2026-06-08 23:30:52 +00:00
Windows Console Service Bot
39e5453b19 Localization Updates - main - OSC 777 and Navigation Pane (#20277)
Co-authored-by: Console Service Bot <consvc@microsoft.com>
Servicing-command: edit
2026-06-08 18:11:14 -05:00
Carlos Zamora
47e255f057 Revert "Fix Settings tab color mismatch with Settings page background (#19999)" (#20292)
This reverts commit 3ab2acc2ad aka Fix
Settings tab color mismatch with Settings page background (#19999).

Closes #20186
Re-opens #19873
2026-06-05 10:46:44 -07:00
Carlos Zamora
77e8ca9cb2 Revert "Add support for "workspaces" based on window names (#20162)" (#20291)
This reverts commit 4b8b6ffc67: Add
support for "workspaces" based on window names (#20162)

@DHowett found the following blocking issues:
-
https://github.com/microsoft/terminal/pull/20162#discussion_r3359134869
- unrelated changes in `tools/runformat.cmd` and `OpenConsole.psm1`
2026-06-04 16:35:29 -07:00
Mike Griese
4b8b6ffc67 Add support for "workspaces" based on window names (#20162)
This adds a new feature to the Windows Terminal: "Workspaces"

Workspaces are very shamelessly inspired by Edge workspaces of the same
name.

The core idea is that when users name a window and they close that
window, we will persist that Windows layout and buffers, seperately from
the rest of window restoration. So a user can open a named window, open
some profiles, some panes, do some stuff in it, then close it, and we
will keep that state around for the next time the user opens that window
name.

Unnamed windows still behave the same. If you close an unnamed window,
and it's not the last window, then we won't persist the state of it.

To facilitate restoring named windows, we add a `openWorkspace` action.
This allows us to persist the open workspace action in the window layout
restoration path. So when we deserialize the list of tab layouts, and
open workspace action will tell us, hey, go retrieve this known
workspace from the state.json, instead of trying to serialize the window
state in two places.

As demoed in the video, we add a flyout to list the windows that the
user has open, and the named workspaces that they have saved. This
allows users to quickly reopen previously closed workspaces, as well as
quickly rename a window, thereby adding it to the list of saved
workspaces. This button can also be hidden using the theme settings.

Closes #17084
2026-06-04 16:00:25 -05:00
Alimkhan Slambek
5aff9c9769 docs: fix DevOps capitalization in README (#20288)
## Summary of the Pull Request
Fix DevOps capitalization in README.

## Detailed Description of the Pull Request / Additional comments
Updated "Devops" to "DevOps" in README for consistent capitalization.

## Validation Steps Performed
* Checked README formatting
* Verified markdown renders correctly
2026-06-04 19:10:14 +00:00
Carlos Zamora
93bdbfaa3d Add support for OSC777 (Send Notification) (#20012)
## Summary of the Pull Request
targets #20010

This adds support for the `OSC 777 ; notify ; title ; body ST` sequence.
This allows client applications to send a notification to the Terminal.
When this notification is clicked, it summons the terminal window that
sent it.

## Validation Steps Performed
```pwsh
# in PowerShell. Terminal should not be focused.
sleep 2; Write-Output "`e]777;notify;Hello;This is a notification`a"
```

## PR Checklist
- [X] Closes #7718
- [ ] Documentation updated
- [X] Schema updated (if necessary)

Heavily based on #19938
Co-authored by @zadjii-msft
2026-06-03 17:54:01 -07:00
Dustin L. Howett
7d582e9290 chore: remove remaining references to ATL and MFC (#20260)
Apparently we got rid of ATL in 2019 with #719
2026-06-01 14:44:04 -07:00
Windows Console Service Bot
7fc12cf949 Localization Updates - "Dropdown Menu" (#20259)
Co-authored-by: Console Service Bot <consvc@microsoft.com>
2026-05-29 14:00:30 -05:00
Carlos Zamora
00e0ecb8b5 Add screen reader announcement for opening/closing navigation pane (#20275)
## Summary of the Pull Request
Adds a manual event handler for `PaneOpened`/`PaneClosed` on the
navigation view in the settings UI. After catching the event, we raise a
UIA notification event to force the attached screen reader to read out
"Navigation pane opened/closed" appropriately. This experience aligns
with WinUI and the text is localized appropriately.

## Validation Steps Performed
 Narrator announces "Navigation pane opened/closed" appropriately
(aligns with WinUI 3 gallery experience)

## PR Checklist
Closes #19687 
📝 NOTE: the associated issue is currently affecting our accessibility
score
2026-05-29 18:57:00 +00:00
Dustin L. Howett
8ef8e95eb5 meta: add a solution filter that only opens conhost components (#20271)
It loads faster, and a full "solution" build produces everything
required to run and test conhost.
2026-05-29 10:37:13 -07:00
Mike Griese
458872a01a Preview the selected tab in tabSearch too (#20256)
Currently when you use the cmdpal in tabswitcher mode, we "preview"
switching to that tab. We don't do that for `tabSearch` mode though.

Fixing that was half a line of code. Now we do.

Closes #20233
2026-05-21 17:28:02 -07:00
Carlos Zamora
a8a5c88111 Redesign new tab menu page -> dropdown (#20203)
## Summary of the Pull Request
Renames the "New tab menu" page to "Dropdown menu".
Redesigns the page with the following notes:
- the preview is now on the right side so that it's always visible
- moves preview buttons into border with previewed new tab menu entries
- when the window narrows, removes the icons from the controls, then
changes layout to be vertical so that it all fits.

Aside from the main redesign changes above, a lot of the other changes
are to make sure that spacing and alignment looks ok.

## Validation Steps Performed
- [x] Wide view
- [x] Medium width view
- [x] Narrow view

## PR Checklist
Related to #17000
2026-05-21 13:42:51 -07:00
Dustin L. Howett
8fe6c21ef8 Keep the font size delta across settings reloads (#20230)
This is a trivial fix for an issue we get a somewhat outsized number of
complaints about.

When the user has adjusted the font size in any direction, we'll just
keep track of the magnitude and apply it every time the settings change.

Yes, this means that if you zoom once and then change your real font
size it's going to zoom even more.

That probably doesn't matter.

Refs #11522
2026-05-15 13:56:48 -05:00
aarushi singh
abeac1b135 Use PlaySoundW for profile bell sounds (#20031)
We believed that this would fix an issue on Windows 10, where the volume
mixer would forget Windows Terminal after every relaunch. It turns out
that it does not.

Still, this code is much more concise and doesn't require yet another
WinRT object. Story of our lives.

Refs #17733
2026-05-15 20:51:01 +02:00
aarushi singh
12e3455bb2 Make DECSTR cursor restore behave like xterm in alt screen buffer (#20032)
There is some disagreement among terminal emulators as to whether DECSTR
(and therefore, soft reset) restores the cursor in the active buffer or
in all buffers.

We had previously chosen to restore the cursor in all buffers.

xterm restores the cursor only in the active buffer.

Closes #19918
2026-05-14 17:04:58 +00:00
Lucas Trzesniewski
fb71a0462e Add safeUriSchemes setting (#20207)
This adds a `safeUriSchemes` global setting which lets you define
hyperlink URI schemes which the user considers safe. No confirmation
dialog will be shown when trying to open hyperlinks which use these
schemes.

- This solves the root issue, but doesn't introduce any UI or
  documentation changes. I wanted to validate the approach and
  implementation with you first.
- I closely followed the code handling the `disabledProfileSources`
  setting, which is of the same type.
- This feature does not change the behavior of `http`, `https` and
  `file` schemes.

Validation

I ran the dev terminal, and tested the behavior by clicking on `vscode`
hyperlinks generated by ripgrep with various `safeUriSchemes` settings:

- Setting not defined - asks for confirmation
- `["vscode"]` - does not ask for confirmation
- `["foo", "vscode"]` - does not ask for confirmation
- `["foo"]` - asks for confirmation
- `null` - asks for confirmation
- `[]` - asks for confirmation
- `[""]` - asks for confirmation
- `[{"foo": "bar"}]` - fails to deserialize (as expected)

A few uinit tests failed, but they seem unrelated to these changes:
- `KeyBindingTests` in `UnitTests_SettingsModel`, probably because I use
  an AZERTY keyboard.
- A few `Conhost` tests, but I didn't touch this part

Refs #20065
Closes #20191
2026-05-12 21:32:56 +00:00