Compare commits

...

691 Commits

Author SHA1 Message Date
Carlos Zamora
079e0700f1 PRE-MERGE #18917 Allow editing actions in the settings UI 2025-11-18 12:06:57 -08:00
Carlos Zamora
d7ffabe2f6 PRE-MERGE #19519 Implement search in Settings UI 2025-11-18 12:04:52 -08:00
Carlos Zamora
4b1a5cc0cb Merge branch 'main' into dev/cazamor/selfhost/11-18 2025-11-18 12:04:41 -08:00
Carlos Zamora
19a85010fe mark mode: begin selection at focused search result (#19550)
## Summary of the Pull Request
Searching in terminal highlights all search results. However, those
results are considered separate from a selection. In the past, the
highlighted result would be selected, resulting in it being the initial
position for mark mode. Now that it's separate, mark mode doesn't start
there.

To fix this, there's 2 changes here:
1. When we exit the search, we now select the focused search result.
This becomes the initial position for mark mode.
2. When we're in the middle of a search and mark mode becomes enabled,
the focused search result becomes the initial position for mark mode.

With this change, mark mode's initial position is determined in this
order:
1. the position of an active selection
2. the position of the focused search result (if one is available)
3. the top-left position of the viewport (if there is a scrollback) (see
#19549)
4. the current cursor position

## Validation Steps Performed
Entering mark mode in scenario X results in a starting position of Y:
 selected text during a search --> selected text
- NOTE: this seems to only occur if you start a search, then manually
click on the terminal to bring focus there, but keep the search results
active

 performed a search and results are available -->focused search result
 performed a search and no results are available
   - scrolled up --> top-left of viewport
   - no scrollback --> cursor position

 performed a search, got results, then closed search --> focused search
result

Closes #19358
2025-11-18 11:43:42 -08:00
Leonard Hecker
898b9e3cab Fetch the terminal cursor position after a resize (#19535)
Closes #18725

## Validation Steps Performed
Functionality was observed under a
debugger while using PowerShell 5.
2025-11-18 11:42:09 -08:00
Carlos Zamora
20bdc21c79 clean up more TODOs 2025-11-17 17:42:43 -08:00
Carlos Zamora
a4c69cfc6a clean up some TODOs 2025-11-17 17:35:45 -08:00
Carlos Zamora
e5ea64586d NavigateToXArgs --> NavigateToPageArgs 2025-11-17 16:49:57 -08:00
Carlos Zamora
81f881a579 Fix navigation for profile.appearance settings (global profile too) 2025-11-17 15:41:19 -08:00
Carlos Zamora
45d75e701f registerIndex macro -> lambda 2025-11-17 14:11:56 -08:00
Console Service Bot
704c8dcbe7 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-14 02:31:44 +00:00
Carlos Zamora
83aa9fd889 profiles: fix BringIntoView (partially) 2025-11-13 10:34:20 -08:00
Dustin L. Howett
fb668f3a4a chore: Update to WIL 1.0.250325.1 (#19553)
It adds a C++/WinRT-compatible COM server class factory and
`ArgvToCommandlineW` (which is just plain fun.)

It also makes more things noexcept.
2025-11-13 12:23:59 -06:00
Carlos Zamora
8c99200e96 color schemes: fix BringIntoView 2025-11-12 15:49:00 -08:00
Pankaj Bhojwani
f4eda1b505 & and move 2025-11-11 21:00:03 -08:00
Pankaj Bhojwani
7bb10f2c48 split size template 2025-11-11 20:45:31 -08:00
Pankaj Bhojwani
bbdf75de66 format 2025-11-11 20:08:41 -08:00
Pankaj Bhojwani
69186ed383 next pass 2025-11-11 20:07:53 -08:00
Console Service Bot
b8f10af5e0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-12 02:30:59 +00:00
Carlos Zamora
d2f977aa3d mark mode: begin selection at viewport when scrolled up (#19549)
## Summary of the Pull Request
Updates mark mode so that it starts at the viewport's origin (top-left)
if we're not scrolled to the bottom. This is based on the discussion in
#19488.

## Validation Steps Performed
 scrolled at bottom --> mark mode starts at cursor
 scrolled up --> mark mode starts at cursor

Closes #19488
2025-11-11 12:07:52 -08:00
Windows Console Service Bot
965a121a38 Localization Updates - main - 11/07/2025 03:05:02 (#19532)
It said the equivalent of "Nickname" rather than "aliased".

Co-authored-by: Console Service Bot <consvc@microsoft.com>
2025-11-11 11:40:26 -06:00
Pankaj Bhojwani
195c680db8 Merge branch 'main' of https://github.com/microsoft/terminal into dev/pabhoj/settings_actions_editor 2025-11-11 08:00:37 -08:00
Pankaj Bhojwani
1a332c4a43 mostly renames 2025-11-11 07:02:20 -08:00
Leonard Hecker
2e78665ee0 Move all blink handling into Renderer (#19330)
This PR moves the cursor blinker and VT blink rendition timer into
`Renderer`. To do so, this PR introduces a generic timer system with
which you can schedule arbitrary timer jobs. Thanks to this, this PR
removes a crapton of code, particularly throughout conhost.

## Validation Steps Performed
* Focus/unfocus starts/stops blinking 
* OS-wide blink settings apply on focus 
2025-11-11 15:29:48 +01:00
Console Service Bot
1bcb963c02 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-11 02:31:44 +00:00
Dustin L. Howett
47018442cd chore: Update to TAEF 10.100.251104001 (#19537) 2025-11-10 13:38:35 -06:00
Carlos Zamora
14bab6cc1a more polish; more bugs found; I guess it's a stalemate 2025-11-07 12:24:33 -08:00
Console Service Bot
b0b99a5535 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-07 02:31:47 +00:00
Carlos Zamora
be2b1d30cb fix color schemes; convert APPEND_RUNTIME_OBJECT_RESULTS to lambda 2025-11-06 16:17:32 -08:00
Carlos Zamora
6fbf953fb2 clear search box 2025-11-06 15:32:35 -08:00
Carlos Zamora
cff62cc60e update selected item 2025-11-06 13:57:13 -08:00
Dustin L. Howett
4b946c0d5c Remove TerminalAzBridge and use AzureConnection directly (#19528)
We used to run the cloud shell connector in an intermediate process
because our VT implementation lived mostly in conhost. James fixed that
up over the intervening years, and since #17510 landed Terminal is
exposed to 100% of application-originated VT. That means we no longer
need this workaround, its build steps, or anything else about it.

Closes #4661
2025-11-06 12:10:01 -08:00
Carlos Zamora
82536fd756 bugfix: duplicate profile 2025-11-05 15:26:54 -08:00
Carlos Zamora
bf2e4e19d7 code format and spell check 2025-11-05 15:26:34 -08:00
Carlos Zamora
2706d05491 icons 2025-11-05 14:54:07 -08:00
Pankaj Bhojwani
3a3ef4ec36 first round 2025-11-05 14:39:13 -08:00
Carlos Zamora
1dafcef36f FilteredSearchResult::CreateNoResultsItem and CreateRuntimeObjectItem 2025-11-05 13:02:30 -08:00
Console Service Bot
ca13ecb226 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-05 02:31:46 +00:00
Dustin L. Howett
63d7a19ce5 build: update all Azure DevOps pools to windows-latest (#19522)
I will follow this up by switching our default pool build image to
Windows Server 2022.
2025-11-04 23:57:15 +00:00
stynix
05baa41b56 doc: replace the broken link in the ColorTool notices file (#19523)
tango-project seems to have rotted. Replace it with a Web Archive link.
2025-11-04 20:22:32 +00:00
Carlos Zamora
53ddd92e7f remove SearchMetadata (old attempt) 2025-11-03 17:26:08 -08:00
Carlos Zamora
e84e8d408f add language neutral search 2025-11-03 17:02:03 -08:00
Carlos Zamora
532343f1ce runtime object indexing 2025-11-03 16:27:12 -08:00
Carlos Zamora
2a41f8a57c improve index 2025-11-03 11:48:36 -08:00
Console Service Bot
a0358a5ba7 Merge remote-tracking branch 'origin/main' into feature/llm 2025-11-01 01:32:06 +00:00
Windows Console Service Bot
a8beb4cdc4 Localization Updates - main - 10/28/2025 03:04:54 (#19510)
Co-authored-by: Console Service Bot <consvc@microsoft.com>
2025-10-31 15:34:51 -05:00
Console Service Bot
3eac30b882 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-31 01:31:33 +00:00
Dustin L. Howett
a9ea60799f When translating clipboard to numpad events, use the *input* CP (#19511)
I looked as far back as I was able to find, and we've used the OutputCP
since at least Windows NT 3.51.

I think it has _never_ been correct.

At issue today is the GB18030-2022 test string, which contains the
following problematic characters:

* `ˊ` `U+02CA` Modifier Letter Acute Accent
* `ˋ` `U+02CB` Modifier Letter Grave Accent
* `˙` `U+02D9` Dot Above
* `–` `U+2013` En Dash

They cannot be pasted into PowerShell 5.1 (PSReadline).

It turns out that when we try to synthesize an input event (Alt down,
numpad press, Alt up **with wchar**) we are using their output codepage
65001. These characters, of course, do not have a single byte encoding
in that codepage... and so we do not generate the numpad portion of the
synthesized event, only the alt down and up parts!

This is totally fine. **However**, there is also a .NET Framework bug
(which was only fixed after they released .NET Core, and rebranded, and
the community stepped in, ...) finally fixed in .NET 9 which used to
result in some Alt KeyUp events being dropped from the queue entirely.

https://github.com/dotnet/runtime/issues/102425

Using the input codepage ensures the right events get synthesized. It
works around the .NET bug.

Technically, padding in those numpad input events is _also more
correct_.

It also scares me, because it has been this way since NT 3.51 or
earlier.
2025-10-30 17:07:02 -05:00
Carlos Zamora
e56eb74788 improve indexing perf and include help text 2025-10-29 15:01:31 -07:00
Carlos Zamora
cac844b1e9 minimum viable product 2025-10-28 12:59:31 -07:00
Console Service Bot
51079f4fe3 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-28 01:31:30 +00:00
Carlos Zamora
b56f61eca1 Update firstWindowPreference localizations for SUI (#19508) 2025-10-28 01:13:59 +00:00
Carlos Zamora
16f7ab4185 Add firstWindowPreference value for layout only (#19341)
## Summary of the Pull Request
Updates the "firstWindowPreference" global setting to take 3 values:
"defaultProfile", "persistedLayout", and "persistedLayoutAndContent".

The legacy "persistedWindowLayout" is being interpreted as
"persistedLayoutAndContent".

The tricky part here is that we need to maintain support for the legacy
value as persisting the layout and content, even though the value's name
suggests that it should just support the layout and no content. To get
around this, I added "persistedLayout" and "persistedLayoutAndContent".

The enum map is manually constructed for `FirstWindowPreference` to
exclude the deprecated value. This prevents the legacy value from
leaking into the settings UI.

Functionally, the change to serialize the contents is simple.
`WindowEmperor::_persistState()`'s second parameter is used to serialize
the buffer. Rather than having it set to `true`, we set it to
`GlobalSettings().FirstWindowPreference() ==
FirstWindowPreference::PersistedLayoutAndContent`.

## Validation Steps Performed
 "persistedWindowLayout" is changed to "persistedLayoutAndContent"

 Closes #18757
2025-10-27 20:55:54 +00:00
Carlos Zamora
915f085b60 load runtime index for search 2025-10-23 13:32:18 -07:00
Console Service Bot
f1f3f06997 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-22 01:31:30 +00:00
Leonard Hecker
5ae95d7df0 Allow creating new windows on another virtual desktop (#19458)
Whoops. Closes #18652

<DHowett> I chatted with Leonard to figure out why I kept
misunderstanding this PR. The key is that **this function should not
always return an existing window.** It's supposed to find an existing
window on the current virtual desktop, not literally any window
anywhere.
2025-10-21 14:08:57 -05:00
Anastasia Smigaliova
b357de9897 Fix cursor being hidden when pressing modifier keys (#19473)
Closes #19445
2025-10-21 15:03:59 +02:00
Console Service Bot
a02e2263a2 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-19 01:31:23 +00:00
Ivan Pešić
b8f35a31c2 Update of the sr-Cyrl-RS translation (#19472) 2025-10-18 10:43:22 -05:00
Console Service Bot
0728b76543 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-16 01:31:49 +00:00
Ivan Pešić
b7bd4f7dcf Community Localization to Serbian (sr-Cyrl-RS) (#17995) 2025-10-16 01:27:53 +00:00
Dongle
c806a77657 Fix text color in Terminal Chat (#19426)
Fixes an issue where the text is illegible when the theme setting
between Terminal and Windows mismatches (i.e. Dark Terminal + Light
Windows)

Closes #18270
2025-10-15 19:46:02 -05:00
Piotr Szlazak
f5ddecd1d4 Fix the casing on an image URL in the FTCS marks spec (#19440) 2025-10-15 19:45:08 -05:00
Musaddiq Ahmed Khan
fcf32351ff README: Capitalize 'Download' links in distribution table (#19437)
It's more consistent.
2025-10-15 19:44:37 -05:00
Dustin L. Howett
0e3d136dad Make sure UIHelpers' resources are included in the final PRI file (#19461)
OCWildcardResource requires the inclusion of a magic MSBuild target that
we wrote. We forgot to include it here. Oops.

Closes #19444
2025-10-15 19:23:22 -05:00
Carlos Zamora
1b8c99dff8 Load build time index for search
- Adds referential XAML names to components of interest.
- Adds a script that generates the build time entries to be loaded
- Invokes the script in Editor.vcxproj
2025-10-15 15:44:17 -07:00
Windows Console Service Bot
7f6ab5520e Localization Updates - main - 10/15/2025 02:48:19 (#19451)
Closes #18849
Closes #19412

Co-authored-by: Console Service Bot <consvc@microsoft.com>
2025-10-15 03:44:46 +00:00
Console Service Bot
c5b9736178 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-15 01:31:21 +00:00
Alex Alabuzhev
84cc3e3e52 Add initial bold font support to the GDI renderer (#19441)
Render SGR1 as bold in 256 and true colors, where "bold is intense" is
not applicable.
Implemented by creating 2 extra fonts: bold for 1 and bold italic for 1
+ 3.

No non-trivial changes, just extensions.
LOGFONT also supports Underline and StrikeOut, but they seem to be
already covered by other means, so no combinatorial explosion of fonts
expected.

Refs #18919

Co-authored-by: Leonard Hecker <lhecker@microsoft.com>
2025-10-14 17:00:13 -05:00
Carlos Zamora
e01ff4faf0 Introduce SearchMetadata and navigation by name
- SearchMetadata is unsused, but it is designed to hold information
   so that we can navigate to a setting
- Updated all pages to...
   - have an x:Name on relevant setting containers
   - have a NavigateToXArgs used in the OnNavigatedTo() function
   - update the NavigateToXArgs to include the name of an element
      to scroll down to
   - Add BringIntoViewWhenLoaded() to HasScrollViewer<T> which
      scrolls down to the element with a given name
These components aren't fully hooked up together yet and there's a
few TODO CARLOS's throughout. Main upcoming work:
- indexing
- runtime indexing
- search box UI
- search results UI
based on 079c69b8be/doc/specs/settings-search.md
2025-10-14 11:46:31 -07:00
Console Service Bot
c48da0bfb1 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-10 01:31:52 +00:00
Carlos Zamora
819987c90e Update WinGet CNF for exact command matching (#19432)
## Summary of the Pull Request
Update the WinGet CNF package search to match that of the updated
PowerShell WinGet CNF module. Now, we'll only search for matching
commands instead of by name and moniker.

## References and Relevant Issues
https://github.com/microsoft/winget-command-not-found/pull/29

## Validation Steps Performed
 In CMD, type "vim" and vim packages are suggested
2025-10-09 16:27:41 -05:00
Carlos Zamora
b62cad640b Fix unfocusedBackground being used as active tab color (#19424)
## Summary of the Pull Request
Turns out that the `"TabViewItemHeaderBackground"` resource should be
set to the _selected_ color instead of the _deselected_ color.

In 1.22, (pre-#18109) we actually didn't set this resource. But we do
actually need it for high contrast mode! (verified)

## Validation Steps Performed
 High contrast mode looks right
 "Snazzy" theme from bug report looks right

## PR Checklist
 Closes #19343
2025-10-09 17:29:09 +00:00
Console Service Bot
4fbf96609f Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-08 01:31:44 +00:00
Dustin L. Howett
9d7ea77cc8 Use the actual process image instead of module filename to dedup session (#19415)
Apparently, `GetModuleFileNameW` returns exactly the path (or prefix, in
case of a DLL) passed to `CreateProcess` casing and all. Since we were
using it to generate the uniquing hash for Portable and Unpackaged
instances, this meant that `C:\Terminal\wt` and `C:\TeRmInAl\wt` were
considered different instances. Whoops.

Using `QueryFullProcessImageNameW` instead results in canonicalization.
Maybe the kernel does it. I don't know. What I do know is that it works
more correctly.

(`Query...` goes through the kernel, while `GetModule...` goes through
the loader. Interesting!)

Closes #19253
2025-10-07 17:13:36 -05:00
PankajBhojwani
012ddb3130 Update TerminalChat UX to be a "sidecar" experience (#19331)
Instead of TerminalChat being an overlay over the entire application, it
is now moved to the side. A close button has been added to the Chat pane
to dismiss the chat window.
2025-10-07 17:13:17 -05:00
Faisal Ahmad
6a8b2d10f0 chore: remove extra semicolons from ActionArgs (#19411)
Removes unnecessary extra semicolons at the end of `Equals` method
implementations in various ActionArgs classes.

Closes #19404
2025-10-07 17:35:38 +00:00
Console Service Bot
cf5f279f93 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-07 01:31:22 +00:00
PankajBhojwani
04676bd31a Only do "keys" fixups for non-nested, non-iterable commands (#19408)
## Summary of the Pull Request
When we introduced action IDs, we separated "commands" from
"keybindings", and introduced fixup logic to rewrite the legacy-style
command blocks into the new version. However we don't do any ID logic
for nested and iterable commands, so make sure we don't inform the
loader for fixups in those cases.

## Validation Steps Performed
We no longer repeatedly attempt to fixup the settings file when we see a
`"keys"` entry in a nested/iterable command block

## PR Checklist
- [x] Closes #18736
2025-10-06 11:31:15 -07:00
Console Service Bot
9de05596dd Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-04 01:31:31 +00:00
Samuel D. Leslie
fc2d107897 Minor fixes to the settings schema (#19387)
## Summary of the Pull Request
Fixes a couple of minor issues in the settings schema which can result
in erroneous settings validation failures.

## References and Relevant Issues
None

## Detailed Description of the Pull Request / Additional comments
- `answerbackMessage`  
  Permit `null` type (corresponds to the default value).
- `compatibility.input.forceVT`  
  Add missing setting (previously was `experimental.input.forceVT`).
- `rendering.graphicsAPI`  
  Add missing `automatic` enumeration value.
- Mark several settings as deprecated using the same format and direct
the user to the updated settings to use.

## Validation Steps Performed
Tested updated schema against configuration with above settings present.

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

---------

Co-authored-by: Carlos Zamora <carlos.zamora@microsoft.com>
2025-10-02 23:13:36 -05:00
Console Service Bot
c591d31408 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-03 01:31:34 +00:00
Dustin L. Howett
998ab586e1 Remove the leading fire from the taskbar progress handler (#19403)
If the progress state hasn't been set for more than 200ms, we shouldn't
even bother flickering the old state.

This prevents applications from making the tab (and the taskbar icon)
flicker.

We were reviewing #19394 and decided that the _original_ behavior before
Leonard's throttling fix was somewhat unfortunate as well. An
application that sets an indeterminate state for 10ms and then clears it
shouldn't be able to make any part of the application flicker, fast _or_
slow.

Removing the leading fire time from the throttled function ensures that
it will only fire once every 200ms, and only with the state most
recently set. It will not debounce (so setting the progress every 150ms
will not prevent it from updating.)

Closes #19394
2025-10-02 11:24:31 -05:00
Console Service Bot
a1746b7922 Merge remote-tracking branch 'origin/main' into feature/llm 2025-10-01 01:31:16 +00:00
Pankaj Bhojwani
294e2e38ad safer handling 2025-09-30 16:20:11 -07:00
Windows Console Service Bot
10ef1284d4 Localization Updates - main - 09/30/2025 21:11:05 (#19400) 2025-09-30 21:50:33 +00:00
Pankaj Bhojwani
8d1f280c93 expose int value on enum and flag entry 2025-09-30 14:23:39 -07:00
Dustin L. Howett
5976de1600 Avoid reentrancy issues when dropping AppHost, even harder (#19395)
The previous fix in #19296 moved the _destruction_ of AppHost into the
tail end after we manipulate the `_windows` vector; however, it kept the
part which calls into XAML (`Close`) before the `erase`. I suspect that
we still had some reentrancy issues, where we cached an iterator before
the list was modified by another window close event.

That is:

```mermaid
sequenceDiagram
		Emperor->>Emperor: Close Window
		Emperor->>+AppHost: Close (a)
		AppHost->>XAML: Close
		XAML-->>Emperor: pump loop
		Emperor->>Emperor: Close Window
		Emperor->>+AppHost: Close (b)
		AppHost->>XAML: Close
		XAML-->>Emperor: pump loop
		AppHost->>-Emperor: Closed
		Emperor->>Emperor: erase(b)
		AppHost->>-Emperor: Closed
		Emperor->>Emperor: erase(a)
```

Moving the `Close()` to after the `erase` ensures that there are no
cached iterators that survive beyond XAML pumping the message loop.

Fixes 8d41ace3
2025-09-30 16:05:58 -05:00
Dustin L. Howett
52f9bd6d2c build: switch Touchdown to Federated Identity (#19399)
This is required as part of offboarding our non-user service account.
2025-09-30 15:57:45 -05:00
Pankaj Bhojwani
757bd154b3 function template instead 2025-09-26 11:55:21 -07:00
Console Service Bot
ef58354cbd Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-26 01:31:24 +00:00
Pankaj Bhojwani
8b3c12ea30 edit action resource 2025-09-25 15:52:20 -07:00
Pankaj Bhojwani
e0352e41c7 Merge branch 'main' of https://github.com/microsoft/terminal into dev/pabhoj/settings_actions_editor 2025-09-25 15:32:43 -07:00
Pankaj Bhojwani
1693773039 formatt 2025-09-25 15:32:38 -07:00
Pankaj Bhojwani
6cffe9f36e first pass 2025-09-25 15:32:25 -07:00
Avishek Das
05a4afcf35 Fix broken MSDN link in gdi/state.cpp (#19375)
Closes #16439

Co-authored-by: Carlos Zamora <carlos.zamora@microsoft.com>
2025-09-25 19:17:08 +00:00
Carlos Zamora
ad6473d6ae Add tab color setting to settings UI (#19351)
## Summary of the Pull Request
Adds the tab color profile setting to the settings UI. It's positioned
next to the tab title at the root of the profile page.

The new component uses a nullable color picker control to allow the user
to pick a color. The null color is represented as "Use theme color".

The tricky part is evaluating the `ThemeColor` for `null` (aka "use
theme color"). Since the value is dependent on the active theme, it can
be any of the following values:
- theme.tab.background...
   - explicit color
   - accent color
   - terminal background color
- (if no theme.tab.background is defined) theme.window.applicationTheme
   - light --> #F9F9F9
   - dark --> #282828
- default --> one of the above two values depending on the application
theme

The above light/dark values were acquired by using the color picker on
the tab when in light/dark theme.

## Validation Steps Performed
 accessible value is read out
 explicit tab color set
- tab color is null, so we fall back to...
-  theme.tab.background: explicit color, accent color, terminal
background color
-  theme.window.applicationTheme (and no theme.tab.background defined):
light, dark, default (aka not defined)
      -  updates when theme is changed locally and via JSON

## PR Checklist
Closes part of #18318
2025-09-25 11:37:43 -07:00
Dustin L. Howett
6b428577b9 build: separate vpack creation from vpack publication (#19380)
This will allow us to publish vpacks without making the build fail
waiting for us to *merge* those vpacks into Windows. It also gives us
better control over when and where the vpack update gets merged.
2025-09-25 13:36:31 -05:00
Console Service Bot
cf05aee055 Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-23 01:31:09 +00:00
Leonard Hecker
4600c4791b Rewrite the MSAA/UIA integration into conhost (#19344)
Goal: Remove `CursorBlinker`.
Problem: Spooky action at a distance via `Cursor::HasMoved`.
Solution: Moved all the a11y event raising into `_stream.cpp` and pray
for the best.

Goal: Prevent node.js from tanking conhost performance via MSAA (WHY).
Problem: `ServiceLocator`.
Solution: Unserviced the locator. Debounced event raising. Performance
increased by >10x.
Problem 2: Lots of files changed.

This PR is a prerequisite for #19330

## Validation Steps Performed
Ran NVDA with and without UIA enabled and with different delays. 
2025-09-22 22:53:52 +00:00
Console Service Bot
afdf4ef14d Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-17 01:31:16 +00:00
Dustin L. Howett
e80aadd98b Move newTabMenu creation to Settings fixups (#19353)
Some of the other settings fixups require there to be a valid
NewTabMenu, rather than just a temporary object. Since the resolving all
the menu entries after loading already forces the user to have a
`newTabMenu`, let's just codify it as a real fixup.

I've moved the SSH folder fixup after the settings fixup because it
relies on there being a NTM.

I decided not to make this fixup write back to the user's settings.
There are a couple reasons for this, all of which are flimsy.

- There are a number of tests that test fixup behavior, especially those
around actions, which would need to be updated for this new mandatory
key. I did not think it proper to add `newTabMenu` to ten unrelated
tests that only contain actions (for example.)
- We actually don't currently have mandatory keys. But this one was
always being added anyway, in a later phase...
- It's consistent with the existing behavior.

Closes #19356
2025-09-16 21:08:45 +00:00
Dustin L. Howett
1926c4601c VsDev: reject VS instances which do not actually contain devshell/devcmd (#19352)
Closes #19169
2025-09-16 15:24:10 -05:00
Dustin L. Howett
46b9572e60 Avoid generating SSH profiles using stale memory (#19354)
You can't return a `string_view` to a temporary. It's a miracle this
ever worked.

Broken since inception in a5f9c85c39

Closes #19355
2025-09-16 15:23:58 -05:00
Leonard Hecker
0aee174e68 Fix behavior of split-pane for existing windows (#19347)
Closes #18815

## Validation Steps Performed
* `wt -w 0 sp` splits the current tab 
2025-09-16 13:09:56 -05:00
Console Service Bot
6175728269 Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-12 01:31:22 +00:00
Ayman Bagabas
814f78ed2c Add support for VT horizontal mouse wheel events (#19248)
This adds support for horizontal mouse wheel events (`WM_MOUSEHWHEEL`).
With this change, applications running in the terminal can now receive
and respond to horizontal scroll inputs from the mouse/trackpad.

Closes #19245
Closes #10329
2025-09-11 18:48:49 -05:00
John Cavanaugh
eb16eb26ab Fix terminal profile schema to allow null in keybinding id (#19332)
Fixes the terminal profile jsonschema to allow for null in the id. This
is to match the current implementation when disabling a built in default
keybind.
2025-09-11 13:06:33 -05:00
Dustin L. Howett
d77f99ee31 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	OpenConsole.slnx
2025-09-10 14:57:51 -05:00
Leonard Hecker
384932183f Fix a crash in _makeCursorVisible (#19329)
Fixes the crash and also makes `SnapOnOutput` a bit nicer.

Closes #19325

## Validation Steps Performed
* Launch vim in WSL
* Exit
* No crash 
2025-09-10 21:21:46 +02:00
Dustin L. Howett
5a05f82f7c Apparently finish the SLNX migration (#19335) 2025-09-09 20:39:39 -05:00
Dustin L. Howett
69e483434f Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-09 15:03:35 -05:00
Dustin L. Howett
d6714f3ca9 Convert the solution file to the new SLNX format (#19328) 2025-09-09 15:01:03 -05:00
Console Service Bot
bd6771afe2 Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-09 01:31:26 +00:00
Leonard Hecker
4a34a76504 Fix right click on tabs closing them (#19273)
I do not like this.

## Validation Steps Performed
* Enable close buttons on tabs
* Open a tab
* Close the tab with middle click
* Open a tab
* Right click the tab
* Tab doesn't close, Menu opens 
2025-09-08 23:16:20 +00:00
Dustin L. Howett
54aaa4a98a tests: add UIHelpers and ThemeHelpers to TestHostApp (#19323)
It can't actually activate TerminalApp.dll without these... lol.
2025-09-08 10:21:29 -07:00
Console Service Bot
28b3badf7a Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-06 01:31:07 +00:00
Windows Console Service Bot
13ddefa635 Localization Updates - main - 09/04/2025 03:03:15 (#19319) 2025-09-05 17:13:47 -05:00
Dustin L. Howett
920bec3748 Merge pull request #19318 from microsoft/dev/pabhojwa/main-mirror-llm-merge
Fixes conflicts from action args reflection PR
2025-09-03 20:04:28 -05:00
Pankaj Bhojwani
b1186c6b54 default 2025-09-03 16:54:17 -07:00
Pankaj Bhojwani
cb67d01c82 this command's kinda important 2025-09-03 16:12:56 -07:00
PankajBhojwani
262f453e46 Merge branch 'feature/llm' into dev/pabhojwa/main-mirror-llm-merge 2025-09-03 16:07:19 -07:00
Pankaj Bhojwani
2366b3fa0a format 2025-09-03 14:22:05 -07:00
Pankaj Bhojwani
8e0a44791e whitespace 2025-09-03 13:55:46 -07:00
Pankaj Bhojwani
e995a5f711 conflict 2025-09-03 13:54:29 -07:00
PankajBhojwani
f6303ac1ae Add reflection to the ActionArgs in the settings model (#18915)
Implements reflection to the various ActionArg types in the settings
model, which allows these structs to provide information about
themselves (i.e. what args they contain and what types they are). This
is necessary as a pre-requisite for the Settings Editor to display and
modify these arg values.

## Detailed Description of the Pull Request / Additional comments
* The `IActionArgs` interface now has additional methods:
	* Get the number of args
	* Get/Set an arg at a specific index
	* Get a vector of arg descriptions; the arg description contains:
		* name of the arg
		* type of the arg
		* whether the arg is required
* a tag, this is to cover special cases (for example the ColorScheme
argument is technically of type "string", but only allows specific
values)
* All the macros in `ActionArgsMagic` have been updated to support the
new interface
* `ActionMap` has been updated to support adding/editing/deleting
actions and keybindings from outside the SettingsModel
	* It also handles ID change requests for commands
* EnumMappings have been added to various ActionArg enums that weren't
there before

## Validation Steps Performed
Bug bashed in conjunction with #18917
2025-09-03 13:36:10 -07:00
Dustin L. Howett
384c112178 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsModel/Microsoft.Terminal.Settings.ModelLib.vcxproj
2025-09-03 14:05:30 -05:00
Dustin L. Howett
52e60b95e4 Remove TerminalSettings from the TerminalSettingsModel project (#19262)
The idea with IControlSettings (and friends) was always that a consumer
of the terminal control could implement it in whatever way they pleased.

Windows Terminal (the application) was intended to be only one
consumer. It has a whole JSON settings model. Nobody wants to think
about JSON at the Terminal Control level. We could have an "adapter" in
TerminalApp, which spoke Terminal JSON Settings on one side and Terminal
Control on the other side.

That worked until we added the settings editor. The settings editor
needed to display a control, and that control's settings needed to be
based on the JSON settings. Oops. We took the expedient route of moving
the adapter into TerminalSettingsModel itself, and poking a bunch of
holes in it so that TerminalApp and TerminalSettingsEditor could tweak
it as needed.

Later, we doubled down on the control settings interface by having every
Terminal Control _make its own ControlSettings_ when we were going to do
the multi-process model. This reduced the number of IPC round trips for
every settings query to 0. Later we built color scheme previewing on top
of that--adding structs to carry color schemes and stuff which was
already in the Appearance config. Sheesh. Layers and layers and layers.

This pull request moves it back into its own library and strips it from
the surface of TerminalSettingsModel. It also deletes `ControlSettings`
and `struct CoreScheme`. That library is called
`TerminalSettingsAppAdapterLib`, and it contains a hidden WinRT
_implements_ type rather than a full-fledged activatable `runtimeclass`.
It also implements one-level inheritance on its own rather than using
IInheritable.

It adheres to the following principles:
- The control will never modify its settings in a way that is visible to
  the control's consumer; therefore, none of the properties have setters
- The settings should never contain things of interest only to the
  Application that the Application uses to communicate data _back to
  itself_ (see `ProfileName`, removed in 68b723c and `KeyBindings`,
  removed in fa09141). This generalizes to "we should never store stuff
  in an unrelated object passed between layers solely for the purpose of
  getting it back".

I made a few changes to the settings interface, including introducing a
new `ICoreScheme` interface that _only_ contains color scheme info. This
is designed to support the Preview/Set color scheme actions, which no
longer work by _app backing up the scheme and restoring it later._ All
of that machinery lives inside TermControl/ControlCore now.

`ICoreScheme` no longer supports `GetColorAtIndex`; you must read all 16
colors at the same time. I am not sorry. Every consumer did that
already, so now we have 15 fewer COM calls for every color scheme.

The new TerminalSettings is mostly consumed via
`com_ptr<TerminalSettings>`, so a bunch of `.` (projected) accesses had
to turn into `->` (com_ptr dereferencing) accesses.

I also realized, in the course of this work, that the old
TerminalSettings contained a partial hand-written reimplementation of
_every setting_ in `ControlProperties`. Every contributor had to add
every new setting to both places--why? I can't figure it out. I'm using
ControlProperties comprehensively now. I propagated any setting whose
default value was different from that in ControlProperties back to
ControlProperties.

This is part X in a series of pull requests that will remove all mention
of Microsoft.Terminal.Control and Microsoft.Terminal.Core from the
settings model. Once that is done, the settings model can consume _only_
the base WinRT types and build very early and test more easily.

Previewing is fun. I introduced a new place to stash an entire color
table on ControlCore, which we use to save the "active" colors while we
temporarily overwrite them. SetColorScheme is _also_ fun. We now have a
slot for overriding only the focused color scheme on ControlCore. It's
fine. It's clearer than "back up the focused appearance, overwrite the
focused appearance, create a child of the user's settings and apply the
color scheme to it, etc.".

There is a bug/design choice in color scheme overriding, which may or
may not matter: overlaying a color scheme on a terminal with an
unfocused appearance which _does not_ have its own color scheme will
result in the previously-deleted overridden focused color scheme peeking
through when the terminal is not focused.

I also got rid of our only in-product use of
`Terminal::CreateFromSettings` which required us to set `InitialRows`
and `InitialCols` on the incoming settings object (see core tenet 2).

Refs #19261
Refs #19314
Refs #19254
2025-09-03 14:01:36 -05:00
Dustin L. Howett
fa09141a16 Stop using Settings to shuttle IKeyBindings around (#19314)
For some reason, we went real hard on an architecture where the settings
object contained the key bindings handler for the terminal. To make this
work, we had to wind it through tons of layers: `TermControl`,
`ControlInteractivity`, `ControlCore` (which saved it on
`ControlSettings`), `ControlSettings`. Of course, because we have no
clear delineation of concerns at the App layer this required us to put
the bindings into the Settings Cache[^1].

Well, `TermControl` used `ControlCore` to get the Settings, to get the
Bindings, to dispatch keys.

Yes, `TermControl` stored `IKeyBindings` down three layers _only to fish
it back out and use it itself._

There is one place in the application where `TermControl`s are hooked up
to their owners. Instead of passing the key bindings dispatcher in
through nine hundred layers, we can just set it once--definitively!--
there.

[^1]: This was the last thing that made the settings cache
page-specific...
2025-09-03 16:43:34 +00:00
Myungchul Keum
8011f3e28c Adjust "Dimidium" color scheme (#19303)
- Add Selection BG color
- Make Bright white brighter

## Summary of the Pull Request
Final tune for Dimidium color scheme before its release.

## References and Relevant Issues
#18563

## Detailed Description of the Pull Request / Additional comments
I made little change to Dimidium color scheme.

<img width="640" height="174" alt="cmp-lightness1c"
src="https://github.com/user-attachments/assets/2e4aa6ca-5864-4901-b323-2e2bb2bf00e8"
/>


![preview-terminal](https://github.com/user-attachments/assets/8a53c54d-942a-44a2-9ee7-9ff8a6d2dfab)

<img width="584" height="207" alt="image"
src="https://github.com/user-attachments/assets/b70b0759-7961-4f8f-aaa7-762fc48e425b"
/>


- Adjusted "Bright white" slightly brighter, hoping it can be
distinguished better from "White".
- Defined "Selection Background" color.

This will be the final tune for Dimidum color scheme.
2025-09-03 11:04:28 -05:00
Console Service Bot
bc6a5b4ba3 Merge remote-tracking branch 'origin/main' into feature/llm 2025-09-02 01:31:26 +00:00
Leonard Hecker
8d41ace320 Avoid reentrancy issues when dropping AppHost (#19296)
tl;dr: ~Apphost() may pump the message loop.
That's no bueno. See comments in the diff.

Additionally, this PR enables `_assertIsMainThread` in
release to trace down mysterious crashes in those builds.
2025-09-01 15:33:11 +02:00
Leonard Hecker
7849b00cbd Fix CoreWindow being destroyed after handoff (#19298)
As per: https://github.com/microsoft/terminal/discussions/19280#discussioncomment-14237148

## Validation Steps Performed
* Launch wtd via handoff (spawn cmd, etc.)
* Shift+Click the tab bar + button to create a new window
* Close the initial window
* UI doesn't lock up 
2025-09-01 15:32:58 +02:00
Console Service Bot
5a720d4416 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-30 01:31:27 +00:00
Leonard Hecker
5899343237 Fix a race condition around Open/CloseClipboard (#19297)
tl;dr: Open/CloseClipboard are surprisingly not thread-safe.

## Validation Steps Performed
* Copy a large amount of text (>1MB)
* Run `edit.exe`
* Press and hold Ctrl+Shift+V
* Doesn't crash 
2025-08-29 20:20:53 +02:00
Console Service Bot
8e1db7e423 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-29 01:31:17 +00:00
Windows Console Service Bot
1283c0f5b9 Localization Updates - main - 08/26/2025 03:03:22 (#19278) 2025-08-29 00:32:22 +02:00
Console Service Bot
52c0641475 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-28 01:31:27 +00:00
Dustin L. Howett
4272151adc Include Profile.BellSound as a media resource (#19289)
I legitimately cannot figure out how I forgot this. Bell should support
all the same validation as other media resources! Technically this means
you can set `bellSound` to `desktopWallpaper`, but... we'll pretend that
makes sense.

I reworked the viewmodel to be a little more sensible. It no longer
requires somebody else to check that its files exist. The settings UI
now also displays `File not found` in the _preview_ for the bell if it
is a single file which failed validation!
2025-08-28 00:05:51 +00:00
Dustin L. Howett
bd14f69080 sb: add appId to the StoreBroker blobs (new AERO requirement) (#19290)
> _I am altering the deal. Pray I do not alter it further._
> -the AERO team, maybe
2025-08-27 10:22:28 -07:00
Console Service Bot
b818c12ca1 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-27 01:31:36 +00:00
Dustin L. Howett
91c9a14a71 env: don't explode when GetShortPathNameW fails (#19284)
It fails inside app containers (!) such as the one used by LocalTests.
2025-08-26 21:50:32 +00:00
Dustin L. Howett
9e10436a80 Move adjustProcessPriorityThrottled ctor earlier (#19283)
Test Impact: The LocalTests do not call `Initialize(HWND)`, so we would
fail on launch.
Also, we have `Create()` and `Initialize()` and `event Initialized` (the
last of which is not called from either of the first two...)
2025-08-26 21:34:01 +00:00
Console Service Bot
76a662cc63 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-26 01:31:28 +00:00
Pankaj Bhojwani
b2a624e644 updateid update 2025-08-25 15:32:31 -07:00
Pankaj Bhojwani
41ae7130cf Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-25 15:19:36 -07:00
Pankaj Bhojwani
d9a409afb8 updateid moved to cascadia settings 2025-08-25 15:19:01 -07:00
Dustin L. Howett
a9b660cc36 version: bump to 1.25 on main (#19276) 2025-08-25 17:06:19 -05:00
Dustin L. Howett
7b754e3d8e Localization Updates - 08/25/2025 21:39:33 (#19277)
Co-authored-by: Console Service Bot <consvc@microsoft.com>
2025-08-25 17:02:41 -05:00
Pankaj Bhojwani
cde4c039e4 vector instead 2025-08-25 14:36:44 -07:00
Dustin L. Howett
ad48162f02 Reflect inbox changes from RS (#19258)
Reflect inbox changes to `onecore/windows/core/console/open`.

* eed3a6fa5 Merged PR 13076689: Update managed TAEF tests that exist in
GE branches to use the new publishing locations of TAEF's managed
reference binaries.
* 718d7d02d Merged PR 12483430: build console* with clang

Somebody internal is trying to build the console with Clang (which is
cool).

---------

Co-authored-by: Dragos Sambotin <dragoss@microsoft.com>
Co-authored-by: Phil Deets <pdeets@microsoft.com>
2025-08-25 19:14:25 +00:00
Dustin L. Howett
6771470c8b PDPs: Preview->Stable, new Preview notes (#19272) 2025-08-25 17:58:06 +00:00
Dustin L. Howett
21cfbf170c Move to CppWinRT 2.0.250303.1 (#19268)
Interesting changes in this update:
- better support for `REFIID,IUnknown**` in `capture`
- `LOAD_LIBRARY_SEARCH_DEFAULT_DIRS` for all SxS DLL loading
- `get_self` reading from classic COM interfaces (rather than WinRT
  ones)
- better incremental builds by ignoring stale winmd files (see
  microsoft/cppwinrt#1404)
- some ability to mix c++17 and c++20 static libraries
- better codegen for `consume` methods

This version of C++/WinRT is better about propagating `protected`
fields from the metadata into the C++ projections. This required
us to switch to the `I...Protected` interfaces for some things
we are _technically_ not allowed access to. We also had some
`overridable` (protected!) members of our own that needed undec-
oration.
2025-08-25 12:46:47 -05:00
Dustin L. Howett
4f391c5e42 build: remove the forced vpack submission; let us do it on our own time (#19271) 2025-08-25 19:44:11 +02:00
Carlos Zamora
d61ad2d9cd Fix unfocused appearance UI in settings (#19263)
The unfocused appearance section in the settings UI looks a little off.
Specifically, the header was too large (larger than the breadcrumbs!)
and the button was weirdly aligned.

This PR reduces the size of the header and creates a style in
CommonResources that manages it. This is the only place it's used, for
now. A vertical alignment was added to the "create appearance" and
"delete appearance" buttons to make them look better. The top margin of
the "Text" header was also removed so that there isn't an awkward gap in
the unfocused appearance section (the 32 that was there was moved to the
bottom of the control preview so that that area remains unaffected.)

Follow-up from #19001
2025-08-25 10:32:49 -07:00
Pankaj Bhojwani
bbdfb377fe use action map's update id 2025-08-22 14:39:24 -07:00
Pankaj Bhojwani
64dfb945b0 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-22 14:08:20 -07:00
Pankaj Bhojwani
ebee14b45f map handles id changes 2025-08-22 14:08:02 -07:00
Dustin L. Howett
19aac667ca Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsEditor/init.cpp
2025-08-21 20:56:31 -05:00
Carlos Zamora
7578209be5 Add telemetry for settings UI traffic (#19156)
## Summary of the Pull Request
Adds a telemetry provider to the Terminal.Settings.Editor project as
well as new telemetry events to track traffic through the settings UI.
Specifically, the following events were added:
- `NavigatedToPage`: Event emitted when the user navigates to a page in
the settings UI
- Has a `PageId` parameter that includes the identifier of the page that
was navigated to
- (conditionally added when PageId = `page.editColorScheme`)
`SchemeName` parameter tracks the name of the color scheme that's being
edited
   - conditionally added when PageId = `page.extensions`:
- `ExtensionPackageCount`: The number of extension packages displayed
- `ProfilesModifiedCount`: The number of profiles modified by enabled
extensions
- `ProfilesAddedCount`: The number of profiles added by enabled
extensions
- `ColorSchemesAddedCount`: The number of color schemes added by enabled
extensions
   - conditionally added when PageId = `page.extensions.extensionView`:
- `FragmentSource`: The source of the fragment included in this
extension package
- `FragmentCount`: The number of fragments included in this extension
package
      - `Enabled`: The enabled status of the extension
- (conditionally added when PageID = `page.newTabMenu`) if the page is
representing a folder view
   - conditionally added when PageID = `page.profile.*`:
- `IsProfileDefaults`: if the modified profile is the profile.defaults
object
      - `ProfileGuid`: the guid of the profile that was navigated to
      - `ProfileSource`: the source of the profile that was navigated to
- conditionally added when PageID = `page.profile` (aka the base profile
page):
         - `Orphaned`: tracks if the profile was orphaned
         - `Hidden`: tracks if the profile is hidden
- (conditionally added when PageID = `page.profile.appearance`)
`HasBackgroundImage`: `if the profile has a background image defined`
- (conditionally added when PageID = `page.profile.appearance`)
`HasUnfocusedAppearance`: `if the profile has an unfocused appearance
defined`
- `AddNewProfile`: Event emitted when the user adds a new profile
`IsExtensionView` parameter tracks if the page is representing a view of
an extension
- Has a `Type` parameter that represents the type of the creation method
(i.e. empty profile, duplicate)
- `ResetApplicationState`: Event emitted when the user resets their
application state (via the UI)
- `ResetToDefaultSettings`: Event emitted when the user resets their
settings to their default value (via the UI)
- `OpenJson`: Event emitted when the user clicks the Open JSON button in
the settings UI
- Has a `SettingsTarget` parameter that represents the target settings
file (i.e. settings.json vs defaults.json)
- `CreateUnfocusedAppearance`: Event emitted when the user creates an
unfocused appearance for a profile
- `IsProfileDefaults`: if the modified profile is the profile.defaults
object
   - `ProfileGuid`: the guid of the profile that was navigated to
   - `ProfileSource`: the source of the profile that was navigated to
- `DeleteProfile`: Event emitted when the user deletes a profile
- also includes `ProfileGuid`, `ProfileSource`, `Orphaned` from the
`NavigatedToPage` section above

The page ids can be reused later as a serialized reference to the page.
We already use the one for the extensions page for the "new" badge.
2025-08-21 19:06:20 -05:00
Carlos Zamora
2c666aa292 Clear Name, Source, and Commandline from Profiles.Defaults (#19225)
The Name, Source, and Commandline profile settings should not be allowed
to be set on the Profiles.Defaults object. This just enforces that by
clearing them (as is done with Guid).

These profile settings are omitted from the settings UI's profile
defaults page.

Closes #19202
2025-08-21 19:05:27 -05:00
Pankaj Bhojwani
84aaf055f3 lowercase i 2025-08-21 16:14:56 -07:00
Pankaj Bhojwani
890671ab34 callback instead 2025-08-21 16:13:55 -07:00
Pankaj Bhojwani
ea360191b5 unnecessary includes 2025-08-21 11:42:37 -07:00
Pankaj Bhojwani
e9291baeed init newterminalargs in getemptyargs 2025-08-21 11:13:18 -07:00
Console Service Bot
aa1f3ef91e Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-21 01:31:38 +00:00
Pankaj Bhojwani
e2a758e4d4 first round 2025-08-20 15:10:34 -07:00
Dustin L. Howett
68b723c16c Remove ProfileName from the surface of CoreSettings (#19261)
You know how much I hate squirreling away information on objects we have
to pass halfway across the universe just to get back.

In this case, `StartingTitle` will always be the name of the profile. We
only used ProfileName in places where we _needed a Title_, so this makes
it much more obvious what we're doing.
2025-08-20 17:03:47 -05:00
Carlos Zamora
642a2aa41e [Conhost] Fix off-by-1 error when copying and coloring selections (#19259)
## Summary of the Pull Request
Fixes a bug where copying and coloring selected text would be off by
one. This was introduced in #18106 when selection was updated to be
stored as an exclusive range. `Selection::_RegenerateSelectionSpans()`
was updated then, but copying text and coloring selection didn't rely on
selection spans.

Copying text relies on `GetSelectionAnchors()`. This function has now
been updated to increment the bottom-right point of the selection. This
way, `GetTextSpans()` operates on the expected _exclusive_ range.

Coloring selection relies on `TextBuffer::SearchText()`,
`TextBuffer::GetTextRects` and `GetSelectionSpans()`. Both
`Selection::ColorSelection()` were updated to use `rect` over
`inclusive_rect` to emphasize that they are exclusive ranges. Converting
between the two improves clarity and fixes the bug.

## References and Relevant Issues
Introduced in #18106 

## Validation Steps Performed
Copying text works in the following scenarios:
 single line, left-to-right and right-to-left
 multi-line, diagonal directions
 block selection

Coloring text works in the following scenarios:
ctrl+# --> color instance
ctrl+shift+# --> color all instances

Closes #19053
2025-08-20 10:43:26 -07:00
Console Service Bot
e66bcad499 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-20 01:31:21 +00:00
Carlos Zamora
7055b99acc Fix names and types of a few telemetry events (#19257)
Fixes a few issues with some telemetry events:
- The macro is organized as such: `TraceLoggingX(value, argName,
[argDescription])`. A few args had a description set on the spot where
the name should be. I added a name for a few of these.
- `TraceLoggingBool` --> `TraceLoggingInt32` for `themeChoice` (we
shouldn't be casting the evaluated int as a bool; it loses some of the
data we care about)
- improves the description for `themeChoice` to include information
about the legacy values

Checked through all our telemetry events and all of the args have a
proper name set. We tend to use `TraceLoggingValue` too which
automatically figures out the type that's being used, so that's also
handled.
2025-08-19 19:13:58 +00:00
Dustin L. Howett
837e86c18c Bust TerminalSettingsCache down to a plain old C++ class (#19254) 2025-08-19 09:35:27 -05:00
Pankaj Bhojwani
75d0a1b36a lightweight arg count 2025-08-18 16:37:46 -07:00
Pankaj Bhojwani
892ced6179 two cached vectors 2025-08-18 16:29:14 -07:00
Console Service Bot
e07a1b9bdb Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-16 01:31:20 +00:00
Pankaj Bhojwani
ef197d2153 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-15 13:55:41 -07:00
Pankaj Bhojwani
981a01e74d don't need this anymore 2025-08-15 13:55:20 -07:00
Leonard Hecker
e97388cb27 Fix SnapOnOutput not always snapping (#19247)
`IsOn` is the blinker on/off state, which `IsVisible`
is the actual cursor visibility on/off state.

## Validation Steps Performed
* Run bash/zsh in WSL
* (Repeatedly) Quickly scroll right and press A-Z
* Scrolls to the left 
2025-08-15 20:34:29 +00:00
Pankaj Bhojwani
6c08bcb84f cache the displayname 2025-08-15 13:27:40 -07:00
Pankaj Bhojwani
8a81db792f Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-15 11:36:59 -07:00
Pankaj Bhojwani
19fb26dc06 split pane args fix 2025-08-15 11:36:15 -07:00
Pankaj Bhojwani
06c051bfeb +1 2025-08-15 10:42:55 -07:00
Pankaj Bhojwani
9366666c88 get arg descriptors 2025-08-15 10:42:16 -07:00
Pankaj Bhojwani
b3f9c89595 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-14 13:39:03 -07:00
Pankaj Bhojwani
ccfb4bdf1d format 2025-08-14 13:38:42 -07:00
Pankaj Bhojwani
2b1ffd4d47 __COUNTER__, lazy init static arg descriptors 2025-08-14 13:37:15 -07:00
Pankaj Bhojwani
6cb9909758 typehint 2025-08-14 10:26:34 -07:00
Pankaj Bhojwani
fa36c5061f Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-08-13 16:41:46 -07:00
Pankaj Bhojwani
c5dd430bdf const vectors, rename to typeHint 2025-08-13 16:41:36 -07:00
Console Service Bot
370af7aa11 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-13 22:45:19 +00:00
Carlos Zamora
1b2aad6504 Add SSH folder to NTM for dynamic SSH profiles (#19239)
Automatically generates an "SSH" folder in the new tab menu that
contains all profiles generated by the SSH profile generator. This
folder is created if the SSH generator created some profiles and the
folder hasn't been created before. Detecting if the folder was generated
is done via the new `bool ApplicationState::SSHFolderGenerated`. The
logic is similar to `SettingsLoader::DisableDeletedProfiles()`.

Found a bug on new tab menu's folder inlining feature where we were
counting the number of raw entries to determine whether to inline or
not. Since the folder only contained the match profiles entry, this bug
made it so that the profile entries would always be inlined. The fix was
very simple: count the number of _resolved_ entries instead of the raw
entries. This can be pulled into its own PR and serviced, if desired.

## References and Relevant Issues
#18814 
#14042 

## Validation Steps Performed
 Existing users get an SSH folder if profiles were generated

## PR Checklist
Closes #19043
2025-08-13 15:43:27 -07:00
Console Service Bot
6020fc5f15 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-13 22:05:00 +00:00
Dustin L. Howett
abaa9488d9 Switch to the @Local view on TerminalDependencies (#19243)
Due to an unexpected decision on behalf of the Azure Artifacts folks,
the default view for a feed with upstream sources reports all packages,
even if they are not actually populated into the feed.

This results in (uncontrolled) 401 errors whenever a new package appears
upstream, because the feed tells our users and our build system that it
is available, but fails when the download actually begins because it is
not allowed to "write" the upstream version to the feed.
2025-08-13 16:27:01 +00:00
Leonard Hecker
6b19d21845 Fix a output marks performance regression (#19242)
An alternative approach for #18291. Improves perf by ~7%.
2025-08-13 18:10:18 +02:00
Console Service Bot
20949e462a Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-13 01:31:11 +00:00
Dustin L. Howett
0d23624fa9 Use a new API to propagate foreground state to child processes (#19192)
Windows 11 uses some additional signals to determine what the user cares
about and give it a bit of a QoS boost. One of those signals is whether
it is associated with a window that is in the foreground or which has
input focus.

Association today takes two forms:
- Process has a window which is in the foreground or which has input
  focus
- Process has a *parent* that meets the above criterion.

Console applications that are spawned "inside" terminal by handoff do
not fall into either bucket. They don't have a window. Their parent is
`dllhost` or `explorer`, who is definitely not in focus.

We are piloting a new API that allows us to associate those processes
with Terminal's window.

When Terminal is in focus, it will attach every process from the active
tab to its QoS group. This means that whatever is running in that tab
is put into the "foreground" bucket, and everything running in other
background tabs is not.

When Terminal is out of focus, it attaches every process to its QoS
group. This ensures that they all go into the "background" bucket
together, following the window.
2025-08-13 00:09:50 +00:00
Pankaj Bhojwani
9eb6c7746c conflict 2025-08-12 15:45:34 -07:00
Pankaj Bhojwani
da0a7a0fa0 conflict 2025-08-12 15:04:38 -07:00
Leonard Hecker
8a05910e3c Implement snap-on-input/output for conhost (#17453)
This extends our current behavior in conhost to scroll to the
cursor position when typing. This is especially relevant in WSL,
where this won't happen at all, otherwise.

Closes #18073
Closes MSFT:49027268
2025-08-12 12:22:33 -07:00
Windows Console Service Bot
a0f7b332fa Localization Updates - multi line paste - 08/09/2025 03:04:06 (#19230) 2025-08-12 10:39:45 -05:00
Console Service Bot
982cc4fb0e Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-12 01:31:26 +00:00
Leonard Hecker
0c064905b3 Revert "ConPTY: Emit DSR CPR on resize (#19089)" (#19237)
This reverts commit c55aca508b
because it is unaware of the VT state and may inject the DSR CPR
while e.g. a DCS is going on.

Reopens #18725
2025-08-11 17:48:35 +00:00
Console Service Bot
9abf6d864e Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-09 01:31:29 +00:00
Leonard Hecker
e2f3e53064 Don't trim bracketed pastes (#19067)
* Moves clipboard writing from `ControlCore` to `TerminalPage`.
  This requires adding a bunch of event types and logic.
  This is technically not needed anymore after changing the
  direction of this PR, but I kept it because it's better.
* Add a `WarnAboutMultiLinePaste` enum to differentiate between
  "paste without warning always/never/if-bracketed-paste-disabled".

Closes #13014
Closes https://github.com/microsoft/edit/issues/279

## Validation Steps Performed
* Launch Microsoft Edit and copy text with a trailing newline
* Paste it with Ctrl+Shift+V
* It's pasted as it was copied 
* Changing the setting to "always" always warns 

Co-authored-by: Dustin L. Howett <duhowett@microsoft.com>
2025-08-08 20:53:42 +00:00
Leonard Hecker
5b41f14660 Disable WIN32IM on shutdown (#19229)
Closes #19153

## Validation Steps Performed
I tried reproducing the issue on Windows 10 and couldn't.
I'm not sure what I did wrong. But I tested it under a
debugger with VtPipeTerm and it wrote the sequences to stdout.
2025-08-08 19:48:52 +02:00
Console Service Bot
2ddbcacfab Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-08 01:31:12 +00:00
Pankaj Bhojwani
24edaa97bf comma 2025-08-07 15:20:14 -07:00
Pankaj Bhojwani
9c50b62d81 prop names 2025-08-07 11:04:27 -07:00
Windows Console Service Bot
514da89b63 Localization Updates - main - 08/06/2025 03:04:16 (#19219) 2025-08-07 07:30:29 -05:00
Console Service Bot
268f7c55de Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-07 01:31:33 +00:00
Dustin L. Howett
6c2f38c732 Profiles Editor: make sure we notify the IconPath property (#19223)
There were instances where changing the icon or resetting it did not
result in the text box changing.

Regressed in #19143
2025-08-06 16:09:47 -07:00
Dustin L. Howett
5b51218fbf Tidy up ActiveControlInfo, fix for new IMediaResource Icon (#19221)
It isn't necessary to re-lookup the profile by name when we have all the
objects that already know about the Profile object.

Did some drive-by fixes to `std::filesystem::path` use as well.
2025-08-07 00:48:10 +02:00
Leonard Hecker
6fb70eb510 Throttle incoming handoffs so WinUI can layout them (#19220)
As explained in the diff itself.

Closes #13136

## Validation Steps Performed
* In conhost, with `wtd` not running, execute:
  ```pwsh
1..10 | % { wt -w 1 nt --title=$_ pwsh -NoExit -Command "Get-Date
-Format HH:mm:ss.ffff" }
  ```
* Every tab is up and running immediately 
2025-08-06 18:55:29 +00:00
Leonard Hecker
c55aca508b ConPTY: Emit DSR CPR on resize (#19089)
This will help terminals with a reflow behavior unlike
the one implemented in ConPTY, such as VS Code.

Closes #18725

## Validation Steps Performed
* Tested under a debugger 
* Use PowerShell 5 and reflow lines in the ConPTY buffer until they're
  pushed outside the top viewport. Then type something in the prompt.
  Cursor is in a consistent position, even if slightly off. 
2025-08-06 13:06:44 +02:00
Console Service Bot
a7d790df10 Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-06 01:31:38 +00:00
Dustin L. Howett
666a75bc70 Fix hot reload for icon, bell, close on exit; regressed in #16172 (#19217)
In #16172, we removed the propagation of the profile down into the
Terminal Pane Content.

It was holding on to the profile from the _old_ settings model (😱).

This also broke background image hot reload.
2025-08-05 21:18:43 +00:00
Dustin L. Howett
5bd8585101 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsModel/GlobalAppSettings.cpp
2025-08-05 16:14:08 -05:00
Dustin L. Howett
c0f9a198c6 Rewrite media resource handling (relative path icons, web URLs) (#19143)
This pull request broadly rewrites how we handle all media resources in
the Terminal settings model.

## What is a media resource?

A media resource is any JSON property that refers to a file on disk,
including:

- `icon` on profile
- `backgroundImage` on profile (appearance)
- `pixelShaderPath` and `pixelShaderImagePath` on profile (appearance)
- `icon` on command and the new tab menu entries

The last two bullet points were newly discovered during the course of
this work.

## Description of Changes

In every place the settings model used to store a string for a media
path, it now stores an `IMediaResource`.

A media resource must be _resolved_ before it's used. When resolved, it
can report whether it is `Ok` (found, valid) and what the final
normalized path was.

This allows the settings model to apply some new behaviors.

One of those new behaviors is resolving media paths _relative to the
JSON file that referred to them._ This means fragments and user settings
can now contain _local_ images, pixel shaders and more and refer to them
by filename.

Relative path support requires us to track the path from which every
media resource "container" was read[^2]. For "big" objects like Profile,
we track it directly in the object and for each layer. This means that
fragments **updating** a profile pass their relative base path into the
mix. For some of the entries such as those in `newTabMenu`, we just wing
it (#19191). For everything that is recursively owned by a parent that
has a path (say each Command inside an ActionMap), we pass it in from
the parent during media resolution.

During resolution, we now track _exactly which layer_ an icon,
background image, or pixel shader path came from and read the "base
path" from only that layer. The base path is not inherited.

Another new behavior is in the handling of web and other URLs.

Canonical and a few other WSL distributors had to resort to web URLs for
icons because we did not support loading them from the package. Julia
tried to use `ms-appx://JuliaPackageNameHere/path/to/icon` for the same
reason. Neither was intended, and of the two the second _should_ have
worked but never could[^1].

For both `http(s?)` URLs and `ms-appx://` URLs which specify a package
name, we now strip everything except the filename. As an example...

If my fragment specifies `https://example.net/assets/foo.ico`, and my
fragment was loaded from `C:\Fragments`, Terminal will look *only* at
`C:\Fragments\foo.ico`.

This works today for Julia (they put their icon in the fragment folder
hoping that one day we would support this.) It will require some work
from existing WSL distributors.

I'm told that this is similar to how XML schema documents work.

Now, icons are special. They support _Emoji_ and _Segoe Icons_. This PR
adds an early pass to avoid resolving anything that looks like an
emoji.

This PR intentionally expands the heuristic definition of an emoji. It
used to only cover 1-2 code unit emoji, which prevented the use of any
emoji more complicated than "man in business suite levitating."

An icon path will now be considered an emoji or symbol icon if it is
composed of a single grapheme cluster (as measured by ICU.)

This is not perfect, as it errs on the side of allowing too many
things... but each of those things is technically a single grapheme
cluster and is a perfectly legal FontIcon ;)

Profile icons are _even more special_ than icons. They have an
additional fallback behavior which we had to preserve. When a profile
icon fails validation, or is expressly set to `null`, we fall back to
the EXE specified in the command line.

Because we do this fallback during resolution, _and the icon may be
inherited by any higher profile,_ we can only resolve it against the
commandline at the same level as the failed or nulled icon.

Therefore, if you specify `icon: null` in your `defaults` profile, it
will only ever resolve to `cmd.exe` for any profile that inherits it
(unless you change `defaults.commandline`).

This change expands support for the magic keywords `desktopWallpaper`
and `none` to all media paths (yes, even `pixelShaderPath`... but also,
`pixelShaderImagePath`!) It also expands support for _environment
variables_ to all of those places. Yes, we had like forty different
handlers for different types of string path. They are now uniform.

## Resource Validation

Media resources which are not found are "rejected". If a rejected
resource lives in _user_ settings, we will generate a warning and
display it.

In the future, we could detect this in the Settings UI and display a
warning inline.

## Surprises

I learned that `Windows.Foundation.Uri` parses file paths into `file://`
URIs, but does not offer you a way to get the original file path back
out. If you pass `C:\hello world`, _`Uri.Path`_ will return
`/C:/hello%20world`. I kid you not.

As a workaround, we bail out of URL handling if the `:` is too close to
the start (indicating an absolute file path).

## Testing

I added a narow test hook in the media resource resolver, which is
removed completely by link-time code generation. It is a real joy.

The test cases are all new and hopefully comprehensive.

Closes #19075
Closes #16295
Closes #10359 (except it doesn't support fonts)
Supersedes #16949 somewhat (`WT_SETTINGS_DIR`)
Refs #18679

Refs #19215 (future work)
Refs #19201 (future work)
Refs #19191 (future work)

[^1]: Handling a `ms-appx` path requires us to _add their package to our
dependency graph_ for the entire duration during which the resource will
be used. For us, that could be any time (like opening the command
palette for the first time!)

[^2]: We don't bother tracking where the defaults came from, because we
control everything about them.
2025-08-05 20:47:50 +00:00
Console Service Bot
401c981aff Merge remote-tracking branch 'origin/main' into feature/llm 2025-08-05 01:31:15 +00:00
Dustin L. Howett
a258d7d3df Fix title being stuck after toggling "showTerminalTitleInTitlebar" (#19212)
We already have the logic to fall back when the setting is disabled, we
just _also_ had a terrible eventing architecture and never used the
`Title` getter that was smart enough to figure it out.

This pull request somewhat disentangles the mess that is title handling.
For example, TerminalPage had a facility to get its current title! It
was never used. Once we started using it, it wouldn't work for the
Settings page... because it only read the title out of the active
control.

Closes #12871
Closes #19139 (superseded)

---------

Co-authored-by: techypanda <jonathan_wright@hotmail.com>
2025-08-04 17:46:55 -07:00
Leonard Hecker
0a6394270e Fix WSL PATH corruption & potential use-after-free (#19211)
Closes #19152

## Validation Steps Performed
* Set `PATH` on a linux profile
* `PATH` isn't messed up inside WSL 
2025-08-04 22:42:26 +00:00
MQY
88ab154f22 Prevent cursor repositioning during mouse selection (#19182)
- Modify the cursor repositioning logic to check if a selection is in
progress
- Only reposition the cursor when the mouse is used for positioning, not
during selection operations

Closes #19181
2025-08-04 21:09:08 +00:00
Leonard Hecker
dbf740cf2c Extend lead/trail edge support for throttled_func (#19210)
You can now create throttled functions which trigger both on the leading
and trailing edge. This was then also ported to `ThrottledFunc` for
`DispatcherQueue`s and used for title/taskbar updates.

Closes #19188

## Validation Steps Performed
* In CMD run:
  ```batch
  FOR /L %N IN () DO @echo %time%
  ```
* Doesn't hang the UI 
2025-08-04 20:25:37 +02:00
Leonard Hecker
9ab7cf312f Remove dependency on .NET 6 and Framework 4.8 (#19199)
* .NET 6 is EOL
* Framework 4.7.2 comes by default with VS, but 4.8 doesn't
2025-08-04 13:09:22 -05:00
Dustin L. Howett
1caf262cfe Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalApp/TerminalPage.cpp
2025-07-30 16:45:26 -05:00
Dustin L. Howett
311fbdff43 [f/llm] Fix build break introduced by merging 65788d909 (#19189) 2025-07-29 22:08:29 +02:00
zwJimRaynor
a5d916f5d3 Update the version of WinUI required by the Canary appinstaller (#19048) 2025-07-29 14:12:13 -05:00
Leonard Hecker
dfcc8f3c62 Fix use-after-free when disabling the ASB (#19186)
Closes #17515

## Validation Steps Performed
* Disable the ASB while there's a pending cooked read
* Type some text
* No crash 
2025-07-29 13:48:33 -05:00
Quaylyn Rimer
e818dafa6d Fix scrollbar marks not appearing until scroll or resize (#19185)
This PR resolves an issue where scrollbar marks created by shell
integration sequences (OSC 133 FTCS, OSC 1337 iTerm2, and OSC 9;12
ConEmu sequences) were not visible on the scrollbar until the user
manually scrolled.

The problem was that while marks were being created in the buffer
correctly, the UI wasn't being notified to refresh the scrollbar
display. The fix adds a new NotifyShellIntegrationMark() method to the
ITerminalApi interface that calls _NotifyScrollEvent() to trigger
scrollbar refresh, and updates all shell integration sequence handlers
in AdaptDispatch to call this notification method after creating marks.
This ensures scrollbar marks appear immediately when shell integration
sequences are processed, bringing feature parity between auto-detected
and shell-integration-based marks.

Closes #19104
2025-07-29 12:20:47 -05:00
Leonard Hecker
0c3002c1b9 Remove ColorHelper (#19187)
Most of `ColorHelper` was unused and one of them had UB.

Related to #19183

## Validation Steps Performed
* Set a custom tabRow theme color
  Split button looks similar to before 
* White/black FG color decision for colored
  tabs is similar to before 
2025-07-29 11:35:48 -05:00
Weichen Li
7d6e0c8b8e Fix WSLENV environment variable duplication in ConptyConnection (#19167)
This PR fixes issue #7130 where WT_SESSION and WT_PROFILE_ID environment
variables were being duplicated in the WSLENV environment variable when
multiple terminal sessions were created.

The previous implementation always appended WT_SESSION:WT_PROFILE_ID: to
WSLENV without checking if these variables already existed, causing
duplication.

Closes #7130

Co-authored-by: Leonard Hecker <lhecker@microsoft.com>
2025-07-29 01:47:06 +00:00
Dustin L. Howett
bb30087cd9 Merge remote-tracking branch 'github/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp
2025-07-28 15:04:01 -05:00
Dustin L. Howett
65788d9099 Filter Command Palette in English in addition to local language (#19166)
The bulk of this work is changing `Command::Name` (and its descendants
like `GenerateName`) to support looking up names in English and in the
local language.

When matching a "palette item" with a "subtitle" (a new field introduced
to store the English command name when the current language is not
English), the weight of the subtitle is used only if it is greater than
the weight of the name. This ensures that we do not penalize or
over-promote results that contain similar Latin letters in both fields.

Refs #19130, #19131, #19132, #19165
Closes #7039
2025-07-28 19:08:48 +00:00
Console Service Bot
c578ed7e28 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-26 01:31:13 +00:00
Windows Console Service Bot
671440206c Localization Updates - main - 07/25/2025 16:15:20 (#19174)
scroll to zoom + scroll to do opacity
2025-07-25 16:52:27 +00:00
Console Service Bot
2aca6a7708 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-25 01:31:22 +00:00
Dustin L. Howett
482980c336 Command: realize resource-key names when they are requested, not at load (#19165)
Right now, when a Command's name is `{"key": "ResourceName"}` we resolve
the resource immediately at load time. That prevents us from looking it
up later in another language if we need to.

This pull request introduces an intermediate representation for command
names which is be resolved during `Command::Name`.

Refs #7039
2025-07-24 12:53:09 -05:00
Console Service Bot
b775f60410 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-24 01:31:23 +00:00
Carlos Zamora
7ab5978b58 Partially revert the key chord styling in actions page (#19164)
Reverts most of the styling changes done in #19001 to the key chords
displayed in the SUI's Actions page. The `CornerRadius` was kept at the
updated value of `ControlCornerRadius` for consistency.

The only other changes in #19001 that were kept for this page include:
- `EditButtonIconSize`: 15 --> 14
- `AccentEditButtonStyle` > `Padding`: 3 --> 4
- Command name's `FontWeight` reduced to `Normal`
- `AddNewButton` > `Margin` added (set to `0,12,0,0` to provide spacing
between breadcrumb header and button)
2025-07-23 18:21:23 -05:00
Niels Laute
48b796f102 [UX] Settings UI refinements (#19001)
This PR is a (first) design pass on the Terminal settings UX to bring
consistency and alignment with the rest of the OS and other settings
surfaces.

High-level changes include:
- Using WinUI brushes vs. UWP/OS brushes. [See brushes overview in the
WinUI 3 Gallery:](winui3gallery://item/Color).
- Updating pixel values for margins, fontsizes, paddings etc. using
units of 4. See [the design guidelines for more
info](https://learn.microsoft.com/en-us/windows/apps/design/basics/content-basics).
- Adding rounded corners on various elements to be consistent with the
Windows 11 look and feel (using the ControlCornerRadius or
OverlayCornerRadius WinUI resources as much as possible).
- Decreasing the page header titles / breadcrumb so it feels a bit less
cramped.
- Fixing a bug where the title of the page was not aligned with the
content when resizing the window (note to self: should fix this in
PowerToys too):
- Ensuring the subheader texts for settings categories are inline with
the rest of the OS (== decreasing the fontsize).

---------

Co-authored-by: Carlos Zamora <carlos.zamora@microsoft.com>
2025-07-23 10:07:11 -07:00
Dustin L. Howett
2c75e2dbfc Merge remote-tracking branch 'github/main' into feature/llm 2025-07-22 10:09:15 -05:00
Dustin L. Howett
f22295ef2c Merge TabBase+TerminalTab into just Tab (#19136)
This removes the need to construct two objects per tab (TabBase, Actual
Tab) and the other overhead inherent in WinRT composition-based
inheritance.

Important renames:

- `GetTerminalTabImpl` -> `GetTabImpl`

This pull request does not rename `TerminalTabStatus`; that is left as
work for a future PR.

Closes #17529
2025-07-22 08:04:19 -07:00
Dustin L. Howett
d1f29a36c1 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalApp/TerminalPage.cpp
2025-07-21 20:38:40 -05:00
HO-COOH
cb0289fff2 Center text in the Default Terminal dropdown (#19072)
This is a small UI fix so that we center the default terminal application ComboBox text.
2025-07-21 17:35:09 -05:00
Carlos Zamora
8c20d2052d Add telemetry for new tab menu traffic (#19142)
## Summary of the Pull Request
Adds new telemetry events to track traffic through the new tab menu.
Specifically, the following events are added:
- `NewTabMenuDefaultButtonClicked`: Event emitted when the default
button from the new tab split button is invoked
- `NewTabMenuOpened`: Event emitted when the new tab menu is opened
- `NewTabMenuClosed`: Event emitted when the new tab menu is closed
- `NewTabMenuItemClicked`: Event emitted when an item from the new tab
menu is invoked
- Has an `ItemType` parameter that can be set to `Settings`,
`CommandPalette`, `About, `Profile`, `Action`
- Has a `TabCount` parameter that keeps tracked of the number of tabs in
the window before changing the state
- `NewTabMenuCreatedNewTerminalSession`: Event emitted when a new
terminal was created via the new tab menu
- Has a `SessionType` parameter that can be set to `ElevatedWindow`,
`Window`, `Pane`, `Tab`
- Instead of `TabCount`, has a `NewTabCount` that keeps track of the
_new_ number of tabs after the session has been created
- `NewTabMenuItemElevateSubmenuItemClicked`: Event emitted when the
elevate submenu item from the new tab menu is invoked

## Validation Steps Performed
Used TVPP to see events generated from interacting with the new tab
menu.
2025-07-21 15:33:52 -07:00
Paulina Kalicka
452fa87937 feat: add option to adjust opacity with Ctrl+Shift+scroll (#19151)
## Summary of the Pull Request
This PR introduces an experimental setting that allows to toggle opacity
changes with scrolling.

## References and Relevant Issues
#3793

## Detailed Description of the Pull Request / Additional comments
By default, holding Ctrl + Shift while scrolling changes the terminal's
opacity. This PR adds an option to disable that behavior.

## Validation Steps Performed
I built the project locally and verified that the new feature works as
intended.

## PR Checklist
- [x] Resolves
https://github.com/microsoft/terminal/issues/3793#issuecomment-3085684640
- [x] Tests ~~added/~~ passed
- [x] Documentation updated
- If checked, please file a pull request on [our docs
repo](https://github.com/MicrosoftDocs/terminal) and link it here:
https://github.com/MicrosoftDocs/terminal/pull/873
- [X] Schema updated (if necessary)
2025-07-21 15:24:46 -07:00
Dustin L. Howett
3979e82c2b Remove IconElement caching from PaletteItem (#19149)
In #19132, we introduced caching for BasePaletteItem::ResolvedIcon as a
late optimization.

We actually can't cache those, because they're UI elements, with parents
and relationships and all. When you filter a list with icons and the
list elements change physical position, they're assigned new templates--
and new parents.

Fixes e7939bb4e

Co-authored-by: Eric Nelson <e82.eric@gmail.com>
2025-07-21 15:11:26 -07:00
Console Service Bot
d15857ac32 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-19 01:31:25 +00:00
Dustin L. Howett
fedf7b3b6c Undo the damage done to FilteredCommand in #17330 (#19148)
PR #17330 changed FilteredCommand so that FilteredTask could derive from
it. It also **did not** implement FilteredTask as a derived class.

We've been carrying around the debt of a decision we un-decided for like
a year.
2025-07-18 17:09:12 -07:00
Console Service Bot
407b9289ed Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-18 01:31:34 +00:00
Paulina Kalicka
a04e410a39 feat: add option to enable zoom with ctrl + scroll (#19127)
This PR adds a new global setting `scrollToZoom` that allows users to
enable font zooming with scrolling. When disabled, **this setting
prevents accidental font size changes** that can occur when users scroll
while holding the Ctrl key.

Note: after disabling this setting, users may still change font size
using `Ctrl+` and `Ctrl-` keyboard shortcuts. Other Ctrl+Scroll
functionality (like transparency adjustments) remains unaffected.

## Validation Steps Performed

- Verified the setting can be toggled in the Settings UI (Interaction
tab)
- Confirmed that when disabled, holding Ctrl and scrolling no longer
changes font size
- Validated that the setting persists across terminal restarts

---

Note: I used the existing `FocusFollowMouse` setting as a reference for
implementing this.

Closes #11710
Closes #3793
Closes #11906
Closes #3990
2025-07-17 22:09:52 +00:00
Dustin L. Howett
7b841628df Re-enable web-source icons in Stable and Preview builds (#19137)
Disables a controversial part of #19044.

Refs #19075
2025-07-17 02:13:12 +00:00
Console Service Bot
fc5100bfe7 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-17 01:31:35 +00:00
Dustin L. Howett
5b63e24c73 ci: turn on SARIF reporting unconditionally for check-spelling (#19135)
The logic currently present occasionally fails to enable reporting for
some PRs.
2025-07-16 15:10:06 -07:00
Dustin L. Howett
e7939bb4e3 Remove WinRT composition (inheritance) from PaletteItem (#19132)
Right now, we construct **two objects** for every palette item: the
derived type and the base type. It's unnnecessary.

This pull request replaces WinRT composition with a good old-fashioned
`enum ThingType`.

This also removes many of our palette items from our IDL. The only ones
that are necessary to expose via our WinRT API surface are the ones that
are used in XAML documents.

I originally removed the caching for `Command.Name`, but it turns out
that something calls `Name` roughly 17 times **per command** and having
the generator running that often is a serious waste of CPU.

## Validation Steps
- [x] Tab Switcher still live-updates when it is in use
- [x] Command searching still works
- [x] Commandline mode still works
- [x] Suggestions control still works
2025-07-16 15:09:17 -05:00
Console Service Bot
9f6c20aae1 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-15 01:31:09 +00:00
Dustin L. Howett
bdf44322f8 Expose a library's Resource Loader, allow a user to "subset" it (#19131)
This pull request elevates ScopedResourceLoader to the API surface of
LibraryResources, which will allow any library resource consumer to
directly interact with its resource loader.

One of those new interactions is to make a sub-context with a specific
narrowed-down qualifier. Like this:

```c++
auto englishOnlyLoader = GetLibraryResourceLoader().WithQualifier(L"language", L"en-us");
/* auto foo = */ englishOnlyLoader.GetLocalizedString(USES_RESOURCE(L"AppName"));
```
2025-07-14 22:43:48 +00:00
Leonard Hecker
f2b30b4e1e Improve TSF color filtering logic (re: QQPinyin) (#19117)
If an IME provider sets both `crText` and `crBk` we should respect this,
but the previous logic would incorrectly assert for `crLine !=
TF_CT_NONE`.

## Validation Steps Performed
 I'm not aware which TSF even sets these colors in a
way that's compatible with us in the first place...
2025-07-14 17:19:10 -05:00
Dustin L. Howett
0cbb6b1f2f Rewrite HighlightedTextControl and remove HighlightedText (#19130)
`HighlightedTextControl` is a XAML user control that contains a text
block and takes vector of `HighlightedText`. `HighlightedText` uses
tuples `(string, boolean)`. Allocating an entire object to store a
string and an integer felt like a waste, especially when we were doing
it thousands of times for the command palette _and just to pass them
into another object that stores a string and a few more integers
(`Run`)._

The new `HighlightedTextControl` is a standard templated control, and
supports styling of both the inner text block and of the highlighted
runs.

It no longer takes a `HighlightedText`, but rather a standard string and
a set of runs (tuple `(int start, int end)`); these can be stored more
efficiently, and this change moves the construction of text and runs
directly into `HighlightedTextControl` itself as an implementation
detail rather than an API contract.

### XAML Properties

- `Text`: the string to highlight
- `HighlightedRuns`: a vector of `(start, end)` pairs, indicating which
  regions are intended to be highlighted. Can be empty (which indicates
  there is no highlight and that the entire string is styled normally.)
- `TextBlockStyle`: the `Style` applied to the inner text block;
  optional; allows consumers to change how both normal and highlighted
  text looks.
- `HighlightedRunStyle`: a `Style` applied only to the highlighted runs;
  optional; allows consumers to change how highlighted text looks. If
  left NULL, highlighted runs will be bold.

`HighlightedRunStyle` is a little bodgy. It only applies to `Run`
objects (which is fine, and XAML somewhat supports), but since `Run` is
not a `FrameworkElement`, it _doesn't actually have a `Style` member._
We need to crack open the style and apply it manually, entry by entry.
`FontWeight` is special because XAML is a special little flower.
2025-07-14 20:40:20 +00:00
Console Service Bot
4ab63c8f7f Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-10 01:31:25 +00:00
Dustin L. Howett
f14718f738 version: fix the LCID in our VERSIONINFO, add descriptions to each file (#19114)
Closes #19106
2025-07-09 16:36:13 -05:00
Dustin L. Howett
c4fbb58f69 During session save, use the profile's GUID rather than its Name (#19113)
This will prevent Terminal from erroneously selecting a hidden (deleted,
disabled or otherwise) profile of the same name during restoration and
subsequently using the wrong settings.

I am not certain why we used the name at all!

Closes #19105
2025-07-09 15:42:23 -05:00
Console Service Bot
a285f8ac28 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-09 01:31:42 +00:00
Dustin L. Howett
02f173d504 Include the hash of the SID in the Window Class and Mutant (#19109)
Right now, we do not use a sufficiently unique name to disambiguate
Terminal instances running on the same desktop.

Mutexes (mutants) are named objects that live in the user's session,
under `Sessions\1\BaseNamedObjects` (for the local desktop session).
When multiple users are logged into the same session--such as with "Run
as different user"--they share a local BaseNamedObjects namespace. Ugh.

We cannot use [`CreatePrivateNamespace`] as it requires a boundary
descriptor, and the only boundary descriptors supported by the current
API are based on package identity. I also fear that
`CreatePrivateNamespace` is subject to a race condition with
`OpenPrivateNamespace`; Create will not Open an existing one, so we
would need to back off and retry either opening or creating. Yuck.

After this commit, we will hash the user's SID into the name of both the
window class and the mutant, right after the path hash (if running
unpackaged).

Closes #18704

[`CreatePrivateNamespace`]:
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createprivatenamespacea
2025-07-08 17:27:21 -05:00
Console Service Bot
58f3e0f40c Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-04 01:31:27 +00:00
Leonard Hecker
ac07afebcb Fix a crash during commandline handoff (#19096)
The crash occurs because WinRT `abort()`s when it encounters
a `std::wstring_view` without null-terminator.

Closes #19093

## Validation Steps Performed
* Set `wtd` as the default terminal
* Launch `cmd`
* Launch `wtd`
* 2 windows 
2025-07-03 22:19:12 +00:00
Dustin L. Howett
4500d42831 build: enable the compliance theatre build options (#19094)
This makes some compiler warnings into actual bug reports that get filed
on us.
2025-07-03 19:16:04 +02:00
Console Service Bot
cc1e8be738 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-03 01:31:18 +00:00
Leonard Hecker
97f0a06fbe Fix another VT input double-encoding issue (#19083)
Closes #17264
Closes https://github.com/microsoft/edit/issues/182

Long shot, but probably also...
Closes #18579
Closes #19082
2025-07-02 16:49:33 -07:00
Dustin L. Howett
43b59d504b build: partially revert AzCopy changes from 22c509f (#19092)
When we first transitioned to the `R1` network isolation
environment--which required us to _not_ contact
powershellgallery.com--we had to give up on the `AzureFileCopy` task.

Since then, the `AzurePowerShell` task has also become somewhat broken
while OneBranch fixed the issue that prevented us from using
`AzureFileCopy`.

In short, we now need to:

- Install the Azure PowerShell modules directly from our own feed (which
satisfies the network constraint)
- ... using `PSResourceGet` ...
- ... for Windows PowerShell 5.1 ...
- which is used by `AzureFileCopy` to later perform authentication.
2025-07-02 23:01:39 +00:00
Dustin L. Howett
3022888511 Merge remote-tracking branch 'origin/main' into feature/llm 2025-07-01 18:22:56 -05:00
Leonard Hecker
a25d968fe0 Move ConPTY handoff logic into WindowEmperor (#19088)
This changes the ConPTY handoff COM server from `REGCLS_SINGLEUSE`
to `REGCLS_MULTIPLEUSE`. The former causes a race condition, because
handoff runs concurrently with the creation of WinUI windows.
This can then result in the a window getting the wrong handoff.

It then moves the "root" of ConPTY handoff from `TerminalPage`
(WindowEmperor -> AppHost -> TerminalWindow -> TerminalPage)
into `WindowEmperor` (WindowEmperor).

Closes #19049

## Validation Steps Performed
* Launching cmd from the Start Menu shows a "Command Prompt" tab 
* Win+R -> `cmd` creates windows in the foreground 
* Win+R -> `cmd /c start /max cmd` creates a fullscreen tab 
  * This even works for multiple windows, unlike with Canary 
* Win+R -> `cmd /c start /min cmd` does not work 
  * It also doesn't work in Canary, so it's not a bug in this PR 
2025-07-01 19:00:00 +00:00
Pankaj Bhojwani
b1550c867d show the first keybinding on the top level page 2025-06-27 13:56:41 -07:00
Pankaj Bhojwani
52abb0de72 Some keyboard nav stuff 2025-06-26 15:51:21 -07:00
Console Service Bot
7e192f5e0c Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-26 01:31:31 +00:00
Leonard Hecker
fc0a06c3b6 Preserve the cursor row during Clear Buffer (#18976)
Introduces an ABI change to the ConptyClearPseudoConsole signal.
Otherwise, we have to make it so that the API call always retains
the row the cursor is on, but I feel like that makes it worse.

Closes #18732
Closes #18878

## Validation Steps Performed
* Launch `ConsoleMonitor.exe`
* Create some text above & below the cursor in PowerShell
* Clear Buffer
* Buffer is cleared except for the cursor row 
* ...same in ConPTY 
2025-06-25 16:31:28 +00:00
Dustin L. Howett
6d1b5a4de4 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-24 21:00:24 -05:00
Pankaj Bhojwani
d682ded898 update display name on argument change 2025-06-24 15:03:15 -07:00
Carlos Zamora
6bf315a4c9 Fix crash when closing multiple panes simultaneously (#19023)
Fixes a crash when multiple panes were closed simultaneously (i.e. using
broadcast input).

The root cause of this crash was that we would get a null pointer
exception when trying to access a member/function off of a null
`_content`. This is because `Pane::_CloseChild()` would always pass over
the content from the non-closed pane and attempt to hook everything up
to it.

The fix was to operate similarly to `Pane::Close()` and raise a `Closed`
event and return early. Since there's no alternative content to attach
to, might as well just close the entire pane. This propagates up the
stack of listeners to update the UI appropriately and close the parent
pane and eventually the entire tab, if necessary.
 
Closes #18071
Closes #17432

## Validation Steps Performed
1. Open 2 panes
2. Use broadcast input to send "exit" to both panes
3.  Terminal doesn't crash and the tab closes gracefully
2025-06-24 14:58:33 -07:00
Dustin L. Howett
cf95460a26 Try to get the client name during DefTerm handoff (#19014) 2025-06-24 23:33:27 +02:00
James Pack
6e1f4a72be Add arm64 build support to the build script (#18946)
It built successfully following the documentation on my Snapdragon
Surface Laptop :)
2025-06-24 15:56:49 -05:00
Josh Soref
9c452cd985 Upgrade to check-spelling v0.0.25 (#18940)
- Various spelling fixes
- Refresh metadata (including dictionaries)
- Upgrade to v0.0.25

## Validation Steps Performed

- check-spelling has been automatically testing this repository for a
while now on a daily basis to ensure that it works fairly reliably:
https://github.com/check-spelling-sandbox/autotest-check-spelling/actions/workflows/microsoft-terminal-spelling2.yml

Specific in-code fixes:
- winget
- whereas
- tl;dr
- set up
- otherwise,
- more,
- macbook
- its
- invalid
- in order to
- if
- if the
- for this tab,...
- fall back
- course,
- cch
- aspect
- archaeologists
- an
- all at once
- a
- `...`
- ; otherwise,

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-06-24 15:54:04 -05:00
Carlos Zamora
218c9fbe3e Display a warning if SUI is unable to write to the settings file (#19027)
Adds logic to display a warning popup if the settings.json is marked as
read-only and we try to write to the settings.json file. Previously,
this scenario would crash, which definitely isn't right. However, a
simple fix of "not-crashing" wouldn't feel right either.

This leverages the existing infrastructure to display a warning dialog
when we failed to write to the settings file. The main annoyance here is
that that popup dialog is located in `TerminalWindow` and is normally
triggered from a failed `SettingsLoadEventArgs`. To get around this,
`CascadiaSettings::WriteSettingsToDisk()` now returns a boolean to
signal if the write was successful; whereas if it fails, a warning is
added to the settings object. If we fail to write to disk, the function
will return false and we'll raise an event with the settings' warnings
to `TerminalPage` which passes it along to `TerminalWindow`.

Additionally, this uses `IVectorView<SettingsLoadWarnings>` as opposed
to `IVector<SettingsLoadWarnings>` throughout the relevant code. It's
more correct as the list of warnings shouldn't be mutable and the
warnings from the `CascadiaSettings` object are retrieved in that
format.

## Validation Steps Performed
-  Using SUI, save settings when the settings.json is set to read-only

Closes #18913
2025-06-24 20:06:03 +00:00
S. M. Mohiuddin Khan Shiam
3680e13bc0 hygiene: fix mutable default argument in vttests/common.py::sgr_n (#19028)
sgr_n previously used a mutable list (`seq=[]`) as its default parameter.
In Python, default arguments are instantiated once at
function‐definition time and then shared across all calls.
If any caller mutated that list (e.g., `seq.append(...)`), later
invocations would inherit the mutated state, producing unpredictable or
corrupted VT-test sequences.
2025-06-24 14:19:22 -05:00
Console Service Bot
ce2fd0af3c Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-24 01:31:08 +00:00
Chawye Hsu
1980e725ab schema: add Microsoft.WSL profile source to schema, width its type (#19047)
WSL now generates profiles with the source named `Microsoft.WSL`, this
PR adds the value to the profile schema.

Refs #18231
2025-06-23 18:55:46 -05:00
Pankaj Bhojwani
2b086cbdf3 deduplicate enums that have different names but mean the same thing 2025-06-23 16:41:42 -07:00
Pankaj Bhojwani
816df339a8 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-06-23 14:24:00 -07:00
Pankaj Bhojwani
2f4a0c9b79 Arg_desc 2025-06-23 14:21:14 -07:00
Pankaj Bhojwani
bbdc6714d7 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-06-20 15:10:58 -07:00
Pankaj Bhojwani
10b8475012 rename 2025-06-20 15:10:19 -07:00
Pankaj Bhojwani
ac0eb51259 new info badge 2025-06-20 14:39:12 -07:00
Pankaj Bhojwani
4311a2b51c add todos, remove guid 2025-06-20 13:56:32 -07:00
Pankaj Bhojwani
757191b11f Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-06-20 12:50:21 -07:00
Pankaj Bhojwani
54681b4d13 localized arg names 2025-06-20 12:50:05 -07:00
Pankaj Bhojwani
ccc7292532 init to first item in the enum list 2025-06-19 15:19:54 -07:00
Pankaj Bhojwani
cd424f43dc assert 2025-06-19 15:05:13 -07:00
Pankaj Bhojwani
849eb1df4d access maps through page vm 2025-06-19 15:01:53 -07:00
Console Service Bot
f4585861fd Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-19 01:32:33 +00:00
James Holderness
00ee88400a Indicate support for OSC 52 in the DA1 report (#19034)
## Summary of the Pull Request
Some applications that make use of the `OSC 52` clipboard sequence will
only do so if they can be certain that the terminal actually has that
functionality. Indicating our support for `OSC 52` in the `DA1` report
will give them an easy way to detect that.

## References and Relevant Issues
`OSC 52` support was added to Windows Terminal in issue #5823, and to
ConHost in issue #18949.

## Detailed Description of the Pull Request / Additional comments
Support for writing to the clipboard is indicated in the primary device
attributes report by the extension parameter `52`. This is obviously not
a standard DEC extension, but it's one that's been agreed upon by a
number of modern terminals. The extension is only reported when writing
to the clipboard is actually permitted (Windows Terminal has an option
to disable that).

## Validation Steps Performed
I've updated the Device Attributes unit test to check that we're
reporting extension `52` when clipboard access is enabled, and not
reporting it when disabled.

## PR Checklist
- [x] Closes #19017
- [x] Tests added/passed
2025-06-19 01:13:00 +00:00
Dustin L. Howett
4cf492e36b build: adjust for changes in the Az.Accounts module (#19020) 2025-06-18 16:04:45 -07:00
Pankaj Bhojwani
ad0f79dbb8 name fixes 2025-06-18 15:53:48 -07:00
Pankaj Bhojwani
c24293cd89 getter only 2025-06-18 15:08:12 -07:00
Pankaj Bhojwani
43ad62c32d proposed shortcut action name 2025-06-18 14:47:09 -07:00
Pankaj Bhojwani
b23ce8735f remove these notifies 2025-06-18 14:38:07 -07:00
Pankaj Bhojwani
c4529aa935 uia text 2025-06-18 11:49:47 -07:00
Pankaj Bhojwani
c47a353ba4 switch to items control 2025-06-18 10:46:48 -07:00
Console Service Bot
7039c78637 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-18 01:31:51 +00:00
Pankaj Bhojwani
caedc8fbc8 items control here 2025-06-17 14:30:15 -07:00
Pankaj Bhojwani
bafe0b1326 automation props, tab stop fixes 2025-06-17 12:39:53 -07:00
Windows Console Service Bot
8a01833489 Localization Updates - main - 06/14/2025 03:04:55 (#19035) 2025-06-17 03:42:04 +00:00
Console Service Bot
efc4aee50f Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-17 01:32:28 +00:00
Leonard Hecker
b47fdfc7e6 Fix support for the Tencent QQPinyin IME (#19046) 2025-06-16 23:52:26 +00:00
Pankaj Bhojwani
c24035f87c ...xaml side too 2025-06-16 16:37:57 -07:00
Pankaj Bhojwani
d862d67142 uia names 2025-06-16 16:33:39 -07:00
Dustin L. Howett
f28bb42979 Gently rework icon and background image validation (#19044)
Right now, image validation accepts web-sourced icons (boo) and rejects
images whose paths begin with `\\?\`. In addition, it will warn the user
for things out of their control like images set by fragments.

This pull request adds a filesystem path validator (which accepts images
with fully-qualified paths and UNC paths), makes the URI validator
reject any web-origin URIs (only `file` and `ms-*` are allowable), and
suppresses warnings for any images that were not _directly_ set by the
user.

Since we want to avoid using fragment images that fail validation, we no
longer `Clear` each image property but rather set it to the blank or
fallback value.

This does **not** actually add support for images at absolute paths
beginning with `\\?\`. Such images are still rejected by `Image` and the
other XAML fixtures we use for images. It's better than a warning,
though.

Closes #18703
Closes #14143
Refs #18710
Refs #5204
Related to #18922 (http-origin icons will be blank everywhere and not
just the jump list ;))
2025-06-16 23:01:35 +00:00
Pankaj Bhojwani
7db0cd6ad4 spell 2025-06-16 15:56:25 -07:00
Pankaj Bhojwani
f601fc73c5 keyboard nav, event handler cleanup 2025-06-16 11:33:51 -07:00
James Pack
098da6ce1c Replace newline literal in AtlasEngine Readme with <br> tag (#19041) 2025-06-16 13:37:45 +00:00
Console Service Bot
2b51a6fb00 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-14 01:31:32 +00:00
Carlos Zamora
bd7e3179ff Manually focus panes after swapping them (#19024) 2025-06-13 17:43:13 -05:00
Katherine Reynolds
bb62ce9345 Improve VS profile generation (#19025)
* Make PowerShell profile generation try to find `pwsh.exe` before
falling back to legacy powershell
* Make profiles generated on an `arm64` host work properly

## Validation Steps Performed

* Local build ran
* Verified the new `arm64` profile works
* Verified `pwsh.exe` is used if present
* Verified `powershell.exe` is used if `pwsh` is not present in path
* Verified we don't attempt to create `arm64` host cmd/pwsh profiles if
VS is not >= 17.4
2025-06-13 17:41:10 -05:00
Carlos Zamora
685499df3a Automatically enable AdjustIndistinguishableColors if High Contrast mode enabled (#17346)
If High Contrast mode is enabled in the OS settings, we now
automatically enable `adjustIndistinguishableColors`. To accomplish
this, a new `Automatic` value is added to
`adjustIndistinguishableColors`. When it's chosen, color nudging doesn't
occur in regular contrast sessions, but we interpret the value as
`Indexed` respectively.

The new default value is `AutomaticIndexed`. Meaning that regular
contrast sessions will see no difference in behavior. However, if they
switch to high contrast mode, Windows Terminal will interpret the value
as `Indexed` at runtime. This was chosen because `Always` is more
performance intensive.
  
## References and Relevant Issues
#12999

## Validation Steps Performed
 Toggling High Contrast mode immediately triggers an updated terminal
instance with `adjustIndistinguishableColors`
2025-06-13 15:38:40 -07:00
Pankaj Bhojwani
78395fbf25 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-06-13 13:19:59 -07:00
Pankaj Bhojwani
67a1b4e964 alphabetical 2025-06-13 13:18:38 -07:00
Pankaj Bhojwani
a6111892c5 move to action map 2025-06-13 13:17:08 -07:00
Console Service Bot
c25aa04f0d Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-13 01:31:26 +00:00
James Pack
7a9fb76955 Ensure items is not null before checking its size so we dont crash (#19026)
Prevents a crash when no storage items are returned from a dropped path.

Terminal no longer crashes when a relative path is dragged and dropped
into the tool.

Closes #19015
2025-06-13 00:34:51 +00:00
Console Service Bot
cf09df4070 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-12 01:31:25 +00:00
Pankaj Bhojwani
9fa1c94873 we're not listening to this 2025-06-11 16:40:55 -07:00
Pankaj Bhojwani
f853aa491c abstract 2025-06-11 16:20:56 -07:00
Pankaj Bhojwani
2e5c54c29d folder picker 2025-06-11 15:27:56 -07:00
Muhammad Danish
ad14922874 build: update WinGet publish script to use env var instead of --token (#19021)
With the latest winget-create release, the preferred method for
providing the GitHub token in CI/CD environment is via the environment
variable `WINGET_CREATE_GITHUB_TOKEN`. Removed use of `--token` and
switched to environment variable. See https://aka.ms/winget-create-token
for details.
2025-06-11 21:56:57 +00:00
Pankaj Bhojwani
7fac89c06b some wrapping 2025-06-11 11:04:33 -07:00
Console Service Bot
10f8933d15 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-11 01:31:32 +00:00
James Holderness
557a193cb7 Improve correctness of Sixel background fill (#18260)
This is an attempt to improve the correctness of the background fill
that the Sixel parser performs when an image is scrolled because it
doesn't fit on the screen.

This new behavior may not be exactly correct, but does at least match
the VT330 and VT340 hardware more closely than it did before.

The initial Sixel parser implementation was in PR #17421.

When a Sixel image has the background select parameter set to 0 or 2, it
fills the background up to the active raster attribute dimensions prior
to writing out any actual pixel data. But this fill operation is clamped
at the boundaries of the screen, so if the image doesn't fit, and needs
to scroll, we have to perform an additional fill at that point to cover
the background of the newly revealed rows (this is something we weren't
doing before).

This later fill uses the width of the most recent raster attributes
command, which is not necessarily the same as the initial background
fill, and fills the entire height of the new rows, regardless of the
height specified in the raster attributes command.

## Validation Steps Performed

Thanks to @al20878 and @hackerb9, we've been able to test on both a
VT330 and a VT340, and I've confirmed that we're matching the behavior
of those terminals as closely as possible. There are some edge cases
where they don't agree with each other, so we can't always match both.

I've also confirmed that the test case in issue #17946 now matches what
the OP was expecting, and the test case in #17887 at least works more
consistently now when scrolling (this is not what the OP was expecting
though).

Closes #17887
Closes #17946
2025-06-10 19:04:56 -05:00
Pankaj Bhojwani
54b850ef95 no more no arg 2025-06-10 16:58:53 -07:00
James Holderness
4abc041eb7 Add support for OSC 52 clipboard copy in conhost (#18949)
This adds support for copying to the clipboard in conhost using the OSC
52 escape sequence, extending the original implementation which was for
Windows Terminal only.

The Windows Terminal implementation was added in PR #5823.

Because the clipboard can't be accessed from a background thread, this
works by saving the content in a global variable, and then posting a
custom message to the main GUI thread, which takes care of the actual
copy operation.

Validation:
I've manually confirmed that tmux copy mode is now able to copy to the
system clipboard.

Closes #18943
2025-06-10 20:09:51 +00:00
Pankaj Bhojwani
3e426d77be remvoe more 2025-06-10 11:50:17 -07:00
Pankaj Bhojwani
5dde183dda add examples, remove some stuff 2025-06-10 11:41:17 -07:00
Console Service Bot
217e92d989 Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-04 01:31:11 +00:00
Pankaj Bhojwani
21e1e15b65 how about now 2025-06-03 15:51:59 -07:00
Pankaj Bhojwani
4e87177ac8 spelling 2025-06-03 15:46:41 -07:00
Pankaj Bhojwani
c55ba1b13c post merge updates 2025-06-03 15:07:55 -07:00
Pankaj Bhojwani
4a972cca71 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-06-03 14:21:13 -07:00
Pankaj Bhojwani
0cb802e8a1 format 2025-06-03 14:20:01 -07:00
Pankaj Bhojwani
0227969781 undef the correct thing 2025-06-03 14:00:40 -07:00
Niels Laute
155d8a9ab2 Tweak spacing on about dialog (#18993)
Some minor styling tweaks to the about page.

- Tweaking the spacing of the version-checking / update available text.
- Wrapping the hyperlinkbuttons in a StackPanel so it's easier to set a
negative margin so they are visually aligned with the version / title
text.

Closes #18994
2025-06-03 08:38:15 -07:00
Console Service Bot
6572ce3f5b Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-03 01:31:29 +00:00
e82eric
74b5a0c975 Update command palette search to prioritize "longest substring" match. (#18700)
It's the fzf algorithm!

Repurposed work from #16586
- I think the fzf algo fits here where it optimizes to find the optimal
  match based on consecutive chars and word boundaries.
- There are some edge cases where a match with a small gap could get a
  higher score than a match of consecutive chars when the match with a
  gap has other bonuses (FirstChar * Boundary Bonus). This can be
  adjusted by adjusting the bonuses or removing them if needed.
- From reading the thread in #6693 it looked like you guys were leaning
  towards something like the fzf algo.
- License file is now updated in
  https://github.com/nvim-telescope/telescope-fzf-native.nvim repository
  - https://github.com/nvim-telescope/telescope-fzf-native.nvim/pull/148
  - https://github.com/junegunn/fzf/issues/4310
- Removed the following from the original implementation to minimize
  complexity and the size of the PR. (Let me know if any of these should
  be added back).
  - Query expressions "$:StartsWith ^:EndsWith |:Or !:Not etc" 
- Slab to avoid allocating the scoring matrix. This felt like overkill
  for the number of items in the command pallete.
- Fallback to V1 algorithm for very long strings. I want to say that the
  command palette won't have strings this long.
- Added the logic from GH#9941 that copies pattern and text chars to
  string for comparision with lstrcmpi
  - It does this twice now which isn't great...

Closes #6693

---------

Co-authored-by: Leonard Hecker <lhecker@microsoft.com>
2025-06-03 00:22:24 +00:00
Pankaj Bhojwani
cdb9599c96 name fix 2025-06-02 16:45:54 -07:00
Pankaj Bhojwani
e2b2d46944 new tab menu updates with id changes 2025-06-02 16:04:46 -07:00
Pankaj Bhojwani
b0ba0df1d7 deduplicate resource strings 2025-06-02 15:18:12 -07:00
Carlos Zamora
37d5aec1cf Replace extensions page hyperlink with fwlink (#18997) 2025-06-02 14:12:48 -05:00
Dustin L. Howett
9dbcf4b9dd build: try even harder to find a working VC tools version (#18996)
I can't explain this, but VS 17.14 ships with VisualCpp.Tools.Core
version 14.44.35208 but the files say 14.44.35207.
2025-06-02 18:27:22 +00:00
Console Service Bot
7034ea8fea Merge remote-tracking branch 'origin/main' into feature/llm 2025-06-01 01:31:45 +00:00
Carlos Zamora
3ae6bbf2df Enable SSH Generator Feature Flag and polish UI (#18814) 2025-05-31 14:50:18 -05:00
Windows Console Service Bot
36162ae6b1 Localization Updates - main - 05/29/2025 03:05:25 (#18980) 2025-05-31 03:39:32 +00:00
Console Service Bot
899a1561fd Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-31 01:31:17 +00:00
Pankaj Bhojwani
46b036b151 folder path, only capitalize first letter 2025-05-30 16:11:41 -07:00
Pankaj Bhojwani
80924f264d rename and separate interface 2025-05-30 13:27:04 -07:00
Pankaj Bhojwani
035b3414bc static actionargfactory class 2025-05-30 10:55:56 -07:00
Adaline Valentina Simonian
59590fc665 fix: don't render bidi isolates LRI, RLI, FSI, PDI (#18942)
Skips rendering LRI, RLI, FSI, and PDI "glyphs" in the terminal.

Does not implement BIDI/RTL; that is out of scope, see #538. This is
just a hotfix to stop spamming the console with undesired character
printouts. Once BIDI support is implemented, this change will (maybe?)
no longer be necessary.

Fixes #16574.
2025-05-30 17:06:39 +00:00
Pankaj Bhojwani
18830be62d change this back 2025-05-29 16:11:07 -07:00
Pankaj Bhojwani
ed257207c5 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-05-29 16:10:08 -07:00
Pankaj Bhojwani
d62ede4bae init as nullptr 2025-05-29 13:51:33 -07:00
Pankaj Bhojwani
6557d17048 Merge branch 'main' of https://github.com/microsoft/terminal into dev/pabhoj/settings_model_reflection 2025-05-29 12:28:39 -07:00
Dustin L. Howett
ffff2dcd07 Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-28 19:10:09 -05:00
Carlos Zamora
e332c67f51 Add an Extensions page to the Settings UI (#18559)
This pull request adds an Extensions page to the Settings UI, which lets
you enable/disable extensions and see how they affect your settings
(i.e. adding/modifying profiles and adding color schemes). This page is
specifically designed for fragment extensions and dynamic profile
generators, but can be expanded on in the future as we develop a more
advanced extensions model.

App extensions extract the name and icon from the extension package and
display it in the UI. Dynamic profile generators extract the name and
icon from the generator and display it in the UI. We prefer to use the
display name for breadcrumbs when possible.

A "NEW" badge was added to the Extensions page's `NavigationViewItem` to
highlight that it's new. It goes away once the user visits it.

## Detailed Description of the Pull Request / Additional comments
- Settings Model changes:
   - `FragmentSettings` represents a parsed json fragment extension.
- `FragmentProfileEntry` and `FragmentColorSchemeEntry` are used to
track profiles and color schemes added/modified
- `ExtensionPackage` bundles the `FragmentSettings` together. This is
how we represent multiple JSON files in one extension.
   - `IDynamicProfileGenerator` exposes a `DisplayName` and `Icon`
- `ExtensionPackage`s created from app extensions extract the
`DisplayName` and `Icon` from the extension
- `ApplicationState` is used to track which badges have been dismissed
and prevent them from appearing again
- a `std::unordered_set` is used to keep track of the dismissed badges,
but we only expose a get and append function via the IDL to interact
with it
- Editor changes - view models:
   - `ExtensionsViewModel` operates as the main view model for the page.
- `FragmentProfileViewModel` and `FragmentColorSchemeViewModel` are used
to reference specific components of fragments. They also provide support
for navigating to the linked profile or color scheme via the settings
UI!
- `ExtensionPackageViewModel` is a VM for a group of extensions exposed
by a single source. This is mainly needed because a single source can
have multiple JSON fragments in it. This is used for the navigators on
the main page. Can be extended to provide additional information (i.e.
package logo, package name, etc.)
- `CurrentExtensionPackage` is used to track which extension package is
currently in view, if applicable (similar to how the new tab menu page
works)
- Editor changes - views:
- `Extensions.xaml` uses _a lot_ of data templates. These are reused in
`ItemsControl`s to display extension components.
- `ExtensionPackageTemplateSelector` is used to display
`ExtensionPackage`s with metadata vs simple ones that just have a source
(i.e. Git)
- Added a `NewInfoBadge` style that is just an InfoBadge with "New" in
it instead of a number or an icon. Based on
https://github.com/microsoft/PowerToys/pull/36939
- The visibility is bound to a `get` call to the `ApplicationState`
conducted via the `ExtensionsPageViewModel`. The VM is also responsible
for updating the state.
- Lazy loading extension objects
- Since most instances of Terminal won't actually open the settings UI,
it doesn't make sense to create all the extension objects upon startup.
Instead, we defer creating those objects until the user actually
navigates to the Extensions page. This is most of the work that happened
in `CascadiaSettingsSerialization.cpp`. The `SettingsLoader` can be used
specifically to load and create the extension objects.

## Validation Steps
 Keyboard navigation feels right
 Screen reader reads all info on screen properly
 Accessibility Insights FastPass found no issues
 "Discard changes" retains subpage, but removes any changes
 Extensions page nav item displays a badge if page hasn't been visited
 The badge is dismissed when the user visits the page

## Follow-ups
- Streamline a process for adding extensions from the new page
- Long-term, we can reuse the InfoBadge system and make the following
minor changes:
- `SettingContainer`: display the badge and add logic to read/write
`ApplicationState` appropriately (similarly to above)
   - `XPageViewModel`: 
- count all the badges that will be displayed and expose/bind that to
`InfoBadge.Value`
- If a whole page is new, we can just style the badge using the
`NewInfoBadge` style
2025-05-28 14:03:02 -05:00
Console Service Bot
7476ba8aec Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-28 01:31:33 +00:00
Dustin L. Howett
3acb3d510b bodgy: inline FillRow in FillTextBuffer to work around DD-2413379 (#18971)
Something about FillRow tickles the compiler and causes it to ICE during
LTCG.

See DD-2413379 for more.
DevCom:
https://developercommunity.visualstudio.com/t/VS-2022-1714-p11-cannot-complete-a-bui/10864784
2025-05-27 17:56:27 -05:00
Dustin L. Howett
c594fcc91b fuzzing: make fuzzing work with vcpkg and the new library layout (#18970)
We need to replace the vcpkg "target triplet" configs with ones that
enable ASAN!
2025-05-27 17:56:11 -05:00
Console Service Bot
9e68a78fbc Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-23 01:31:41 +00:00
Carlos Zamora
2d64a3a4ab Fix some build errors from updated VS build agents (#18927)
Looks like there's a new VS version on the build agents. This just goes
through and fixes any issues they found.

There's still a COMPILER CRASH though.
2025-05-22 18:57:04 -05:00
Carlos Zamora
b50eaa19e0 Add branding and unpackaged metadata to a few telemetry events (#18926)
## Summary of the Pull Request
Adds branding and distribution metadata to the following telemetry
events:
- ActionDispatched (branding only)
- JsonSettingsChanged
- UISettingsChanged
- SessionBecameInteractive

Also removes the settings logger output from the debugger and some
leftover debugging functions.
Adds a label to the XSettingsChanged settings value to make it easier to
read on the backend.
2025-05-22 18:56:00 -05:00
Windows Console Service Bot
32feec087b Localization Updates - main - 05/22/2025 23:06:26 (#18908) 2025-05-22 18:52:40 -05:00
Leonard Hecker
26cd15a14b Eagerly persist on WM_ENDSESSION (#18912)
Once an application has returned from handling `WM_ENDSESSION`
the OS may kill the app at any point. This means we must
persist our state while inside the message handler.

Closes #17179

## Validation Steps Performed

Honestly, none. It's a race condition in the first place.
2025-05-22 18:02:58 -05:00
Pankaj Bhojwani
5b617e00ea Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-05-16 12:53:40 -07:00
Pankaj Bhojwani
9618831ec7 first nits 2025-05-16 12:53:16 -07:00
Console Service Bot
7532b5d780 Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-16 01:31:14 +00:00
AgentK
a093ca3d54 Updated pane context menu (#18126)
## Motivation 
The motivation is that Windows users are more accustomed to working with
GUI Menus using a mouse, unlike Linux users.

## Summary of the Pull Request
added split pane with profile or duplicate up/down/left/right context
menus as submenu
added swap panes up/down/left/right context menus as submenu
added toggle pane zoom context menu
added close other panes context menu

## References :
- Relevant Issues : (#18137)

## Type of change :
- [x] New feature

---------

Co-authored-by: Mike Griese <migrie@microsoft.com>
2025-05-15 15:56:58 -07:00
Pankaj Bhojwani
eecb32d297 format 2025-05-15 12:02:50 -07:00
Pankaj Bhojwani
23a04324f8 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-05-15 12:01:38 -07:00
Pankaj Bhojwani
72e9b64e2d format 2025-05-15 12:01:20 -07:00
Console Service Bot
4637a93a5e Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-15 01:31:30 +00:00
Pankaj Bhojwani
8d0f947e94 remove old stuff 2025-05-14 17:59:18 -07:00
Pankaj Bhojwani
63ec868455 remove old actions page 2025-05-14 17:32:31 -07:00
Pankaj Bhojwani
acad3880d0 Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor 2025-05-14 16:46:52 -07:00
Pankaj Bhojwani
ce8b31b825 use x-macro here instead 2025-05-14 16:44:07 -07:00
Carlos Zamora
dd96ce4b8f Apply localization and documentation fixes for regex code (#18914)
Applies some localization fixes for the regex strings and
Settings_ResetApplicationState.HelpText.
Also renames the `_validateX()` functions to
`_validateAndPopulateXRegex()` for clarity.
2025-05-14 21:47:01 +00:00
Pankaj Bhojwani
2f6108da6a settings actions editor 2025-05-14 13:35:08 -07:00
Pankaj Bhojwani
d9738363b7 settings model reflection 2025-05-14 13:33:12 -07:00
Leonard Hecker
076746a7a6 Implement custom text context menus to fix crashes (#18854)
This works around a bug in WinUI where it creates a single context
menu/flyout for text elements per thread, not per `XamlRoot`, similar to
many other areas. Since the `XamlRoot` cannot change after creation,
this means that once you've opened the flyout, you're locked into that
window (= XAML root) forever. You can't open the flyout in another
window and once you've closed that window, you can't open it anywhere at
all.

Closes #18599

## Validation Steps Performed
* Flies out right click in the
  * About dialog 
  * Search dialog 
  * Word delimiters setting 
  * Launch size setting 
* Across two windows 
2025-05-14 21:47:23 +02:00
Carlos Zamora
f769597d89 Persist window layout every few minutes (#18898)
If `persistedWindowLayout` is enabled, we now persist the window layout
every few minutes (excluding the text buffer).

This was done by adding a `SafeDispatcherTimer` to the `WindowEmperor`
that calls `PersistState()` every 5 minutes. For `BuildStartupKind`, I
split up `Persist` into `PersistAll` and `PersistLayout`. This way, we
go through all the same code flow that `Persist` had except for
specifically serializing the buffer.

## Validation Steps Performed
 (with the timer set to 3 seconds) create a window layout and ensure
the layout is restored after forcefully stopping Terminal (aka
simulating a "crash")

Closes #18838
2025-05-14 18:08:07 +00:00
Carlos Zamora
9e0ca3aac0 Add reset cache and settings buttons to SUI (#18907)
## Summary of the Pull Request
Adds the ability to reset the settings.json file and application state
via the Settings UI. Since these are destructive operations, the
destructive styling is applied, as well as a confirmation prompt
notifying the user that this occurs immediately.

## Validation Steps Performed
 "reset settings" results in the correct contents for settings.json and
state.json
 "reset cache" results in the correct contents for state.json

Closes #947
2025-05-14 10:34:41 -07:00
Carlos Zamora
92e8be41fd Load .wt.json snippets from parent directories (#18904)
## Summary of the Pull Request
Adds logic such that local snippets from .wt.json files are imported not
only at the current directory, but also in the parent directories.

## References and Relevant Issues
Spec:
https://github.com/microsoft/terminal/blob/main/doc/specs/%231595%20-%20Suggestions%20UI/Snippets.md

## Validation Steps Performed
`D:\test\.wt.json`: contains `Hello --> hello (parent)`
`D:\test\inner_dir\.wt.json`: contains `Hello --> hello`

- In `D:\test\`...
   -  `Hello` command outputs `hello (parent)`
   -  commands from `inner_dir` not shown
- In `D:\test\inner_dir\`...
   -  `Hello` command outputs `hello`
   -  commands from `D:\test` are shown

## PR Checklist
Closes #17805
2025-05-14 10:34:12 -07:00
Carlos Zamora
4d67453c02 Replace New Tab Menu Match Profiles functionality with regex support (#18654)
## Summary of the Pull Request
Updates the New Tab Menu's Match Profiles entry to support regex instead
of doing a direct match. Also adds validation to ensure the regex is
valid. Updated the UI to help make it more clear that this supports
regexes and even added a link to some helpful docs.

## Validation Steps Performed
 Invalid regex displays a warning
 Valid regex works nicely
 profile matcher with source=`Windows.Terminal.VisualStudio` still
works as expected

## PR Checklist
Closes #18553
2025-05-14 10:30:05 -07:00
Leonard Hecker
4d094df508 Fix one source of mouse vanishing (#18911)
When the cursor is over the non-client area it wouldn't
show the cursor when moving it. Now it works as expected.
2025-05-14 17:25:20 +00:00
Leonard Hecker
69fc2d94ee Clean up persisted windows after the feature is disabled (#18910)
I finally realized the missing piece.
We need to clear the state array unconditionally,
as otherwise it won't get cleared. Duh.

Closes #18584

## Validation Steps Performed
* Craft a state.json with a layout
* Launch Terminal while the feature is disabled
* state.json is cleaned up on exit 
2025-05-14 19:04:13 +02:00
Console Service Bot
32f7ef3a59 Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-14 01:31:26 +00:00
Dustin L. Howett
14993db1cb Fix overeager pre-delayed-EOL wrapping in AdaptDispatch (#18899)
AdaptDispatch has a TODO item indicating that we should *not* consider a
row wrapped until we write into the cell beyond it. We actually do have
that logic (it even refers to it!), but we still set the wrap flag when
we fill the final column.

We never removed it because it broke the old VT rendering-based ConPTY
implementation.

Now that VtEngine is gone, so can be this code and this strange
workaround for a problem nobody was quite sure what was.

This will fix, hopefully, the last of our exact line length write wrap
issues. tmux users can finally rejoice.

Closes #8976
Closes #15602
2025-05-13 17:14:46 -07:00
Dustin L. Howett
696dac2c6a wpf: force builtin glyphs (#18906)
They're much prettier, but some users may not be 100% happy.
2025-05-13 18:18:16 -05:00
Dustin L. Howett
c64a9d2a32 wpf: allow OSC 52 to write the clipboard (#18905)
We never hooked up this callback!

This allows a CLI application to emit text directly to the clipboard.
2025-05-13 18:18:05 -05:00
Carlos Zamora
7359df0382 Fix remaining settings container previews in SUI (#18888)
Went through the settings UI and checked which other setting containers
were missing a preview. Here's the list:
- starting directory
- tab title
- background image
- answerback message
- bell style

Adding them was fairly straightforward. Tried to reuse existing
resources when possible. The general pattern was to add a
"Current<Setting>" or "<Setting>Preview" getter that just created the
human-readable format of the setting.

## Validation Steps Performed
 value is shown (including special values!)
 each of these work with a screen reader

Closes #18576
2025-05-13 13:39:22 -07:00
James Holderness
07c9a99273 Render SGR 1 as bold when used with ITU colors (#18903)
The `SGR 1` VT attribute can either be interpreted as a brighter color,
or as a bolder font, depending on the _Intense text style_ setting.
However, the concept of brightness only applies to the eight standard
ANSI colors, so when `SGR 1` is configured as _bright_, it has no effect
on the ITU T.416 colors (RGB and the 256 index colors).

To address that, we now interpret `SGR 1` as a bolder font when applied
to ITU colors, regardless of whether the _Intense text style_ option is
set to bold or not.

Note that this only applies to the Atlas render engine, since the GDI
engine doesn't support bold fonts.

## Validation Steps Performed

I've manually tested `SGR 1` applied to different color formats with the
_Intense text style_ option set to _None_, and confirmed that the text
is now rendered with a bold font for ITU colors, but not for ANSI/AIX
colors.

Closes #18284
2025-05-13 17:53:13 +00:00
Carlos Zamora
064d9af46e Bind "Clear buffer" action to Ctrl+Shift+K (#18900)
Closes #17894
2025-05-13 10:46:16 -07:00
Console Service Bot
7b3d9261bb Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-13 01:31:32 +00:00
Dustin L. Howett
f08321a0b2 build: fix the tsa config yet again (#18901)
We ship the org chart, baby!
2025-05-12 18:30:18 -07:00
Dustin L. Howett
545eaf258d Update to TouchdownBuildTask v5 (#18896)
This is mandatory.
2025-05-12 16:06:22 -05:00
Console Service Bot
65aad55f0b Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-10 01:31:25 +00:00
Muhammad Danish
95d021ac87 config: Use Microsoft.Windows.Settings module for enabling developer mode (#18886)
Using the Microsoft.Windows.Settings module is the now the recommended
way of configuring Windows Settings, including developer mode.
2025-05-09 23:13:18 +00:00
ALBIN BABU VARGHESE
976a54d87c Allow triple-click to select logical line (#18885)
This fixes #18877, by iteratively checking to see if a line is wrapped
and moving up or down accordingly.

**Current behavior:** When a user triple-clicks on a line that’s
visually wrapped by the terminal, only the single physical row that was
clicked gets selected.

**Expected behavior:** A triple-click like in xterm, should select the
entire logical line including all of its wrapped segments, from the true
start through its true end, regardless of where the wrap occurred.

**Why it matters:** Logical line selection is what users expect when
they’re trying to grab one command or output block in full. Limiting the
selection to just the current physical row can lead to copy/paste
mistakes and a confusing experience whenever a long line wraps.

## Validation Steps Performed
I ran the existing tests using `Invoke-OpenConsoleTests` and they were
passing and I was also able to test the build on my machine. I added a
test case as well

## PR Checklist
Closes #18877
2025-05-09 23:00:46 +00:00
Console Service Bot
48a20ae123 Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-03 01:31:29 +00:00
Dustin L. Howett
06f736bebe wpf: use the new TSF implementation (#18861)
This fixes two issues in the WPF terminal control:
- The emoji picker and other IME candidate windows didn't show up in the
right place
- Submitting an emoji via the emoji picker would result in two win32
input mode events with a VK of 65535 and the surrogate pair halves.

I am not sure I did the right thing with the thread TSF handle...
2025-05-02 18:30:52 -05:00
James Holderness
865f5e5239 Fix SGR mouse movement reports (#18864)
According to the documentation, the final character of an SGR mouse
report is meant to be `M` for a button press and `m` for a button
release. However it isn't clear what the final character should be for
motion events, and we were using an `m` if there weren't any buttons
held down at the time, while all other terminals used an `M`, regardless
of the button state.

This PR updates our implementation to match what everyone else is doing,
since our interpretation of the spec was causing problems for some apps.

## Validation Steps Performed

I've manually tested the new behavior in Vttest, and confirmed that our
mouse reports now match Xterm more closely, and I've tested with v0.42.0
of Zellij, which was previous glitching badly in Windows Terminal, but
now works correctly.

I've also updated our unit tests for the SGR mouse mode to reflect the
correct report format.

Closes #18712
2025-05-02 22:36:45 +00:00
Dustin L. Howett
58092f142f Bring back changes required to build conhost-1.24 in Windows (#18856) 2025-05-02 14:27:28 -05:00
Console Service Bot
29441df51a Merge remote-tracking branch 'origin/main' into feature/llm 2025-05-02 01:31:57 +00:00
James Holderness
34b8ed3575 Account for custom cell sizes in launch size calculation (#18862)
When calculating the initial terminal window size, we weren't taking
into account the line height and cell width settings, so the resulting
number of rows and columns didn't match the requested launch size.

Verification:
Manually verified that the window is now correctly sized when using a
custom line height and cell width.

Closes #18582
2025-05-01 18:28:44 +00:00
Console Service Bot
c4c866d6e4 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-30 01:31:44 +00:00
James Holderness
08e76da3a1 Fix two image erasure bugs (#18855)
This PR fixes two cases where image content wasn't correctly erased when
overwritten.

1. When legacy console APIs fill an area of the buffer using a starting
coordinate and a length, the affected area could potentially wrap over
multiple rows, but we were only erasing the overwritten image content on
the first affected row.

2. When copying an area of the buffer with text content over another
area that contained image content, the image in the target area would
sometimes not be erased, because we ignored the `_eraseCells` return
value which indicated that the image slice needed to be removed.

## References and Relevant Issues

The original code was from the Sixel implementation in PR #17421.

## Validation Steps Performed

I've manually verified that these two cases are now working as expected.

## PR Checklist
- [x] Closes #18568
2025-04-29 23:15:38 +00:00
Dustin L. Howett
0568173aba wpf: strong-name sign Microsoft.Terminal.Wpf (#18836)
This requires us to delay-sign the assembly with a public key (the snk
file), and then later submit it for strong naming. This is separate from
code signing, and has to take place before it.

The snk file does not contain any private key material.

This cannot merge until we are approved to use this new signing "key
code".
2025-04-29 20:37:56 +00:00
Dustin L. Howett
a233b18d74 Port OSS consumption changes from OS PR !12826284 (#18853)
sources and sources.dep goo mostly.
2025-04-29 20:23:23 +00:00
Console Service Bot
1021006bf0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-26 01:31:26 +00:00
Dustin L. Howett
21f3179326 release-engineering: package (during build) and upload GPO templates (#18841)
I've been doing this manually. It is time for me to do it not-manually.
2025-04-25 18:00:49 -05:00
HO-COOH
d2089ec1bd Remove virtual functions in BaseWindow with CRTP (#18840)
Minor refactors.
Obviously you do not need `virtual` functions when you have CRTP which
`BaseWindow<T>` already uses.
2025-04-25 17:55:24 -05:00
Console Service Bot
359cf69f24 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-25 01:31:39 +00:00
Dustin L. Howett
8e94983170 ServicingPipeline: make a bunch of quality of life improvements (#18830)
We used to cherry-pick every commit that had even one card in "To Cherry
Pick", even if it was also referenced by a card in "Rejected" or even
"To Consider".

Now we will warn and skip those commits.

I took this opportunity to add a bit of an object model for servicing
cards as well as prettify the output.

That allowed us to add a list of cards that were ignored due to having
no commits, and display little icons for each type of card.
2025-04-24 13:25:21 -05:00
Leonard Hecker
a2d80682c9 Use RenderSettings for DECSET 2026 - Synchronized Output (#18833)
`RenderSettings` already stores `DECSCNM` (reversed screen),
so it only makes sense to also store DECSET 2026 there.

## Validation Steps Performed
* Same as in #18826 
2025-04-24 12:22:30 -05:00
Console Service Bot
edcf45ca77 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-23 20:35:44 +00:00
Carlos Zamora
093f5d168c Add descriptions and new labels to the bot rules (#18342)
Wanted to learn how the bot works, so I went ahead cleaned up the bot
rules a bit. List of changes:
- added a description for each rule (and move it to the top of the rule)
- added all the "Area-" labels and sorted
2025-04-23 20:31:23 +00:00
Leonard Hecker
2992421761 Fix a major stdin wakeup race condition (#18816)
The conhost v2 rewrite from a decade ago introduced a race condition:
Previously, we would acquire and hold the global console lock while
servicing
a console API call. If the call cannot be completed a wait task is
enqueued,
while the lock is held. The v2 rewrite then split the project up into a
"server" and "host" component (which remain to this day). The "host"
would
hold the console lock, while the "server" was responsible for enqueueing
wait
tasks _outside of the console lock_. Without any form of
synchronization,
any operations on the waiter list would then of course introduce a race
condition. In conhost this primarily meant keyboard/mouse input, because
that
runs on the separate Win32 window thread. For Windows Terminal it
primarily
meant the VT input thread.

I do not know why this issue is so extremely noticeable specifically
when we
respond to DSC CPR requests, but I'm also not surprised: I suspect that
the
overall performance issues that conhost had for a long time, meant that
most
things it did were slower than allocating the wait task.
Now that both conhost and Windows Terminal became orders of magnitudes
faster
over the last few years, it probably just so happens that the DSC CPR
request
takes almost exactly as many cycles to complete as allocating the wait
task
does, hence perfectly reproducing the race condition.

There's also a slight chance that this is actually a regression from my
ConPTY
rewrite #17510, but I fail to see what that would be. Regardless of
that,
I'm 100% certain though, that this is a bug that has existed in v0.1.

Closes #18117
Closes #18800

## Validation Steps Performed
* See repro in #18800. In other words:
  * Continuously emit DSC CPR sequences
  * ...read the response from stdin
  * ...and print the response to stdout
  * Doesn't deadlock randomly anymore 
* Feature & Unit tests 
2025-04-23 15:27:21 -05:00
Carlos Zamora
a8a47b9367 [SUI] Improve accessibility to open json (#18828)
The "open JSON" button in the settings UI wasn't working when invoked
via accessibility tools (specifically Narrator in scan mode and Voice
Access). For some reason, in those scenarios, neither the `Tapped` or
`KeyDown` event were hit!

This PR adds the logic to open the json file via the `ItemInvoked` event
instead. The `Tapped` and `KeyDown` handlers were removed to prevent a
redundant `OpenJson` event being raised.

Additionally, `SelectsOnInvoked` was set to `False` on the "open JSON"
nav item. This prevents the selection pill from moving to the nav item,
which feels more correct.

## Validation Steps Performed
The following scenarios are confirmed to open the JSON
 Mouse click
 Keyboard (Spacebar and Enter)
 Voice Access
 Narrator in scan mode

For all of these (except Voice Access), I've confirmed that holding the
Alt button while invoking the JSON button opens defaults.json.

Closes #18770
Closes #12003
2025-04-23 19:34:47 +00:00
Leonard Hecker
773a4b9198 Implement DECSET 2026 - Synchronized Output (#18826) 2025-04-23 12:15:51 -05:00
Dustin L. Howett
5950918964 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-21 18:31:17 -05:00
Heiko
68d9e0d038 [Enterprise, GPO] Add "Default Terminal app" policy to definition template (#18363)
This PR adds a new policy definition to the ADMX templates for settings
the default Terminal application in Windows.

> [!Note]
> This PR does not change any code of Windows, Console Host or Windows
Terminal. It only adds the definition for a new policy to the templates.

I got the registry values form the documentation and by testing the
values.

The policy is only available as user policy because the registry values
have to be in HKCU.

The Policy is implemented as preference (not inside the Policy key) and
therefore keeps it's value on removing (not configured) it. You can see
this in `gpedit.msc` on the policy symbol and the hint in the
description.

Closes #18302
Refs #18303
2025-04-18 23:01:12 +00:00
Windows Console Service Bot
712ce5fa2f Localization Updates - main - 04/16/2025 21:02:38 (#18807) 2025-04-18 15:13:59 -05:00
Console Service Bot
d747b90fe0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-16 01:31:28 +00:00
Leonard Hecker
3accdcfc6b Fix cwd not applying on launch (#18801) 2025-04-15 20:22:09 +00:00
Carlos Zamora
0b4f9662c7 Fix color selection off-by-one error and dangling Y-beam (#18798) 2025-04-14 23:17:57 -05:00
Console Service Bot
e597c2b796 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-15 01:31:45 +00:00
Leonard Hecker
354e05d713 Fix CRLF translation when DISABLE_NEWLINE_AUTO_RETURN is reset (#18781)
We can't do the `pos.x != 0` check. Instead, I replaced it with
a CR check to avoid redundant CRs during CRLF translation.

Closes #18735

## Validation Steps Performed
* Run the repro in the linked issue
2025-04-15 02:57:30 +02:00
Leonard Hecker
8b01f546cb Backup and restore attributes during cooked reads (#18797)
Use DECSC/DECRC and XTPUSHSGR/XTPOPSGR while redrawing
popups, since they're drawn using the current popup colors.

I wish we could just use the reverse video rendition...

Closes #18742

## Validation Steps Performed
* Run `color 3f` and then press F7
* Works fine in conhost (VtPipeTerm) 
* Works as expected (black background) in VS Code 
2025-04-14 23:59:46 +00:00
Dustin Hall
f7e853cd9f Add 2 additional error messages (#18462)
Add additional information to 2 error scenarios when launching a
different profile in the `ConptyConnection.cpp` file.
  - Requires Elevation
  - File Not Found

Created a profile that required elevation and verified the error
message. Created profile that passed a made up command and verified the
error message.

Closes #7186
2025-04-14 23:15:11 +00:00
Leonard Hecker
90c312f7da Fix wide char support for WriteConsoleOutputAttribute (#18796)
When we overwrite the attributes during the fill,
we must retain the lead/trail byte attributes.

Closes #18746

## Validation Steps Performed
* Added a unit test 
2025-04-14 14:12:01 -07:00
abutcher-gh
6682bed311 TerminalControl: Support MinGW path translation style (C:\ -> C:/) (#18759)
## Summary of the Pull Request

Support drag-n-drop path translation in the style used by MinGW
programs. In particular for usage with shells like `ash` from busybox
(https://frippery.org/busybox/).

## Detailed Description of the Pull Request / Additional comments

Provides a new option "mingw" for "pathTranslationStyle".
Shown as "MinGW" with translation documented as `(C:\ -> C:/)` in the
UI.
As per the other modes, this translates `\` to `/` but stops there.
There is no prefix/drive translation.

## Validation Steps Performed

Run using `busybox ash` shell. Dragged directories and files from both
local disks and network shares onto terminal. All were appropriately
single quoted and had their backslashes replaced with forward slashes.
They were directly usable by the `ash` shell.

Language files containing the other options have been updated to include
the new one.

## PR Checklist
- [ ] Closes #xxx
- [ ] Tests added/passed
- [x] Documentation updated
   - [Docs PR #849](https://github.com/MicrosoftDocs/terminal/pull/849)
- [ ] Schema updated (if necessary)

Co-authored-by: Adam Butcher <adam@jessamine.uk>
2025-04-14 14:11:51 -07:00
Vamsi Krishna Kanjeevaram
f83b98e100 Add a right margin to the suggestion description textblock (#18780)
This ensures that the vertical scrollbar will not cover the description text.
Closes #18545
2025-04-14 19:08:14 +00:00
Console Service Bot
0f7cc34633 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-10 01:31:30 +00:00
Vamsi Krishna Kanjeevaram
ad19d2c967 Display local time instead of UTC while restoring previous session (#18775)
Closes #18727
2025-04-10 00:33:40 +00:00
Dustin L. Howett
5f311506dc Add support for OSC 104, 110, 111, 112 and 117 (resets) (#18767)
This pull request adds support for resetting the various color table
entries and xterm resource values back to their defaults.

Building on the default color table James introduced in #17879, it was
relatively straightforward to add support for resetting specific
entries.

This implementation cleaves tightly to observed behavior in xterm(379)
rather than observed behavior in libvte(0.70.6). They differ in the
following ways:

- xterm rejects any OSC [110..119] with any number of parameters; libvte
accepts it but only resets the first color.
- When passed a list of color indices to reset in 104, xterm resets any
colors up until the first one which fails to parse as an integer and
does _not_ reset the rest; libvte resets all parseable color indices.

I was unable to verify how these reset commands interact with colors set
via `DECAC Assign Color` so I went with the implementation that made the
most sense:

- Resetting the background color with `110` also restores the background
color alias entry to its pre-`DECAC` value; this results in the
perceived background color returning to e.g. index 0 in conhost and the
`background` color in Terminal.
- _ibid._ for the foreground color

Refs #18695
Refs #17879
Closes #3719
2025-04-10 00:11:47 +00:00
Console Service Bot
6bf7849a74 Merge remote-tracking branch 'origin/main' into feature/llm 2025-04-02 01:31:20 +00:00
Dustin L. Howett
22c509f426 build: run official builds with the R1 network isolation policy (#18753)
This required removing connections during the build to `nuget.org` and
`powershellgallery.com`.

The NuGet Tool task was downloading nuget from `nuget.org`
unconditionally.

The `AzureFileCopy` task was downloading `Az.Accounts` from
`powershellgallery.com` unconditionally.

Both of these tasks have better options nowadays.

Tested and passed in OneBranch on 2025-04-01.
2025-04-01 22:01:20 +00:00
Console Service Bot
f4dac953c0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-27 01:31:29 +00:00
Console Service Bot
187a84c079 Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-22 01:31:35 +00:00
Console Service Bot
306f0f9276 Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-21 01:31:20 +00:00
Console Service Bot
d083c0dfea Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-19 01:31:24 +00:00
Console Service Bot
9b803031b4 Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-15 01:31:34 +00:00
Console Service Bot
8d7e808a4d Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-14 01:31:37 +00:00
Console Service Bot
373f419ddb Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-13 01:31:37 +00:00
Console Service Bot
06f2d7eb83 Merge remote-tracking branch 'origin/main' into feature/llm 2025-03-01 02:32:02 +00:00
Console Service Bot
a113633abd Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-27 02:31:29 +00:00
Console Service Bot
1ec3e09722 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-26 02:31:51 +00:00
Console Service Bot
31007032b0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-25 02:31:29 +00:00
Console Service Bot
381e090581 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-22 02:31:23 +00:00
PankajBhojwani
705e9059f4 Update GitHub Copilot description to include GitHub Copilot Free (#18606)
## Summary of the Pull Request
Updates the resource strings for the GitHub Copilot description now that
GitHub Copilot Free is a thing
2025-02-21 16:37:57 -06:00
Console Service Bot
a8b68acebf Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-21 02:31:40 +00:00
Console Service Bot
1871793b29 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-19 02:33:12 +00:00
Console Service Bot
28f73fd860 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-13 02:31:39 +00:00
Console Service Bot
0d2bfbf644 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-08 02:31:51 +00:00
Console Service Bot
9a86599d9b Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-05 02:31:17 +00:00
Console Service Bot
490ce032d7 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-04 02:31:51 +00:00
Console Service Bot
439902f6a3 Merge remote-tracking branch 'origin/main' into feature/llm 2025-02-01 02:31:20 +00:00
Console Service Bot
ec2e2f2381 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-31 02:31:38 +00:00
Console Service Bot
6eeeeff3f1 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-29 02:31:38 +00:00
Console Service Bot
1ae7f812c0 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-28 02:31:34 +00:00
Console Service Bot
f5ce85cbb7 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-25 02:31:23 +00:00
Console Service Bot
b9acd7482c Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-24 02:31:13 +00:00
Console Service Bot
10c575e803 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-22 02:31:33 +00:00
Console Service Bot
9d53e7d35b Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-16 02:31:30 +00:00
Console Service Bot
6e4a92fb85 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-15 02:31:38 +00:00
Console Service Bot
7d2e01659f Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-11 02:31:25 +00:00
Console Service Bot
587b50e234 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-09 02:31:38 +00:00
Console Service Bot
6b5f5ec9e1 Merge remote-tracking branch 'origin/main' into feature/llm 2025-01-07 02:31:33 +00:00
PankajBhojwani
b0c702e2b3 No longer clear the input box when Terminal chat is dismissed (#18386)
## Summary of the Pull Request
Keeps any text in the input box around if Terminal Chat is dismissed.
The original behaviour was consistent with the way the command palette
works but it does not quite make sense for the chat.

## Validation Steps Performed
Input is not lost when the chat pane is closed

## PR Checklist
- [x] Closes #18151 
- [ ] Tests added/passed
- [ ] Documentation updated
- If checked, please file a pull request on [our docs
repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx
- [ ] Schema updated (if necessary)
2025-01-06 16:40:51 -06:00
Console Service Bot
d40129ab4f Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-14 02:31:38 +00:00
Console Service Bot
eb1775293c Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-13 02:31:44 +00:00
Leonard Hecker
1e0ccea3af Simplify handle-uri window targeting (#18321)
Let's use what we already got!
2024-12-12 22:28:58 +00:00
Leonard Hecker
384615e8dd Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-12 22:34:45 +01:00
Console Service Bot
6655c9ede1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-12 02:31:22 +00:00
Console Service Bot
4938c07b94 Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-07 02:31:41 +00:00
Console Service Bot
8dd02773a0 Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-06 02:31:14 +00:00
Dustin L. Howett
b5e8e0a215 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	.github/actions/spelling/allow/allow.txt
#	src/cascadia/TerminalSettingsModel/AllShortcutActions.h
2024-12-05 11:42:16 -06:00
Dustin Howett
7ff5aaa689 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsEditor/MainPage.xaml
2024-12-03 17:49:56 -06:00
Console Service Bot
56ad7a534b Merge remote-tracking branch 'origin/main' into feature/llm 2024-12-03 02:31:26 +00:00
Console Service Bot
feed7b2abc Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-27 02:31:35 +00:00
Console Service Bot
b59fc110de Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-26 02:31:18 +00:00
PankajBhojwani
9ac902c19c Improve parsing of responses from the LLM (#18220)
Instead of manually parsing out code blocks from the response we
receive, leverage the markdown to xaml parsing introduced in #17585

## Validation Steps Performed
Responses are parsed as expected.
2024-11-25 15:02:10 -06:00
Console Service Bot
94bceef18a Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-24 02:31:30 +00:00
Console Service Bot
85c33392ac Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-23 02:31:33 +00:00
Console Service Bot
3501d789fe Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-21 02:31:22 +00:00
Console Service Bot
fa7eb832bc Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-20 02:31:29 +00:00
Dustin Howett
f30c86514d Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
2024-11-18 13:59:44 -06:00
Console Service Bot
925cb45c8b Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-15 02:31:32 +00:00
Console Service Bot
67d79218fe Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-14 02:31:35 +00:00
Console Service Bot
ec23d22669 Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-13 02:31:39 +00:00
PankajBhojwani
127c81ad09 Set the error status correctly for Github Copilot responses (#18181)
We were setting an error type for non-error responses, this commit fixes
that
2024-11-12 11:37:39 -06:00
Console Service Bot
5ba624561a Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-06 02:31:45 +00:00
Console Service Bot
a61ebbf6af Merge remote-tracking branch 'origin/main' into feature/llm 2024-11-05 02:31:33 +00:00
Console Service Bot
15bebf4735 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-31 20:56:46 +00:00
Dustin L. Howett
a84ab318cc copilot: ensure we wait for auth to complete before retrying (#18133)
If we don't, we'll print auth tokens to the screen.
2024-10-31 15:55:00 -05:00
Console Service Bot
933e54492c Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-30 01:31:40 +00:00
PankajBhojwani
5881ab5588 Lead the user to the AI settings when no provider is set up (#18121)
When a user opens up Terminal Chat but does not have a provider set up,
provide a button that sends them to the relevant settings page

---------

Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
2024-10-29 16:20:26 +00:00
Dustin L. Howett
a81671b4f1 Turn Feature_GithubCopilot on for Canary 2024-10-29 10:45:07 -05:00
PankajBhojwani
438621fccb Allow enterprises to disable Terminal Chat or specific LMs (#18095)
## Summary of the Pull Request
Adds registry keys to allow enterprises to disable Terminal Chat or only
enable certain LMs

Notes:
- If the policy is not set at all, all LM providers are allowed
- If the policy is set, we look at the provided allow list to determine
which LMs (if any) should be allowed
- Only the allowed LMs show up in the AI Settings page to allow for
configuration
- If no LMs are allowed, the Terminal Chat action is not shown in the
new tab dropdown nor the command palette and existing keybindings to
open Terminal Chat are not handled
- Regardless of the policy, any keybindings/modifications to a user's
toggle terminal chat action are preserved

## Validation Steps Performed
Toggling the policy/updating the allow list updates the settings page,
dropdown and command palette appropriately

## PR Checklist
- [x] Closes #16401

Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
2024-10-28 20:41:11 -05:00
PankajBhojwani
b2524f9db4 Allow Github Copilot to be used with Terminal Chat (#18014)
## Summary of the Pull Request

- [x] Implements `GithubCopilotLLMProvider`, which is an implementation
of `ILMProvider` that leverages Github Copilot
- [x] Github auth flow can be initiated from the settings UI
- [x] Modifies the `ILMProvider` interface to include an `IBrandingData`
interface, that allows a provider to specify how it wants certain
elements of the TerminalChat UI to look
- [x] Modified the various telemetry events to include the name of the
currently connected provider

## Validation Steps Performed

- [x] Auth flow works
- [x] Automatic refresh of the auth tokens works, meaning you don't need
to repeat the auth flow every few days
2024-10-28 18:18:34 -05:00
PankajBhojwani
5c7ba8232a Allow OpenAI to be used with Terminal Chat (#17540)
- Implements `OpenAILLMProvider`, which is an implementation of
`ILMProvider` that uses OpenAI
- Implements an `AIConfig` on the settings model side, to allow the user
to specify which AI provider to use as their current active one (in the
case that they have configured more than one LMProvider)

The OpenAI implementation is largely the same as the Azure OpenAI one.
The more "new" change in this PR is the `AIConfig` struct on the
settings model side that allows the user to specify which provider is
the active one, as well as the logic in `TerminalPage` for how we update
the current active provider based on settings changes

## Validation Steps Performed

- Able to set OpenAI as the active provider
- OpenAI works in Terminal Chat
2024-10-28 12:34:02 -07:00
Console Service Bot
89a5b48f32 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-24 01:31:17 +00:00
PankajBhojwani
67b2e7f3b0 Don't send newlines to the shell from Terminal Chat (#17994)
When a multiline code block is clicked in Terminal chat, the first
command gets run before the user presses 'Enter'. This commit fixes that
by separating the code lines by the delimiter appropriate to the shell
(`&` for cmd, `;` for everything else).

## Validation Steps Performed
Newlines get replaced with the appropriate delimiter

Closes #17939
2024-10-23 17:26:26 -05:00
Console Service Bot
4035af0dcd Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-23 01:31:21 +00:00
Console Service Bot
4a6cabaa12 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-22 01:31:18 +00:00
Dustin L. Howett
fb8a57767f Inject the GitHub client secret during build (#18074) 2024-10-17 12:20:16 -05:00
PankajBhojwani
43cd6859e0 [Terminal Chat] Fix getting the wrong executable when the commandline contains a space (#18051)
There was an issue with the way we parse the commandline executable when
the commandline contained a space (for example, the commandline
`"C:\Program Files\PowerShell\7\pwsh.exe"` resulted in `Program` being
the parsed out executable instead of `pwsh.exe`). This commit fixes
that.
2024-10-16 13:40:14 -05:00
Console Service Bot
e7cccfd523 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-16 01:31:18 +00:00
Console Service Bot
bbe6498eb7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-12 01:31:23 +00:00
Console Service Bot
738a4c042c Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-11 01:31:26 +00:00
Console Service Bot
9d7f5effcc Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-09 01:31:32 +00:00
Console Service Bot
908eb58246 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-08 01:31:37 +00:00
PankajBhojwani
c989f86ad6 Allow shift+enter in Terminal Chat's text box (#17993)
You can now press shift+enter in the Terminal Chat query box to enter
newlines

Closes #17940
2024-10-04 17:32:23 -05:00
Console Service Bot
91c5aa95b6 Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-04 01:31:22 +00:00
Console Service Bot
489a0f082d Merge remote-tracking branch 'origin/main' into feature/llm 2024-10-02 01:31:15 +00:00
Console Service Bot
6a007eb353 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-27 01:31:10 +00:00
Console Service Bot
71651f61f5 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-26 01:31:35 +00:00
Console Service Bot
df9f4d46b4 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-25 01:31:52 +00:00
Console Service Bot
c265e6da7c Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-18 01:31:18 +00:00
Console Service Bot
ef27d976ea Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-17 01:31:36 +00:00
Console Service Bot
89fe33714c Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-13 01:31:26 +00:00
Console Service Bot
0d1b0e2017 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-12 01:31:08 +00:00
Console Service Bot
cd17beb27f Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-10 01:31:41 +00:00
Console Service Bot
b32c836234 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-07 01:31:16 +00:00
PankajBhojwani
e1e3a82659 Create an ILMProvider interface and have our current implementation use it (#17394)
## Summary of the Pull Request

- Creates an ILMProvider interface
- The current implementation that supports Azure OpenAI now uses this
interface
- Separates the code that handles the conversation with the AI with the
part of the code that handles the UI
- TerminalPage is now responsible for initializing an LMProvider and
passing that into ExtensionPalette upon initialization

## Validation Steps Performed
Everything still works

## PR Checklist
- [ ] Closes #xxx
- [ ] Tests added/passed
- [ ] Documentation updated
- If checked, please file a pull request on [our docs
repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx
- [ ] Schema updated (if necessary)
2024-09-05 22:01:21 -05:00
Console Service Bot
012395fd90 Merge remote-tracking branch 'origin/main' into feature/llm 2024-09-05 01:31:23 +00:00
Console Service Bot
a39a00254d Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-30 01:31:14 +00:00
Console Service Bot
4200ea4293 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-27 01:31:20 +00:00
Dustin L. Howett
8fe47932da Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalApp/TabManagement.cpp
#	src/cascadia/TerminalApp/TerminalPage.h
2024-08-26 08:18:01 -07:00
Console Service Bot
ec0ef17c79 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-23 01:31:37 +00:00
Console Service Bot
fc4a2e5fe0 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-22 01:31:29 +00:00
Console Service Bot
a862795019 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-21 01:31:29 +00:00
Console Service Bot
3787811585 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-20 01:31:27 +00:00
Console Service Bot
61af994fbd Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-17 01:31:31 +00:00
Console Service Bot
35c86c2ec2 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-16 01:31:35 +00:00
Console Service Bot
f78d529831 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-15 01:31:14 +00:00
Console Service Bot
68975f3f6d Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-14 01:31:56 +00:00
Console Service Bot
40cef9ccaf Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-10 01:31:17 +00:00
Console Service Bot
d49b2e4f1d Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-09 01:31:44 +00:00
Console Service Bot
c8b9764955 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-08 01:31:24 +00:00
Console Service Bot
b8a1ddf1e0 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-07 01:31:27 +00:00
Console Service Bot
345125f93c Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-06 01:31:43 +00:00
Console Service Bot
de290ba540 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-03 01:31:20 +00:00
Console Service Bot
d8711116e1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-02 01:31:46 +00:00
Console Service Bot
a542fb16f7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-08-01 01:31:56 +00:00
Console Service Bot
2e8612aefa Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-31 01:31:15 +00:00
Console Service Bot
6c0ceeafbb Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-27 01:31:31 +00:00
Console Service Bot
8974526712 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-24 01:31:22 +00:00
PankajBhojwani
a3aa57a9bd Add an "export chat history" button to Terminal Chat (#17553)
Adds a button that, when clicked, saves the chat history to a file
(opening up the file picker dialog)

Moves the logic from `_ExportTab` into a helper function so that it can
be used in both places

## Validation Steps Performed
- Chat history gets copied to the clipboard
- `ExportTab` still works
2024-07-23 14:13:50 -07:00
Console Service Bot
21d742ba2f Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-23 01:31:36 +00:00
Console Service Bot
061c9dabb1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-20 01:31:17 +00:00
PankajBhojwani
0d5d5734f7 Use a PasswordBox instead of a TextBox for the AzureOpenAI key (#17586)
Instead of a TextBox for the input of the AzureOpenAI key, we use a
PasswordBox now which hides the input.
2024-07-19 15:54:20 -07:00
Console Service Bot
2380651136 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-19 01:31:55 +00:00
Console Service Bot
6cabe3be20 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-18 01:31:26 +00:00
Console Service Bot
fb7f747f44 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-17 01:31:27 +00:00
Console Service Bot
1b7ccd8436 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-15 14:04:11 +00:00
Console Service Bot
9fdd74bc0b Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-13 01:31:26 +00:00
Console Service Bot
c15b3cd09f Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-12 01:31:21 +00:00
Dustin L. Howett
1aff98b2f6 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-11 16:52:32 -05:00
Console Service Bot
de97704d28 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-10 01:31:25 +00:00
Console Service Bot
4824f91fba Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-09 01:31:22 +00:00
Console Service Bot
509246f116 Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-04 01:31:12 +00:00
Dustin L. Howett
a73dad905d Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-02 18:44:01 -07:00
Console Service Bot
a29afa204a Merge remote-tracking branch 'origin/main' into feature/llm 2024-07-02 01:31:42 +00:00
Console Service Bot
a290c254b5 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-29 01:31:29 +00:00
Console Service Bot
67a2af3987 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-27 01:31:12 +00:00
Console Service Bot
6334daccda Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-26 01:31:22 +00:00
Console Service Bot
c68c9d6b6b Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-25 01:31:37 +00:00
Console Service Bot
a22ddcc0dd Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-24 01:31:19 +00:00
Console Service Bot
afe77980a5 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-23 01:31:07 +00:00
Console Service Bot
1c77326dad Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-22 01:31:08 +00:00
Dustin L. Howett
7d0ce04f15 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-20 19:12:04 -07:00
Console Service Bot
990bec1a04 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-20 01:31:24 +00:00
Console Service Bot
c0a79e3f4b Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-19 01:31:14 +00:00
Console Service Bot
938b3ec2f2 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-14 01:31:20 +00:00
Console Service Bot
5e6a95afed Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-13 01:33:20 +00:00
Console Service Bot
3c6bb8b9ea Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-12 01:31:20 +00:00
Console Service Bot
4e28307403 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-11 01:31:14 +00:00
Console Service Bot
4a774bd6d7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-08 01:31:36 +00:00
PankajBhojwani
a766357cb6 Fix feature/llm branch from action refactor changes (#17395)
Various fixes needed for this branch from the Action ID refactor
2024-06-07 15:50:56 -05:00
Console Service Bot
60447d23e9 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-07 04:40:13 +00:00
Dustin L. Howett
41ac9a7d97 Merge remote-tracking branch 'origin/main' into feature/llm 2024-06-05 20:33:28 -05:00
Dustin L. Howett
5fd708fe1b Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-31 20:53:56 -05:00
Console Service Bot
9006f65a6e Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-31 01:31:51 +00:00
Console Service Bot
2a8b68cc47 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-30 01:32:13 +00:00
Console Service Bot
aa8df65186 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-29 01:31:31 +00:00
Console Service Bot
dc6dcf4f66 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-25 01:31:23 +00:00
Console Service Bot
2f784372d9 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-21 01:31:27 +00:00
Console Service Bot
a47afae45d Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-18 01:31:15 +00:00
Console Service Bot
51e65147c6 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-17 01:31:30 +00:00
Console Service Bot
692dd02919 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-16 01:31:32 +00:00
Console Service Bot
08d26a0860 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-15 01:34:15 +00:00
Console Service Bot
f612f72e5b Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-14 01:31:16 +00:00
Console Service Bot
4c174d8c1f Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-11 01:31:13 +00:00
Console Service Bot
7a4c848643 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-10 01:31:08 +00:00
Console Service Bot
d964874d1c Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-09 01:34:08 +00:00
Console Service Bot
d967c6fb66 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-08 01:31:25 +00:00
Console Service Bot
d4f0a32fc3 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-07 01:32:00 +00:00
Console Service Bot
33138f57fc Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-04 01:31:07 +00:00
Console Service Bot
8062fc9d7b Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-03 01:31:31 +00:00
Console Service Bot
63a25f61c6 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-02 01:31:33 +00:00
Console Service Bot
b86a07e145 Merge remote-tracking branch 'origin/main' into feature/llm 2024-05-01 01:31:11 +00:00
Console Service Bot
1bf747c5aa Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-30 01:31:49 +00:00
Console Service Bot
054ce08d1a Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-27 01:32:19 +00:00
Console Service Bot
22e6d6a782 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-26 01:31:25 +00:00
Dustin L. Howett
9cc4a08c3e Merge remote-tracking branch 'github/main' into feature/llm 2024-04-24 17:11:48 -05:00
Console Service Bot
fe79091cf8 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-24 01:31:08 +00:00
Console Service Bot
d094718030 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-23 01:31:10 +00:00
Dustin L. Howett
1282252894 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	OpenConsole.sln
2024-04-18 14:04:27 -05:00
Dustin L. Howett
77fb453cf1 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	src/cascadia/TerminalSettingsModel/defaults.json
2024-04-18 11:38:42 -05:00
Console Service Bot
29ef73aca1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-17 01:31:14 +00:00
Console Service Bot
72b1e89b31 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-11 01:31:38 +00:00
Dustin L. Howett
2bb4054c8e Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-10 10:42:48 -05:00
Console Service Bot
0c7d69d438 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-09 01:33:15 +00:00
Console Service Bot
b080397fd9 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-06 01:31:30 +00:00
Console Service Bot
fc2a61b238 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-04 01:31:09 +00:00
Console Service Bot
f8b2340cb8 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-03 01:31:14 +00:00
Console Service Bot
8cbfca319a Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-02 01:31:25 +00:00
Dustin L. Howett
4c445e5f10 Merge remote-tracking branch 'origin/main' into feature/llm 2024-04-01 16:39:57 -05:00
Console Service Bot
862ff39cba Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-28 01:43:13 +00:00
Console Service Bot
dc64efca5e Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-27 01:31:32 +00:00
PankajBhojwani
09146525c4 Enable the check for the jailbreak filter (#16944) 2024-03-26 20:19:33 -05:00
Console Service Bot
6405a0c0df Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-26 01:51:27 +00:00
Console Service Bot
9e3529eec5 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-22 01:31:26 +00:00
Console Service Bot
09b8df5b23 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-21 01:31:31 +00:00
Console Service Bot
a1235cbc2c Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-20 01:31:39 +00:00
Console Service Bot
a095175256 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-19 01:31:34 +00:00
Console Service Bot
11f090f567 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-15 01:31:58 +00:00
Console Service Bot
ce31e6c728 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-13 01:36:31 +00:00
Console Service Bot
aeb23dc70f Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-10 02:31:22 +00:00
Console Service Bot
cb6f8dd436 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-09 02:31:32 +00:00
Console Service Bot
93682a6ec1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-08 02:31:27 +00:00
Console Service Bot
6245ce6a87 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-07 02:36:15 +00:00
Console Service Bot
ff738acb77 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-05 02:45:12 +00:00
Dustin L. Howett
9d636b137f Fix feature/llm for the new Microsoft.Terminal.UI library (#16811) 2024-03-04 11:13:46 -06:00
Dustin L. Howett
44ebdfcf27 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-02 21:07:54 -08:00
Console Service Bot
eb1c32ff60 Merge remote-tracking branch 'origin/main' into feature/llm 2024-03-01 02:31:45 +00:00
Console Service Bot
7aa7f59776 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-29 02:31:28 +00:00
Dustin L. Howett
60a93b91c7 Merge remote-tracking branch 'origin/main' into feature/llm
# Conflicts:
#	.github/actions/spelling/allow/allow.txt
2024-02-27 20:50:34 -06:00
Console Service Bot
758398fc35 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-27 02:34:37 +00:00
Console Service Bot
76129401ea Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-24 02:43:59 +00:00
Dustin L. Howett
79c236ed53 [llm branch] hygiene: remove derelict ARM configurations (#16751)
This is the `feature/llm` branch followup to #16746.
2024-02-23 05:34:37 -06:00
Console Service Bot
a4f0d87ad1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-23 03:22:40 +00:00
Console Service Bot
c121745de7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-22 03:21:20 +00:00
PankajBhojwani
c1e823d187 Capitalize the 'e' in "experimental" (#16705)
## Summary of the Pull Request
Updating the resource strings to be in line with the mocks (capitalizing
the "e", removing the unnecessary experimental tag in the dropdown)

## PR Checklist
- [ ] Closes #xxx
- [ ] Tests added/passed
- [ ] Documentation updated
- If checked, please file a pull request on [our docs
repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx
- [ ] Schema updated (if necessary)
2024-02-21 22:29:33 +00:00
Console Service Bot
ba94cfca1c Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-20 02:31:14 +00:00
Console Service Bot
f827769186 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-14 02:38:34 +00:00
Console Service Bot
23ca41c3d5 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-10 02:31:08 +00:00
PankajBhojwani
aff1a8593e Add experimental tags to Terminal Chat labels (#16626) 2024-02-09 14:32:11 -06:00
Console Service Bot
eb1bf0c0d1 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-08 02:31:40 +00:00
Console Service Bot
ad2965760f Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-07 02:32:21 +00:00
Console Service Bot
0487540702 Merge remote-tracking branch 'origin/main' into feature/llm 2024-02-02 02:31:16 +00:00
Console Service Bot
c57b6a12ee Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-31 02:44:10 +00:00
Console Service Bot
e4cdfd76e8 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-30 02:33:12 +00:00
PankajBhojwani
d6cd5e961f Put the jailbreak filter check behind a velocity flag (#16607)
We recently added a check for a jailbreak filter as part of LLM
validation, put this behind a velocity flag for now so that it isn't a
breaking change for our already small number of users.

Refs #16564
2024-01-26 21:02:46 -06:00
Console Service Bot
81c088f490 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-26 02:32:15 +00:00
Console Service Bot
1d9ea9e300 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-25 03:28:38 +00:00
PankajBhojwani
c4a4a71330 Check for jailbreak filter when validating the model (#16564)
## Summary of the Pull Request
We now verify that the model the user provided has the jailbreak content
filter applied to it

## Validation Steps Performed
- Models that do not have the jailbreak content filter are not permitted
- Jailbreak attempts are caught

## PR Checklist
- [ ] Closes #xxx
- [ ] Tests added/passed
- [ ] Documentation updated
- If checked, please file a pull request on [our docs
repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx
- [ ] Schema updated (if necessary)
2024-01-24 12:01:40 +00:00
Console Service Bot
555eeaeef7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-24 02:43:00 +00:00
Console Service Bot
6264700743 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-17 02:31:57 +00:00
Console Service Bot
c4a380adfb Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-13 02:31:31 +00:00
Console Service Bot
efd5c423e7 Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-11 02:31:12 +00:00
Console Service Bot
5a40cb2e1b Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-10 03:31:32 +00:00
Console Service Bot
3edd74029e Merge remote-tracking branch 'origin/main' into feature/llm 2024-01-09 02:37:15 +00:00
Console Service Bot
e4c7d22600 Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-16 02:31:09 +00:00
PankajBhojwani
ac5f4b17db Resolve several nits in the Terminal AI code (#16382)
- [x] Remove the ESC handler that clears the query message
- [x] Streamline error handling code
- [x] Fix `this` and `&` in several lambdas
- [x] Fix getting the [active commandline
properly](https://github.com/microsoft/terminal/pull/16285#discussion_r1396422350)
- [x] Use XAML color ramp resource names instead of hardcoded colors
2023-12-15 15:32:34 -08:00
PankajBhojwani
a64e4c7288 No longer split the strings in the resource file (#16380)
Instead of splitting up the resource strings in the resource file (which
will cause localization issues), we now use resource strings with
placeholders.

Unfortunately, we still need to split the string to bind to xaml
correctly since only part of the string should be hyperlinked. We do
this in the code-behind, with the help of a helper function
`SplitResourceStringWithPlaceholders`. Reviewers should start by looking
at that function.

## Validation Steps Performed
Hyperlinked text shows up as expected
2023-12-15 15:23:55 -08:00
Console Service Bot
93a00cd612 Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-15 02:31:34 +00:00
Console Service Bot
f8d7c3b9db Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-09 02:31:16 +00:00
Console Service Bot
fca01140aa Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-07 02:31:37 +00:00
Console Service Bot
32c39ba496 Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-06 02:31:26 +00:00
Console Service Bot
a7e65f590c Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-05 02:31:27 +00:00
Console Service Bot
6530dda614 Merge remote-tracking branch 'origin/main' into feature/llm 2023-12-01 02:31:33 +00:00
Console Service Bot
ec8a67f071 Merge remote-tracking branch 'origin/main' into feature/llm 2023-11-28 02:31:39 +00:00
Console Service Bot
39f53c6968 Merge remote-tracking branch 'origin/main' into feature/llm 2023-11-22 02:31:23 +00:00
Console Service Bot
172661aa5e Merge remote-tracking branch 'origin/main' into feature/llm 2023-11-16 23:02:16 +00:00
PankajBhojwani
32cfa5a98e Add an AI chat experience to Windows Terminal, powered by the user's Azure OpenAI resource (#16285)
## Summary of the Pull Request
Adds an AI chatbot to Windows Terminal. Currently we do not ship with
our own LLM, the user needs to provide their own Azure OpenAI
subscription to be able to use this feature.

- A new settings page has been added where the user can input their
Azure OpenAI endpoint and key
- A new palette has been added to the dropdown, called Terminal Chat
- From Terminal Chat, the user can make queries to the provided endpoint
for assistance with shell commands
- We let the endpoint know about the user's current shell so that
(hopefully) the commands received are relevant to the user's context
- Received commands can be clicked from within the palette to be input
into the user's active shell
- The system prompt, alongside Azure OpenAI's in-built safeguards,
should prevent strange/inappropriate replies from the LLM

Co-authored-by: Dustin L. Howett <dustin@howett.net>
2023-11-16 17:00:40 -06:00
883 changed files with 43356 additions and 15719 deletions

View File

@@ -2,14 +2,14 @@
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Developer/DeveloperMode
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
Ensure: Present
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:

View File

@@ -2,14 +2,14 @@
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Developer/DeveloperMode
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
Ensure: Present
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:

View File

@@ -2,14 +2,14 @@
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Developer/DeveloperMode
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
Ensure: Present
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:

View File

@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"XamlStyler.Console": {
"version": "3.2311.2",
"version": "3.2501.8",
"commands": [
"xstyler"
]

View File

@@ -1,4 +1,6 @@
aci
AIIs
AILLM
allcolors
breadcrumb
breadcrumbs
@@ -11,34 +13,30 @@ colorbrewer
commandlines
consvc
copyable
dalet
dcs
deselection
dialytika
diffing
Dimidium
dje
downsides
dze
dzhe
Emacspeak
Fitt
FTCS
flac
FTCS
gantt
gfm
ghe
gje
godbolt
gpt
hstrings
hyperlinking
hyperlinks
ILM
Kbds
kje
libfuzzer
liga
lje
Llast
lm
llm
Lmid
locl
lol
@@ -49,10 +47,9 @@ minimalistic
mkmk
mnt
mru
nje
notwrapped
NTMTo
ogonek
openai
overlined
perlw
postmodern
@@ -60,9 +57,10 @@ Powerline
ptys
pwn
pwshw
QOL
qof
QOL
qps
Quarternary
quickfix
rclt
reimplementation
@@ -74,26 +72,21 @@ rlig
rubyw
runtimes
servicebus
shcha
similaritytolerance
slnt
stakeholders
subpage
sustainability
sxn
TLDR
tonos
Tencent
toolset
tshe
Uids
UEFI
UIDs
uiatextrange
und
vsdevcmd
westus
workarounds
WSLs
wtconfig
XBox
YBox
yeru
zhe

View File

@@ -2,11 +2,8 @@ aalt
abvm
ACCEPTFILES
ACCESSDENIED
acl
aclapi
alignas
alignof
allocconsolewithoptions
APPLYTOSUBMENUS
appxrecipe
bitfield
@@ -15,29 +12,20 @@ BUILDBRANCH
BUILDMSG
BUILDNUMBER
BYCOMMAND
BYPOSITION
charconv
CLASSNOTAVAILABLE
CLOSEAPP
cmdletbinding
COLORPROPERTY
colspan
COMDLG
commandlinetoargv
commoncontrols
comparand
COPYFROMRESOURCE
cstdint
CXICON
CYICON
Dacl
dataobject
dcomp
debugbreak
delayimp
DERR
dlldata
DNE
dnom
DONTADDTORECENT
DWMSBT
@@ -64,93 +52,55 @@ GETHIGHCONTRAST
GETMOUSEHOVERTIME
GETTEXTLENGTH
HARDBREAKS
Hashtable
HIGHCONTRASTON
HIGHCONTRASTW
HIGHQUALITYSCALE
hinternet
HINTERNET
hotkeys
href
hrgn
HTCLOSE
hwinsta
HWINSTA
IActivation
IApp
IAppearance
IAsync
IBind
IBox
IClass
IComparable
IComparer
ICONINFO
IConnection
ICustom
IDialog
IDirect
Idn
IExplorer
IFACEMETHOD
IFile
IGraphics
IImage
IInheritable
IMap
imm
IObject
iosfwd
IPackage
isa
ISetup
isspace
IStorage
istream
IStringable
ITab
ITaskbar
itow
IUri
IVirtual
KEYSELECT
LCID
LINEBREAK
llabs
llu
localtime
lround
Lsa
lsass
LSHIFT
LTGRAY
MAINWINDOW
MAXIMIZEBOX
medi
memchr
memicmp
MENUCOMMAND
MENUDATA
MENUINFO
MENUITEMINFOW
MINIMIZEBOX
mmeapi
MOUSELEAVE
mov
mptt
msappx
MULTIPLEUSE
NCHITTEST
NCLBUTTONDBLCLK
NCMOUSELEAVE
NCMOUSEMOVE
NCPOINTERUPDATE
NCRBUTTONDBLCLK
NIF
NIN
NOAGGREGATION
NOASYNC
NOBREAKS
NOCHANGEDIR
NOCRLF
NOPROGRESS
NOREDIRECTIONBITMAP
NOREPEAT
@@ -160,8 +110,6 @@ NOTIFYICONDATA
ntprivapi
NTSYSCALLAPI
numr
oaidl
ocidl
ODR
offsetof
ofstream
@@ -171,22 +119,17 @@ OSVERSIONINFOEXW
otms
OUTLINETEXTMETRICW
overridable
PACL
PAGESCROLL
PALLOC
PATINVERT
PEXPLICIT
PICKFOLDERS
PINPUT
pmr
ptstr
QUERYENDSESSION
rcx
REGCLS
RETURNCMD
rfind
RLO
rnrn
ROOTOWNER
roundf
RSHIFT
@@ -205,23 +148,19 @@ SHOWTIP
SINGLEUSE
SIZENS
smoothstep
snprintf
SOFTBREAK
spsc
sregex
SRWLOC
srwlock
SRWLOCK
STDCPP
STDMETHOD
strchr
strcpy
streambuf
strtoul
Stubless
Subheader
Subpage
syscall
syscolors
SYSTEMBACKDROP
TABROW
TASKBARCREATED
@@ -236,24 +175,20 @@ tokeninfo
tolower
toupper
TRACKMOUSEEVENT
TTask
TVal
ubrk
UChar
UFIELD
ULARGE
UOI
UPDATEINIFILE
urlmon
userenv
USEROBJECTFLAGS
Vcpp
Viewbox
virtualalloc
vsnwprintf
wcsnlen
wcsstr
wcstoui
WDJ
wincrypt
winhttp
wininet
winmain
@@ -262,10 +197,8 @@ winstamin
wmemcmp
wpc
WSF
wsregex
WWH
wwinmain
xchg
XDocument
XElement
xfacet
@@ -289,4 +222,5 @@ xtree
xutility
YIcon
YMax
zstring
zwstring

View File

@@ -1,5 +1,4 @@
CHINESEBIG
choseong
Jongseong
Jungseong
ssangtikeut
Choseong
CHOSEONG

View File

@@ -1,4 +1,3 @@
alice
aliceblue
antiquewhite
blanchedalmond
@@ -39,7 +38,6 @@ gainsboro
ghostwhite
greenyellow
hotpink
indian
indianred
lavenderblush
lawngreen
@@ -74,7 +72,6 @@ mediumvioletred
midnightblue
mintcream
mistyrose
navajo
navajowhite
navyblue
oldlace
@@ -88,7 +85,6 @@ papayawhip
peachpuff
peru
powderblue
rebecca
rebeccapurple
rosybrown
royalblue
@@ -109,9 +105,4 @@ webgrey
webmaroon
webpurple
whitesmoke
xaroon
xray
xreen
xrey
xurple
yellowgreen

View File

@@ -1,8 +1,8 @@
Consolas
emoji
emojis
Emojis
Extralight
Gabriola
Iosevka
MDL
Monofur

View File

@@ -1,4 +1 @@
arigatoo
doomo
Kaomojis
TATEGAKI

View File

@@ -1,11 +1,2 @@
atan
CPrime
HBar
HPrime
isnan
LPrime
LStep
powf
RSub
sqrtf
ULP

View File

@@ -4,12 +4,11 @@ advapi
akv
AKV
altform
altforms
Altforms
appendwttlogging
appinstaller
appx
appxbundle
appxerror
appxmanifest
ATL
autoexec
@@ -25,66 +24,44 @@ CPRs
cryptbase
cscript
DACL
DACLs
defaultlib
diffs
disposables
dotnetfeed
DTDs
DWINRT
enablewttlogging
HOMESHARE
Intelli
issecret
IVisual
libucrt
libucrtd
LKG
LOCKFILE
LTCG
Lxss
makepri
mfcribbon
microsoft
microsoftonline
MSAA
msixbundle
MSVC
MSVCP
mtu
muxc
netcore
Onefuzz
osgvsowi
PFILETIME
pgc
pgo
pgosweep
powerrename
powershell
priconfig
PRIINFO
propkey
pscustomobject
QWORD
rdpclip
regedit
resfiles
robocopy
SACLs
sdkddkver
segoe
Shobjidl
sid
Skype
SRW
sxs
symbolrequestprod
Sysinternals
sysnative
systemroot
taskkill
tasklist
tdbuildteamid
ucrt
ucrtd
unvirtualized
@@ -92,12 +69,9 @@ USERDNSDOMAIN
VCRT
vcruntime
Virtualization
visualstudio
vscode
VSTHRD
WINBASEAPI
winsdkver
wlk
wscript
wslpath
wtl

View File

@@ -1,4 +1,3 @@
Anup
arkthur
austdi
Ballmer
@@ -6,13 +5,11 @@ bhoj
Bhojwani
Bluloco
carlos
craigloewen
dhowett
Diviness
dsafa
duhowett
DXP
ekg
eryksun
ethanschoonover
Firefox
@@ -25,70 +22,43 @@ Hernan
Howett
Illhardt
Imms
iquilezles
italo
jantari
jerrysh
Kaiyu
kimwalisch
KMehrain
Kodelife
KODELIFE
Kourosh
kowalczyk
leonardder
leonmsft
Lepilleur
lhecker
lukesampson
Macbook
Manandhar
Lovecraft
masserano
mbadolato
Mehrain
menger
mgravell
michaelniksa
michkap
migrie
mikegr
mikemaccana
miloush
miniksa
nguyen
niksa
nvaccess
nvda
oising
oldnewthing
opengl
osgwiki
Ottosson
pabhojwa
panos
Panos
paulcam
pauldotknopf
PGP
Pham
Rincewind
rprichard
Schoonover
shadertoy
Shomnipotence
simioni
Somuah
sonph
sonpham
stakx
talo
thereses
Thysell
Walisch
WDX
Wellons
Westerman
Wirt
Wojciech
zadjii
Zamor
zamora
@@ -96,4 +66,3 @@ Zamora
zljubisic
Zoey
zorio
Zverovich

View File

@@ -1,3 +1,6 @@
# Repeated letters
\b([a-z])\g{-1}{2,}\b
# marker to ignore all code on line
^.*/\* #no-spell-check-line \*/.*$
# marker to ignore all code on line
@@ -7,6 +10,9 @@
# cspell inline
^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b
# copyright
Copyright (?:\([Cc]\)|)(?:[-\d, ]|and)+(?: [A-Z][a-z]+ [A-Z][a-z]+,?)+
# patch hunk comments
^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .*
# git index header
@@ -15,6 +21,9 @@ index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
# file permissions
['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s]
# css fonts
\bfont(?:-family|):[^;}]+
# css url wrappings
\burl\([^)]+\)
@@ -32,9 +41,6 @@ index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
# https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|]
# https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
@@ -69,6 +75,8 @@ magnet:[?=:\w]+
# Amazon
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
# AWS ARN
arn:aws:[-/:\w]+
# AWS S3
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
# AWS execute-api
@@ -95,6 +103,8 @@ vpc-\w+
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
# Google APIs
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
# Google Artifact Registry
\.pkg\.dev(?:/[-\w]+)+(?::[-\w]+|)
# Google Storage
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
# Google Calendar
@@ -130,6 +140,8 @@ themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
# Google Colab Research Drive
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
# Google Cloud regions
(?:us|(?:north|south)america|europe|asia|australia|me|africa)-(?:north|south|east|west|central){1,2}\d+
# GitHub SHAs (api)
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
@@ -168,6 +180,12 @@ GHSA(?:-[0-9a-z]{4}){3}
# GitLab commits
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
# #includes
^\s*#include\s*(?:<.*?>|".*?")
# #pragma lib
^\s*#pragma comment\(lib, ".*?"\)
# binance
accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
@@ -220,7 +238,7 @@ accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
\bmedium\.com/@?[^/\s"]+/[-\w]+
# microsoft
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
\b(?:https?://|)(?:(?:(?:blogs|download\.visualstudio|docs|msdn2?|research)\.|)microsoft|blogs\.msdn)\.co(?:m|\.\w\w)/[-_a-zA-Z0-9()=./%]*
# powerbi
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
# vs devops
@@ -394,7 +412,7 @@ ipfs://[0-9a-zA-Z]{3,}
\bgetopts\s+(?:"[^"]+"|'[^']+')
# ANSI color codes
(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m
(?:\\(?:u00|x)1[Bb]|\\03[1-7]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+)*m
# URL escaped characters
%[0-9A-F][A-F](?=[A-Za-z])
@@ -431,10 +449,14 @@ sha\d+:[0-9a-f]*?[a-f]{3,}[0-9a-f]*
# pki (base64)
LS0tLS1CRUdJT.*
# C# includes
^\s*using [^;]+;
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
(?:[\\0][xX]|\\u|[uU]\+|#x?|%23|&H)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
# integrity
integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1}
@@ -452,7 +474,10 @@ integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1}
Name\[[^\]]+\]=.*
# IServiceProvider / isAThing
(?:\b|_)(?:(?:ns|)I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b))
(?:(?:\b|_|(?<=[a-z]))I|(?:\b|_)(?:nsI|isA))(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b))
# python
\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,})
# crypt
(['"])\$2[ayb]\$.{56}\g{-1}
@@ -466,17 +491,14 @@ Name\[[^\]]+\]=.*
# machine learning (?)
\b(?i)ml(?=[a-z]{2,})
# python
\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,})
# scrypt / argon
\$(?:scrypt|argon\d+[di]*)\$\S+
# go.sum
\bh1:\S+
# scala imports
^import (?:[\w.]|\{\w*?(?:,\s*(?:\w*|\*))+\})+
# imports
^import\s+(?:(?:static|type)\s+|)(?:[\w.]|\{\s*\w*?(?:,\s*(?:\w*|\*))+\s*\})+
# scala modules
("[^"]+"\s*%%?\s*){2,3}"[^"]+"
@@ -485,7 +507,7 @@ Name\[[^\]]+\]=.*
image: [-\w./:@]+
# Docker images
^\s*FROM\s+\S+:\S+(?:\s+AS\s+\S+|)
^\s*(?i)FROM\s+\S+:\S+(?:\s+AS\s+\S+|)
# `docker images` REPOSITORY TAG IMAGE ID CREATED SIZE
\s*\S+/\S+\s+\S+\s+[0-9a-f]{8,}\s+\d+\s+(?:hour|day|week)s ago\s+[\d.]+[KMGT]B
@@ -501,6 +523,7 @@ content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1}
# The `(?=.*?")` suffix should limit the false positives rate
# printf
#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"])
# Alternative printf
# %s
%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"])
@@ -524,7 +547,7 @@ content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1}
# javascript replace regex
\.replace\(/[^/\s"]{3,}/[gim]*\s*,
# assign regex
= /[^*].*?(?:[a-z]{3,}|[A-Z]{3,}|[A-Z][a-z]{2,}).*/[gi]?(?=\W|$)
= /[^*].*?(?:[a-z]{3,}|[A-Z]{3,}|[A-Z][a-z]{2,}).*/[gim]*(?=\W|$)
# perl regex test
[!=]~ (?:/.*/|m\{.*?\}|m<.*?>|m([|!/@#,;']).*?\g{-1})
@@ -538,7 +561,7 @@ perl(?:\s+-[a-zA-Z]\w*)+
(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
# Go regular expressions
regexp?\.MustCompile\(`[^`]*`\)
regexp?\.MustCompile\((?:`[^`]*`|".*"|'.*')\)
# regex choice
\(\?:[^)]+\|[^)]+\)
@@ -586,7 +609,7 @@ urn:shemas-jetbrains-com
# xcode
# xcodeproject scenes
(?:Controller|destination|ID|id)="\w{3}-\w{2}-\w{3}"
(?:Controller|destination|(?:first|second)Item|ID|id)="\w{3}-\w{2}-\w{3}"
# xcode api botches
customObjectInstantitationMethod
@@ -601,14 +624,17 @@ PrependWithABINamepsace
\.fa-[-a-z0-9]+
# bearer auth
(['"])[Bb]ear[e][r] .*?\g{-1}
(['"])[Bb]ear[e][r] .{3,}?\g{-1}
# bearer auth
\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]+
\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]{3,}
# basic auth
(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1}
# basic auth
: [Bb]asic [-a-zA-Z=;:/0-9+.]{3,}
# base64 encoded content
#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1}
# base64 encoded content in xml/sgml
@@ -620,6 +646,9 @@ PrependWithABINamepsace
# base64 encoded pkcs
#\bMII[-a-zA-Z=;:/0-9+]+
# uuencoded
#[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]{40,}
# DNS rr data
#(?:\d+\s+){3}(?:[-+/=.\w]{2,}\s*){1,2}
@@ -630,7 +659,7 @@ PrependWithABINamepsace
\bnumer\b(?=.*denom)
# Time Zones
\b(?:Africa|Atlantic|America|Antarctica|Asia|Australia|Europe|Indian|Pacific)(?:/\w+)+
\b(?:Africa|Atlantic|America|Antarctica|Arctic|Asia|Australia|Europe|Indian|Pacific)(?:/[-\w]+)+
# linux kernel info
^(?:bugs|flags|Features)\s+:.*
@@ -676,11 +705,17 @@ TeX/AMS
"varsIgnorePattern": ".+"
# nolint
nolint:\w+
nolint:\s*[\w,]+
# Windows short paths
[/\\][^/\\]{5,6}~\d{1,2}(?=[/\\])
# Windows Resources with accelerators
\b[A-Z]&[a-z]+\b(?!;)
# signed off by
(?i)Signed-off-by: .*
# cygwin paths
/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+
@@ -715,29 +750,29 @@ W/"[^"]+"
# Compiler flags (Unix, Java/Scala)
# Use if you have things like `-Pdocker` and want to treat them as `docker`
#(?:^|[\t ,>"'`=(])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
#(?:^|[\t ,>"'`=(#])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# Compiler flags (Windows / PowerShell)
# This is a subset of the more general compiler flags pattern.
# It avoids matching `-Path` to prevent it from being treated as `ath`
#(?:^|[\t ,"'`=(])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}))
#(?:^|[\t ,"'`=(#])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}))
# Compiler flags (linker)
,-B
# libraries
#(?:\b|_)lib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z])
# WWNN/WWPN (NAA identifiers)
\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b
#(?:\b|_)[Ll]ib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z])
# iSCSI iqn (approximate regex)
\biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b
# WWNN/WWPN (NAA identifiers)
\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b
# curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
# set arguments
\b(?:bash|sh|set)(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
\b(?:bash|sh|set)(?:\s+[-+][abefimouxE]{1,2})*\s+[-+][abefimouxE]{3,}(?:\s+[-+][abefimouxE]+)*
# tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...

View File

@@ -97,7 +97,7 @@ Resources/(?!en)
^doc/reference/UTF8-torture-test\.txt$
^doc/reference/windows-terminal-logo\.ans$
^NOTICE.md
^oss/
^oss/.*?/
^samples/PixelShaders/Screenshots/
^src/cascadia/TerminalSettingsEditor/SegoeFluentIconList.h$
^src/interactivity/onecore/BgfxEngine\.
@@ -121,8 +121,8 @@ Resources/(?!en)
^tools/ReleaseEngineering/ServicingPipeline\.ps1$
^XamlStyler\.json$
^\.github/actions/spelling/
^\.github/workflows/spelling\d*\.yml$
^\.vsconfig$
^\Q.github/workflows/spelling.yml\E$
^\Qbuild/config/release.gdnbaselines\E$
^\Qdep/WinAppDriver/EULA.rtf\E$
^\Qdoc/reference/windows-terminal-logo.ans\E$
@@ -133,3 +133,4 @@ Resources/(?!en)
^\Qsrc/terminal/parser/ft_fuzzwrapper/run.bat\E$
^\Qsrc/tools/lnkd/lnkd.bat\E$
^\Qsrc/tools/pixels/pixels.bat\E$
^\Qsrc/cascadia/ut_app/FzfTests.cpp\E$

View File

@@ -0,0 +1 @@
ftcs

View File

@@ -1,38 +1,19 @@
AAAAAABBBBBBCCC
AAAAABBBBBBCCC
abcd
ABCDEFGHIJ
abcdefghijk
ABCDEFGHIJKLMNOPQRS
ABCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCG
ABE
abf
BBBBB
BBBBBCCC
BBBBCCCCC
AZZ
BBDM
BBGGRR
EFG
CBN
cbt
Ccc
cch
efg
EFGh
efgh
KLMNOQQQQQQQQQQ
QQQQQQQQQQABCDEFGHIJ
QQQQQQQQQQABCDEFGHIJKLMNOPQRS
QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQ
QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQQ
QQQQQQQQQQABCDEFGHIJPQRST
QQQQQQQQQQABCDEFGHIJPQRSTQQQQQQQQQQ
fdw
fesb
ffd
FFFD
qwerty
qwertyuiopasdfg
ZAAZZ
ZABBZ
ZBAZZ
ZBBBZ
ZBBZZ
ZYXWVUT
ZZBBZ
ZZZBB
ZZZBZ
ZZZZZ
zzf

View File

@@ -2,7 +2,7 @@ aaaaabbb
aabbcc
ABANDONFONT
abbcc
ABCF
abcc
abgr
ABORTIFHUNG
ACCESSTOKEN
@@ -26,13 +26,11 @@ AImpl
AInplace
ALIGNRIGHT
allocing
allocs
alpc
ALTERNATENAME
ALTF
ALTNUMPAD
ALWAYSTIP
aml
ansicpg
ANSISYS
ANSISYSRC
@@ -49,22 +47,17 @@ APIENTRY
apiset
APPBARDATA
appcontainer
appium
appletname
applicationmodel
APPLMODAL
Applocal
appmodel
appshellintegration
APPWINDOW
APPXMANIFESTVERSION
APrep
apsect
APSTUDIO
archeologists
Argb
ARRAYSIZE
ARROWKEYS
asan
ASBSET
ASetting
ASingle
@@ -72,11 +65,11 @@ ASYNCDONTCARE
ASYNCWINDOWPOS
atch
ATest
atg
aumid
Authenticode
AUTOBUDDY
AUTOCHECKBOX
autocrlf
autohide
AUTOHSCROLL
automagically
@@ -91,10 +84,8 @@ AZZ
backgrounded
Backgrounder
backgrounding
backported
backstory
Bazz
bbb
bbccb
BBDM
bbwe
@@ -122,12 +113,13 @@ bitmasks
BITOPERATION
BKCOLOR
BKGND
BKMK
Bksp
Blt
blu
BLUESCROLL
bmi
BODGY
bodgy
BOLDFONT
Borland
boutput
@@ -146,9 +138,7 @@ buflen
buildsystems
buildtransitive
BValue
bytebuffer
cac
cacafire
Cacafire
CALLCONV
CANDRABINDU
capslock
@@ -159,12 +149,6 @@ catid
cazamor
CBash
cbiex
CBN
cbt
Ccc
CCCBB
CCCDDD
cch
CCHAR
CCmd
ccolor
@@ -179,15 +163,14 @@ cfie
cfiex
cfte
CFuzz
cgmanifest
cgscrn
chafa
changelists
CHARSETINFO
chh
chshdng
CHT
CLASSSTRING
CLE
cleartype
CLICKACTIVE
clickdown
@@ -210,9 +193,7 @@ cmw
CNL
cnn
Codeflow
codenav
codepages
codepath
coinit
colorizing
COLORONCOLOR
@@ -224,13 +205,8 @@ colortbl
colortest
colortool
COLORVALUE
combaseapi
comctl
commandline
commctrl
commdlg
COMMITID
componentization
conapi
conattrs
conbufferout
@@ -248,7 +224,6 @@ conintegrityuwp
coninteractivitybase
coninteractivityonecore
coninteractivitywin
conio
coniosrv
CONKBD
conlibk
@@ -261,13 +236,13 @@ conpropsp
conpty
conptylib
conserv
consoleaccessibility
consoleapi
CONSOLECONTROL
CONSOLEENDTASK
consolegit
consolehost
CONSOLEIME
consoleinternal
CONSOLESETFOREGROUND
consoletaeftemplates
consoleuwp
@@ -275,7 +250,6 @@ Consolewait
CONSOLEWINDOWOWNER
consrv
constexprable
constness
contentfiles
conterm
contsf
@@ -309,7 +283,6 @@ csbi
csbiex
CSHORT
Cspace
csrmsg
CSRSS
csrutil
CSTYLE
@@ -366,16 +339,14 @@ DBGFONTS
DBGOUTPUT
dbh
dblclk
DBUILD
Dcd
DColor
dcommon
DCOMMON
DComposition
dde
DDDCCC
DDESHARE
DDevice
DEADCHAR
dealloc
Debian
debugtype
DECAC
@@ -480,18 +451,16 @@ DELAYLOAD
DELETEONRELEASE
depersist
deprioritized
deserializers
desktopwindowxamlsource
devicecode
Dext
DFactory
DFF
dialogbox
DINLINE
directio
DIRECTX
DISABLEDELAYEDEXPANSION
DISABLENOSCROLL
DISPATCHNOTIFY
DISPLAYATTRIBUTE
DISPLAYCHANGE
distros
@@ -526,11 +495,13 @@ DSBUFFERDESC
DSBVOLUME
dsm
dsound
DSRCPR
DSSCL
DSwap
DTest
DTo
DTTERM
DUNICODE
DUNIT
dup'ed
dvi
dwl
@@ -540,8 +511,6 @@ dwmapi
DWORDs
dwrite
dxgi
dxgidwm
dxinterop
dxsm
dxttbmp
Dyreen
@@ -555,7 +524,6 @@ EDITKEYS
EDITTEXT
EDITUPDATE
Efast
efghijklmn
EHsc
EINS
ELEMENTNOTAVAILABLE
@@ -564,7 +532,6 @@ enabledelayedexpansion
ENDCAP
endptr
ENTIREBUFFER
entrypoints
ENU
ENUMLOGFONT
ENUMLOGFONTEX
@@ -574,12 +541,10 @@ EPres
EQU
ERASEBKGND
ERRORONEXIT
ESFCIB
esrp
ESV
ETW
EUDC
EVENTID
eventing
evflags
evt
@@ -601,16 +566,6 @@ FACESIZE
FAILIFTHERE
fastlink
fcharset
FDEA
fdw
FECF
FEEF
fesb
FFAF
ffd
FFDE
FFFD
FFFDb
fgbg
FGCOLOR
FGHIJ
@@ -628,7 +583,6 @@ FINDDLG
FINDDOWN
FINDREGEX
FINDSTRINGEXACT
FINDUP
FITZPATRICK
FIXEDFILEINFO
Flg
@@ -662,13 +616,13 @@ Ftm
Fullscreens
Fullwidth
FUNCTIONCALL
fuzzer
fuzzmain
fuzzmap
fuzzwrapper
fwdecl
fwe
fwlink
fzf
gci
gcx
gdi
@@ -724,6 +678,7 @@ GETWHEELSCROLLCHARS
GETWHEELSCROLLLINES
Gfun
gfx
gfycat
GGI
GHgh
GHIJK
@@ -744,6 +699,7 @@ Greyscale
gridline
gset
gsl
Guake
guc
GUIDATOM
GValue
@@ -773,7 +729,6 @@ hfind
hfont
hfontresource
hglobal
hhh
hhook
hhx
HIBYTE
@@ -789,7 +744,6 @@ HKCU
hkey
hkl
HKLM
hlocal
hlsl
HMB
HMK
@@ -808,7 +762,6 @@ HREDRAW
hresult
hscroll
hstr
hstring
HTBOTTOMLEFT
HTBOTTOMRIGHT
HTCAPTION
@@ -837,14 +790,12 @@ idl
idllib
IDOK
IDR
idth
IDTo
IDXGI
IFACEMETHODIMP
ification
IGNORELANGUAGE
iid
IInput
IIo
ILC
ILCo
@@ -854,24 +805,24 @@ IMPEXP
inbox
inclusivity
INCONTEXT
INDEXID
INFOEX
inheritcursor
INITCOMMONCONTROLSEX
INITDIALOG
initguid
INITGUID
INITMENU
inkscape
INLINEPREFIX
inproc
Inputkeyinfo
inputpaneinterop
Inputreadhandledata
INPUTSCOPE
INSERTMODE
INTERACTIVITYBASE
INTERCEPTCOPYPASTE
internalevent
INTERNALNAME
Interner
intsafe
INVALIDARG
INVALIDATERECT
@@ -883,8 +834,6 @@ itermcolors
itf
Ith
IUI
IUnknown
ivalid
IWIC
IXP
jconcpp
@@ -908,7 +857,6 @@ keydowns
KEYFIRST
KEYLAST
Keymapping
keyscan
keystate
keyups
Kickstart
@@ -918,10 +866,6 @@ kinda
KIYEOK
KLF
KLMNO
KLMNOPQRST
KLMNOPQRSTQQQQQ
KLMNOPQRSTUVWXY
KLMNOPQRSTY
KOK
KPRIORITY
KVM
@@ -943,6 +887,8 @@ LCONTROL
LCTRL
lcx
LEFTALIGN
libsancov
libtickit
LIMITTEXT
LINEDOWN
LINESELECTION
@@ -961,6 +907,7 @@ LNM
LOADONCALL
LOBYTE
localappdata
LOCATIONCHANGE
locsrc
Loewen
LOGBRUSH
@@ -1012,8 +959,8 @@ lsb
lsconfig
lstatus
lstrcmp
lstrcmpi
LTEXT
lto
ltsc
LUID
luma
@@ -1047,6 +994,7 @@ MBUTTONDOWN
MBUTTONUP
mdmerge
MDs
mdtauk
MEASUREITEM
megamix
memallocator
@@ -1056,7 +1004,6 @@ MENUCONTROL
MENUDROPALIGNMENT
MENUITEMINFO
MENUSELECT
messageext
metaproj
Mgrs
microsoftpublicsymbols
@@ -1073,11 +1020,9 @@ minwindef
MMBB
mmcc
MMCPL
mmsystem
MNC
MNOPQ
MNOPQR
MNOPQRSTUVWXY
MODALFRAME
MODERNCORE
MONITORINFO
@@ -1087,9 +1032,9 @@ MOUSEACTIVATE
MOUSEFIRST
MOUSEHWHEEL
MOVESTART
msaa
msb
msbuildcache
msctf
msctls
msdata
MSDL
@@ -1104,10 +1049,9 @@ MSGSELECTMODE
msiexec
MSIL
msix
msrc
MSRC
MSVCRTD
MTSM
Munged
murmurhash
muxes
myapplet
@@ -1146,7 +1090,6 @@ Newtonsoft
NEXTLINE
nfe
NLSMODE
nnn
NOACTIVATE
NOAPPLYNOW
NOCLIP
@@ -1179,7 +1122,6 @@ NOREPOSITION
NORMALDISPLAY
NOSCRATCH
NOSEARCH
noselect
NOSELECTION
NOSENDCHANGING
NOSIZE
@@ -1199,40 +1141,31 @@ NPFS
nrcs
NSTATUS
ntapi
ntcon
ntcsrdll
ntdef
NTDEV
ntdll
ntifs
ntlpcapi
ntm
ntrtl
ntstatus
nttree
nturtl
ntuser
NTVDM
ntverp
nugetversions
NUKTA
nullness
nullonfailure
nullopts
numlock
NUMSCROLL
NUnit
nupkg
NVIDIA
NVT
OACR
objbase
ocolor
oemcp
OEMFONT
OEMFORMAT
OEMs
offboarded
OLEAUT
OLECHAR
onebranch
@@ -1281,7 +1214,6 @@ PALPC
pankaj
parentable
PATCOPY
pathcch
PATTERNID
pbstr
pcb
@@ -1336,7 +1268,6 @@ phicon
phwnd
pidl
PIDLIST
pids
pii
piml
pimpl
@@ -1361,11 +1292,9 @@ POINTERUPDATE
POINTSLIST
policheck
POLYTEXTW
poppack
POPUPATTR
popups
PORFLG
positionals
POSTCHARBREAKS
POSX
POSXSCROLL
@@ -1398,11 +1327,9 @@ PREVLINE
prg
pri
prioritization
processenv
processhost
PROCESSINFOCLASS
PRODEXT
Productize
PROPERTYID
PROPERTYKEY
propertyval
@@ -1414,15 +1341,12 @@ propsys
PROPTITLE
propvar
propvariant
propvarutil
psa
PSECURITY
pseudoconsole
pseudoterminal
psh
pshn
PSHNOTIFY
pshpack
PSINGLE
psl
psldl
@@ -1494,8 +1418,6 @@ REGISTERVDM
regkey
REGSTR
RELBINPATH
remoting
renamer
rendersize
reparented
reparenting
@@ -1530,19 +1452,16 @@ RIGHTALIGN
RIGHTBUTTON
riid
ris
roadmap
robomac
rodata
rosetta
RRF
rrr
RRRGGGBB
rsas
rtcore
RTEXT
RTLREADING
Rtn
ruleset
runas
RUNDLL
runformat
@@ -1560,7 +1479,6 @@ rvpa
RWIN
rxvt
safemath
sancov
sba
SBCS
SBCSDBCS
@@ -1588,10 +1506,8 @@ SCROLLSCREENBUFFER
scursor
sddl
SDKDDK
securityappcontainer
segfault
SELCHANGE
SELECTALL
SELECTEDFONT
SELECTSTRING
Selfhosters
@@ -1635,14 +1551,10 @@ SFUI
sgr
SHCo
shcore
shellapi
shellex
shellscalingapi
SHFILEINFO
SHGFI
SHIFTJIS
shlguid
shlobj
shlwapi
SHORTPATH
SHOWCURSOR
@@ -1671,15 +1583,16 @@ SLGP
SLIST
slmult
sln
slnx
slpit
SManifest
SMARTQUOTE
SMTO
snapcx
snapcy
snk
SOLIDBOX
Solutiondir
somefile
sourced
SRCAND
SRCCODEPAGE
@@ -1711,9 +1624,8 @@ STDEXT
STDMETHODCALLTYPE
STDMETHODIMP
STGM
Stringable
STRINGTABLE
strsafe
STRSAFE
STUBHEAD
STUVWX
stylecop
@@ -1739,32 +1651,27 @@ SYSLIB
SYSLINK
SYSMENU
sysparams
sysparamsext
SYSTEMHAND
SYSTEMMENU
SYSTEMTIME
tabview
TAdd
taef
TARG
targetentrypoint
TARGETLIBS
TARGETNAME
targetver
TBase
tbc
tbi
Tbl
TBM
tchar
TCHAR
TCHFORMAT
TCI
tcommands
tdbuild
Tdd
TDelegated
TDP
tearoff
Teb
Techo
tellp
@@ -1774,7 +1681,6 @@ terminalinput
terminalrenderdata
TERMINALSCROLLING
terminfo
TEs
testcon
testd
testenvs
@@ -1786,7 +1692,6 @@ TESTNULL
testpass
testpasses
TEXCOORD
TExpected
textattribute
TEXTATTRIBUTEID
textboxes
@@ -1797,39 +1702,29 @@ TEXTMETRIC
TEXTMETRICW
textmode
texttests
TFunction
THUMBPOSITION
THUMBTRACK
tickit
TIcon
tilunittests
titlebars
TITLEISLINKNAME
TJson
TLambda
TLDP
TLEN
Tlgg
TMAE
TMPF
TMult
tmultiple
TODOs
tofrom
tokenhelpers
toolbars
TOOLINFO
TOOLWINDOW
TOPDOWNDIB
TOpt
tosign
touchpad
tracelogging
traceviewpp
trackbar
trackpad
transitioning
Trd
TREX
triaged
triaging
TRIMZEROHEADINGS
@@ -1837,9 +1732,7 @@ trx
tsa
tsgr
tsm
TStr
TSTRFORMAT
TSub
TTBITMAP
TTFONT
TTFONTLIST
@@ -1848,7 +1741,6 @@ TTo
tvpp
tvtseq
TYUI
UAC
uap
uapadmin
UAX
@@ -1868,6 +1760,7 @@ UINTs
uld
uldash
uldb
ULONGLONG
ulwave
Unadvise
unattend
@@ -1884,7 +1777,6 @@ unk
unknwn
UNORM
unparseable
Unregistering
untextured
UPDATEDISPLAY
UPDOWN
@@ -1902,7 +1794,6 @@ USEFILLATTRIBUTE
USEGLYPHCHARS
USEHICON
USEPOSITION
USERDATA
userdpiapi
Userp
userprivapi
@@ -1915,7 +1806,6 @@ USRDLL
utext
utr
UVWXY
UVWXYZ
uwa
uwp
uwu
@@ -1924,17 +1814,16 @@ Vanara
vararg
vclib
vcxitems
vectorize
VERCTRL
VERTBAR
VFT
vga
vgaoem
viewkind
viewports
VIRAMA
Virt
VIRTTERM
visualstudiosdk
vkey
VKKEYSCAN
VMs
@@ -1993,7 +1882,6 @@ wekyb
wewoad
wex
wextest
wextestclass
WFill
wfopen
WHelper
@@ -2004,9 +1892,7 @@ Wiggum
wil
WImpl
WINAPI
winbase
winbasep
wincodec
wincon
winconp
winconpty
@@ -2021,10 +1907,8 @@ windll
WINDOWALPHA
windowdpiapi
WINDOWEDGE
windowext
WINDOWINFO
windowio
windowmetrics
WINDOWPLACEMENT
windowpos
WINDOWPOSCHANGED
@@ -2032,20 +1916,15 @@ WINDOWPOSCHANGING
windowproc
windowrect
windowsapp
windowsinternalstring
WINDOWSIZE
windowsshell
windowsterminal
windowsx
windowtheme
winevent
wingdi
winget
wingetcreate
WINIDE
winioctl
winmd
winmeta
winmgr
winmm
WINMSAPP
@@ -2055,8 +1934,8 @@ WInplace
winres
winrt
winternl
winui
winuser
winuserp
WINVER
wistd
wmain
@@ -2094,9 +1973,9 @@ WRITECONSOLEOUTPUT
WRITECONSOLEOUTPUTSTRING
wrkstr
wrl
WRL
wrp
WRunoff
wsl
WSLENV
wstr
wstrings
@@ -2109,7 +1988,7 @@ wtof
WTs
WTSOFTFONT
wtw
wtypes
Wtypes
WUX
WVerify
WWith
@@ -2128,7 +2007,6 @@ XBUTTONDOWN
XBUTTONUP
XCast
XCENTER
xchar
xcopy
XCount
xdy
@@ -2138,6 +2016,7 @@ XFG
XFile
XFORM
XIn
xkcd
XManifest
XMath
XNamespace
@@ -2164,7 +2043,6 @@ YLimit
YPan
YSubstantial
YVIRTUALSCREEN
Zab
zabcd
Zabcdefghijklmn
Zabcdefghijklmnopqrstuvwxyz
@@ -2173,4 +2051,3 @@ ZCtrl
ZWJs
ZYXWVU
ZYXWVUTd
zzf

View File

@@ -8,6 +8,24 @@
# you might not want to check in code where you skip all the other tests.
#\bfit\(
# English does not use a hyphen between adverbs and nouns
# https://twitter.com/nyttypos/status/1894815686192685239
(?:^|\s)[A-Z]?[a-z]+ly-(?=[a-z]{3,})(?:[.,?!]?\s|$)
# Don't use `requires that` + `to be`
# https://twitter.com/nyttypos/status/1894816551435641027
\brequires that \w+\b[^.]+to be\b
# A fully parenthetical sentences period goes inside the parentheses, not outside.
# https://twitter.com/nyttypos/status/1898844061873639490
\([A-Z][a-z]{2,}(?: [a-z]+){3,}\)\.\s
# Complete sentences shouldn't be in the middle of another sentence as a parenthetical.
(?<!\.)(?<!\betc)\.\),
# Complete sentences in parentheticals should not have a space before the period.
\s\.\)(?!.*\}\})
# Should be `HH:MM:SS`
\bHH:SS:MM\b
@@ -24,18 +42,52 @@
# Should be `a priori` or `and prior`
(?i)(?<!posteriori)\sand priori\s
# Should be `a`
\san (?=(?:[b-df-gj-np-rtv-xz]|h(?!our|sl|tml|ttp)|s(?!sh|vg))[a-z])
# Should only be one of `a`, `an`, or `the`
\b(?:(?:an?|the)\s+){2,}\b
# Should only be `are` or `can`, not both
\b(?:(?:are|can)\s+){2,}\b
# Should probably be `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
(?i)(?!ABCDEFGHIJKLMNOPQRSTUVWXYZ)ABC[A-Z]{21}YZ
# Should be `an`
(?<!\b[Ii] )\bam\b
# Should be `anymore`
\bany more[,.]
# Should be `Ask`
(?:^|[.?]\s+)As\s+[A-Z][a-z]{2,}\s[^.?]*?(?:how|if|wh\w+)\b
# Should be `at one fell swoop`
# and only when talking about killing, not some other completion
# Act 4 Scene 3, Macbeth
# https://www.opensourceshakespeare.org/views/plays/play_view.php?WorkID=macbeth&Act=4&Scene=3&Scope=scene
\bin one fell s[lw]?oop\b
# Should be `'`
(?i)\b(?:(?:i|s?he|they|what|who|you)"ll|(?:are|ca|did|do|does|ha[ds]|have|is|should|were|wo|would)n"t|(?:s?he|let|that|there|what|where|who)"s|(?:i|they|we|what|who|you)"ve)\b
(?i)\b(?:(?:i|s?he|they|what|who|you)[`"]ll|(?:are|ca|did|do|does|ha[ds]|have|is|should|were|wo|would)n[`"]t|(?:s?he|let|that|there|what|where|who)[`"]s|(?:i|they|we|what|who|you)[`"]ve)\b
# Should be `background` / `intro text` / `introduction` / `prologue` unless it's a brand or relates to _subterfuge_
(?i)\bpretext\b
# Should be `bearer`
\b(?<=the )burden(?= of bad news\b)
# Should be `branches`
# ... unless it's really about the meal that replaces breakfast and lunch.
\b[Bb]runches\b
# Should be `briefcase`
\bbrief-case\b
# Should be `by far` or `far and away`
\bby far and away\b
# Should be `can, not only ..., ... also...`
\bcan not only.*can also\b
@@ -46,7 +98,10 @@
# > In formal writing and where contractions are frowned upon, use `cannot`.
# > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.`
# - if you encounter such a case, add a pattern for that case to patterns.txt.
\b[Cc]an not\b
\b[Cc]an not\b(?! only\b)
# Should be `chart`
(?i)\bhelm\b.*\bchard\b
# Do not use `(click) here` links
# For more information, see:
@@ -56,9 +111,27 @@
# * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
# Including "image of" or "picture of" in alt text is unnecessary.
\balt=['"](?:an? |)(?:image|picture) of
# Alt text should be short
\balt=(?:'[^']{126,}'|"[^"]{126,}")
# Should be `equals` to `is equal to`
\bequals to\b
# Should be `ECMA` 262 (JavaScript)
(?i)\bTS\/EMCA\b|\bEMCA(?: \d|\s*Script)|\bEMCA\b(?=.*\bTS\b)
# Should be `ECMA` 340 (Near Field Communications)
(?i)EMCA[- ]340
# Should be `fall back`
(?<!\ba )(?<!\bthe )\bfallback(?= to(?! ask))\b
# Should be `for`, `for, to` or `to`
\b(?:for to|to for)\b
# Should be `GitHub`
(?<![&*.]|// |\b(?:from|import|type) )\bGithub\b(?![{()])
@@ -84,11 +157,14 @@
# Should be `RabbitMQ`
\bRabbitmq\b
# Should be `TensorFlow`
\bTensorflow\b
# Should be `TypeScript`
\bTypescript\b
# Should be `another`
\ban[- ]other\b
\ban[- ]other(?!-)\b
# Should be `case-(in)sensitive`
\bcase (?:in|)sensitive\b
@@ -108,11 +184,14 @@
# Should be `here-in`, `the`, `them`, `this`, `these` or reworded in some other way
\bthe here(?:\.|,| (?!and|defined))
# Should be `going to bed` or `going to a bad`
\bgoing to bad(?!-)\b
# Should be `greater than`
#\bhigher than\b
# Should be `ID`
#\bId\b
# Should be `ID` (unless it's a flag/property)
#(?<![-\.])\bId\b(?![(])
# Should be `in front of`
\bin from of\b
@@ -125,6 +204,12 @@
# Should be `use`
\sin used by\b
# Should be `in-depth` if used as an adjective (but `in depth` when used as an adverb)
\bin depth\s(?!rather\b)\w{6,}
# Should be `in-flight` or `on the fly` (unless actually talking about airline flights)
\bon[- ]flight\b(?!=\s+(?:(?:\w{2}|)\d+|availability|booking|computer|data|delay|departure|management|performance|radar|reservation|scheduling|software|status|ticket|time|type|.*(?:hotel|taxi)))
# Should be `is obsolete`
\bis obsolescent\b
@@ -132,7 +217,10 @@
\bits[']
# Should be `its`
\bit's(?= own\b)
\bit's(?= (?:child|only purpose|own(?:er|)|parent|sibling)\b)
# Should be `for its` (possessive) or `because it is`
\bfor it(?:'s| is)\b
# Should be `log in`
\blogin to the
@@ -140,6 +228,25 @@
# Should be `long-standing`
\blong standing\b
# Should be `lose`
(?<=\bwill )loose\b
# `apt-key` is deprecated
# ... instead you should be writing a pair of files:
# ... * the gpg key added to a distinct key ring file based on your project/distro/key...
# ... * the sources.list in a district file -- not simply appended to `/etc/apt/sources.list` -- (there is a newer format [DEB822](https://manpages.debian.org/bookworm/dpkg-dev/deb822.5.en.html)) that references the gpg key.
# Consider:
# ````sh
# curl http://download.something.example.com/$DISTRO/Release.key | \
# gpg --dearmor --yes --output /usr/share/keyrings/something-distro.gpg
# echo "deb [signed-by=/usr/share/keyrings/something-distro.gpg] http://download.something.example.com/repositories/home:/$DISTRO ./" \
# >> /etc/apt/sources.list.d/something-distro.list
# ````
\bapt-key add\b
# Should be `nearby`
\bnear by\b
# Should probably be a person named `Nick` or the abbreviation `NIC`
\bNic\b
@@ -153,7 +260,7 @@
\bperform it's\b
# Should be `opt-in`
#(?<!\scan|for)(?<!\sif)\sopt in\s
#(?<!\scan|for)(?<!\smust)(?<!\sif)\sopt in\s
# Should be `less than`
\bless then\b
@@ -170,24 +277,77 @@
# Should be `on the other hand`
\b(?i)on another hand\b
# Reword to `on at runtime` or `enabled at launch`
# The former if you mean it can be changed dynamically.
# The latter if you mean that it can be changed without recompiling but not after the program starts.
\bswitched on runtime\b
# Should be `Of course,`
[?.!]\s+Of course\s(?=[-\w\s]+[.?;!,])
# Most people only have two hands. Reword.
\b(?i)on the third hand\b
# Should be `Open Graph`
# unless talking about a specific Open Graph implementation:
# - Java
# - Node
# - Py
# - Ruby
\bOpenGraph\b
# Should be `OpenShift`
\bOpenshift\b
# Should be `otherwise`
\bother[- ]wise\b
# Should be `; otherwise` or `. Otherwise`
# https://study.com/learn/lesson/otherwise-in-a-sentence.html
, [Oo]therwise\b
# Should probably be `Otherwise,`
(?<=\. )Otherwise\s
# Should be `or (more|less)`
\bore (?:more|less)\b
# Should be reworded.
# `passthrough` is an adjective
# `pass-through` could be a noun
# `pass through` would be a verb phrase
\b(?i)passthrough(?= an?\b)
# Should be `rather than`
\brather then\b
# Should be `Red Hat`
\bRed[Hh]at\b
# Should be `regardless, ...` or `regardless of (whether)`
\b[Rr]egardless if you\b
# Should be `self-signed`
\bself signed\b
# Should be `SendGrid`
\bSendgrid\b
# Should be `set up` (`setup` is a noun / `set up` is a verb)
\b[Ss]etup(?= (?:an?|the)\b)
# Should be `state`
\bsate(?=\b|[A-Z])|(?<=[a-z])Sate(?=\b|[A-Z])|(?<=[A-Z]{2})Sate(?=\b|[A-Z])
# Should be `no longer needed`
\bno more needed\b(?! than\b)
# Should be `<see|look> below for the`
(?i)\bfind below the\b
# Should be `then any` unless there's a comparison before the `,`
, than any\b
# Should be `did not exist`
\bwere not existent\b
@@ -197,9 +357,18 @@
# Should be `nonexistent`
\b[Nn]o[nt][- ]existent\b
# Should be `our`
\bspending out time\b
# Should be `@brief` / `@details` / `@param` / `@return` / `@retval`
(?:^\s*|(?:\*|//|/*)\s+`)[\\@](?:breif|(?:detail|detials)|(?:params(?!\.)|prama?)|ret(?:uns?)|retvl)\b
# Should be `more than` or `more, then`
\bmore then\b
# Should be `Pipeline`/`pipeline`
(?:(?<=\b|[A-Z])p|P)ipeLine(?:\b|(?=[A-Z]))
# Should be `preexisting`
[Pp]re[- ]existing
@@ -224,14 +393,27 @@
# Should be `reentrant`
[Rr]e[- ]entrant
# Should be `room for`
\brooms for (?!lease|rent|sale)
# Should be `socioeconomic`
# https://dictionary.cambridge.org/us/dictionary/english/socioeconomic
socio-economic
# Should be `strong suit`
\b(?:my|his|her|their) strong suite\b
# Should probably be `temperatures` unless actually talking about thermal drafts (things birds may fly on)
\bthermals\b
# Should be `there are` or `they are` (or `they're`)
(?i)\btheir are\b
# Should be `understand`
\bunder stand\b
# Should be `URI` or `uri` unless it refers to a person named `Uri`
#(?<!\.)\bUri\b(?![(])
# Should be `URI` or `uri` unless it refers to a person named `Uri` (or a flag)
#(?<![-\.])\bUri\b(?![(])
# Should be `it uses is`
/\bis uses is\b/
@@ -245,12 +427,36 @@
# Should be `where`
\bwere they are\b
# Should be `why`
, way(?= is [^.]*\?)
# should be `vCenter`
\bV[Cc]enter\b
# Should be `VM`
\bVm\b
# Should be `walkthrough(s)`
\bwalk-throughs?\b
# Should be `want`
\bdon't ant\b
# Should be `we'll`
\bwe 'll\b
# Should be `whereas`
\bwhere as\b
# Should be `WinGet`
\bWinget\b
# Should be `without` (unless `out` is a modifier of the next word)
\bwith out\b(?!-)
# Should be `work around`
\b[Ww]orkaround(?= an?\b)
# Should be `workarounds`
#\bwork[- ]arounds\b
@@ -270,12 +476,12 @@
\b(?:coarse|fine) grained\b
# Homoglyph (Cyrillic) should be `A`/`B`/`C`/`E`/`H`/`I`/`I`/`J`/`K`/`M`/`O`/`P`/`S`/`T`/`Y`
# It's possible that your content is intentionally mixing Cyrllic and Latin scripts, but if it isn't, you definitely want to correct this.
# It's possible that your content is intentionally mixing Cyrillic and Latin scripts, but if it isn't, you definitely want to correct this.
(?<=[A-Z]{2})[АВСЕНІӀЈКМОРЅТУ]|[АВСЕНІӀЈКМОРЅТУ](?=[A-Z]+(?:\b|[a-z]+)|[a-z]+(?:[^a-z]|$))
# Homoglyph (Cyrillic) should be `a`/`b`/`e`
# It's possible that your content is intentionally mixing Cyrllic and Latin scripts, but if it isn't, you definitely want to correct this.
[аве](?=[A-Za-z]{2,})|(?<=[A-Za-z]{2})[аве]|(?<=[A-Za-z])[аве](?=[A-Za-z])
# Homoglyph (Cyrillic) should be `a`/`b`/`c`/`e`/`o`/`p`/`x`/`y`
# It's possible that your content is intentionally mixing Cyrillic and Latin scripts, but if it isn't, you definitely want to correct this.
[авсеорху](?=[A-Za-z]{2,})|(?<=[A-Za-z]{2})[авсеорху]|(?<=[A-Za-z])[авсеорху](?=[A-Za-z])
# Should be `neither/nor` -- or reword
#(?!<do )\bnot\b([^.?!"/(](?!neither|,.*?,))+\bnor\b

View File

@@ -1,5 +1,35 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
# Windows accelerators
\b[A-Z][a-z]*&[a-z]+(?!;)\b
# charsets.hpp
\{ L.*\}, // (?:Cyrillic|Greek|Hebrew).*
# Screen buffer tests
\bQQ[A-Z]+\s*[A-Z]*Q+\b
# Unicode references
(?<=\W)(?:U\+?|)[0-9A-F]+b?\b
# Verify
VERIFY_IS_TRUE\(.*\)
# TEST_METHOD(ApiScrollConsoleScreenBufferW)
\bZ[A-Z]+$
# TerminalApiTest
stateMachine\.ProcessString\(L".*"
# bundles
[0-9a-z]+\\?\.msixbundle
# text file names
"[a-z]+\.txt"
# Checksum
L"[0-9A-F]{4}"
# Direct 2D/3D
\b(?:d[23]d(?=[a-z])|D[23]D(?=[A-Z]))
@@ -9,39 +39,127 @@
# Windows Resources with accelerators
\b[A-Z]&[a-z]+\b(?!;)
# bug in check-spelling v0.0.24 (fixed later)
\bok'd\b
# Automatically suggested patterns
# hit-count: 83 file-count: 18
# hit-count: 3904 file-count: 577
# IServiceProvider / isAThing
(?:(?:\b|_|(?<=[a-z]))[IT]|(?:\b|_)(?:nsI|isA))(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b))
# hit-count: 2437 file-count: 826
# #includes
^\s*#include\s*(?:<.*?>|".*?")
# hit-count: 1131 file-count: 326
# C# includes
^\s*using [^;]+;
# hit-count: 128 file-count: 47
# C network byte conversions
(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
# hit-count: 59 file-count: 36
# IServiceProvider / isAThing
(?:\b|_)(?:(?:ns|)I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b))
# hit-count: 53 file-count: 10
# ANSI color codes
(?:\\(?:u00|x)1[Bb]|\\03[1-7]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+)*m
# hit-count: 9 file-count: 6
# hit-count: 45 file-count: 29
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# hit-count: 30 file-count: 19
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hit-count: 17 file-count: 7
# File extensions
\*\.[+\w]+,
# hit-count: 15 file-count: 9
# Markdown anchor links
\(#\S*?[a-zA-Z]\S*?\)
# hit-count: 5 file-count: 5
# libraries
(?:\b|_)lib(?:re(?=office)|)(?!era[lt]|ero|ert(?:ies|y)|rar(?:i(?:an|es)|y))(?=[a-z])
# hit-count: 14 file-count: 8
# hex runs
\b[0-9a-fA-F]{16,}\b
# hit-count: 12 file-count: 8
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|%23|&H)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
# hit-count: 12 file-count: 7
# tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
# hit-count: 9 file-count: 6
# Repeated letters
\b([a-z])\g{-1}{2,}\b
# hit-count: 8 file-count: 2
# regex choice
\(\?:[^)]+\|[^)]+\)
# hit-count: 8 file-count: 1
# latex (check-spelling >= 0.0.22)
\\\w{2,}\{
# hit-count: 7 file-count: 4
# Python string prefix / binary prefix
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
(?<!['"])\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)['"](?=[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
# hit-count: 5 file-count: 3
# Alternatively, if you're using check-spelling v0.0.25+, and you would like to _check_ the Non-English content for spelling errors, you can. For information on how to do so, see:
# https://docs.check-spelling.dev/Feature:-Configurable-word-characters.html#unicode
[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,}
# hit-count: 3 file-count: 3
# File extensions
\*\.[+\w]+,
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
# hit-count: 2 file-count: 2
# Alternative printf
# %s
%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"])
# hit-count: 2 file-count: 1
# kubernetes crd patterns
^\s*pattern: .*$
# hit-count: 1 file-count: 1
# css fonts
\bfont(?:-family|):[^;}]+
# hit-count: 1 file-count: 1
# microsoft
\b(?:https?://|)(?:(?:(?:blogs|download\.visualstudio|docs|msdn2?|research)\.|)microsoft|blogs\.msdn)\.co(?:m|\.\w\w)/[-_a-zA-Z0-9()=./%]*
# hit-count: 1 file-count: 1
# Punycode
\bxn--[-0-9a-z]+
# hit-count: 1 file-count: 1
# sha-... -- uses a fancy capture
(\\?['"]|&quot;)[0-9a-f]{40,}\g{-1}
# hit-count: 1 file-count: 1
# Docker images
^\s*(?i)FROM\s+\S+:\S+(?:\s+AS\s+\S+|)
# hit-count: 1 file-count: 1
# WWNN/WWPN (NAA identifiers)
\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b
# hit-count: 1 file-count: 1
# curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
# hit-count: 1 file-count: 1
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
# bug in check-spelling v0.0.24 (fixed later)
\bok'd\b
https?://\S+
[Pp]ublicKeyToken="?[0-9a-fA-F]{16}"?
(?:[{"]|UniqueIdentifier>)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|</UniqueIdentifier)
@@ -72,24 +190,11 @@ ROY\sG\.\sBIV
# ARM NEON intrinsics like "vsubq_u16"
\bv\w+_[fsu](?:8|16|32|64)\b
# color floating numbers
0x[0-9a-f](?:\.[0-9a-f]*p)[-+]\d+f
# AppX package
_\d[0-9a-z]{12}['\.]
# string test
equals_insensitive_ascii\("\w+", "\w+"
# Automatically suggested patterns
# hit-count: 3788 file-count: 599
# IServiceProvider / isAThing
\b(?:I|isA)(?=(?:[A-Z][a-z]{2,})+\b)
# hit-count: 314 file-count: 21
# hex runs
\b[0-9a-fA-F]{16,}\b
# hit-count: 47 file-count: 11
# special cased printf markers
\\r\\n(?=[a-z])|(?<!\\)\\[nrt](?=[a-z]{2,})(?=.*(?:<.*['"`]|"(?:[;,]|\);)$|\) \+$))
@@ -97,84 +202,6 @@ equals_insensitive_ascii\("\w+", "\w+"
# ConsoleArgumentsTests
--headless\\.*?"
# hit-count: 109 file-count: 62
# Compiler flags (Unix, Java/Scala)
# Use if you have things like `-Pdocker` and want to treat them as `docker`
(?:^|[\t ,>"'`=(])-(?:D(?=[A-Z])|W(?!ork)|X|f(?=[ms]))(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# hit-count: 60 file-count: 35
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# hit-count: 2 file-count: 2
# This does not cover multiline strings, if your repository has them,
# you'll want to remove the `(?=.*?")` suffix.
# The `(?=.*?")` suffix should limit the false positives rate
# printf
%(?:s)(?!ize)(?=[a-z]{2,})
# hit-count: 16 file-count: 10
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hit-count: 13 file-count: 4
# Non-English
[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,}
# hit-count: 7 file-count: 5
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
# hit-count: 7 file-count: 1
# regex choice
\(\?:[^)]+\|[^)]+\)
# hit-count: 4 file-count: 4
# tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
# hit-count: 4 file-count: 1
# ANSI color codes
(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m
# hit-count: 4 file-count: 1
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
## You could manually change `(?i)X...` to use `[Xx]...`
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
# Lorem
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
# hit-count: 3 file-count: 3
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# hit-count: 2 file-count: 1
# Python string prefix / binary prefix
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?=[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
# hit-count: 1 file-count: 1
# Punycode
\bxn--[-0-9a-z]+
# hit-count: 1 file-count: 1
# latex (check-spelling >= 0.0.22)
\\\w{2,}\{
# hit-count: 1 file-count: 1
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
# Questionably acceptable forms of `in to`
# Personally, I prefer `log into`, but people object
# https://www.tprteaching.com/log-into-log-in-to-login/
\b(?:[Ll]og|[Ss]ign) in to\b
# to opt in
\bto opt in\b
# Questionably acceptable forms of `in to`
# Personally, I prefer `log into`, but people object
@@ -183,6 +210,10 @@ mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# to opt in
\bto opt in\b
# pass(ed|ing) in
\bpass(?:ed|ing) in\b
# acceptable duplicates
# ls directory listings
[-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+

View File

@@ -1,10 +1,19 @@
^attache$
^attacher$
^attachers$
^bellow$
^bellow?$
benefitting
occurences?
^dependan.*
^develope$
^developement$
^developpe
^Devers?$
^devex
^devide
^Devinn?[ae]
^devisal
^devisor
^diables?$
^oer$
Sorce
@@ -12,4 +21,5 @@ Sorce
^Teh$
^untill$
^untilling$
^venders?$
^wether.*

View File

@@ -8,7 +8,7 @@ where:
configuration:
resourceManagementConfiguration:
scheduledSearches:
- description:
- description: '"Needs-Author-Feedback" and "No-Recent-Activity" issues are closed after 3 days of inactivity'
frequencies:
- hourly:
hour: 3
@@ -23,7 +23,7 @@ configuration:
days: 3
actions:
- closeIssue
- description:
- description: '"Needs-Author-Feedback" issues are labelled "No-Recent-Activity" after 4 days of inactivity'
frequencies:
- hourly:
hour: 3
@@ -41,7 +41,7 @@ configuration:
label: No-Recent-Activity
- addReply:
reply: This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **4 days**. It will be closed if no further activity occurs **within 3 days of this comment**.
- description:
- description: '"Resolution-Duplicate" issues are closed after 1 day of inactivity'
frequencies:
- hourly:
hour: 3
@@ -56,7 +56,7 @@ configuration:
- addReply:
reply: This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes.
- closeIssue
- description:
- description: '"Needs-Author-Feedback" and "No-Recent-Activity" PRs are closed after 7 days of inactivity'
frequencies:
- hourly:
hour: 3
@@ -71,7 +71,7 @@ configuration:
days: 7
actions:
- closeIssue
- description:
- description: Add "No-Recent-Activity" label to PRs with "Needs-Author-Feedback" label after 7 days of inactivity
frequencies:
- hourly:
hour: 3
@@ -90,7 +90,8 @@ configuration:
- addReply:
reply: This pull request has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **7 days**. It will be closed if no further activity occurs **within 7 days of this comment**.
eventResponderTasks:
- if:
- description: Add "Needs-Triage" to new issues
if:
- payloadType: Issues
- or:
- and:
@@ -102,8 +103,8 @@ configuration:
then:
- addLabel:
label: Needs-Triage
description:
- if:
- description: Replace "Needs-Author-Feedback" with "Needs-Attention" when author comments
if:
- payloadType: Issue_Comment
- isAction:
action: Created
@@ -116,8 +117,8 @@ configuration:
label: Needs-Attention
- removeLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Remove "No-Recent-Activity" when closing an issue
if:
- payloadType: Issues
- not:
isAction:
@@ -127,16 +128,16 @@ configuration:
then:
- removeLabel:
label: No-Recent-Activity
description:
- if:
- description: Remove "No-Recent-Activity" when someone comments on an issue
if:
- payloadType: Issue_Comment
- hasLabel:
label: No-Recent-Activity
then:
- removeLabel:
label: No-Recent-Activity
description:
- if:
- description: Add "Needs-Author-Feedback" when changes are requested on a PR
if:
- payloadType: Pull_Request_Review
- isAction:
action: Submitted
@@ -145,8 +146,8 @@ configuration:
then:
- addLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Remove "Needs-Author-Feedback" when author performs activity on their PR
if:
- payloadType: Pull_Request
- isActivitySender:
issueAuthor: True
@@ -158,8 +159,8 @@ configuration:
then:
- removeLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Remove "Needs-Author-Feedback" when author comments on their issue
if:
- payloadType: Issue_Comment
- isActivitySender:
issueAuthor: True
@@ -168,8 +169,8 @@ configuration:
then:
- removeLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Remove "Needs-Author-Feedback" when the author reviews the PR
if:
- payloadType: Pull_Request_Review
- isActivitySender:
issueAuthor: True
@@ -178,8 +179,8 @@ configuration:
then:
- removeLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Remove "No-Recent-Activity"" when activity occurs on the PR (aside from closing it)
if:
- payloadType: Pull_Request
- not:
isAction:
@@ -189,39 +190,39 @@ configuration:
then:
- removeLabel:
label: No-Recent-Activity
description:
- if:
- description: Remove "No-Recent-Activity" when someone comments on the PR
if:
- payloadType: Issue_Comment
- hasLabel:
label: No-Recent-Activity
then:
- removeLabel:
label: No-Recent-Activity
description:
- if:
- description: Remove "No-Recent-Activity" when someone reviews the PR
if:
- payloadType: Pull_Request_Review
- hasLabel:
label: No-Recent-Activity
then:
- removeLabel:
label: No-Recent-Activity
description:
- if:
- description: Enable auto-merge on PRs with the "AutoMerge" label
if:
- payloadType: Pull_Request
- hasLabel:
label: AutoMerge
then:
- enableAutoMerge:
mergeMethod: Squash
description:
- if:
- description: Disable auto-merge on PRs when the "AutoMerge" label is removed
if:
- payloadType: Pull_Request
- labelRemoved:
label: AutoMerge
then:
- disableAutoMerge
description:
- if:
- description: Add "Needs-Tag-Fix" label to issues without an Area, Issue, or Product label
if:
- payloadType: Issues
- or:
- and:
@@ -238,15 +239,45 @@ configuration:
- not:
hasLabel:
label: Area-Accessibility
- not:
hasLabel:
label: Area-AtlasEngine
- not:
hasLabel:
label: Area-AzureShell
- not:
hasLabel:
label: Area-Build
- not:
hasLabel:
label: Area-Chat
- not:
hasLabel:
label: Area-CmdPal
- not:
hasLabel:
label: Area-CodeHealth
- not:
hasLabel:
label: Area-Commandline
- not:
hasLabel:
label: Area-CookedRead
- not:
hasLabel:
label: Area-DefApp
- not:
hasLabel:
label: Area-Extensibility
- not:
hasLabel:
label: Area-Fonts
- not:
hasLabel:
label: Area-GroupPolicy
- not:
hasLabel:
label: Area-i18n
- not:
hasLabel:
label: Area-Input
@@ -256,21 +287,45 @@ configuration:
- not:
hasLabel:
label: Area-Interop
- not:
hasLabel:
label: Area-Localization
- not:
hasLabel:
label: Area-Output
- not:
hasLabel:
label: Area-Performance
- not:
hasLabel:
label: Area-Portable
- not:
hasLabel:
label: Area-Quality
- not:
hasLabel:
label: Area-Remoting
- not:
hasLabel:
label: Area-Rendering
- not:
hasLabel:
label: Area-Schema
- not:
hasLabel:
label: Area-Server
- not:
hasLabel:
label: Area-Settings
- not:
hasLabel:
label: Area-SettingsUI
- not:
hasLabel:
label: Area-ShellExtension
- not:
hasLabel:
label: Area-Suggestions
- not:
hasLabel:
label: Area-TerminalConnection
@@ -279,49 +334,19 @@ configuration:
label: Area-TerminalControl
- not:
hasLabel:
label: Area-User Interface
label: Area-Theming
- not:
hasLabel:
label: Area-UserInterface
- not:
hasLabel:
label: Area-VT
- not:
hasLabel:
label: Area-CodeHealth
- not:
hasLabel:
label: Area-Quality
- not:
hasLabel:
label: Area-AzureShell
- not:
hasLabel:
label: Area-Schema
- not:
hasLabel:
label: Area-Commandline
- not:
hasLabel:
label: Area-ShellExtension
- not:
hasLabel:
label: Area-WPFControl
- not:
hasLabel:
label: Area-Settings UI
- not:
hasLabel:
label: Area-DefApp
- not:
hasLabel:
label: Area-Remoting
- not:
hasLabel:
label: Area-Windowing
- not:
hasLabel:
label: Area-Theming
- not:
hasLabel:
label: Area-Localization
label: Area-WPFControl
- and:
- not:
hasLabel:
@@ -408,8 +433,8 @@ configuration:
then:
- addLabel:
label: Needs-Tag-Fix
description:
- if:
- description: Remove "Needs-Tag-Fix" label when an issue is tagged with an Area, Issue, and Product label
if:
- payloadType: Issues
- and:
- isLabeled
@@ -417,66 +442,117 @@ configuration:
label: Needs-Tag-Fix
- and:
- or:
- hasLabel:
label: Area-Accessibility
- hasLabel:
label: Area-Build
- hasLabel:
label: Area-Extensibility
- hasLabel:
label: Area-Fonts
- hasLabel:
label: Area-Input
- hasLabel:
label: Area-Interaction
- hasLabel:
label: Area-Interop
- hasLabel:
label: Area-Output
- hasLabel:
label: Area-Performance
- hasLabel:
label: Area-Rendering
- hasLabel:
label: Area-Server
- hasLabel:
label: Area-Settings
- hasLabel:
label: Area-TerminalConnection
- hasLabel:
label: Area-TerminalControl
- hasLabel:
label: Area-User Interface
- hasLabel:
label: Area-VT
- hasLabel:
label: Area-CodeHealth
- hasLabel:
label: Area-Quality
- hasLabel:
label: Area-Schema
- hasLabel:
label: Area-AzureShell
- hasLabel:
label: Area-Commandline
- hasLabel:
label: Area-ShellExtension
- hasLabel:
label: Area-WPFControl
- hasLabel:
label: Area-Settings UI
- hasLabel:
label: Area-DefApp
- hasLabel:
label: Area-Localization
- hasLabel:
label: Area-Windowing
- hasLabel:
label: Area-Theming
- hasLabel:
label: Area-AtlasEngine
- hasLabel:
label: Area-CmdPal
- not:
hasLabel:
label: Area-Accessibility
- not:
hasLabel:
label: Area-AtlasEngine
- not:
hasLabel:
label: Area-AzureShell
- not:
hasLabel:
label: Area-Build
- not:
hasLabel:
label: Area-Chat
- not:
hasLabel:
label: Area-CmdPal
- not:
hasLabel:
label: Area-CodeHealth
- not:
hasLabel:
label: Area-Commandline
- not:
hasLabel:
label: Area-CookedRead
- not:
hasLabel:
label: Area-DefApp
- not:
hasLabel:
label: Area-Extensibility
- not:
hasLabel:
label: Area-Fonts
- not:
hasLabel:
label: Area-GroupPolicy
- not:
hasLabel:
label: Area-i18n
- not:
hasLabel:
label: Area-Input
- not:
hasLabel:
label: Area-Interaction
- not:
hasLabel:
label: Area-Interop
- not:
hasLabel:
label: Area-Localization
- not:
hasLabel:
label: Area-Output
- not:
hasLabel:
label: Area-Performance
- not:
hasLabel:
label: Area-Portable
- not:
hasLabel:
label: Area-Quality
- not:
hasLabel:
label: Area-Remoting
- not:
hasLabel:
label: Area-Rendering
- not:
hasLabel:
label: Area-Schema
- not:
hasLabel:
label: Area-Server
- not:
hasLabel:
label: Area-Settings
- not:
hasLabel:
label: Area-SettingsUI
- not:
hasLabel:
label: Area-ShellExtension
- not:
hasLabel:
label: Area-Suggestions
- not:
hasLabel:
label: Area-TerminalConnection
- not:
hasLabel:
label: Area-TerminalControl
- not:
hasLabel:
label: Area-Theming
- not:
hasLabel:
label: Area-UserInterface
- not:
hasLabel:
label: Area-VT
- not:
hasLabel:
label: Area-Windowing
- not:
hasLabel:
label: Area-WPFControl
- or:
- hasLabel:
label: Issue-Bug
@@ -533,14 +609,14 @@ configuration:
then:
- removeLabel:
label: Needs-Tag-Fix
description:
- if:
- description: Add "In-PR" label to issues that are referenced in a PR
if:
- payloadType: Pull_Request
then:
- inPrLabel:
label: In-PR
description:
- if:
- description: Remove "Needs-Tag-Fix" label when an issue also has the "Resolution-Duplicate" label
if:
- payloadType: Issues
- hasLabel:
label: Needs-Tag-Fix
@@ -549,8 +625,8 @@ configuration:
then:
- removeLabel:
label: Needs-Tag-Fix
description:
- if:
- description: Close issues that are opened and have the template title
if:
- payloadType: Issues
- or:
- titleContains:
@@ -576,8 +652,8 @@ configuration:
label: Needs-Author-Feedback
- addReply:
reply: Hi! Thanks for attempting to open an issue. Unfortunately, your title wasn't changed from the original template which makes it very hard for us to track and triage. You are welcome to fix up the title and try again with a new issue.
description:
- if:
- description: Close issues that are opened and have no body
if:
- payloadType: Issues
- or:
- isAction:
@@ -595,8 +671,8 @@ configuration:
label: Needs-Author-Feedback
- addReply:
reply: "Hi! Thanks for attempting to open an issue. Unfortunately, you didn't write anything in the body which makes it impossible to understand your concern. You are welcome to fix up the issue and try again by opening another issue with the body filled out. "
description:
- if:
- description: Request a review from the team when a PR is labeled "Needs-Second"
if:
- payloadType: Pull_Request
- isLabeled
- hasLabel:
@@ -613,8 +689,8 @@ configuration:
reviewer: dhowett
- requestReview:
reviewer: lhecker
description:
- if:
- description: Remove "Needs-Second" label when a PR is reviewed
if:
- payloadType: Pull_Request_Review
- not: isOpen
- hasLabel:
@@ -622,8 +698,8 @@ configuration:
then:
- removeLabel:
label: Needs-Second
description:
- if:
- description: Remove "Help-Wanted" label from issues that are in a PR
if:
- payloadType: Issues
- hasLabel:
label: In-PR
@@ -633,8 +709,8 @@ configuration:
then:
- removeLabel:
label: Help-Wanted
description:
- if:
- description: Comments with "/dup", "/dupe", or "/duplicate" will close the issue as a duplicate and remove "Needs-" labels
if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/dup(licate|e)?(\s+of)?\s+\#[\d]+'
@@ -662,8 +738,8 @@ configuration:
label: Needs-Repro
- removeLabel:
label: Needs-Second
description:
- if:
- description: Comments with "/feedback" will direct people to Feedback Hub
if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/feedback'
@@ -680,13 +756,13 @@ configuration:
Hi there!<br><br>Can you please send us feedback with the [Feedback Hub](https://support.microsoft.com/en-us/windows/send-feedback-to-microsoft-with-the-feedback-hub-app-f59187f8-8739-22d6-ba93-f66612949332) with this issue? Make sure to click the "Start recording" button, then reproduce the issue before submitting the feedback. Once it's submitted, paste the link here so we can more easily find your crash information on the back end?<br><br>Thanks!<br><br>![image](https://user-images.githubusercontent.com/18356694/140811502-a068f78b-89d2-4587-925a-73e19652b830.png)<br><br>![image](https://user-images.githubusercontent.com/18356694/140811557-cdc22a0f-fa6a-4f6a-953e-73b51f5548a3.png)<br><br>![image](https://user-images.githubusercontent.com/18221333/62478649-6de55400-b760-11e9-806e-5aab7e085a9f.png)
- addLabel:
label: Needs-Author-Feedback
description:
- if:
- description: Comments clean the email reply
if:
- payloadType: Issue_Comment
then:
- cleanEmailReply
description:
- if:
- description: Sync labels when a PR event occurs
if:
- payloadType: Pull_Request
then:
- labelSync:
@@ -701,8 +777,8 @@ configuration:
pattern: Severity-
- labelSync:
pattern: Impact-
description:
- if:
- description: Comments with "/dup", "/dupe", or "/duplicate" targeting another repo will close the issue as a duplicate and remove "Needs-" labels
if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/dup(licate|e)?(\s+of)?\s+https'
@@ -730,8 +806,8 @@ configuration:
label: Needs-Repro
- removeLabel:
label: Needs-Second
description:
- if:
- description: Comments with "/?" will replace the "Needs-Attention" label with "Needs-Author-Feedback"
if:
- payloadType: Issue_Comment
- commentContains:
pattern: /?
@@ -746,6 +822,5 @@ configuration:
label: Needs-Attention
- addLabel:
label: Needs-Author-Feedback
description:
onFailure:
onSuccess:

View File

@@ -93,7 +93,7 @@ jobs:
steps:
- name: check-spelling
id: spelling
uses: check-spelling/check-spelling@v0.0.24
uses: check-spelling/check-spelling@v0.0.25
with:
suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }}
checkout: true
@@ -104,7 +104,7 @@ jobs:
report-timing: 1
warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end
experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }}
use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }}
use_sarif: 1
check_extra_dictionaries: ""
dictionary_source_prefixes: >
{
@@ -114,34 +114,33 @@ jobs:
cspell:software-terms/softwareTerms.txt
cspell:cpp/stdlib-cpp.txt
cspell:cpp/stdlib-c.txt
cspell:lorem-ipsum/dictionary.txt
cspell:python/python/python-lib.txt
cspell:php/php.txt
cspell:node/node.txt
cspell:dart/dart.txt
cspell:filetypes/filetypes.txt
cspell:java/java.txt
cspell:node/node.txt
cspell:golang/go.txt
cspell:java/java-terms.txt
cspell:mnemonics/mnemonics.txt
cspell:css/css.txt
cspell:dotnet/dotnet.txt
cspell:npm/npm.txt
cspell:fullstack/fullstack.txt
cspell:python/python/python-lib.txt
cspell:dotnet/dotnet.txt
cspell:dart/dart.txt
cspell:aws/aws.txt
cspell:python/common/extra.txt
cspell:css/css.txt
cspell:java/java-terms.txt
cspell:r/r.txt
cspell:golang/go.txt
cspell:cpp/stdlib-cmath.txt
cspell:typescript/typescript.txt
cspell:html/html.txt
cspell:cpp/compiler-msvc.txt
cspell:django/django.txt
cspell:html/html.txt
cspell:cpp/lang-keywords.txt
cspell:aws/aws.txt
cspell:python/common/extra.txt
cspell:cpp/ecosystem.txt
cspell:r/r.txt
cspell:cpp/compiler-clang-attributes.txt
cspell:powershell/powershell.txt
cspell:cpp/lang-keywords.txt
cspell:csharp/csharp.txt
cspell:cpp/compiler-clang-attributes.txt
cspell:python/python/python.txt
cspell:mnemonics/mnemonics.txt
cspell:powershell/powershell.txt
comment-push:
name: Report (Push)
@@ -154,7 +153,7 @@ jobs:
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps:
- name: comment
uses: check-spelling/check-spelling@v0.0.24
uses: check-spelling/check-spelling@v0.0.25
with:
checkout: true
spell_check_this: microsoft/terminal@main
@@ -172,7 +171,7 @@ jobs:
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- name: comment
uses: check-spelling/check-spelling@v0.0.24
uses: check-spelling/check-spelling@v0.0.25
with:
checkout: true
spell_check_this: microsoft/terminal@main
@@ -198,7 +197,7 @@ jobs:
cancel-in-progress: false
steps:
- name: apply spelling updates
uses: check-spelling/check-spelling@v0.0.24
uses: check-spelling/check-spelling@v0.0.25
with:
experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }}
checkout: true

View File

@@ -1,4 +1,4 @@
name: Publish to Winget
name: Publish to WinGet
on:
release:
@@ -6,6 +6,9 @@ on:
env:
REGEX: 'Microsoft\.WindowsTerminal(?:Preview)?_([\d.]+)_8wekyb3d8bbwe\.msixbundle$'
# winget-create will read the following environment variable to access the GitHub token needed for submitting a PR
# See https://aka.ms/winget-create-token
WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.WINGET_TOKEN }}
jobs:
publish:
@@ -21,4 +24,4 @@ jobs:
$wingetPackage = "Microsoft.WindowsTerminal${{ github.event.release.prerelease && '.Preview' || '' }}"
& curl.exe -JLO https://aka.ms/wingetcreate/latest
& .\wingetcreate.exe update $wingetPackage -s -v $version -u $wingetRelevantAsset.browser_download_url -t "${{ secrets.WINGET_TOKEN }}"
& .\wingetcreate.exe update $wingetPackage -s -v $version -u $wingetRelevantAsset.browser_download_url

View File

@@ -17,7 +17,6 @@
"Microsoft.VisualStudio.Component.AppInsights.Tools",
"Microsoft.Net.Component.4.8.TargetingPack",
"Microsoft.VisualStudio.Component.DiagnosticTools",
"Microsoft.NetCore.Component.Runtime.6.0",
"Microsoft.VisualStudio.Component.ClassDesigner",
"Microsoft.VisualStudio.Component.GraphDocument",
"Microsoft.VisualStudio.Component.CodeMap",

View File

@@ -285,6 +285,8 @@ specific language governing permissions and limitations under the License.
**Source**: [https://github.com/commonmark/cmark](https://github.com/commonmark/cmark)
### License
```
Copyright (c) 2014, John MacFarlane
All rights reserved.
@@ -455,6 +457,36 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```
## fzf
### License
```
The MIT License (MIT)
Copyright (c) 2013-2024 Junegunn Choi
Copyright (c) 2021-2025 Simon Hauser
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
```
# Microsoft Open Source

View File

@@ -4,7 +4,7 @@
<clear />
<!-- Dependencies that we can turn on to force override for testing purposes before uploading. -->
<!--<add key="Static Package Dependencies" value="dep\packages" />-->
<add key="TerminalDependencies" value="https://pkgs.dev.azure.com/shine-oss/terminal/_packaging/TerminalDependencies/nuget/v3/index.json" />
<add key="TerminalDependencies" value="https://pkgs.dev.azure.com/shine-oss/terminal/_packaging/TerminalDependencies%40Local/nuget/v3/index.json" />
</packageSources>
<disabledPackageSources>
<clear />

File diff suppressed because it is too large Load Diff

1077
OpenConsole.slnx Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -169,10 +169,10 @@ The Portable ZIP distribution is a portable application. It will not automatical
| Distribution | Architecture | Link |
|---------------|:---------------:|------------------------------------------------------|
| App Installer | x64, arm64, x86 | [download](https://aka.ms/terminal-canary-installer) |
| Portable ZIP | x64 | [download](https://aka.ms/terminal-canary-zip-x64) |
| Portable ZIP | ARM64 | [download](https://aka.ms/terminal-canary-zip-arm64) |
| Portable ZIP | x86 | [download](https://aka.ms/terminal-canary-zip-x86) |
| App Installer | x64, arm64, x86 | [Download](https://aka.ms/terminal-canary-installer) |
| Portable ZIP | x64 | [Download](https://aka.ms/terminal-canary-zip-x64) |
| Portable ZIP | ARM64 | [Download](https://aka.ms/terminal-canary-zip-arm64) |
| Portable ZIP | x86 | [Download](https://aka.ms/terminal-canary-zip-x86) |
_Learn more about the [types of Windows Terminal distributions](https://learn.microsoft.com/windows/terminal/distributions)._
@@ -375,7 +375,7 @@ winget configure .config\configuration.winget
## Building the Code
OpenConsole.sln may be built from within Visual Studio or from the command-line
OpenConsole.slnx may be built from within Visual Studio or from the command-line
using a set of convenience scripts & tools in the **/tools** directory:
### Building in PowerShell

View File

@@ -28,7 +28,7 @@ namespace HelixTestHelpers
public List<string> Screenshots { get; private set; }
public List<TestResult> RerunResults { get; private set; }
}
//
// Azure DevOps doesn't currently provide a way to directly report sub-results for tests that failed at least once
// that were run multiple times. To get around that limitation, we'll mark the test as "Skip" since
@@ -49,46 +49,46 @@ namespace HelixTestHelpers
// TODO (https://github.com/dotnet/arcade/issues/2773): Once we're able to directly report things in a
// more granular fashion than just a binary pass/fail result, we should do that.
//
[DataContract]
[DataContract]
internal class JsonSerializableTestResults
{
{
[DataMember]
internal string blobPrefix;
[DataMember]
internal string blobSuffix;
[DataMember]
internal string[] errors;
[DataMember]
internal JsonSerializableTestResult[] results;
}
[DataContract]
internal class JsonSerializableTestResult
[DataContract]
internal class JsonSerializableTestResult
{
[DataMember]
internal string outcome;
[DataMember]
internal int duration;
[DataMember(EmitDefaultValue = false)]
internal string log;
[DataMember(EmitDefaultValue = false)]
internal string[] screenshots;
[DataMember(EmitDefaultValue = false)]
internal int errorIndex;
}
public class TestPass
{
public TimeSpan TestPassExecutionTime { get; set; }
public List<TestResult> TestResults { get; set; }
public static TestPass ParseTestWttFile(string fileName, bool cleanupFailuresAreRegressions, bool truncateTestNames)
{
using (var stream = File.OpenRead(fileName))
@@ -174,7 +174,7 @@ namespace HelixTestHelpers
if (testsExecuting == 1)
{
string testName = element.Attribute("Title").Value;
if (truncateTestNames)
{
const string xamlNativePrefix = "Windows::UI::Xaml::Tests::";
@@ -243,7 +243,7 @@ namespace HelixTestHelpers
// The test cleanup errors will often come after the test claimed to have
// 'passed'. We treat them as errors as well.
// 'passed'. We treat them as errors as well.
if (inTestCleanup)
{
currentResult.CleanupPassed = false;
@@ -292,7 +292,7 @@ namespace HelixTestHelpers
foreach(var screenshot in screenshots)
{
string fileNameSuffix = string.Empty;
if (fileName.Contains("_rerun_multiple"))
{
fileNameSuffix = "_rerun_multiple";
@@ -301,7 +301,7 @@ namespace HelixTestHelpers
{
fileNameSuffix = "_rerun";
}
currentResult.Screenshots.Add(screenshot.Replace(".jpg", fileNameSuffix + ".jpg"));
}
}
@@ -313,7 +313,7 @@ namespace HelixTestHelpers
testPassStopTime = Int64.Parse(doc.Root.Descendants("WexTraceInfo").Last().Attribute("TimeStamp").Value);
var testPassTime = TimeSpan.FromSeconds((double)(testPassStopTime - testPassStartTime) / frequency);
foreach (TestResult testResult in testResults)
{
if (testResult.Details != null)
@@ -331,13 +331,13 @@ namespace HelixTestHelpers
return testpass;
}
}
public static TestPass ParseTestWttFileWithReruns(string fileName, string singleRerunFileName, string multipleRerunFileName, bool cleanupFailuresAreRegressions, bool truncateTestNames)
{
TestPass testPass = ParseTestWttFile(fileName, cleanupFailuresAreRegressions, truncateTestNames);
TestPass singleRerunTestPass = File.Exists(singleRerunFileName) ? ParseTestWttFile(singleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null;
TestPass multipleRerunTestPass = File.Exists(multipleRerunFileName) ? ParseTestWttFile(multipleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null;
List<TestResult> rerunTestResults = new List<TestResult>();
if (singleRerunTestPass != null)
@@ -377,9 +377,9 @@ namespace HelixTestHelpers
public static void OutputFailedTestQuery(string wttInputPath)
{
var testPass = TestPass.ParseTestWttFile(wttInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false);
List<string> failedTestNames = new List<string>();
foreach (var result in testPass.TestResults)
{
if (!result.Passed)
@@ -387,23 +387,23 @@ namespace HelixTestHelpers
failedTestNames.Add(result.Name);
}
}
if (failedTestNames.Count > 0)
{
string failedTestSelectQuery = "(@Name='";
for (int i = 0; i < failedTestNames.Count; i++)
{
failedTestSelectQuery += failedTestNames[i];
if (i < failedTestNames.Count - 1)
{
failedTestSelectQuery += "' or @Name='";
}
}
failedTestSelectQuery += "')";
Console.WriteLine(failedTestSelectQuery);
}
else
@@ -418,7 +418,7 @@ namespace HelixTestHelpers
private string testNamePrefix;
private string helixResultsContainerUri;
private string helixResultsContainerRsas;
public TestResultParser(string testNamePrefix, string helixResultsContainerUri, string helixResultsContainerRsas)
{
this.testNamePrefix = testNamePrefix;
@@ -430,7 +430,7 @@ namespace HelixTestHelpers
{
Dictionary<string, string> subResultsJsonByMethod = new Dictionary<string, string>();
TestPass testPass = TestPass.ParseTestWttFileWithReruns(wttInputPath, wttSingleRerunInputPath, wttMultipleRerunInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false);
foreach (var result in testPass.TestResults)
{
var methodName = result.Name.Substring(result.Name.LastIndexOf('.') + 1);
@@ -488,7 +488,7 @@ namespace HelixTestHelpers
int resultCount = results.Count;
int passedCount = results.Where(r => r.Passed).Count();
// Since we re-run tests on failure, we'll mark every test that failed at least once as "skipped" rather than "failed".
// If the test failed sufficiently often enough for it to count as a failed test (determined by a property on the
// Azure DevOps job), we'll later mark it as failed during test results processing.
@@ -504,15 +504,15 @@ namespace HelixTestHelpers
assembly.SetAttributeValue("run-date", DateTime.Now.ToString("yyyy-MM-dd"));
// This doesn't need to be completely accurate since it's not exposed anywhere.
// If we need accurate an start time we can probably calculate it from the te.wtl file, but for
// If we need an accurate start time we can probably calculate it from the te.wtl file, but for
// now this is fine.
assembly.SetAttributeValue("run-time", (DateTime.Now - testPass.TestPassExecutionTime).ToString("hh:mm:ss"));
assembly.SetAttributeValue("total", resultCount);
assembly.SetAttributeValue("passed", passedCount);
assembly.SetAttributeValue("failed", failedCount);
assembly.SetAttributeValue("skipped", skippedCount);
assembly.SetAttributeValue("time", (int)testPass.TestPassExecutionTime.TotalSeconds);
assembly.SetAttributeValue("errors", 0);
root.Add(assembly);
@@ -537,9 +537,9 @@ namespace HelixTestHelpers
test.SetAttributeValue("method", methodName);
test.SetAttributeValue("time", result.ExecutionTime.TotalSeconds);
string resultString = string.Empty;
if (result.Passed && !result.Skipped)
{
resultString = "Pass";
@@ -554,7 +554,7 @@ namespace HelixTestHelpers
resultString = "Fail";
}
if (!result.Passed)
{
if (result.Skipped)
@@ -579,36 +579,36 @@ namespace HelixTestHelpers
File.WriteAllText(xunitOutputPath, root.ToString());
}
private JsonSerializableTestResult ConvertToSerializableResult(TestResult rerunResult, string[] uniqueErrors)
{
var serializableResult = new JsonSerializableTestResult();
serializableResult.outcome = rerunResult.Passed ? "Passed" : "Failed";
serializableResult.duration = (int)Math.Round(rerunResult.ExecutionTime.TotalMilliseconds);
if (!rerunResult.Passed)
{
serializableResult.log = Path.GetFileName(rerunResult.SourceWttFile);
if (rerunResult.Screenshots.Any())
{
List<string> screenshots = new List<string>();
foreach (var screenshot in rerunResult.Screenshots)
{
screenshots.Add(Path.GetFileName(screenshot));
}
serializableResult.screenshots = screenshots.ToArray();
}
// To conserve space, we'll log the index of the error to index in a list of unique errors rather than
// jotting down every single error in its entirety. We'll add one to the result so we can avoid
// serializing this property when it has the default value of 0.
serializableResult.errorIndex = Array.IndexOf(uniqueErrors, rerunResult.Details) + 1;
}
return serializableResult;
}
@@ -617,7 +617,7 @@ namespace HelixTestHelpers
var filename = Path.GetFileName(filePath);
return string.Format("{0}/{1}{2}", helixResultsContainerUri, filename, helixResultsContainerRsas);
}
private string GetTestNameSeparator(string testname)
{
var separatorString = ".";

View File

@@ -56,11 +56,11 @@ Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme der Com
<ReleaseNotes>
Version __VERSION_NUMBER__
- Wir haben der Benutzeroberfläche durchschnittliche Einstellungen hinzugefügt, die nur einmal in der JSON-Datei vorhanden waren, einschließlich einer neuen Seite zum Anpassen des Layouts Ihres Menüs "Neue Registerkarte"!
- Wir haben die Fensterverwaltung zurückgesetzt, um die Zuverlässigkeit zu verbessern; Melden Sie alle Fehler, die mit dem alias "wt.exe" auftreten.
- Profile zeigen jetzt ein Symbol an, wenn sie ausgeblendet wurden oder auf programme verweisen, die deinstalliert wurden.
Eine komplett neue Erweiterungsseite, die anzeigt, was in Ihrem Terminal installiert ist
Die Befehlspalette wird jetzt sowohl in Ihrer Muttersprache als auch auf Englisch angezeigt
Neue VT-Features wie synchronisiertes Rendering, neue Farbschemas, Konfiguration für schnelle Mausaktionen wie Zoomen und mehr
Weitere Details finden Sie auf unserer GitHub-Releasesseite.
Weitere Informationen finden Sie auf unserer GitHub-Releaseseite.
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,9 +56,9 @@ This is an open source project and we welcome community participation. To partic
<ReleaseNotes _locID="App_ReleaseNotes">
<!-- _locComment_text="{MaxLength=1500} {Locked=__VERSION_NUMBER__}{Locked=wt.exe} App Release Note" -->Version __VERSION_NUMBER__
- We've added dozens of settings to the UI that once only existed in the JSON file, including a new page for customizing the layout of your New Tab menu!
- We have rearchitected window management to improve reliability; please file any bugs you encounter with the wt.exe alias
- Profiles now show an icon if they've been hidden or refer to programs which were uninstalled.
- A whole new Extensions page that shows what has been installed into your Terminal
- Command Palette now shows up in your native language as well as English
- New VT features such as synchronized rendering, new color schemes, configuration for quick mouse actions like zooming, and more
Please see our GitHub releases page for additional details.
</ReleaseNotes>

View File

@@ -56,11 +56,11 @@ Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Pa
<ReleaseNotes>
Versión __VERSION_NUMBER__
- Hemos agregado decenas de configuraciones a la interfaz de usuario que solo existían una vez en el archivo JSON, incluida una página nueva para personalizar el diseño del menú Nueva pestaña.
- Tenemos administración de ventanas rearchitecdas para mejorar la confiabilidad; envíe los errores que encuentre con el alias de wt.exe.
- Ahora, los perfiles muestran un icono si se han ocultado o hacen referencia a programas que se han desinstalado.
- Página Extensiones completamente nueva que muestra lo que se ha instalado en tu terminal
- La paleta de comandos ahora se muestra en tu idioma nativo, así como en inglés
- Nuevas características de VT, como la representación sincronizada, nuevos esquemas de color, configuración para acciones rápidas del ratón, como el zoom, y más
Consulte nuestra página de versiones de GitHub para obtener más detalles.
Consulta la página de versiones de GitHub para más información.
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -54,13 +54,13 @@ Il sagit dun projet open source et nous vous invitons à participer dans l
</DevStudio>
<ReleaseNotes>
__VERSION_NUMBER__ de version
Version __VERSION_NUMBER__
- Nous avons ajouté des milliers de paramètres à linterface utilisateur qui nexistaient auparavant que dans le fichier JSON, y compris une nouvelle page pour personnaliser la disposition de votre menu Nouvel onglet !
- Nous avons réarchitialiser la gestion des fenêtres pour améliorer la fiabilité ; entrez les bogues rencontrés avec lalias wt.exe
- Les profils affichent désormais une icône sils ont été masqués ou sils font référence à des programmes qui ont été désinstallés.
- Une toute nouvelle page Extensions qui montre ce qui a été installé dans votre terminal
- La palette de commandes saffiche désormais dans votre langue native, ainsi quen anglais
- Nouvelles fonctionnalités VT telles que le rendu synchronisé, de nouveaux schémas de couleurs, la configuration pour des actions rapides de la souris comme le zoom, et plus encore
Pour plus dinformations, consultez notre page des mises en production GitHub.
Veuillez consulter notre page des versions GitHub pour découvrir dautres détails.
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -54,13 +54,13 @@ Si tratta di un progetto open source e la partecipazione della community è molt
</DevStudio>
<ReleaseNotes>
Versione __VERSION_NUMBER__
Versione __VERSION_NUMBER__
- Sono state aggiunte decine di impostazioni all'interfaccia utente che una volta esisteva solo nel file JSON, inclusa una nuova pagina per personalizzare il layout del menu Nuova scheda.
- È stata riattivata la gestione delle finestre per migliorare l'affidabilità; inserire eventuali bug riscontrati con l'alias wt.exe
- I profili ora mostrano un'icona se sono stati nascosti o fanno riferimento ai programmi che sono stati disinstallati.
- Una pagina Estensioni completamente nuova che mostra ciò che è stato installato nel terminale
- Il riquadro comandi ora viene visualizzato nella tua lingua di origine oltre che in inglese
- Nuove funzionalità VT come il rendering sincronizzato, le nuove combinazioni di colori, la configurazione per azioni rapide del mouse come lo zoom e altro ancora
Per altri dettagli, vedere la pagina delle versioni di GitHub.
Per altri dettagli, vedi la pagina delle release di GitHub.
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,11 +56,11 @@
<ReleaseNotes>
バージョン __VERSION_NUMBER__
- [新しいタブ] メニューのレイアウトをカスタマイズするための新しいページを含む、一度だけ JSON ファイルに存在した UI に多数の設定を追加しました。
- 信頼性を向上させるためにウィンドウ管理を再選択しました。wt.exe エイリアスで発生したバグを報告してください
- プロファイルが非表示になっているか、アンインストールされたプログラムを参照している場合にアイコンが表示されるようになりました。
- ターミナルに何がインストールされているかを表示する新しい [拡張機能] ページ
- コマンド パレットがネイティブ言語と英語で表示されるようになりました
- 同期レンダリング、新しい配色、ズームなどのクイック マウス操作の構成などの、新しい VT 機能
詳細については、GitHub リリース ページを参照してください。
詳細については、GitHub リリース ページをご覧ください。
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,9 +56,9 @@
<ReleaseNotes>
버전 __VERSION_NUMBER__
- 새 탭 메뉴의 레이아웃을 사용자 지정하기 위한 새 페이지를 포함하여 JSON 파일에 한 번만 존재했던 UI에 수천 개의 설정을 추가했습니다.
- 안정성을 개선하기 위해 창 관리를 다시 보관했습니다. wt.exe 별칭에 발생한 버그를 제출하세요.
- 프로필이 숨겨졌거나 제거된 프로그램을 참조하는 경우 이제 프로필에 아이콘이 표시됩니다.
- 터미널에 설치된 항목을 보여 주는 완전히 새로운 확장 페이지
- 명령 팔레트가 이제 영어뿐만 아니라 모국어로도 표시
- 동기화된 렌더링, 새로운 색 구성표, 확대/축소와 같은 빠른 마우스 동작을 위한 구성 등 새로운 VT 기능이 추가
자세한 내용은 GitHub 릴리스 페이지를 참조하세요.
</ReleaseNotes>

View File

@@ -54,13 +54,13 @@ Este é um projeto de código aberto e a participação da comunidade é bem-vin
</DevStudio>
<ReleaseNotes>
Versão __VERSION_NUMBER__
Version __VERSION_NUMBER__
- Adicionamos várias configurações à interface do usuário que só existiam no arquivo JSON, incluindo uma nova página para personalizar o layout do menu Nova Guia!
- Temos o gerenciamento de janelas rearmado para melhorar a confiabilidade; registre todos os bugs encontrados com o wt.exe alias
- Os perfis agora mostram um ícone se eles foram ocultos ou se referem a programas que foram desinstalados.
Uma nova página de Extensões que mostra o que foi instalado no seu Terminal
A Paleta de Comandos agora aparece no seu idioma nativo, além do inglês
Novos recursos da VT, como renderização sincronizada, novos esquemas de cores, configuração para ações rápidas do mouse, como zoom, e muito mais
Consulte nossa página de versões do GitHub para obter detalhes adicionais.
Confira nossa página de lançamentos no GitHub para obter mais detalhes.
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,11 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
- Ą ωћόĺé ņέш ∑×τзńşĩōиŝ ρâģε τђат šнòωş ωħąт нǻś ъеēñ įηšтǻľĺéδ ĭʼnтο ўбμŗ Ţзřmĭňāŀ !!! !!! !!! !!! !!! !!! !!! !!!
- €όммаήδ Рдĺēтţĕ пŏẅ şĥŏшś üρ ϊñ ỳоũѓ йαťïνє ļäŋģµаġέ άś ŵєŀľ åś Σиĝℓĭŝђ !!! !!! !!! !!! !!! !!! !!!
- ∏еẅ VΤ ƒэåŧύґέŝ şűçн ăŝ ѕỳňсĥŗǿйìźėð гēŋďзříⁿğ, ηĕш ćôĺõг şĉћěмєѕ, çóńƒіĝџŗáτїöπ ƒοг qũī¢ķ möűšë ąćŧϊόņŝ ľîķє žøōmίйğ, ǻⁿđ мόřε !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
Ρĺęąŝэ ѕєě õμя ĞĭтΗύв řєĺэдšέŝ рάġě ƒοґ àďđϊтїõлаℓ ðêţǻїłş. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,11 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
- Ą ωћόĺé ņέш ∑×τзńşĩōиŝ ρâģε τђат šнòωş ωħąт нǻś ъеēñ įηšтǻľĺéδ ĭʼnтο ўбμŗ Ţзřmĭňāŀ !!! !!! !!! !!! !!! !!! !!! !!!
- €όммаήδ Рдĺēтţĕ пŏẅ şĥŏшś üρ ϊñ ỳоũѓ йαťïνє ļäŋģµаġέ άś ŵєŀľ åś Σиĝℓĭŝђ !!! !!! !!! !!! !!! !!! !!!
- ∏еẅ VΤ ƒэåŧύґέŝ şűçн ăŝ ѕỳňсĥŗǿйìźėð гēŋďзříⁿğ, ηĕш ćôĺõг şĉћěмєѕ, çóńƒіĝџŗáτїöπ ƒοг qũī¢ķ möűšë ąćŧϊόņŝ ľîķє žøōmίйğ, ǻⁿđ мόřε !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
Ρĺęąŝэ ѕєě õμя ĞĭтΗύв řєĺэдšέŝ рάġě ƒοґ àďđϊтїõлаℓ ðêţǻїłş. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,11 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
- Ą ωћόĺé ņέш ∑×τзńşĩōиŝ ρâģε τђат šнòωş ωħąт нǻś ъеēñ įηšтǻľĺéδ ĭʼnтο ўбμŗ Ţзřmĭňāŀ !!! !!! !!! !!! !!! !!! !!! !!!
- €όммаήδ Рдĺēтţĕ пŏẅ şĥŏшś üρ ϊñ ỳоũѓ йαťïνє ļäŋģµаġέ άś ŵєŀľ åś Σиĝℓĭŝђ !!! !!! !!! !!! !!! !!! !!!
- ∏еẅ VΤ ƒэåŧύґέŝ şűçн ăŝ ѕỳňсĥŗǿйìźėð гēŋďзříⁿğ, ηĕш ćôĺõг şĉћěмєѕ, çóńƒіĝџŗáτїöπ ƒοг qũī¢ķ möűšë ąćŧϊόņŝ ľîķє žøōmίйğ, ǻⁿđ мόřε !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
Ρĺęąŝэ ѕєě õμя ĞĭтΗύв řєĺэдšέŝ рάġě ƒοґ àďđϊтїõлаℓ ðêţǻїłş. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,9 +56,9 @@
<ReleaseNotes>
Версия __VERSION_NUMBER__
- Мы добавили в пользовательский интерфейс десятки параметров, которые существовали только в JSON-файле, включая новую страницу для настройки макета меню "Новая вкладка".
- Для повышения надежности мы переупоряхлили управление окнами; создайте все ошибки, обнаруженные с wt.exe псевдонимом
- Профили теперь показывают значок, если они скрыты или ссылаются на программы, которые были удалены.
Новая страница расширений, на которой отображается информация о том, что было установлено в вашем терминале
Палитра команд теперь доступна на вашем языке, а также на английском
Новые функции VT, например синхронизированная отрисовка, новые цветовые схемы, настройка быстрых действий мыши, таких как масштабирование, и т. д.
Дополнительные сведения см. на странице выпусков GitHub.
</ReleaseNotes>

View File

@@ -54,13 +54,13 @@
</DevStudio>
<ReleaseNotes>
版本 __VERSION_NUMBER__
Version __VERSION_NUMBER__
- 我们向用户界面添加了许多设置,这些设置仅存在于 JSON 文件中,包括用于自定义“新建标签页”菜单布局的新页面!
- 我们已重新检测窗口管理以提高可靠性;请将遇到的任何 bug 归档为 wt.exe 别名
- 如果配置文件已隐藏或引用已卸载的程序,则它们现在将显示一个图标。
- 一个全新的“扩展”页,显示已安装到终端的内容
- 命令面板现在以你的母语和英语显示
- 新的 VT 功能,例如同步渲染、新配色方案、快速鼠标操作(如缩放)的配置等
有关其他详细信息,请参阅 GitHub 发布页面。
有关其他详细信息,请参阅我们的 GitHub 发布页面。
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -54,13 +54,13 @@
</DevStudio>
<ReleaseNotes>
版本 __VERSION_NUMBER__
Version __VERSION_NUMBER__
- 我們已新增數十個只存在於 JSON 檔案中的設定到 UI包括自定義 [新索引標籤] 功能表版面配置的新頁面!
- 我們已重新設定視窗管理,以改善可靠性;請提出您在 wt.exe 別名遇到的任何錯誤
- 設定文件現在會在隱藏或參照已卸載的程式時顯示圖示。
- 全新的延伸模組頁面會顯示已安裝在您終端機中的內容
- 命令選擇區現在以您的母語和英文顯示
- 新的 VT 功能,例如同步轉譯、新的色彩配置、快速滑鼠動作 (例如縮放) 設定等等
如需詳細數據,請參閱我們的 GitHub 版本頁面。
如需更多詳細資料,請參閱我們的 GitHub 發行版本頁面。
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -20,6 +20,7 @@
"DisableAutoPackageNameFormatting": false
},
"appSubmission": {
"appId": "9N8G5RFZ9XK3",
"productId": "00014050269303149694",
"targetPublishMode": "NotSet",
"targetPublishDate": null,

View File

@@ -56,12 +56,9 @@ Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme an der
<ReleaseNotes>
Version __VERSION_NUMBER__
Wir haben umgeschrieben, wie Konsolenanwendungen im Terminal gehostet werden! Melden Sie alle auftretenden Fehler.
Terminal unterstützt jetzt Sixels!
Sie können jetzt einen angedockten Bereich öffnen, der Ausschnitte von Befehlen enthält, die Sie gespeichert haben, um sie später zu verwenden.
Für Benutzer der Eingabeaufforderung der neuesten Version von Windows 11 wird möglicherweise ein QuickInfo-Symbol angezeigt, das installierbare Software von WinGet vorschlägt.
Ausgewählter Text wird jetzt viel sichtbarer (und anpassbarer!).
- Eine Reihe von Zuverlässigkeitsfehlern, Benutzerfreundlichkeitsproblemen und Ärgernissen wurden behoben.
Wir haben der Benutzeroberfläche Dutzende von Einstellungen hinzugefügt, die nur einmal in der JSON-Datei vorhanden waren, einschließlich einer neuen Seite zum Anpassen des Layouts Ihres Menüs „Neue Registerkarte“!
Wir haben die Fensterverwaltung umgestaltet, um die Zuverlässigkeit zu verbessern. Melden Sie alle Fehler, die beim alias „wt.exe“ auftreten
Profile zeigen jetzt ein Symbol an, wenn sie ausgeblendet wurden oder auf Programme verweisen, die deinstalliert wurden.
Weitere Informationen finden Sie auf unserer GitHub-Releaseseite.
</ReleaseNotes>

View File

@@ -54,14 +54,11 @@ This is an open source project and we welcome community participation. To partic
<!-- _locComment_text="{MaxLength=255} App DevStudio" -->
</DevStudio>
<ReleaseNotes _locID="App_ReleaseNotes">
<!-- _locComment_text="{MaxLength=1500} {Locked=__VERSION_NUMBER__} App Release Note" -->Version __VERSION_NUMBER__
<!-- _locComment_text="{MaxLength=1500} {Locked=__VERSION_NUMBER__}{Locked=wt.exe} App Release Note" -->Version __VERSION_NUMBER__
- We've rewritten how console applications are hosted inside Terminal! Please report any bugs you encounter.
- Terminal now supports Sixels!
- You can now open a docked panel containing snippets of commands you have saved to use later
- Command Prompt users on the latest Windows 11 release may see a "quick tip" icon that suggests installable software from WinGet
- Selected text will now be much more visible (and customizable!)
- A number of reliabilty bugs, convenience issues and annoyances have been fixed.
- We've added dozens of settings to the UI that once only existed in the JSON file, including a new page for customizing the layout of your New Tab menu!
- We have rearchitected window management to improve reliability; please file any bugs you encounter with the wt.exe alias
- Profiles now show an icon if they've been hidden or refer to programs which were uninstalled.
Please see our GitHub releases page for additional details.
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@ Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Pa
<ReleaseNotes>
Versión __VERSION_NUMBER__
- Hemos reescrito cómo se hospedan las aplicaciones de consola en Terminal. Informe de los errores que encuentre.
- Terminal ahora admite síxeles.
- Ahora puede abrir un panel acoplado que contenga fragmentos de comandos que haya guardado para usarlos más adelante
- Los usuarios del símbolo del sistema de la versión más reciente de Windows 11 pueden ver un icono de "sugerencia rápida" que sugiere software instalable de WinGet
- El texto seleccionado ahora será mucho más visible (y personalizable)
- Se han corregido varios errores de fiabilidad, problemas de comodidad y molestias.
- Hemos añadido decenas de configuraciones a la interfaz de usuario que antes solo existían en el archivo JSON, incluida una nueva página para personalizar el diseño del menú Nueva pestaña.
- Hemos reestructurado la gestión de ventanas para mejorar la fiabilidad; informe de cualquier error que encuentre con el alias wt.exe
- Ahora, los perfiles muestran un icono si han sido ocultados o hacen referencia a programas que han sido desinstalados.
Consulte la página de versiones de GitHub para más información.
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@ Il sagit dun projet open source et nous encourageons la participation à l
<ReleaseNotes>
Version __VERSION_NUMBER__
Nous avons réécrit la manière dont les applications de console sont hébergées dans Terminal ! Veuillez signaler tout bogue que vous rencontrez.
Terminal prend désormais en charge Sixels !
Vous pouvez maintenant ouvrir un panneau ancré contenant des extraits de commandes que vous avez enregistrées pour les utiliser ultérieurement
Les utilisateurs de linvite de commande sur la dernière version de Windows 11 peuvent voir une icône « astuce rapide » qui suggère un logiciel installable à partir de WinGet
Le texte sélectionné sera désormais beaucoup plus visible (et personnalisable !)
Un certain nombre de bogues de fiabilité, de problèmes de commodité et de désagréments ont été corrigés.
- Nous avons ajouté des dizaines de paramètres à linterface utilisateur qui nexistaient auparavant que dans le fichier JSON, y compris une nouvelle page pour personnaliser la disposition de votre menu Nouvel onglet.
- Nous avons fait une refonte de la gestion des fenêtres pour améliorer la fiabilité. Veuillez signaler les bogues que vous rencontrez avec lalias wt.exe.
- Les profils affichent désormais une icône sils ont été masqués ou sils font référence à des programmes qui ont été désinstallés.
Veuillez consulter notre page des versions GitHub pour découvrir dautres détails.
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@ Si tratta di un progetto open source e la partecipazione della community è molt
<ReleaseNotes>
Versione __VERSION_NUMBER__
- Abbiamo cambiato il modo in cui le applicazioni della console vengono ospitate allinterno di Terminale. Segnala eventuali bug riscontrati.
- Ora Terminale supporta i Sixel.
- Puoi aprire un pannello ancorato contenente frammenti di comandi salvati per usarli in seguito
- Gli utenti che usano il prompt dei comandi nella versione più recente di Windows 11 potrebbero visualizzare unicona di “suggerimento rapido” che consiglia il software installabile da WinGet
- Il testo selezionato sarà ora molto più visibile, oltre che personalizzabile.
- Sono stati risolti diversi bug di affidabilità e problemi di ordine pratico.
- Abbiamo aggiunto decine di impostazioni all'interfaccia utente che in precedenza esistevano solo nel file JSON, inclusa una nuova pagina per personalizzare il layout del menu Nuova scheda.
- Abbiamo riprogettato la gestione delle finestre per migliorarne l'affidabilità; segnala eventuali bug riscontrati con l'alias wt.exe
- I profili ora mostrano un'icona se sono stati nascosti o se fanno riferimento a programmi disinstallati.
Per altri dettagli, vedi la pagina delle release di GitHub.
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@
<ReleaseNotes>
バージョン __VERSION_NUMBER__
- ターミナル内でのコンソール アプリケーションのホスト方法を書き換えました。発生したバグを報告してください
- ターミナルで Sixels がサポートされるようになりました。
- 後で使用するために保存したコマンドのスニペットを含むドッキング パネルを開けるようになりました
- 最新の Windows 11 リリースのコマンド プロンプト ユーザーには、WinGet からインストール可能なソフトウェアを提案する "クイック ヒント" アイコンが表示される場合があります
- 選択したテキストが大幅に見やすくなりました (カスタマイズも可能です)
- 信頼性に関するバグ、利便性の問題、不快な問題の多くが修正されました。
- 新しいタブ メニューのレイアウトをカスタマイズするための新しいページなど、以前は JSON ファイルにしかなかった設定が UI に多数追加されました
- 信頼性を向上させるために、ウィンドウ管理を再設計しました。wt.exe エイリアスで発生したバグを報告してください
- プロファイルが非表示になっている場合や、アンインストールされたプログラムを参照している場合に、アイコンが表示されるようになりました
詳細については、GitHub リリース ページをご覧ください。
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@
<ReleaseNotes>
버전 __VERSION_NUMBER__
- 콘솔 애플리케이션이 터미널 내에서 호스팅되는 방법을 다시 작성했습니다. 버그가 발생하면 보고해 주세요.
- 터미널에서 이제 Sixels를 지원합니다.
- 이제 나중에 사용하기 위해 저장한 명령 조각이 포함된 도킹된 패널을 열 수 있습니다.
- 최신 Windows 11 릴리스의 명령 프롬프트 사용자는 WinGet에서 설치 가능한 소프트웨어를 추천하는 "간단한 팁" 아이콘을 볼 수 있습니다.
- 이제 선택한 텍스트가 훨씬 더 잘 보입니다(사용자 지정 가능).
- 여러 안정성 버그, 편의성 문제, 불편 사항이 수정되었습니다.
- 새 탭 메뉴의 레이아웃을 사용자 지정하기 위한 새 페이지를 포함하여 JSON 파일에만 존재했던 수십 개의 설정을 UI에 추가
- 안정성을 개선하기 위해 창 관리 구조를 재구성했습니다. wt.exe 별칭과 관련하여 발생한 버그 신고
- 프로필이 숨겨졌거나 제거된 프로그램을 참조하는 경우 이제 프로필에 아이콘이 표시됩니다.
자세한 내용은 GitHub 릴리스 페이지를 참조하세요.
</ReleaseNotes>

View File

@@ -54,14 +54,11 @@ Este é um projeto de código aberto e a participação da comunidade é bem-vin
</DevStudio>
<ReleaseNotes>
Versão __VERSION_NUMBER__
Version __VERSION_NUMBER__
Reescrevemos a forma como os aplicativos de console são hospedados no Terminal! Relate os bugs encontrados.
O terminal agora oferece suporte ao Sixels!
Agora você pode abrir um painel acoplado contendo snippets de comandos que você salvou para usar mais tarde
Os usuários do Prompt de Comando na versão mais recente do Windows 11 podem ver um ícone de "dica rápida", que sugere softwares instaláveis a partir do WinGet
O texto selecionado agora ficará muito mais visível (e personalizável!)
Vários bugs de confiabilidade, problemas de conveniência e incômodos foram resolvidos.
Adicionamos várias configurações à interface do usuário que antes só existiam no arquivo JSON, incluindo uma nova página para personalizar o layout do seu menu Nova Guia!
Reestruturamos o gerenciamento de janelas para melhorar a confiabilidade; registre os bugs que você encontrar com o alias wt.exe
Os perfis agora exibem um ícone se estiverem ocultos ou se referirem a programas que foram desinstalados.
Confira nossa página de lançamentos no GitHub para obter mais detalhes.
</ReleaseNotes>

View File

@@ -56,14 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!
- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!!
- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! !
- Ä ņϋmъŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,14 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!
- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!!
- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! !
- Ä ņϋmъŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,14 +56,11 @@
<ReleaseNotes>
Vėѓѕіöй __VERSION_NUMBER__ !!! !!! !
- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!
- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!!
- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! !
- Ä ņϋmъŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁē'νё àðđέď đöžзńş öƒ śėŧťїńģš тб тнè ÛĮ ťħąт ŏņ¢з όⁿℓγ έжіѕŧéð іή тђε ЈŠΩŃ ƒїℓė, ĭňĉŀџđіņģ å ňэẅ φâģé ƒøя ςŭśŧŏmïżϊñģ тħέ ĺαŷöυτ öƒ убµř Йέẁ Ţàъ мęήµ! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Ẁè ĥаνė řэąřčħΐŧέсτέð щįлďοш мǻňαĝēмêиť ťô ϊmрябνé ŗĕŀĩāвîĺïтγ; ρŀěăѕе ƒíŀё αⁿу вûġš ÿøú εʼnćōùлťēѓ ẃïτħ ŧћё wt.exe ǻļĭâś !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
- Рґøƒíŀêŝ ňöẁ šћθẁ ãй ĭčöñ ίƒ ŧħэŷ'νę ъеєл ђіðδэñ őř řєƒěґ ŧσ φяοġгаmŝ ẅђíçĥ ẁ℮гέ џňϊйşťàľĺèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !
Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!!
Рļèāŝє ŝèĕ θџŗ ĢίťĤцъ řέĺэªşэš ρąĝę ƒόř áďđїτϊōπαľ đэŧдįļŝ. !!! !!! !!! !!! !!! !!!
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -56,12 +56,9 @@
<ReleaseNotes>
Версия __VERSION_NUMBER__
Мы переписали, как консольные приложения размещаются внутри Терминала! Сообщайте о любых ошибках, с которыми вы столкнулись.
Терминал теперь поддерживает форматы Sixel!
Теперь вы можете открыть закрепленную панель, содержащую фрагменты команд, которые вы сохранили для использования в дальнейшем
Пользователи командной строки в новейшем выпуске Windows 11 могут увидеть значок "краткой подсказки", который предлагает устанавливаемые программы из WinGet
Выделенный текст теперь станет более видимым (и настраиваемым!)
Исправлено несколько ошибок надежности, проблем с удобством, а также устранены раздражающие моменты.
Мы добавили в пользовательский интерфейс десятки параметров, которые ранее существовали только в JSON-файле, включая новую страницу для настройки макета меню новой вкладки.
Мы переработали управление окнами для повышения надежности. Сообщайте о любых ошибках, которые вы обнаружите с псевдонимом wt.exe
Профили теперь отображают значок, если они были скрыты или ссылаются на программы, которые были удалены.
Дополнительные сведения см. на странице выпусков GitHub.
</ReleaseNotes>

View File

@@ -56,12 +56,9 @@
<ReleaseNotes>
Version __VERSION_NUMBER__
- 我们已改变主机应用程序在终端内的托管方式!请报告遇到的任何 bug。
- 终端现在支持 Sixels!
- 现在可以打开一个停靠面板,其中包含已保存供以后使用的命令片段
- 最新 Windows 11 版本上的命令提示用户可能会看到“快速提示”图标,该图标建议从 WinGet 安装软件
- 所选文本现在将具有更高的可见性(和可自定义性!)
- 修复了许多可靠性 bug、便利性问题和令人烦恼的问题。
- 我们向用户界面添加了许多之前仅存在于 JSON 文件中的设置,包括用于自定义“新建标签页”菜单布局的新页面!
- 我们已重新架构窗口管理以提高可靠性; 请使用 wt.exe 别名提交您遇到的任何错误
- 配置文件如果已被隐藏或引用了已卸载的程序,现在会显示一个图标。
有关其他详细信息,请参阅我们的 GitHub 发布页面。
</ReleaseNotes>

View File

@@ -54,16 +54,13 @@
</DevStudio>
<ReleaseNotes>
版本 __VERSION_NUMBER__
Version __VERSION_NUMBER__
- 我們已重寫主機應用程式在終端機內託管的方式!請報告您遇到的錯誤。
- 終端機現在支援 Sixels!
- 現在,您可以開啟包含已儲存命令程式碼片段的固定面板,以供稍後使用
- 最新 Windows 11 版本中的 [命令提示] 使用者可能會看到「快速提示」圖示,建議可自 WinGet 安裝的軟體
- 選取的文字現在會更明顯 (且可自訂!)
- 已修正一些可靠性錯誤、便利性問題和令人困擾的問題。
- 我們已在使用者介面中新增數十個曾經僅存在於 JSON 檔案中的設定,包括一個可自訂新索引標籤選單版面配置的新頁面!
- 我們已重新架構視窗管理以提升可靠性; 如果您在使用 wt.exe 別名時遇到任何錯誤,請提交錯誤回報
- 如果設定檔已隱藏或參照已解除安裝的程式,現在會顯示圖示。
如需更多詳細資,請參閱我們的 GitHub 發行頁面。
如需更多詳細資,請參閱我們的 GitHub 發行版本頁面。
</ReleaseNotes>
<ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

@@ -20,6 +20,7 @@
"DisableAutoPackageNameFormatting": false
},
"appSubmission": {
"appId": "9N0DX20HK701",
"productId": "00013926773940052066",
"targetPublishMode": "NotSet",
"targetPublishDate": null,

Binary file not shown.

View File

@@ -4,7 +4,7 @@
"collection": "microsoft",
"project": "OS",
"repo": "os.2020",
"name": "official/rs_we_adept_e4d2",
"name": "official/ge_current_directwinpd_deep",
"workitem": "38106206",
"CheckinFiles": [
{

View File

@@ -17,7 +17,6 @@
"PackageContents/WindowsTerminalShellExt.dll",
// The rest
"PackageContents/TerminalAzBridge.exe",
"PackageContents/wt.exe",
"PackageContents/WindowsTerminal.exe",
"PackageContents/elevate-shim.exe"

View File

@@ -2,10 +2,24 @@
{
"MatchedPath": [
"WpfTerminalControl/net472/Microsoft.Terminal.Wpf.dll",
"WpfTerminalControl/net6.0-windows/Microsoft.Terminal.Wpf.dll"
"WpfTerminalControl/net8.0-windows/Microsoft.Terminal.Wpf.dll"
],
"SigningInfo": {
"Operations": [
{
"KeyCode": "CP-233904-SN",
"OperationSetCode": "StrongNameSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": []
},
{
"KeyCode": "CP-233904-SN",
"OperationSetCode": "StrongNameVerify",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": []
},
{
"KeyCode": "CP-230012",
"OperationSetCode": "SigntoolSign",

View File

@@ -14,21 +14,21 @@
<Package
Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="8.2305.5001.0"
Version="8.2306.22001.0"
ProcessorArchitecture="x64"
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.4/Microsoft.UI.Xaml.2.8.x64.appx" />
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.5/Microsoft.UI.Xaml.2.8.x64.appx" />
<Package
Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="8.2305.5001.0"
Version="8.2306.22001.0"
ProcessorArchitecture="x86"
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.4/Microsoft.UI.Xaml.2.8.x86.appx" />
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.5/Microsoft.UI.Xaml.2.8.x86.appx" />
<Package
Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="8.2305.5001.0"
Version="8.2306.22001.0"
ProcessorArchitecture="arm64"
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.4/Microsoft.UI.Xaml.2.8.arm64.appx" />
Uri="https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.5/Microsoft.UI.Xaml.2.8.arm64.appx" />
</Dependencies>
<UpdateSettings>

View File

@@ -1,6 +1,6 @@
{
"instanceUrl": "https://microsoft.visualstudio.com",
"projectName": "OS",
"areaPath": "OS\\Windows Client and Services\\WinPD\\DEEP-Developer Experience, Ecosystem and Partnerships\\SHINE\\Terminal",
"areaPath": "OS\\Windows Client and Services\\WinPD\\DFX-Developer Fundamentals and Experiences\\DEFT\\SHINE\\Terminal",
"notificationAliases": ["condev@microsoft.com", "duhowett@microsoft.com"]
}

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" />
<package id="Microsoft.Taef" version="10.100.251104001" targetFramework="native" />
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" targetFramework="native" />
<package id="Microsoft.Debugging.Tools.PdbStr" version="20220617.1556.0" targetFramework="native" />
<package id="Microsoft.Debugging.Tools.SrcTool" version="20220617.1556.0" targetFramework="native" />

View File

@@ -23,7 +23,7 @@ parameters:
default: true
pool:
vmImage: windows-2019
vmImage: windows-latest
resources:
repositories:
@@ -47,12 +47,12 @@ steps:
git config --local core.autocrlf true
displayName: Prepare git submission environment
- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@3
- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@5
displayName: 'Touchdown Build - 7105, PRODEXT'
inputs:
teamId: 7105
TDBuildServiceConnection: $(TouchdownServiceConnection)
authType: SubjectNameIssuer
FederatedIdentityTDBuildServiceConnection: $(TouchdownServiceConnection)
authType: FederatedIdentityTDBuild
resourceFilePath: |
**\en-US\*.resw
build\StoreSubmission\Stable\PDPs\en-us\PDP.xml

View File

@@ -31,7 +31,7 @@ stages:
- template: ./templates-v2/job-build-project.yml
parameters:
pool: # This only runs in CI
name: SHINE-OSS-L
name: SHINE-OSS-L
buildPlatforms: [x64]
buildConfigurations: [Release]
buildEverything: true

View File

@@ -50,6 +50,7 @@ extends:
parameters:
pool: { type: windows }
variables:
ob_sdl_prefast_enabled: false # This is a collection of powershell scripts
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: "$(Build.SourcesDirectory)/_none"

View File

@@ -47,14 +47,18 @@ parameters:
- name: terminalInternalPackageVersion
displayName: "Terminal Internal Package Version"
type: string
default: '0.0.8'
default: '0.0.9'
- name: publishSymbolsToPublic
displayName: "Publish Symbols to MSDL"
type: boolean
default: true
- name: createVpack
displayName: "Create a VPack for Windows"
type: boolean
default: false
- name: publishVpackToWindows
displayName: "Publish VPack to Windows"
displayName: "Publish above VPack to Windows"
type: boolean
default: false
@@ -89,6 +93,7 @@ extends:
clientId: $(SigningOriginalClientId)
terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }}
publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }}
createVpack: ${{ parameters.createVpack }}
publishVpackToWindows: ${{ parameters.publishVpackToWindows }}
symbolPublishingSubscription: $(SymbolPublishingServiceConnection)
symbolPublishingProject: $(SymbolPublishingProject)

View File

@@ -74,7 +74,7 @@ stages:
parameters:
jobName: MergePGD
pool:
vmImage: 'windows-2022'
vmImage: 'windows-latest'
buildConfiguration: Release
buildPlatforms: ${{ parameters.buildPlatforms }}
artifactStem: -instrumentation
@@ -82,7 +82,7 @@ stages:
- template: ./templates-v2/job-pgo-build-nuget-and-publish.yml
parameters:
pool:
vmImage: 'windows-2022'
vmImage: 'windows-latest'
dependsOn: MergePGD
buildConfiguration: Release
artifactStem: -instrumentation

View File

@@ -75,9 +75,9 @@ jobs:
- template: .\steps-restore-nuget.yml
- task: VSBuild@1
displayName: Build solution OpenConsole.sln for WPF Control (Pack)
displayName: Build solution OpenConsole.slnx for WPF Control (Pack)
inputs:
solution: 'OpenConsole.sln'
solution: 'OpenConsole.slnx'
msbuildArgs: >-
/p:WindowsTerminalReleaseBuild=true;Version=$(XES_PACKAGEVERSIONNUMBER)
/p:NoBuild=true

View File

@@ -170,9 +170,9 @@ jobs:
- ${{ parameters.beforeBuildSteps }}
- task: VSBuild@1
displayName: Build OpenConsole.sln
displayName: Build OpenConsole.slnx
inputs:
solution: 'OpenConsole.sln'
solution: 'OpenConsole.slnx'
msbuildArgs: >-
/p:WindowsTerminalOfficialBuild=true;WindowsTerminalBranding=${{ parameters.branding }};PGOBuildMode=${{ parameters.pgoBuildMode }}
${{ parameters.additionalBuildOptions }}

View File

@@ -1,7 +1,7 @@
jobs:
- job: CodeFormatCheck
displayName: Check Code Format
pool: { vmImage: windows-2022 }
pool: { vmImage: windows-latest }
steps:
- checkout: self

View File

@@ -75,10 +75,22 @@ jobs:
}
displayName: "Wrangle Unpackaged builds into place, rename"
- powershell: |-
Get-PackageProvider -Name NuGet -ForceBootstrap
Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute
displayName: Install Azure Module Dependencies
- task: PowerShell@2
displayName: Install Azure Modules from custom PowerShell Gallery Repo
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
pwsh: false # We are preparing modules for AzureFileCopy, which uses PowerShell 5.1
targetType: inline
script: |-
$MachineToken = $env:SYSTEM_ACCESSTOKEN | ConvertTo-SecureString -AsPlainText -Force
$Credential = [PSCredential]::new("ONEBRANCH_TOKEN", $MachineToken)
$MachineToken = $null
$Feed = "https://pkgs.dev.azure.com/shine-oss/terminal/_packaging/TerminalDependencies%40Local/nuget/v3/index.json"
Register-PSResourceRepository -Name "PSGalleryUpstream" -Uri $Feed -Trusted
Get-PSResourceRepository
Install-PSResource -Name Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute -Repository "PSGalleryUpstream" -Credential $Credential
- task: AzureFileCopy@6
displayName: Publish to Storage Account

View File

@@ -147,6 +147,10 @@ jobs:
ValidateSignature: true
Verbosity: 'Verbose'
- pwsh: |-
tar -c -v --format=zip -f "$(JobOutputDirectory)/GroupPolicyTemplates_$(XES_APPXMANIFESTVERSION).zip" -C "$(Build.SourcesDirectory)/policies" *
displayName: Package GPO Templates
- ${{ parameters.afterBuildSteps }}
- ${{ if eq(parameters.publishArtifacts, true) }}:

View File

@@ -30,7 +30,7 @@ jobs:
steps:
- checkout: self
clean: true
# It is important that this be 0, otherwise git will not fetch the branch ref names that the PGO rules require.
# It is important that this be 0; otherwise, git will not fetch the branch ref names that the PGO rules require.
fetchDepth: 0
submodules: false
persistCredentials: false

View File

@@ -52,11 +52,6 @@ jobs:
itemPattern: '**/*.pdb'
targetPath: '$(Build.SourcesDirectory)/bin'
- powershell: |-
Get-PackageProvider -Name NuGet -ForceBootstrap
Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute
displayName: Install Azure Module Dependencies
# Transit the Azure token from the Service Connection into a secret variable for the rest of the pipeline to use.
- task: AzurePowerShell@5
displayName: Generate an Azure Token
@@ -66,7 +61,7 @@ jobs:
pwsh: true
ScriptType: InlineScript
Inline: |-
$AzToken = (Get-AzAccessToken -ResourceUrl api://30471ccf-0966-45b9-a979-065dbedb24c1).Token
$AzToken = (Get-AzAccessToken -AsSecureString -ResourceUrl api://30471ccf-0966-45b9-a979-065dbedb24c1).Token | ConvertFrom-SecureString -AsPlainText
Write-Host "##vso[task.setvariable variable=SymbolAccessToken;issecret=true]$AzToken"

View File

@@ -69,10 +69,3 @@ jobs:
artifact: $(JobOutputArtifactName)
displayName: 'Publish VPack Manifest to Drop'
- task: PkgESFCIBGit@12
displayName: 'Submit VPack Manifest to Windows'
inputs:
configPath: '$(Build.SourcesDirectory)\build\config\GitCheckin.json'
artifactsDirectory: $(XES_VPACKMANIFESTDIRECTORY)
prTimeOut: 5

View File

@@ -39,7 +39,7 @@ parameters:
default: true
- name: terminalInternalPackageVersion
type: string
default: '0.0.8'
default: '0.0.9'
- name: publishSymbolsToPublic
type: boolean

View File

@@ -41,7 +41,7 @@ parameters:
default: true
- name: terminalInternalPackageVersion
type: string
default: '0.0.8'
default: '0.0.9'
- name: publishSymbolsToPublic
type: boolean
@@ -49,6 +49,9 @@ parameters:
- name: symbolExpiryTime
type: string
default: 36530 # This is the default from PublishSymbols@2
- name: createVpack
type: boolean
default: false
- name: publishVpackToWindows
type: boolean
default: false
@@ -78,7 +81,9 @@ extends:
template: v2/Microsoft.NonOfficial.yml@templates
parameters:
featureFlags:
WindowsHostVersion: 1ESWindows2022
WindowsHostVersion:
Version: 2022
Network: R1
platform:
name: 'windows_undocked'
product: 'Windows Terminal'
@@ -86,6 +91,9 @@ extends:
enabled: false
globalSdl: # https://aka.ms/obpipelines/sdl
enableCheckCFlags: false # CheckCFlags is broken and exploding our builds; to remove, :g/BAD-FLAGS/d
isNativeCode: true
prefast:
enabled: true
asyncSdl:
enabled: true
tsaOptionsFile: 'build/config/tsa.json'
@@ -113,6 +121,8 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_runDuring: Build
ob_sdl_checkCompliantCompilerWarnings: true
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory)
@@ -132,6 +142,10 @@ extends:
beforeBuildSteps: # Right before we build, lay down the universal package and localizations
- template: ./build/pipelines/templates-v2/steps-setup-versioning.yml@self
- template: ./build/pipelines/templates-v2/steps-inject-secrets.yml@self
parameters:
githubClientSecret: $(GithubClientSecret)
- task: UniversalPackages@0
displayName: Download terminal-internal Universal Package
inputs:
@@ -147,6 +161,7 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_enabled: false # This is a C# build job
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory)
@@ -178,13 +193,14 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_enabled: false # This is a collection of powershell scripts
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory)
ob_artifactBaseName: $(JobOutputArtifactName)
### This job is also in charge of submitting the vpack to Windows if it's enabled
ob_createvpack_enabled: ${{ and(parameters.buildTerminal, parameters.publishVpackToWindows) }}
ob_updateOSManifest_enabled: ${{ and(parameters.buildTerminal, parameters.publishVpackToWindows) }}
ob_createvpack_enabled: ${{ and(parameters.buildTerminal, parameters.createVpack) }}
ob_updateOSManifest_enabled: ${{ and(parameters.buildTerminal, parameters.createVpack, parameters.publishVpackToWindows) }}
### If enabled above, these options are in play.
ob_createvpack_packagename: 'WindowsTerminal.app'
ob_createvpack_owneralias: 'conhost@microsoft.com'
@@ -220,7 +236,7 @@ extends:
New-Item "$(JobOutputDirectory)/vpack" -Type Directory
displayName: Make sure the vpack directory exists
- ${{ if parameters.publishVpackToWindows }}:
- ${{ if parameters.createVpack }}:
- pwsh: |-
Copy-Item -Verbose -Path "$(MsixBundlePath)" -Destination (Join-Path "$(JobOutputDirectory)/vpack" 'Microsoft.WindowsTerminal_8wekyb3d8bbwe.msixbundle')
displayName: Stage msixbundle for vpack
@@ -232,6 +248,7 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_enabled: false # This is a collection of powershell scripts
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory)
@@ -250,6 +267,7 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_enabled: false # This is a collection of powershell scripts
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory)
@@ -275,6 +293,7 @@ extends:
variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
ob_sdl_prefast_enabled: false # This is a collection of powershell scripts
ob_git_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true
ob_outputDirectory: $(Build.ArtifactStagingDirectory)

View File

@@ -1,5 +1,12 @@
steps:
- task: NuGetToolInstaller@1
displayName: Use NuGet 6.6.1
inputs:
versionSpec: 6.6.1
- ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
- pwsh: |-
Write-Host "Assuming NuGet is already installed..."
& nuget.exe help
displayName: Assume NuGet is fine
- ${{ else }}:
- task: NuGetToolInstaller@1
displayName: Use NuGet 6.6.1
inputs:
versionSpec: 6.6.1

View File

@@ -0,0 +1,14 @@
parameters:
- name: githubClientSecret
type: string
default: 'FineKeepYourSecrets'
steps:
- pwsh: |-
$header = Get-Item src/cascadia/QueryExtension/WindowsTerminalIDAndSecret.h -ErrorAction:Ignore
If ($Null -ne $header) {
$content = Get-Content $header -ReadCount 0
$content = $content -Replace "FineKeepYourSecrets","${{parameters.githubClientSecret}}"
Set-Content $header $content
}
displayName: Inject GitHub Secret

View File

@@ -19,14 +19,16 @@ steps:
restoreSolution: build/packages.config
restoreDirectory: '$(Build.SourcesDirectory)\packages'
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
- task: VSBuild@1
displayName: Restore NuGet packages for solution
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: OpenConsole.sln
restoreDirectory: '$(Build.SourcesDirectory)\packages'
solution: 'OpenConsole.slnx'
msbuildArgs: /t:Restore
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
msbuildArchitecture: x64
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
displayName: Restore NuGet packages for global nuget

View File

@@ -1,8 +1,28 @@
$VSInstances = ([xml](& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -include packages -format xml))
$VSPackages = $VSInstances.instances.instance.packages.package
$LatestVCPackage = ($VSInstances.instances.instance.packages.package | ? { $_.id -eq "Microsoft.VisualCpp.Tools.Core" })
$LatestVCPackage = ($VSPackages | ? { $_.id -eq "Microsoft.VisualCpp.Tools.Core" })
$LatestVCToolsVersion = $LatestVCPackage.version;
$VSRoot = (& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property 'resolvedInstallationPath')
$VCToolsRoot = Join-Path $VSRoot "VC\Tools\MSVC"
# We have observed a few instances where the VC tools package version actually
# differs from the version on the files themselves. We might as well check
# whether the version we just found _actually exists_ before we use it.
# We'll use whichever highest version exists.
$PackageVCToolPath = Join-Path $VCToolsRoot $LatestVCToolsVersion
If ($Null -Eq (Get-Item $PackageVCToolPath -ErrorAction:Ignore)) {
$VCToolsVersions = Get-ChildItem $VCToolsRoot | ForEach-Object {
[Version]$_.Name
} | Sort -Descending
$LatestActualVCToolsVersion = $VCToolsVersions | Select -First 1
If ([Version]$LatestVCToolsVersion -Ne $LatestActualVCToolsVersion) {
Write-Output "VC Tools Mismatch: Directory = $LatestActualVCToolsVersion, Package = $LatestVCToolsVersion"
$LatestVCToolsVersion = $LatestActualVCToolsVersion.ToString(3)
}
}
Write-Output "Latest VCToolsVersion: $LatestVCToolsVersion"
Write-Output "Updating VCToolsVersion environment variable for job"
Write-Output "##vso[task.setvariable variable=VCToolsVersion]$LatestVCToolsVersion"

View File

@@ -5,7 +5,10 @@
<XesUseOneStoreVersioning>true</XesUseOneStoreVersioning>
<XesBaseYearForStoreVersion>2025</XesBaseYearForStoreVersion>
<VersionMajor>1</VersionMajor>
<VersionMinor>24</VersionMinor>
<VersionMinor>25</VersionMinor>
<VersionInfoProductName>Windows Terminal</VersionInfoProductName>
<VersionInfoCulture>1033</VersionInfoCulture>
<!-- The default has a spacing problem -->
<VersionInfoCopyRight>\xa9 Microsoft Corporation. All rights reserved.</VersionInfoCopyRight>
</PropertyGroup>
</Project>

View File

@@ -7,9 +7,17 @@ Licensed under the MIT license.
#include <ntcsrmsg.h>
#ifdef __cplusplus
extern "C" {
#endif
NTSTATUS CsrClientCallServer(
PCSR_API_MSG m,
PCSR_CAPTURE_HEADER CaptureBuffer OPTIONAL,
ULONG ApiNumber,
ULONG ArgLength
);
#ifdef __cplusplus
}
#endif

View File

@@ -5,6 +5,10 @@ Licensed under the MIT license.
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#define OB_FILE_OBJECT_TYPE 1
typedef struct _PORT_MESSAGE {
@@ -124,3 +128,7 @@ NTSTATUS NtAlpcQueryInformationMessage(
ULONG Length,
PULONG ReturnLength
);
#ifdef __cplusplus
}
#endif

View File

@@ -3,13 +3,13 @@
<packages>
<!-- Native packages -->
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" targetFramework="native" />
<package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" />
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
<package id="Microsoft.Internal.Windows.Terminal.ThemeHelpers" version="0.7.230706001" targetFramework="native" />
<package id="Microsoft.Taef" version="10.100.251104001" targetFramework="native" />
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
<package id="Microsoft.Internal.Windows.Terminal.ThemeHelpers" version="0.8.250811004" targetFramework="native" />
<package id="Microsoft.VisualStudio.Setup.Configuration.Native" version="2.3.2262" targetFramework="native" developmentDependency="true" />
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.240122.1" targetFramework="native" developmentDependency="true" />
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.250325.1" targetFramework="native" developmentDependency="true" />
<package id="Microsoft.WindowsPackageManager.ComInterop" version="1.8.1911" targetFramework="native" developmentDependency="true" />
<!-- Managed packages -->

View File

@@ -14,4 +14,5 @@ Abstract:
#define PDT_ProductAndServicePerformance 0x0u
#define PDT_ProductAndServiceUsage 0x0u
#define MICROSOFT_KEYWORD_TELEMETRY 0x0
#define MICROSOFT_KEYWORD_MEASURES 0x0
#define MICROSOFT_KEYWORD_MEASURES 0x0
#define MICROSOFT_KEYWORD_CRITICAL_DATA 0x0

View File

@@ -0,0 +1,6 @@
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CXX_FLAGS /fsanitize=address)
set(VCPKG_C_FLAGS /fsanitize=address)

View File

@@ -0,0 +1,6 @@
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CXX_FLAGS /fsanitize=address)
set(VCPKG_C_FLAGS /fsanitize=address)

View File

@@ -0,0 +1,6 @@
set(VCPKG_TARGET_ARCHITECTURE x86)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CXX_FLAGS /fsanitize=address)
set(VCPKG_C_FLAGS /fsanitize=address)

View File

@@ -15,7 +15,7 @@ This document serves as a storage point for those posts.
## <a name="cmd"></a>Why do we avoid changing CMD.exe?
`setlocal` doesn't behave the same way as an environment variable. It's a thing that would have to be put in at the top of the batch script that is `somefile.cmd` as one of its first commands to adjust the way that one specific batch file is processed by the `cmd.exe` engine. That's probably not suitable for your needs, but that's the way we have to go.
I don't think anyone is disagreeing with you, @mikemaccana, that this would be a five minute development change to read that environment variable and change the behavior of `cmd.exe`. It absolutely would be a tiny development time.
I don't think anyone is disagreeing with you, @mikemaccana, that this would be a five minute development change to read that environment variable and change the behavior of `cmd.exe`. It absolutely would be a tiny development time.
It's just that from our experience, we know there's going to be a 3-24 month bug tail here where we get massive investigation callbacks by some billion dollar enterprise customer who for whatever reason was already using the environment variable we pick for another purpose. Their script that they give their rank-and-file folks will tell them to press Ctrl+C at some point in the batch script to do whatever happens, it will do something different, those people will notice the script doesn't match the computer anymore. They will then halt the production line and tell their supervisor. The supervisor tells some director. Their director comes screaming at their Microsoft enterprise support contract person that we've introduced a change to the OS that is costing them millions if not billions of dollars in shipments per month. Our directors at Microsoft then come bashing down our doors angry with us and make us fix it ASAP or revert it, we don't get to go home at 5pm to our families or friends because we're fixing it, we get stressed the heck out, we have to spin up servicing potentially for already shipped operating systems which is expensive and headache-causing...etc.
@@ -27,7 +27,7 @@ I would highly recommend that Gulp convert to using PowerShell scripts and that
Original Source: https://github.com/microsoft/terminal/issues/217#issuecomment-404240443
_Addendum_: cmd.exe is the literal embodiment of [xkcd#1172]([url](https://xkcd.com/1172/)). Every change, no matter how small, will break _someone_.
_Addendum_: cmd.exe is the literal embodiment of [xkcd#1172]([url](https://xkcd.com/1172/)). Every change, no matter how small, will break _someone_.
## <a name="screenPerf"></a>Why is typing-to-screen performance better than every other app?
@@ -37,33 +37,33 @@ Also, I'm happy to discuss this with you until you're utterly sick of reading it
If I had to take an educated guess as to what is making us faster than pretty much any other application on Windows at putting your text on the screen... I would say it is because that is literally our only job! Also probably because we are using darn near the oldest and lowest level APIs that Windows has to accomplish this work.
Pretty much everything else you've listed has some sort of layer or framework involved, or many, many layers and frameworks, when you start talking about Electron and JavaScript. We don't.
Pretty much everything else you've listed has some sort of layer or framework involved, or many, many layers and frameworks, when you start talking about Electron and JavaScript. We don't.
We have one bare, super un-special window with no additional controls attached to it. We get our keys fed into us from just barely above the kernel given that we're processing them from window messages and not from some sort of eventing framework common to pretty much any other more complicated UI framework than ours (WPF, WinForms, UWP, Electron). And we dump our text straight onto the window surface using GDI's [PolyTextOut](https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-polytextoutw) with no frills.
We have one bare, super un-special window with no additional controls attached to it. We get our keys fed into us from just barely above the kernel given that we're processing them from window messages and not from some sort of eventing framework common to pretty much any other more complicated UI framework than ours (WPF, WinForms, UWP, Electron). And we dump our text straight onto the window surface using GDI's [PolyTextOut](https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-polytextoutw) with no frills.
Even `notepad.exe` has multiple controls on its window at the very least and is probably (I haven't looked) using some sort of library framework in the edit control to figure out its text layout (which probably is using another library framework for internationalization support...)
Of course this also means that we have trade offs. We don't support fully international text like pretty much every other application will. RTL? No go zone right now. Surrogate pairs and emoji? We're getting there but not there yet. Indic scripts? Nope.
Of course this also means that we have trade offs. We don't support fully international text like pretty much every other application will. RTL? No go zone right now. Surrogate pairs and emoji? We're getting there but not there yet. Indic scripts? Nope.
Why are we like this? For one, `conhost.exe` is old as dirt. It has to use the bare metal bottom layer of everything because it was created before most of those other frameworks were created. And also it maintains as low/bottom level as possible because it is pretty much the first thing that one needs to bring up when bringing up a new operating system edition or device before you have all the nice things like frameworks or what those frameworks require to operate. Also it's written in C/C++ which is about as low and bare metal as we can get.
Will this UI enhancement come to other apps on Windows? Almost certainly not. They have too much going on which is both a good and a bad thing. I'm jealous of their ability to just call one method and layout text in an uncomplicated manner in any language without manually calculating pixels or caring about what styles apply to their font. But my manual pixel calculations, dirty region math, scroll region madness, and more makes it so we go faster than them. I'm also jealous that when someone says "hey can you add a status bar to the bottom of your window" that they can pretty much click and drag that into place with their UI Framework and it will just work where as for us, it's been a backlog item forever and gives me heartburn to think about implementing.
Will this UI enhancement come to other apps on Windows? Almost certainly not. They have too much going on which is both a good and a bad thing. I'm jealous of their ability to just call one method and layout text in an uncomplicated manner in any language without manually calculating pixels or caring about what styles apply to their font. But my manual pixel calculations, dirty region math, scroll region madness, and more makes it so we go faster than them. I'm also jealous that when someone says "hey can you add a status bar to the bottom of your window" that they can pretty much click and drag that into place with their UI Framework and it will just work whereas for us, it's been a backlog item forever and gives me heartburn to think about implementing.
Will we try to keep it from regressing? Yes! Right now it's sort of a manual process. We identify that something is getting slow and then we go haul out [WPR](https://docs.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder) and start taking traces. We stare down the hot paths and try to reason out what is going on and then improve them. For instance, in the last cycle or two, we focused on heap allocations as a major area where we could improve our end-to-end performance, changing a ton of our code to use stack-constructed iterator-like facades over the underlying request buffer instead of translating and allocating it into a new heap space for each level of processing.
Will we try to keep it from regressing? Yes! Right now it's sort of a manual process. We identify that something is getting slow and then we go haul out [WPR](https://docs.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder) and start taking traces. We stare down the hot paths and try to reason out what is going on and then improve them. For instance, in the last cycle or two, we focused on heap allocations as a major area where we could improve our end-to-end performance, changing a ton of our code to use stack-constructed iterator-like facades over the underlying request buffer instead of translating and allocating it into a new heap space for each level of processing.
As an aside, @bitcrazed wants us to automate performance tests in some conhost specific way, but I haven't quite figured out a controlled environment to do this in yet. The Windows Engineering System runs performance tests each night that give us a coarse-grained way of knowing if we messed something up for the whole operating system, and they technically offer a fine-grained way for us to insert our own performance tests... but I just haven't got around to that yet. If you have an idea for a way for us to do this in an automated fashion, I'm all ears.
If there's anything else you'd like to know, let me know. I could go on all day. I deleted like 15 tangents from this reply before posting it....
If there's anything else you'd like to know, let me know. I could go on all day. I deleted like 15 tangents from this reply before posting it....
Original Source: https://github.com/microsoft/terminal/issues/327#issuecomment-447391705
## <a name="gfxMsgStack"></a>How are the Windows graphics/messaging stack assembled?
@stakx, I am referring to USER32 and GDI32.
@stakx, I am referring to USER32 and GDI32.
I'll give you a cursory overview of what I know off the top of my head without spending hours confirming the details. As such, some of this is subject to handwaving and could be mildly incorrect but is probably in the right direction. Consider every statement to be my personal knowledge on how the world works and subject to opinion or error.
For the graphics part of the pipeline (GDI32), the user-mode portions of GDI are pretty far down. The app calls GDI32, some work is done in that DLL on the user-mode side, then a kernel call jumps over to the kernel and drawing occurs.
For the graphics part of the pipeline (GDI32), the user-mode portions of GDI are pretty far down. The app calls GDI32, some work is done in that DLL on the user-mode side, then a kernel call jumps over to the kernel and drawing occurs.
The portion that you're thinking of regarding "silently converted to sit on top of other stuff" is probably that once we hit the kernel calls, a bunch of the kernel GDI stuff tends to be re-platformed on top of the same stuff as DirectX when it is actually handled by the NVIDIA/AMD/Intel/etc. graphics driver and the GPU at the bottom of the stack. I think this happened with the graphics driver re-architecture that came as a part of WDDM for Windows Vista. There's a document out there somewhere about what calls are still really fast in GDI and which are slower as a result of the re-platforming. Last time I found that document and checked, we were using the fast ones.
@@ -71,11 +71,11 @@ On top of GDI, I believe there are things like Common Controls or comctl32.dll w
As for DirectWrite and D2D and D3D and DXGI themselves, they're a separate set of commands and paths that are completely off to the side from GDI at all both in user and kernel mode. They're not really related other than that there's some interoperability provisions between the two. Most of our other UI frameworks tend to be built on top of the DirectX stack though. XAML is for sure. I think WPF is. Not sure about WinForms. And I believe the composition stack and the window manager are using DirectX as well.
As for the input/interaction part of the pipeline (USER32), I tend to find most other newer things (at least for desktop PCs) are built on top of what is already there. USER32's major concept is windows and window handles and everything is sent to a window handle. As long as you're on a desktop machine (or a laptop or whatever... I mean a classic-style Windows-powered machine), there's a window handle involved and messages floating around and that means we're talking USER32.
As for the input/interaction part of the pipeline (USER32), I tend to find most other newer things (at least for desktop PCs) are built on top of what is already there. USER32's major concept is windows and window handles and everything is sent to a window handle. As long as you're on a desktop machine (or a laptop or whatever... I mean a classic-style Windows-powered machine), there's a window handle involved and messages floating around and that means we're talking USER32.
The window message queue is just a straight up FIFO (more or less) of whatever input has occurred relevant to that window while it's in the foreground + whatever has been sent to the window by other components in the system.
The window message queue is just a straight up FIFO (more or less) of whatever input has occurred relevant to that window while it's in the foreground + whatever has been sent to the window by other components in the system.
The newer technologies and the frameworks like XAML and WPF and WinForms tend to receive the messages from the window message queue one way or another and process them and turn them into event callbacks to various objects that they've provisioned within their world.
The newer technologies and the frameworks like XAML and WPF and WinForms tend to receive the messages from the window message queue one way or another and process them and turn them into event callbacks to various objects that they've provisioned within their world.
However, the newer technologies that also work on other non-desktop platforms like XAML tend to have the ability to process stuff off of a completely different non-USER32 stack as well. There's a separate parallel stack to USER32 with all of our new innovations and realizations on how input and interaction should occur that doesn't exactly deal with classic messaging queues and window handles the same way. This is the whole Core* family of things like CoreWindow and CoreMessaging. They also have a different concept of "what is a user" that isn't so centric around your butt in rolling chair in front of a screen with a keyboard and mouse on the desk.
@@ -83,7 +83,7 @@ Now, if you're on XAML or one of the other Frameworks... all this intricacy is h
The trick is that GDI32 and USER32 were designed for a limited world with a limited set of commands. Desktop PCs were the only thing that existed, single user at the keyboard and mouse, simple graphics output to a VGA monitor. So using them directly at the "low level" like conhost does is pretty easy. The new platforms could be used at the "low level" but they're orders of magnitude more complicated because they now account for everything that has happened with personal computing in 20+ years like different form factors, multiple active users, multiple graphics adapters, and on and on and on and on. So you tend to use a framework when using the new stuff so your head doesn't explode. They handle it for you, but they handle more than they ever did before so they're slower to some degree.
So are GDI32 and USER32 "lower" than the new stuff? Sort of.
So are GDI32 and USER32 "lower" than the new stuff? Sort of.
Can you get that low with the newer stuff? Mostly yes, but you probably shouldn't and don't want to.
Does new live on top of old or is old replatformed on the new? Sometimes and/or partially.
Basically... it's like the answer to anything software... "it's an unmitigated disaster and if we all stepped back a moment, we should be astounded that it works at all." :P
@@ -94,7 +94,7 @@ Original Source: https://github.com/microsoft/terminal/issues/327#issuecomment-4
## <a name="fesb"></a>Output Processing between "Far East" and "Western"
>
>
> ```
> if (WI_IsFlagSet(CharType, C1_CNTRL))
> ```
@@ -120,7 +120,7 @@ Note in both of these, there is a little bit of indirection before `MultiByteToW
When we took over the console codebase, this variation between "Western" and "Eastern" countries was especially painful because `conhost.exe` would choose which one it was in based on the `Codepage for Non-Unicode Applications` set in the Control Panel's Regional > Administrative panel and it could only be changed with a reboot. It wouldn't even change properly when you `chcp` to a different codepage. Heck, `chcp` would deny you from switching into many codepages. There was a block in place to prevent going to an "Eastern" codepage if you booted up in a "Western" codepage. There was also a block preventing you from going between "Eastern" codepages, if I recall correctly.
In modernizing, I decided a few things:
1. What's good for the "Far East" should be good for the rest of the world. CJK languages that encompassed the "Far East" code have to be able to handle "Western" text as well even if the reverse wasn't true.
1. What's good for the "Far East" should be good for the rest of the world. CJK languages that encompassed the "Far East" code have to be able to handle "Western" text as well even if the reverse wasn't true.
2. We need to scrub all usages of "Far East" from the code. Someone already started that and replaced them with "East Asia" except then they left behind the shorthand of "FE" prefixing dozens of functions which made it hard to follow the code. It took us months to realize "FE" and "East Asia" were the same thing.
3. It's obnoxious that the way this was handled was to literally double-define every output function in the code base to have two definitions, compile them both into the conhost, then choose to run down the SB_ versions or the FE_ versions depending on the startup Non-Unicode codepage. It was a massive pile of complex pre-compilation `#ifdef` and `#else`s that would sometimes surround individual lines in the function bodies. Gross.
4. The fact that the FE_ versions of the functions were way slower than the SB_ ones was unacceptable even for the same output of Latin-character text.
@@ -139,13 +139,13 @@ Original Source: https://github.com/microsoft/terminal/issues/166#issuecomment-5
## <a name="backport"></a>Why do we not backport things?
Someone has to prove that this is costing millions to billions of dollars of lost productivity or revenue to outweigh the risks of shipping the fix to hundreds of millions of Windows machines and potentially breaking something.
Someone has to prove that this is costing millions to billions of dollars of lost productivity or revenue to outweigh the risks of shipping the fix to hundreds of millions of Windows machines and potentially breaking something.
Our team generally finds it pretty hard to prove that against the developer audience given that they're only a small portion of the total installed market of Windows machines.
Our team generally finds it pretty hard to prove that against the developer audience given that they're only a small portion of the total installed market of Windows machines.
Our only backport successes really come from corporations with massive addressable market (like OEMs shipping PCs) who complain that this is fouling up their manufacturing line (or something of that ilk). Otherwise, our management typically says that the risks don't outweigh the benefits.
It's also costly in terms of time, effort, and testing for us to validate a modification to a released OS. We have a mindbogglingly massive amount of automated machinery dedicated to processing and validating the things that we check in while developing the current OS builds. But it's a special costly ask to spin up some to all of those activities to validate backported fixes. We do it all the time for Patch Tuesday, but in those patches, they only pass through the minimum number of fixes required to maximize the restoration of productivity/security/revenue/etc. because every additional fix adds additional complexity and additional risk.
It's also costly in terms of time, effort, and testing for us to validate a modification to a released OS. We have a mindbogglingly massive amount of automated machinery dedicated to processing and validating the things that we check in while developing the current OS builds. But it's a special costly ask to spin up some to all of those activities to validate backported fixes. We do it all the time for Patch Tuesday, but in those patches, they only pass through the minimum number of fixes required to maximize the restoration of productivity/security/revenue/etc. because every additional fix adds additional complexity and additional risk.
So from our little team working hard to make developers happy, we virtually never make the cut for servicing. We're sorry, but we hope you can understand. It's just the reality of the situation to say "nope" when people ask for a backport. In our team's ideal world, you would all be running the latest console bits everywhere every time we make a change. But that's just not how it is today.
@@ -189,7 +189,7 @@ _guest speaker @zadjii-msft_
I think there might be a bit of a misunderstanding here - there are two different kinds of applications we're talking about here:
* shell applications, like `cmd.exe`, `powershell`, `zsh`, etc. These are text-only applications that emit streams of characters. They don't care at all about how they're eventually rendered to the user. These are also sometimes referred to as "commandline client" applications.
* terminal applications, like the Windows Terminal, gnome-terminal, xterm, iterm2, hyper. These are graphical applications that can be used to render the output of commandline clients.
* terminal applications, like the Windows Terminal, gnome-terminal, xterm, iterm2, hyper. These are graphical applications that can be used to render the output of commandline clients.
On Windows, if you just run `cmd.exe` directly, the OS will create an instance of `conhost.exe` as the _terminal_ for `cmd.exe`. The same thing happens for `powershell.exe`, the system will create a new conhost window for any client that's not already connected to a terminal of some sort. This has lead to an enormous amount of confusion for people thinking that a conhost window is actually a "`cmd` window". `cmd` can't have a window, it's just a commandline application. Its window is always some other terminal.

View File

@@ -31,12 +31,12 @@ Prerequisites:
1. Right click the machine name in the `Device Manager` list and choose `Launch T-Shell`. You can also use `Connect via Console` to get a "remote desktop"-like session to the KVM port on the VM.
1. In T-shell, use `testd Microsoft.Console.TestLab.Desktop.testlist` or a command of that format with a different TESTLIST or TESTMD name from our project (see the [UniversalTest.md] documentation). The `testd` utility will automatically resolve the build/branch/flavor information, dig through the build shares for the matching TESTLIST/TESTMD metadata, and attempt to deploy all relevant packages and dependencies on the device. When it's successful, it will move onto running all the tests and giving you the results. On conclusion, the test results should pop up in the web browser or the `Hubble - Log Viewer` tool provided by the Engineering Systems team.
If some of the above things do not work, go to [https://osgwiki.com] and type them into the Search bar. For instance, if T-Shell isn't found or working, you can find out where to get it or download it on `OSGWiki`. The same goes for the other commands besides `testd` to use in T-shell and more information on what `Hubble` or `Nebula` are.
If some of the above things do not work, go to [https://osgwiki.com] and type them into the Search bar. For instance, if T-Shell isn't found or working, you can find out where to get it or download it on `OSGWiki`. The same goes for the other commands besides `testd` to use in T-shell and more information on what `Hubble` or `Nebula` are.
Presumably now you have a failure. Or a success. You can attempt to spelunk the logs in `Hubble` and you might come to a conclusion. Or you can move onto debugging directly.
Now that you've relied on `testd` to get everything deployed and orchestrated and run once on the device, you can use `execd` to run things again or to run a smaller subset of things on the remote device through `T-Shell`.
Now that you've relied on `testd` to get everything deployed and orchestrated and run once on the device, you can use `execd` to run things again or to run a smaller subset of things on the remote device through `T-Shell`.
By default, in the `Universal Test` world, everything will be deployed onto the remote machine at `C:\data\test\bin`. In T-Shell, use `cdd C:\data\test\bin` to change to that directory and then `execd te.exe Microsoft.Console.Host.FeatureTests.dll /name:*TestReadFileEcho*` to run just one specific test. Of course you should substitute the file name and test name parameters as makes sense. And of course you can find out more about `cdd` and `execd` on the `T-shell` page of `OSGWiki`.
By default, in the `Universal Test` world, everything will be deployed onto the remote machine at `C:\data\test\bin`. In T-Shell, use `cdd C:\data\test\bin` to change to that directory and then `execd te.exe Microsoft.Console.Host.FeatureTests.dll /name:*TestReadFileEcho*` to run just one specific test. Of course, you should substitute the file name and test name parameters as makes sense. And of course you can find out more about `cdd` and `execd` on the `T-shell` page of `OSGWiki`.
Fortunately, running things through `T-shell` in this fashion is exactly the same way that the testlab orchestrates the tests. If you still don't get good data this way, you can use the `Connect via Console` mechanism way above to try to run things under `WinDBG` or the `Visual Studio Remote Debugger` manually on the machine to get them to repro or under the debugger more completely.

View File

@@ -7,7 +7,7 @@ This repository uses [git submodules](https://git-scm.com/book/en/v2/Git-Tools-S
git submodule update --init --recursive
```
OpenConsole.sln may be built from within Visual Studio or from the command-line using a set of convenience scripts & tools in the **/tools** directory:
OpenConsole.slnx may be built from within Visual Studio or from the command-line using a set of convenience scripts & tools in the **/tools** directory:
When using Visual Studio, be sure to set up the path for code formatting. To download the required clang-format.exe file, follow one of the building instructions below and run:
```powershell
@@ -103,7 +103,7 @@ If you want to use .nupkg files instead of the downloaded Nuget package, you can
The Terminal is bundled as an `.msix`, which is produced by the `CascadiaPackage.wapproj` project. To build that project from the commandline, you can run the following (from a window you've already run `tools\razzle.cmd` in):
```cmd
"%msbuild%" "%OPENCON%\OpenConsole.sln" /p:Configuration=%_LAST_BUILD_CONF% /p:Platform=%ARCH% /p:AppxSymbolPackageEnabled=false /t:Terminal\CascadiaPackage /m
"%msbuild%" "%OPENCON%\OpenConsole.slnx" /p:Configuration=%_LAST_BUILD_CONF% /p:Platform=%ARCH% /p:AppxSymbolPackageEnabled=false /t:Terminal\CascadiaPackage /m
```
This takes quite some time, and only generates an `msix`. It does not install the msix. To deploy the package:

View File

@@ -32,13 +32,21 @@
]
},
"DynamicProfileSource": {
"enum": [
"Windows.Terminal.Wsl",
"Windows.Terminal.Azure",
"Windows.Terminal.PowershellCore",
"Windows.Terminal.VisualStudio"
],
"type": "string"
"type": "string",
"anyOf": [
{
"type": "string"
},
{
"enum": [
"Microsoft.WSL",
"Windows.Terminal.Wsl",
"Windows.Terminal.Azure",
"Windows.Terminal.PowershellCore",
"Windows.Terminal.VisualStudio"
]
}
]
},
"BellStyle": {
"oneOf": [
@@ -461,6 +469,7 @@
"switchSelectionEndpoint",
"switchToTab",
"tabSearch",
"terminalChat",
"toggleAlwaysOnTop",
"toggleBlockSelection",
"toggleFocusMode",
@@ -2294,8 +2303,15 @@
"additionalProperties": false,
"properties": {
"id": {
"description": "The ID of the command this keybinding should execute.",
"type": "string"
"description": "The ID of the command this keybinding should execute (or null to disable a default).",
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"keys": {
"description": "Defines the key combinations used to call the command. It must be composed of...\n -any number of modifiers (ctrl/alt/shift)\n -a non-modifier key",
@@ -2368,6 +2384,16 @@
"description": "When set to true, the terminal will focus the pane on mouse hover.",
"type": "boolean"
},
"experimental.scrollToZoom": {
"default": true,
"description": "When set to true, holding the Ctrl key while scrolling will increase or decrease the terminal font size.",
"type": "boolean"
},
"experimental.scrollToChangeOpacity": {
"default": true,
"description": "When set to true, holding the Ctrl and Shift keys while scrolling will change the window opacity.",
"type": "boolean"
},
"compatibility.allowHeadless": {
"default": false,
"description": "When set to true, Windows Terminal will run in the background. This allows globalSummon and quakeMode actions to work even when no windows are open.",
@@ -2441,6 +2467,7 @@
"description": "Direct3D 11 provides a more performant and feature-rich experience, whereas Direct2D is more stable. The default option \"Automatic\" will pick the API that best fits your graphics hardware. If you experience significant issues, consider using Direct2D.",
"type": "string",
"enum": [
"automatic",
"direct2d",
"direct3d11"
]
@@ -2454,8 +2481,9 @@
"type": "boolean"
},
"experimental.input.forceVT": {
"description": "Force the terminal to use the legacy input encoding. Certain keys in some applications may stop working when enabling this setting.",
"type": "boolean"
"type": "boolean",
"description": "[Deprecated] Replaced with the \"compatibility.input.forceVT\" profile setting.",
"deprecated": true
},
"experimental.useBackgroundImageForWindow": {
"default": false,
@@ -2502,14 +2530,14 @@
"type": "string"
},
"rowsToScroll": {
"default": "system",
"description": "This parameter once allowed you to override the systemwide \"choose how many lines to scroll at one time\" setting. It no longer does so. However, you can customize the number of lines to scroll in \"scrollUp\" and \"scrollDown\" bindings.",
"maximum": 999,
"minimum": 0,
"type": [
"integer",
"string"
],
"description": "[Deprecated] This setting no longer has any effect. However, you can customize the number of lines to scroll using the \"rowsToScroll\" argument on the \"scrollUp\" and \"scrollDown\" actions.",
"default": "system",
"minimum": 0,
"maximum": 999,
"deprecated": true
},
"minimizeToNotificationArea": {
@@ -2555,9 +2583,12 @@
"$ref": "#/$defs/NewTabMenu"
},
"language": {
"default": "",
"type": [
"string",
"null"
],
"description": "Sets an override for the app's preferred language, expressed as a BCP-47 language tag like en-US.",
"type": "string"
"default": null
},
"theme": {
"default": "dark",
@@ -2621,19 +2652,19 @@
"type": "boolean"
},
"useTabSwitcher": {
"description": "[Deprecated] Replaced with the \"tabSwitcherMode\" setting.",
"default": true,
"description": "Deprecated. Please use \"tabSwitcherMode\" instead.",
"oneOf": [
{
"type": "boolean"
},
{
"type": "string",
"enum": [
"mru",
"inOrder",
"disabled"
],
"type": "string"
]
}
],
"deprecated": true
@@ -2690,12 +2721,12 @@
"type": "object",
"properties": {
"acrylicOpacity": {
"type": "number",
"description": "[Deprecated] Replaced with the \"opacity\" setting.",
"default": 0.5,
"description": "[deprecated] Please use `opacity` instead.",
"deprecated": true,
"maximum": 1,
"minimum": 0,
"type": "number"
"maximum": 1,
"deprecated": true
},
"antialiasingMode": {
"default": "grayscale",
@@ -2721,6 +2752,11 @@
"description": "When set to true, when opening a new tab or pane it will get reloaded environment variables.",
"type": "boolean"
},
"compatibility.input.forceVT": {
"default": false,
"description": "Force the terminal to use the legacy input encoding. Certain keys in some applications may stop working when enabling this setting.",
"type": "boolean"
},
"compatibility.allowDECRQCRA": {
"default": false,
"description": "When set to true, the terminal will support the DECRQCRA (Request Checksum of Rectangular Area) escape sequence.",
@@ -2892,24 +2928,29 @@
"type": "boolean"
},
"experimental.autoMarkPrompts": {
"deprecated": true,
"description": "This has been replaced by autoMarkPrompts in 1.21",
"type": "boolean"
"type": "boolean",
"description": "[Deprecated] Replaced with the \"autoMarkPrompts\" setting.",
"deprecated": true
},
"experimental.retroTerminalEffect": {
"description": "When set to true, enable retro terminal effects. This is an experimental feature, and its continued existence is not guaranteed.",
"type": "boolean"
},
"experimental.showMarksOnScrollbar": {
"deprecated": true,
"description": "This has been replaced by showMarksOnScrollbar in 1.21",
"type": "boolean"
"type": "boolean",
"description": "[Deprecated] Replaced with the \"showMarksOnScrollbar\" setting.",
"deprecated": true
},
"showMarksOnScrollbar": {
"default": false,
"description": "When set to true, marks added to the buffer via the addMark action will appear on the scrollbar.",
"type": "boolean"
},
"experimental.rainbowSuggestions": {
"type": "boolean",
"description": "Enables displaying command suggestions in the terminal in RGB (all the colors of the rainbow!).",
"default": false
},
"experimental.rightClickContextMenu": {
"default": false,
"description": "When true, right-click shows a context menu; otherwise, it pastes from the clipboard or copies selection.",
@@ -2925,23 +2966,29 @@
"type": "string"
},
"fontFace": {
"default": "Cascadia Mono",
"description": "[deprecated] Define 'face' within the 'font' object instead.",
"type": "string",
"description": "[Deprecated] Replaced with the \"face\" setting within the \"font\" object.",
"default": "Cascadia Mono",
"deprecated": true
},
"fontSize": {
"default": 12,
"description": "[deprecated] Define 'size' within the 'font' object instead.",
"minimum": 1,
"type": "number",
"description": "[Deprecated] Replaced with the \"size\" setting within the \"font\" object.",
"default": 12,
"minimum": 1,
"deprecated": true
},
"fontWeight": {
"description": "[Deprecated] Replaced with the \"weight\" setting within the \"font\" object.",
"default": "normal",
"description": "[deprecated] Define 'weight' within the 'font' object instead.",
"oneOf": [
{
"type": "integer",
"minimum": 100,
"maximum": 990
},
{
"type": "string",
"enum": [
"thin",
"extra-light",
@@ -2954,13 +3001,7 @@
"extra-bold",
"black",
"extra-black"
],
"type": "string"
},
{
"maximum": 990,
"minimum": 100,
"type": "integer"
]
}
],
"deprecated": true
@@ -3071,7 +3112,10 @@
},
"answerbackMessage": {
"description": "The response that is sent when an ENQ control character is received.",
"type": "string"
"type": [
"string",
"null"
]
},
"source": {
"description": "Stores the name of the profile generator that originated this profile.",
@@ -3114,12 +3158,13 @@
},
"pathTranslationStyle": {
"default": "none",
"description": "Controls how file paths are transformed when they are dragged and dropped on the terminal. Possible values are \"none\", \"wsl\", \"cygwin\" and \"msys2\".",
"description": "Controls how file paths are transformed when they are dragged and dropped on the terminal. Possible values are \"none\", \"wsl\", \"cygwin\", \"msys2\" and \"mingw\".",
"enum": [
"none",
"wsl",
"cygwin",
"msys2"
"msys2",
"mingw"
],
"type": "string"
}

View File

@@ -6,7 +6,7 @@ When creating a new DLL, it was really helpful to reference an existing DLL's `.
- [ ] Make sure to `<Import>` our pre props at the _top_ of the vcxproj, and our post props at the _bottom_ of the vcxproj.
```
<!-- pre props -->
<!-- pre props -->
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
@@ -35,7 +35,7 @@ DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
- _Note_: If your new library eventually rolls up as a reference to our Centennial Packaging project `CascadiaPackage`, you don't have to worry about manually adding your definitions to the `AppXManifest.xml` because the Centennial Packaging project automatically enumerates the reference tree of WinMDs and stitches that information into the `AppXManifest.xml`. However, if your new project does _not_ ultimately roll up to a packaging project that will automatically put the references into `AppXManifest`, you will have to add them in manually.
### Troubleshooting
- If you hit an error that looks like this:
- If you hit an error that looks like this:
```
X found processing metadata file ..\blah1\Microsoft.UI.Xaml.winmd, type already exists in file ..\blah\NewDLLProject\Microsoft.UI.Xaml.winmd.
```
@@ -51,4 +51,4 @@ DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
- If you hit a `Class not Registered` error, this might be because a class isn't getting registered in the app manifest. You can go check `src/cascadia/CascadiaPackage/bin/x64/Debug/AppX/AppXManifest.xml` to see if there exist entries to the classes of your newly created DLL. If the references aren't there, double check that you've added `<ProjectReference>` blocks to both `WindowsTerminal.vcxproj` and `TerminalApp.vcxproj`.
- If you hit an extremely vague error along the lines of `Error in the DLL`, and right before that line you notice that your new DLL is loaded and unloaded right after each other, double check that your new DLL's definitions show up in the `AppXManifest.xml` file. If your new DLL is included as a reference to a project that rolls up to `CascadiaPackage`, double check that you've created a `.def` file for the project. Otherwise if your new project _does not_ roll up to a package that populates the `AppXManifest` references for you, you'll have to add those references yourself.
- If you hit an extremely vague error along the lines of `Error in the DLL`, and right before that line you notice that your new DLL is loaded and unloaded right after each other, double check that your new DLL's definitions show up in the `AppXManifest.xml` file. If your new DLL is included as a reference to a project that rolls up to `CascadiaPackage`, double check that you've created a `.def` file for the project. Otherwise, if your new project _does not_ roll up to a package that populates the `AppXManifest` references for you, you'll have to add those references yourself.

Some files were not shown because too many files have changed in this diff Show More