Merge remote-tracking branch 'origin/main' into dev/duhowett/fhl-2024/asciicast-recorder

# Conflicts:
#	src/cascadia/TerminalApp/TerminalAppLib.vcxproj
#	src/cascadia/TerminalApp/TerminalPage.cpp
This commit is contained in:
Dustin L. Howett 2025-09-15 14:43:40 -05:00
commit 41f8ca3e5b
736 changed files with 25874 additions and 12020 deletions

View File

@ -0,0 +1,43 @@
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:
description: Install PowerShell 7
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.PowerShell
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: vsPackage
directives:
description: Install Visual Studio 2022 Enterprise (any edition is OK)
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.VisualStudio.2022.Enterprise
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads from project .vsconfig file
allowPrerelease: true
# Requires elevation for the get and set operations
securityContext: elevated
settings:
productId: Microsoft.VisualStudio.Product.Enterprise
channelId: VisualStudio.17.Release
vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig'
configurationVersion: 0.2.0

View File

@ -0,0 +1,43 @@
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:
description: Install PowerShell 7
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.PowerShell
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: vsPackage
directives:
description: Install Visual Studio 2022 Professional (any edition is OK)
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.VisualStudio.2022.Professional
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads from project .vsconfig file
allowPrerelease: true
# Requires elevation for the get and set operations
securityContext: elevated
settings:
productId: Microsoft.VisualStudio.Product.Professional
channelId: VisualStudio.17.Release
vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig'
configurationVersion: 0.2.0

View File

@ -0,0 +1,43 @@
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
# Reference: https://github.com/microsoft/terminal/blob/main/README.md#developer-guidance
properties:
resources:
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
# Requires elevation for the set operation
securityContext: elevated
settings:
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: powershell
directives:
description: Install PowerShell 7
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.PowerShell
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: vsPackage
directives:
description: Install Visual Studio 2022 Community (any edition is OK)
# Requires elevation for the set operation (i.e., installation)
securityContext: elevated
settings:
id: Microsoft.VisualStudio.2022.Community
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads from project .vsconfig file
allowPrerelease: true
# Requires elevation for the get and set operations
securityContext: elevated
settings:
productId: Microsoft.VisualStudio.Product.Community
channelId: VisualStudio.17.Release
vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig'
configurationVersion: 0.2.0

View File

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

View File

@ -11,33 +11,25 @@ colorbrewer
commandlines commandlines
consvc consvc
copyable copyable
dalet
dcs dcs
deselection deselection
dialytika
diffing diffing
Dimidium Dimidium
dje
downsides downsides
dze
dzhe
Emacspeak Emacspeak
Fitt Fitt
FTCS
flac flac
FTCS
gantt gantt
gfm gfm
ghe ghe
gje
godbolt godbolt
hstrings hstrings
hyperlinking hyperlinking
hyperlinks hyperlinks
Kbds Kbds
kje
libfuzzer libfuzzer
liga liga
lje
Llast Llast
Lmid Lmid
locl locl
@ -49,10 +41,8 @@ minimalistic
mkmk mkmk
mnt mnt
mru mru
nje
notwrapped notwrapped
NTMTo NTMTo
ogonek
overlined overlined
perlw perlw
postmodern postmodern
@ -60,8 +50,8 @@ Powerline
ptys ptys
pwn pwn
pwshw pwshw
QOL
qof qof
QOL
qps qps
quickfix quickfix
rclt rclt
@ -74,17 +64,13 @@ rlig
rubyw rubyw
runtimes runtimes
servicebus servicebus
shcha
similaritytolerance
slnt slnt
stakeholders stakeholders
subpage subpage
sustainability sustainability
sxn sxn
TLDR Tencent
tonos
toolset toolset
tshe
UEFI UEFI
uiatextrange uiatextrange
und und
@ -92,8 +78,5 @@ vsdevcmd
westus westus
workarounds workarounds
WSLs WSLs
wtconfig
XBox XBox
YBox YBox
yeru
zhe

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,3 +1,6 @@
# Repeated letters
\b([a-z])\g{-1}{2,}\b
# marker to ignore all code on line # marker to ignore all code on line
^.*/\* #no-spell-check-line \*/.*$ ^.*/\* #no-spell-check-line \*/.*$
# marker to ignore all code on line # marker to ignore all code on line
@ -7,6 +10,9 @@
# cspell inline # cspell inline
^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b ^.*\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 # patch hunk comments
^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .* ^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .*
# git index header # 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 # file permissions
['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s] ['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s]
# css fonts
\bfont(?:-family|):[^;}]+
# css url wrappings # css url wrappings
\burl\([^)]+\) \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 # https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|] (?:\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 urls
mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,} mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
@ -69,6 +75,8 @@ magnet:[?=:\w]+
# Amazon # Amazon
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|) \bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
# AWS ARN
arn:aws:[-/:\w]+
# AWS S3 # AWS S3
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]* \b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
# AWS execute-api # AWS execute-api
@ -95,6 +103,8 @@ vpc-\w+
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]* \bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
# Google APIs # Google APIs
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+ \bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
# Google Artifact Registry
\.pkg\.dev(?:/[-\w]+)+(?::[-\w]+|)
# Google Storage # Google Storage
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|) \b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
# Google Calendar # Google Calendar
@ -130,6 +140,8 @@ themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+ \bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
# Google Colab Research Drive # Google Colab Research Drive
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]* \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) # GitHub SHAs (api)
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b \bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
@ -168,6 +180,12 @@ GHSA(?:-[0-9a-z]{4}){3}
# GitLab commits # GitLab commits
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b \bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
# #includes
^\s*#include\s*(?:<.*?>|".*?")
# #pragma lib
^\s*#pragma comment\(lib, ".*?"\)
# binance # binance
accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* 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]+ \bmedium\.com/@?[^/\s"]+/[-\w]+
# microsoft # 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 # powerbi
\bapp\.powerbi\.com/reportEmbed/[^"' ]* \bapp\.powerbi\.com/reportEmbed/[^"' ]*
# vs devops # vs devops
@ -394,7 +412,7 @@ ipfs://[0-9a-zA-Z]{3,}
\bgetopts\s+(?:"[^"]+"|'[^']+') \bgetopts\s+(?:"[^"]+"|'[^']+')
# ANSI color codes # 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 # URL escaped characters
%[0-9A-F][A-F](?=[A-Za-z]) %[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) # pki (base64)
LS0tLS1CRUdJT.* LS0tLS1CRUdJT.*
# C# includes
^\s*using [^;]+;
# uuid: # uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b \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: # 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
integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} 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\[[^\]]+\]=.* Name\[[^\]]+\]=.*
# IServiceProvider / isAThing # 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 # crypt
(['"])\$2[ayb]\$.{56}\g{-1} (['"])\$2[ayb]\$.{56}\g{-1}
@ -466,17 +491,14 @@ Name\[[^\]]+\]=.*
# machine learning (?) # machine learning (?)
\b(?i)ml(?=[a-z]{2,}) \b(?i)ml(?=[a-z]{2,})
# python
\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,})
# scrypt / argon # scrypt / argon
\$(?:scrypt|argon\d+[di]*)\$\S+ \$(?:scrypt|argon\d+[di]*)\$\S+
# go.sum # go.sum
\bh1:\S+ \bh1:\S+
# scala imports # imports
^import (?:[\w.]|\{\w*?(?:,\s*(?:\w*|\*))+\})+ ^import\s+(?:(?:static|type)\s+|)(?:[\w.]|\{\s*\w*?(?:,\s*(?:\w*|\*))+\s*\})+
# scala modules # scala modules
("[^"]+"\s*%%?\s*){2,3}"[^"]+" ("[^"]+"\s*%%?\s*){2,3}"[^"]+"
@ -485,7 +507,7 @@ Name\[[^\]]+\]=.*
image: [-\w./:@]+ image: [-\w./:@]+
# Docker images # 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 # `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 \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 # The `(?=.*?")` suffix should limit the false positives rate
# printf # printf
#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"]) #%(?:(?:(?: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 # Alternative printf
# %s # %s
%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"]) %(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"])
@ -524,7 +547,7 @@ content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1}
# javascript replace regex # javascript replace regex
\.replace\(/[^/\s"]{3,}/[gim]*\s*, \.replace\(/[^/\s"]{3,}/[gim]*\s*,
# assign regex # 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 # perl regex test
[!=]~ (?:/.*/|m\{.*?\}|m<.*?>|m([|!/@#,;']).*?\g{-1}) [!=]~ (?:/.*/|m\{.*?\}|m<.*?>|m([|!/@#,;']).*?\g{-1})
@ -538,7 +561,7 @@ perl(?:\s+-[a-zA-Z]\w*)+
(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\() (?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
# Go regular expressions # Go regular expressions
regexp?\.MustCompile\(`[^`]*`\) regexp?\.MustCompile\((?:`[^`]*`|".*"|'.*')\)
# regex choice # regex choice
\(\?:[^)]+\|[^)]+\) \(\?:[^)]+\|[^)]+\)
@ -586,7 +609,7 @@ urn:shemas-jetbrains-com
# xcode # xcode
# xcodeproject scenes # 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 # xcode api botches
customObjectInstantitationMethod customObjectInstantitationMethod
@ -601,14 +624,17 @@ PrependWithABINamepsace
\.fa-[-a-z0-9]+ \.fa-[-a-z0-9]+
# bearer auth # bearer auth
(['"])[Bb]ear[e][r] .*?\g{-1} (['"])[Bb]ear[e][r] .{3,}?\g{-1}
# bearer auth # 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 # basic auth
(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1} (['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1}
# basic auth
: [Bb]asic [-a-zA-Z=;:/0-9+.]{3,}
# base64 encoded content # base64 encoded content
#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1} #([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1}
# base64 encoded content in xml/sgml # base64 encoded content in xml/sgml
@ -620,6 +646,9 @@ PrependWithABINamepsace
# base64 encoded pkcs # base64 encoded pkcs
#\bMII[-a-zA-Z=;:/0-9+]+ #\bMII[-a-zA-Z=;:/0-9+]+
# uuencoded
#[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]{40,}
# DNS rr data # DNS rr data
#(?:\d+\s+){3}(?:[-+/=.\w]{2,}\s*){1,2} #(?:\d+\s+){3}(?:[-+/=.\w]{2,}\s*){1,2}
@ -630,7 +659,7 @@ PrependWithABINamepsace
\bnumer\b(?=.*denom) \bnumer\b(?=.*denom)
# Time Zones # 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 # linux kernel info
^(?:bugs|flags|Features)\s+:.* ^(?:bugs|flags|Features)\s+:.*
@ -676,11 +705,17 @@ TeX/AMS
"varsIgnorePattern": ".+" "varsIgnorePattern": ".+"
# nolint # nolint
nolint:\w+ nolint:\s*[\w,]+
# Windows short paths # Windows short paths
[/\\][^/\\]{5,6}~\d{1,2}(?=[/\\]) [/\\][^/\\]{5,6}~\d{1,2}(?=[/\\])
# Windows Resources with accelerators
\b[A-Z]&[a-z]+\b(?!;)
# signed off by
(?i)Signed-off-by: .*
# cygwin paths # cygwin paths
/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+ /cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+
@ -715,29 +750,29 @@ W/"[^"]+"
# Compiler flags (Unix, Java/Scala) # Compiler flags (Unix, Java/Scala)
# Use if you have things like `-Pdocker` and want to treat them as `docker` # 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) # Compiler flags (Windows / PowerShell)
# This is a subset of the more general compiler flags pattern. # This is a subset of the more general compiler flags pattern.
# It avoids matching `-Path` to prevent it from being treated as `ath` # 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) # Compiler flags (linker)
,-B ,-B
# libraries # libraries
#(?:\b|_)lib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z]) #(?:\b|_)[Ll]ib(?: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
# iSCSI iqn (approximate regex) # iSCSI iqn (approximate regex)
\biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b \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 # curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* \b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
# set arguments # 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 # tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ \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... # 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/UTF8-torture-test\.txt$
^doc/reference/windows-terminal-logo\.ans$ ^doc/reference/windows-terminal-logo\.ans$
^NOTICE.md ^NOTICE.md
^oss/ ^oss/.*?/
^samples/PixelShaders/Screenshots/ ^samples/PixelShaders/Screenshots/
^src/cascadia/TerminalSettingsEditor/SegoeFluentIconList.h$ ^src/cascadia/TerminalSettingsEditor/SegoeFluentIconList.h$
^src/interactivity/onecore/BgfxEngine\. ^src/interactivity/onecore/BgfxEngine\.
@ -121,8 +121,8 @@ Resources/(?!en)
^tools/ReleaseEngineering/ServicingPipeline\.ps1$ ^tools/ReleaseEngineering/ServicingPipeline\.ps1$
^XamlStyler\.json$ ^XamlStyler\.json$
^\.github/actions/spelling/ ^\.github/actions/spelling/
^\.github/workflows/spelling\d*\.yml$
^\.vsconfig$ ^\.vsconfig$
^\Q.github/workflows/spelling.yml\E$
^\Qbuild/config/release.gdnbaselines\E$ ^\Qbuild/config/release.gdnbaselines\E$
^\Qdep/WinAppDriver/EULA.rtf\E$ ^\Qdep/WinAppDriver/EULA.rtf\E$
^\Qdoc/reference/windows-terminal-logo.ans\E$ ^\Qdoc/reference/windows-terminal-logo.ans\E$
@ -133,3 +133,4 @@ Resources/(?!en)
^\Qsrc/terminal/parser/ft_fuzzwrapper/run.bat\E$ ^\Qsrc/terminal/parser/ft_fuzzwrapper/run.bat\E$
^\Qsrc/tools/lnkd/lnkd.bat\E$ ^\Qsrc/tools/lnkd/lnkd.bat\E$
^\Qsrc/tools/pixels/pixels.bat\E$ ^\Qsrc/tools/pixels/pixels.bat\E$
^\Qsrc/cascadia/ut_app/FzfTests.cpp\E$

View File

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

View File

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

View File

@ -8,6 +8,24 @@
# you might not want to check in code where you skip all the other tests. # you might not want to check in code where you skip all the other tests.
#\bfit\( #\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` # Should be `HH:MM:SS`
\bHH:SS:MM\b \bHH:SS:MM\b
@ -24,18 +42,52 @@
# Should be `a priori` or `and prior` # Should be `a priori` or `and prior`
(?i)(?<!posteriori)\sand priori\s (?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` # Should only be one of `a`, `an`, or `the`
\b(?:(?:an?|the)\s+){2,}\b \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` # Should be `anymore`
\bany more[,.] \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 `'` # 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` # Should be `briefcase`
\bbrief-case\b \bbrief-case\b
# Should be `by far` or `far and away`
\bby far and away\b
# Should be `can, not only ..., ... also...` # Should be `can, not only ..., ... also...`
\bcan not only.*can also\b \bcan not only.*can also\b
@ -46,7 +98,10 @@
# > In formal writing and where contractions are frowned upon, use `cannot`. # > 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.` # > 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. # - 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 # Do not use `(click) here` links
# For more information, see: # For more information, see:
@ -56,9 +111,27 @@
# * https://heyoka.medium.com/dont-use-click-here-f32f445d1021 # * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\() (?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` # Should be `equals` to `is equal to`
\bequals to\b \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` # Should be `GitHub`
(?<![&*.]|// |\b(?:from|import|type) )\bGithub\b(?![{()]) (?<![&*.]|// |\b(?:from|import|type) )\bGithub\b(?![{()])
@ -84,11 +157,14 @@
# Should be `RabbitMQ` # Should be `RabbitMQ`
\bRabbitmq\b \bRabbitmq\b
# Should be `TensorFlow`
\bTensorflow\b
# Should be `TypeScript` # Should be `TypeScript`
\bTypescript\b \bTypescript\b
# Should be `another` # Should be `another`
\ban[- ]other\b \ban[- ]other(?!-)\b
# Should be `case-(in)sensitive` # Should be `case-(in)sensitive`
\bcase (?:in|)sensitive\b \bcase (?:in|)sensitive\b
@ -108,11 +184,14 @@
# Should be `here-in`, `the`, `them`, `this`, `these` or reworded in some other way # Should be `here-in`, `the`, `them`, `this`, `these` or reworded in some other way
\bthe here(?:\.|,| (?!and|defined)) \bthe here(?:\.|,| (?!and|defined))
# Should be `going to bed` or `going to a bad`
\bgoing to bad(?!-)\b
# Should be `greater than` # Should be `greater than`
#\bhigher than\b #\bhigher than\b
# Should be `ID` # Should be `ID` (unless it's a flag/property)
#\bId\b #(?<![-\.])\bId\b(?![(])
# Should be `in front of` # Should be `in front of`
\bin from of\b \bin from of\b
@ -125,6 +204,12 @@
# Should be `use` # Should be `use`
\sin used by\b \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` # Should be `is obsolete`
\bis obsolescent\b \bis obsolescent\b
@ -132,7 +217,10 @@
\bits['] \bits[']
# Should be `its` # 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` # Should be `log in`
\blogin to the \blogin to the
@ -140,6 +228,25 @@
# Should be `long-standing` # Should be `long-standing`
\blong standing\b \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` # Should probably be a person named `Nick` or the abbreviation `NIC`
\bNic\b \bNic\b
@ -153,7 +260,7 @@
\bperform it's\b \bperform it's\b
# Should be `opt-in` # Should be `opt-in`
#(?<!\scan|for)(?<!\sif)\sopt in\s #(?<!\scan|for)(?<!\smust)(?<!\sif)\sopt in\s
# Should be `less than` # Should be `less than`
\bless then\b \bless then\b
@ -170,24 +277,77 @@
# Should be `on the other hand` # Should be `on the other hand`
\b(?i)on another hand\b \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. # Most people only have two hands. Reword.
\b(?i)on the third hand\b \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` # Should be `otherwise`
\bother[- ]wise\b \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)` # Should be `or (more|less)`
\bore (?:more|less)\b \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` # Should be `rather than`
\brather then\b \brather then\b
# Should be `Red Hat`
\bRed[Hh]at\b
# Should be `regardless, ...` or `regardless of (whether)` # Should be `regardless, ...` or `regardless of (whether)`
\b[Rr]egardless if you\b \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` # Should be `no longer needed`
\bno more needed\b(?! than\b) \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` # Should be `did not exist`
\bwere not existent\b \bwere not existent\b
@ -197,9 +357,18 @@
# Should be `nonexistent` # Should be `nonexistent`
\b[Nn]o[nt][- ]existent\b \b[Nn]o[nt][- ]existent\b
# Should be `our`
\bspending out time\b
# Should be `@brief` / `@details` / `@param` / `@return` / `@retval` # Should be `@brief` / `@details` / `@param` / `@return` / `@retval`
(?:^\s*|(?:\*|//|/*)\s+`)[\\@](?:breif|(?:detail|detials)|(?:params(?!\.)|prama?)|ret(?:uns?)|retvl)\b (?:^\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` # Should be `preexisting`
[Pp]re[- ]existing [Pp]re[- ]existing
@ -224,14 +393,27 @@
# Should be `reentrant` # Should be `reentrant`
[Rr]e[- ]entrant [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` # Should be `strong suit`
\b(?:my|his|her|their) strong suite\b \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` # Should be `understand`
\bunder stand\b \bunder stand\b
# Should be `URI` or `uri` unless it refers to a person named `Uri` # Should be `URI` or `uri` unless it refers to a person named `Uri` (or a flag)
#(?<!\.)\bUri\b(?![(]) #(?<![-\.])\bUri\b(?![(])
# Should be `it uses is` # Should be `it uses is`
/\bis uses is\b/ /\bis uses is\b/
@ -245,12 +427,36 @@
# Should be `where` # Should be `where`
\bwere they are\b \bwere they are\b
# Should be `why`
, way(?= is [^.]*\?)
# should be `vCenter` # should be `vCenter`
\bV[Cc]enter\b \bV[Cc]enter\b
# Should be `VM` # Should be `VM`
\bVm\b \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` # Should be `workarounds`
#\bwork[- ]arounds\b #\bwork[- ]arounds\b
@ -270,12 +476,12 @@
\b(?:coarse|fine) grained\b \b(?:coarse|fine) grained\b
# Homoglyph (Cyrillic) should be `A`/`B`/`C`/`E`/`H`/`I`/`I`/`J`/`K`/`M`/`O`/`P`/`S`/`T`/`Y` # 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]|$)) (?<=[A-Z]{2})[АВСЕНІӀЈКМОРЅТУ]|[АВСЕНІӀЈКМОРЅТУ](?=[A-Z]+(?:\b|[a-z]+)|[a-z]+(?:[^a-z]|$))
# Homoglyph (Cyrillic) should be `a`/`b`/`e` # Homoglyph (Cyrillic) should be `a`/`b`/`c`/`e`/`o`/`p`/`x`/`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-Za-z]{2,})|(?<=[A-Za-z]{2})[аве]|(?<=[A-Za-z])[аве](?=[A-Za-z]) [авсеорху](?=[A-Za-z]{2,})|(?<=[A-Za-z]{2})[авсеорху]|(?<=[A-Za-z])[авсеорху](?=[A-Za-z])
# Should be `neither/nor` -- or reword # Should be `neither/nor` -- or reword
#(?!<do )\bnot\b([^.?!"/(](?!neither|,.*?,))+\bnor\b #(?!<do )\bnot\b([^.?!"/(](?!neither|,.*?,))+\bnor\b

View File

@ -1,5 +1,35 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns # 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 # Direct 2D/3D
\b(?:d[23]d(?=[a-z])|D[23]D(?=[A-Z])) \b(?:d[23]d(?=[a-z])|D[23]D(?=[A-Z]))
@ -9,39 +39,127 @@
# Windows Resources with accelerators # Windows Resources with accelerators
\b[A-Z]&[a-z]+\b(?!;) \b[A-Z]&[a-z]+\b(?!;)
# bug in check-spelling v0.0.24 (fixed later)
\bok'd\b
# Automatically suggested patterns # 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 # C network byte conversions
(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\() (?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
# hit-count: 59 file-count: 36 # hit-count: 53 file-count: 10
# IServiceProvider / isAThing # ANSI color codes
(?:\b|_)(?:(?:ns|)I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b)) (?:\\(?: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 # Markdown anchor links
\(#\S*?[a-zA-Z]\S*?\) \(#\S*?[a-zA-Z]\S*?\)
# hit-count: 5 file-count: 5 # hit-count: 14 file-count: 8
# libraries # hex runs
(?:\b|_)lib(?:re(?=office)|)(?!era[lt]|ero|ert(?:ies|y)|rar(?:i(?:an|es)|y))(?=[a-z]) \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 # hit-count: 3 file-count: 3
# File extensions # mailto urls
\*\.[+\w]+, 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 # hit-count: 2 file-count: 1
# kubernetes crd patterns # kubernetes crd patterns
^\s*pattern: .*$ ^\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 # hit-count: 1 file-count: 1
# curl arguments # curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* \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+ https?://\S+
[Pp]ublicKeyToken="?[0-9a-fA-F]{16}"? [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) (?:[{"]|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" # ARM NEON intrinsics like "vsubq_u16"
\bv\w+_[fsu](?:8|16|32|64)\b \bv\w+_[fsu](?:8|16|32|64)\b
# color floating numbers
0x[0-9a-f](?:\.[0-9a-f]*p)[-+]\d+f
# AppX package # AppX package
_\d[0-9a-z]{12}['\.] _\d[0-9a-z]{12}['\.]
# string test # string test
equals_insensitive_ascii\("\w+", "\w+" 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 # hit-count: 47 file-count: 11
# special cased printf markers # special cased printf markers
\\r\\n(?=[a-z])|(?<!\\)\\[nrt](?=[a-z]{2,})(?=.*(?:<.*['"`]|"(?:[;,]|\);)$|\) \+$)) \\r\\n(?=[a-z])|(?<!\\)\\[nrt](?=[a-z]{2,})(?=.*(?:<.*['"`]|"(?:[;,]|\);)$|\) \+$))
@ -97,84 +202,6 @@ equals_insensitive_ascii\("\w+", "\w+"
# ConsoleArgumentsTests # ConsoleArgumentsTests
--headless\\.*?" --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` # Questionably acceptable forms of `in to`
# Personally, I prefer `log into`, but people object # Personally, I prefer `log into`, but people object
@ -183,6 +210,10 @@ mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# to opt in # to opt in
\bto opt in\b \bto opt in\b
# pass(ed|ing) in
\bpass(?:ed|ing) in\b
# acceptable duplicates # acceptable duplicates
# ls directory listings # ls directory listings
[-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+ [-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+

View File

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

View File

@ -8,7 +8,7 @@ where:
configuration: configuration:
resourceManagementConfiguration: resourceManagementConfiguration:
scheduledSearches: scheduledSearches:
- description: - description: '"Needs-Author-Feedback" and "No-Recent-Activity" issues are closed after 3 days of inactivity'
frequencies: frequencies:
- hourly: - hourly:
hour: 3 hour: 3
@ -23,7 +23,7 @@ configuration:
days: 3 days: 3
actions: actions:
- closeIssue - closeIssue
- description: - description: '"Needs-Author-Feedback" issues are labelled "No-Recent-Activity" after 4 days of inactivity'
frequencies: frequencies:
- hourly: - hourly:
hour: 3 hour: 3
@ -41,7 +41,7 @@ configuration:
label: No-Recent-Activity label: No-Recent-Activity
- addReply: - 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**. 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: frequencies:
- hourly: - hourly:
hour: 3 hour: 3
@ -56,7 +56,7 @@ configuration:
- addReply: - 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. 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 - closeIssue
- description: - description: '"Needs-Author-Feedback" and "No-Recent-Activity" PRs are closed after 7 days of inactivity'
frequencies: frequencies:
- hourly: - hourly:
hour: 3 hour: 3
@ -71,7 +71,7 @@ configuration:
days: 7 days: 7
actions: actions:
- closeIssue - closeIssue
- description: - description: Add "No-Recent-Activity" label to PRs with "Needs-Author-Feedback" label after 7 days of inactivity
frequencies: frequencies:
- hourly: - hourly:
hour: 3 hour: 3
@ -90,7 +90,8 @@ configuration:
- addReply: - 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**. 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: eventResponderTasks:
- if: - description: Add "Needs-Triage" to new issues
if:
- payloadType: Issues - payloadType: Issues
- or: - or:
- and: - and:
@ -102,8 +103,8 @@ configuration:
then: then:
- addLabel: - addLabel:
label: Needs-Triage label: Needs-Triage
description: - description: Replace "Needs-Author-Feedback" with "Needs-Attention" when author comments
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- isAction: - isAction:
action: Created action: Created
@ -116,8 +117,8 @@ configuration:
label: Needs-Attention label: Needs-Attention
- removeLabel: - removeLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Remove "No-Recent-Activity" when closing an issue
- if: if:
- payloadType: Issues - payloadType: Issues
- not: - not:
isAction: isAction:
@ -127,16 +128,16 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: No-Recent-Activity label: No-Recent-Activity
description: - description: Remove "No-Recent-Activity" when someone comments on an issue
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- hasLabel: - hasLabel:
label: No-Recent-Activity label: No-Recent-Activity
then: then:
- removeLabel: - removeLabel:
label: No-Recent-Activity label: No-Recent-Activity
description: - description: Add "Needs-Author-Feedback" when changes are requested on a PR
- if: if:
- payloadType: Pull_Request_Review - payloadType: Pull_Request_Review
- isAction: - isAction:
action: Submitted action: Submitted
@ -145,8 +146,8 @@ configuration:
then: then:
- addLabel: - addLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Remove "Needs-Author-Feedback" when author performs activity on their PR
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
- isActivitySender: - isActivitySender:
issueAuthor: True issueAuthor: True
@ -158,8 +159,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Remove "Needs-Author-Feedback" when author comments on their issue
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- isActivitySender: - isActivitySender:
issueAuthor: True issueAuthor: True
@ -168,8 +169,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Remove "Needs-Author-Feedback" when the author reviews the PR
- if: if:
- payloadType: Pull_Request_Review - payloadType: Pull_Request_Review
- isActivitySender: - isActivitySender:
issueAuthor: True issueAuthor: True
@ -178,8 +179,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Remove "No-Recent-Activity"" when activity occurs on the PR (aside from closing it)
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
- not: - not:
isAction: isAction:
@ -189,39 +190,39 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: No-Recent-Activity label: No-Recent-Activity
description: - description: Remove "No-Recent-Activity" when someone comments on the PR
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- hasLabel: - hasLabel:
label: No-Recent-Activity label: No-Recent-Activity
then: then:
- removeLabel: - removeLabel:
label: No-Recent-Activity label: No-Recent-Activity
description: - description: Remove "No-Recent-Activity" when someone reviews the PR
- if: if:
- payloadType: Pull_Request_Review - payloadType: Pull_Request_Review
- hasLabel: - hasLabel:
label: No-Recent-Activity label: No-Recent-Activity
then: then:
- removeLabel: - removeLabel:
label: No-Recent-Activity label: No-Recent-Activity
description: - description: Enable auto-merge on PRs with the "AutoMerge" label
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
- hasLabel: - hasLabel:
label: AutoMerge label: AutoMerge
then: then:
- enableAutoMerge: - enableAutoMerge:
mergeMethod: Squash mergeMethod: Squash
description: - description: Disable auto-merge on PRs when the "AutoMerge" label is removed
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
- labelRemoved: - labelRemoved:
label: AutoMerge label: AutoMerge
then: then:
- disableAutoMerge - disableAutoMerge
description: - description: Add "Needs-Tag-Fix" label to issues without an Area, Issue, or Product label
- if: if:
- payloadType: Issues - payloadType: Issues
- or: - or:
- and: - and:
@ -238,15 +239,45 @@ configuration:
- not: - not:
hasLabel: hasLabel:
label: Area-Accessibility label: Area-Accessibility
- not:
hasLabel:
label: Area-AtlasEngine
- not:
hasLabel:
label: Area-AzureShell
- not: - not:
hasLabel: hasLabel:
label: Area-Build 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: - not:
hasLabel: hasLabel:
label: Area-Extensibility label: Area-Extensibility
- not: - not:
hasLabel: hasLabel:
label: Area-Fonts label: Area-Fonts
- not:
hasLabel:
label: Area-GroupPolicy
- not:
hasLabel:
label: Area-i18n
- not: - not:
hasLabel: hasLabel:
label: Area-Input label: Area-Input
@ -256,21 +287,45 @@ configuration:
- not: - not:
hasLabel: hasLabel:
label: Area-Interop label: Area-Interop
- not:
hasLabel:
label: Area-Localization
- not: - not:
hasLabel: hasLabel:
label: Area-Output label: Area-Output
- not: - not:
hasLabel: hasLabel:
label: Area-Performance label: Area-Performance
- not:
hasLabel:
label: Area-Portable
- not:
hasLabel:
label: Area-Quality
- not:
hasLabel:
label: Area-Remoting
- not: - not:
hasLabel: hasLabel:
label: Area-Rendering label: Area-Rendering
- not:
hasLabel:
label: Area-Schema
- not: - not:
hasLabel: hasLabel:
label: Area-Server label: Area-Server
- not: - not:
hasLabel: hasLabel:
label: Area-Settings label: Area-Settings
- not:
hasLabel:
label: Area-SettingsUI
- not:
hasLabel:
label: Area-ShellExtension
- not:
hasLabel:
label: Area-Suggestions
- not: - not:
hasLabel: hasLabel:
label: Area-TerminalConnection label: Area-TerminalConnection
@ -279,49 +334,19 @@ configuration:
label: Area-TerminalControl label: Area-TerminalControl
- not: - not:
hasLabel: hasLabel:
label: Area-User Interface label: Area-Theming
- not:
hasLabel:
label: Area-UserInterface
- not: - not:
hasLabel: hasLabel:
label: Area-VT 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: - not:
hasLabel: hasLabel:
label: Area-Windowing label: Area-Windowing
- not: - not:
hasLabel: hasLabel:
label: Area-Theming label: Area-WPFControl
- not:
hasLabel:
label: Area-Localization
- and: - and:
- not: - not:
hasLabel: hasLabel:
@ -408,8 +433,8 @@ configuration:
then: then:
- addLabel: - addLabel:
label: Needs-Tag-Fix label: Needs-Tag-Fix
description: - description: Remove "Needs-Tag-Fix" label when an issue is tagged with an Area, Issue, and Product label
- if: if:
- payloadType: Issues - payloadType: Issues
- and: - and:
- isLabeled - isLabeled
@ -417,66 +442,117 @@ configuration:
label: Needs-Tag-Fix label: Needs-Tag-Fix
- and: - and:
- or: - or:
- hasLabel: - not:
label: Area-Accessibility hasLabel:
- hasLabel: label: Area-Accessibility
label: Area-Build - not:
- hasLabel: hasLabel:
label: Area-Extensibility label: Area-AtlasEngine
- hasLabel: - not:
label: Area-Fonts hasLabel:
- hasLabel: label: Area-AzureShell
label: Area-Input - not:
- hasLabel: hasLabel:
label: Area-Interaction label: Area-Build
- hasLabel: - not:
label: Area-Interop hasLabel:
- hasLabel: label: Area-Chat
label: Area-Output - not:
- hasLabel: hasLabel:
label: Area-Performance label: Area-CmdPal
- hasLabel: - not:
label: Area-Rendering hasLabel:
- hasLabel: label: Area-CodeHealth
label: Area-Server - not:
- hasLabel: hasLabel:
label: Area-Settings label: Area-Commandline
- hasLabel: - not:
label: Area-TerminalConnection hasLabel:
- hasLabel: label: Area-CookedRead
label: Area-TerminalControl - not:
- hasLabel: hasLabel:
label: Area-User Interface label: Area-DefApp
- hasLabel: - not:
label: Area-VT hasLabel:
- hasLabel: label: Area-Extensibility
label: Area-CodeHealth - not:
- hasLabel: hasLabel:
label: Area-Quality label: Area-Fonts
- hasLabel: - not:
label: Area-Schema hasLabel:
- hasLabel: label: Area-GroupPolicy
label: Area-AzureShell - not:
- hasLabel: hasLabel:
label: Area-Commandline label: Area-i18n
- hasLabel: - not:
label: Area-ShellExtension hasLabel:
- hasLabel: label: Area-Input
label: Area-WPFControl - not:
- hasLabel: hasLabel:
label: Area-Settings UI label: Area-Interaction
- hasLabel: - not:
label: Area-DefApp hasLabel:
- hasLabel: label: Area-Interop
label: Area-Localization - not:
- hasLabel: hasLabel:
label: Area-Windowing label: Area-Localization
- hasLabel: - not:
label: Area-Theming hasLabel:
- hasLabel: label: Area-Output
label: Area-AtlasEngine - not:
- hasLabel: hasLabel:
label: Area-CmdPal 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: - or:
- hasLabel: - hasLabel:
label: Issue-Bug label: Issue-Bug
@ -533,14 +609,14 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Tag-Fix label: Needs-Tag-Fix
description: - description: Add "In-PR" label to issues that are referenced in a PR
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
then: then:
- inPrLabel: - inPrLabel:
label: In-PR label: In-PR
description: - description: Remove "Needs-Tag-Fix" label when an issue also has the "Resolution-Duplicate" label
- if: if:
- payloadType: Issues - payloadType: Issues
- hasLabel: - hasLabel:
label: Needs-Tag-Fix label: Needs-Tag-Fix
@ -549,8 +625,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Tag-Fix label: Needs-Tag-Fix
description: - description: Close issues that are opened and have the template title
- if: if:
- payloadType: Issues - payloadType: Issues
- or: - or:
- titleContains: - titleContains:
@ -576,8 +652,8 @@ configuration:
label: Needs-Author-Feedback label: Needs-Author-Feedback
- addReply: - 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. 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: - description: Close issues that are opened and have no body
- if: if:
- payloadType: Issues - payloadType: Issues
- or: - or:
- isAction: - isAction:
@ -595,8 +671,8 @@ configuration:
label: Needs-Author-Feedback label: Needs-Author-Feedback
- addReply: - 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. " 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: - description: Request a review from the team when a PR is labeled "Needs-Second"
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
- isLabeled - isLabeled
- hasLabel: - hasLabel:
@ -613,8 +689,8 @@ configuration:
reviewer: dhowett reviewer: dhowett
- requestReview: - requestReview:
reviewer: lhecker reviewer: lhecker
description: - description: Remove "Needs-Second" label when a PR is reviewed
- if: if:
- payloadType: Pull_Request_Review - payloadType: Pull_Request_Review
- not: isOpen - not: isOpen
- hasLabel: - hasLabel:
@ -622,8 +698,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Needs-Second label: Needs-Second
description: - description: Remove "Help-Wanted" label from issues that are in a PR
- if: if:
- payloadType: Issues - payloadType: Issues
- hasLabel: - hasLabel:
label: In-PR label: In-PR
@ -633,8 +709,8 @@ configuration:
then: then:
- removeLabel: - removeLabel:
label: Help-Wanted label: Help-Wanted
description: - description: Comments with "/dup", "/dupe", or "/duplicate" will close the issue as a duplicate and remove "Needs-" labels
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- commentContains: - commentContains:
pattern: '\/dup(licate|e)?(\s+of)?\s+\#[\d]+' pattern: '\/dup(licate|e)?(\s+of)?\s+\#[\d]+'
@ -662,8 +738,8 @@ configuration:
label: Needs-Repro label: Needs-Repro
- removeLabel: - removeLabel:
label: Needs-Second label: Needs-Second
description: - description: Comments with "/feedback" will direct people to Feedback Hub
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- commentContains: - commentContains:
pattern: '\/feedback' 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) 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: - addLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description: - description: Comments clean the email reply
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
then: then:
- cleanEmailReply - cleanEmailReply
description: - description: Sync labels when a PR event occurs
- if: if:
- payloadType: Pull_Request - payloadType: Pull_Request
then: then:
- labelSync: - labelSync:
@ -701,8 +777,8 @@ configuration:
pattern: Severity- pattern: Severity-
- labelSync: - labelSync:
pattern: Impact- pattern: Impact-
description: - description: Comments with "/dup", "/dupe", or "/duplicate" targeting another repo will close the issue as a duplicate and remove "Needs-" labels
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- commentContains: - commentContains:
pattern: '\/dup(licate|e)?(\s+of)?\s+https' pattern: '\/dup(licate|e)?(\s+of)?\s+https'
@ -730,8 +806,8 @@ configuration:
label: Needs-Repro label: Needs-Repro
- removeLabel: - removeLabel:
label: Needs-Second label: Needs-Second
description: - description: Comments with "/?" will replace the "Needs-Attention" label with "Needs-Author-Feedback"
- if: if:
- payloadType: Issue_Comment - payloadType: Issue_Comment
- commentContains: - commentContains:
pattern: /? pattern: /?
@ -746,6 +822,5 @@ configuration:
label: Needs-Attention label: Needs-Attention
- addLabel: - addLabel:
label: Needs-Author-Feedback label: Needs-Author-Feedback
description:
onFailure: onFailure:
onSuccess: onSuccess:

View File

@ -93,7 +93,7 @@ jobs:
steps: steps:
- name: check-spelling - name: check-spelling
id: spelling id: spelling
uses: check-spelling/check-spelling@v0.0.24 uses: check-spelling/check-spelling@v0.0.25
with: with:
suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }} suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }}
checkout: true checkout: true
@ -104,7 +104,7 @@ jobs:
report-timing: 1 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 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 }} 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: "" check_extra_dictionaries: ""
dictionary_source_prefixes: > dictionary_source_prefixes: >
{ {
@ -114,34 +114,33 @@ jobs:
cspell:software-terms/softwareTerms.txt cspell:software-terms/softwareTerms.txt
cspell:cpp/stdlib-cpp.txt cspell:cpp/stdlib-cpp.txt
cspell:cpp/stdlib-c.txt cspell:cpp/stdlib-c.txt
cspell:lorem-ipsum/dictionary.txt cspell:python/python/python-lib.txt
cspell:php/php.txt cspell:php/php.txt
cspell:node/node.txt
cspell:dart/dart.txt
cspell:filetypes/filetypes.txt cspell:filetypes/filetypes.txt
cspell:java/java.txt cspell:java/java.txt
cspell:node/node.txt cspell:css/css.txt
cspell:golang/go.txt cspell:dotnet/dotnet.txt
cspell:java/java-terms.txt
cspell:mnemonics/mnemonics.txt
cspell:npm/npm.txt cspell:npm/npm.txt
cspell:fullstack/fullstack.txt cspell:fullstack/fullstack.txt
cspell:python/python/python-lib.txt cspell:java/java-terms.txt
cspell:dotnet/dotnet.txt cspell:r/r.txt
cspell:dart/dart.txt cspell:golang/go.txt
cspell:aws/aws.txt
cspell:python/common/extra.txt
cspell:css/css.txt
cspell:cpp/stdlib-cmath.txt cspell:cpp/stdlib-cmath.txt
cspell:typescript/typescript.txt cspell:typescript/typescript.txt
cspell:html/html.txt
cspell:cpp/compiler-msvc.txt cspell:cpp/compiler-msvc.txt
cspell:django/django.txt cspell:django/django.txt
cspell:html/html.txt cspell:aws/aws.txt
cspell:cpp/lang-keywords.txt cspell:python/common/extra.txt
cspell:cpp/ecosystem.txt cspell:cpp/ecosystem.txt
cspell:r/r.txt cspell:cpp/lang-keywords.txt
cspell:cpp/compiler-clang-attributes.txt
cspell:powershell/powershell.txt
cspell:csharp/csharp.txt cspell:csharp/csharp.txt
cspell:cpp/compiler-clang-attributes.txt
cspell:python/python/python.txt cspell:python/python/python.txt
cspell:mnemonics/mnemonics.txt
cspell:powershell/powershell.txt
comment-push: comment-push:
name: Report (Push) name: Report (Push)
@ -154,7 +153,7 @@ jobs:
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps: steps:
- name: comment - name: comment
uses: check-spelling/check-spelling@v0.0.24 uses: check-spelling/check-spelling@v0.0.25
with: with:
checkout: true checkout: true
spell_check_this: microsoft/terminal@main spell_check_this: microsoft/terminal@main
@ -172,7 +171,7 @@ jobs:
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request') if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps: steps:
- name: comment - name: comment
uses: check-spelling/check-spelling@v0.0.24 uses: check-spelling/check-spelling@v0.0.25
with: with:
checkout: true checkout: true
spell_check_this: microsoft/terminal@main spell_check_this: microsoft/terminal@main
@ -198,7 +197,7 @@ jobs:
cancel-in-progress: false cancel-in-progress: false
steps: steps:
- name: apply spelling updates - name: apply spelling updates
uses: check-spelling/check-spelling@v0.0.24 uses: check-spelling/check-spelling@v0.0.25
with: with:
experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }}
checkout: true checkout: true

View File

@ -1,4 +1,4 @@
name: Publish to Winget name: Publish to WinGet
on: on:
release: release:
@ -6,6 +6,9 @@ on:
env: env:
REGEX: 'Microsoft\.WindowsTerminal(?:Preview)?_([\d.]+)_8wekyb3d8bbwe\.msixbundle$' 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: jobs:
publish: publish:
@ -21,4 +24,4 @@ jobs:
$wingetPackage = "Microsoft.WindowsTerminal${{ github.event.release.prerelease && '.Preview' || '' }}" $wingetPackage = "Microsoft.WindowsTerminal${{ github.event.release.prerelease && '.Preview' || '' }}"
& curl.exe -JLO https://aka.ms/wingetcreate/latest & 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.VisualStudio.Component.AppInsights.Tools",
"Microsoft.Net.Component.4.8.TargetingPack", "Microsoft.Net.Component.4.8.TargetingPack",
"Microsoft.VisualStudio.Component.DiagnosticTools", "Microsoft.VisualStudio.Component.DiagnosticTools",
"Microsoft.NetCore.Component.Runtime.6.0",
"Microsoft.VisualStudio.Component.ClassDesigner", "Microsoft.VisualStudio.Component.ClassDesigner",
"Microsoft.VisualStudio.Component.GraphDocument", "Microsoft.VisualStudio.Component.GraphDocument",
"Microsoft.VisualStudio.Component.CodeMap", "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) **Source**: [https://github.com/commonmark/cmark](https://github.com/commonmark/cmark)
### License ### License
```
Copyright (c) 2014, John MacFarlane Copyright (c) 2014, John MacFarlane
All rights reserved. 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 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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 # Microsoft Open Source

View File

@ -4,7 +4,7 @@
<clear /> <clear />
<!-- Dependencies that we can turn on to force override for testing purposes before uploading. --> <!-- Dependencies that we can turn on to force override for testing purposes before uploading. -->
<!--<add key="Static Package Dependencies" value="dep\packages" />--> <!--<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> </packageSources>
<disabledPackageSources> <disabledPackageSources>
<clear /> <clear />

File diff suppressed because it is too large Load Diff

1070
OpenConsole.slnx Normal file

File diff suppressed because it is too large Load Diff

View File

@ -340,6 +340,19 @@ If you would like to ask a question that you feel doesn't warrant an issue
## Prerequisites ## Prerequisites
You can configure your environment to build Terminal in one of two ways:
### Using WinGet configuration file
After cloning the repository, you can use a [WinGet configuration file](https://learn.microsoft.com/en-us/windows/package-manager/configuration/#use-a-winget-configuration-file-to-configure-your-machine)
to set up your environment. The [default configuration file](.config/configuration.winget) installs Visual Studio 2022 Community & rest of the required tools. There are two other variants of the configuration file available in the [.config](.config) directory for Enterprise & Professional editions of Visual Studio 2022. To run the default configuration file, you can either double-click the file from explorer or run the following command:
```powershell
winget configure .config\configuration.winget
```
### Manual configuration
* You must be running Windows 10 2004 (build >= 10.0.19041.0) or later to run * You must be running Windows 10 2004 (build >= 10.0.19041.0) or later to run
Windows Terminal Windows Terminal
* You must [enable Developer Mode in the Windows Settings * You must [enable Developer Mode in the Windows Settings
@ -362,7 +375,7 @@ If you would like to ask a question that you feel doesn't warrant an issue
## Building the Code ## 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: using a set of convenience scripts & tools in the **/tools** directory:
### Building in PowerShell ### Building in PowerShell

View File

@ -28,7 +28,7 @@ namespace HelixTestHelpers
public List<string> Screenshots { get; private set; } public List<string> Screenshots { get; private set; }
public List<TestResult> RerunResults { 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 // 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 // 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 // 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. // more granular fashion than just a binary pass/fail result, we should do that.
// //
[DataContract] [DataContract]
internal class JsonSerializableTestResults internal class JsonSerializableTestResults
{ {
[DataMember] [DataMember]
internal string blobPrefix; internal string blobPrefix;
[DataMember] [DataMember]
internal string blobSuffix; internal string blobSuffix;
[DataMember] [DataMember]
internal string[] errors; internal string[] errors;
[DataMember] [DataMember]
internal JsonSerializableTestResult[] results; internal JsonSerializableTestResult[] results;
} }
[DataContract] [DataContract]
internal class JsonSerializableTestResult internal class JsonSerializableTestResult
{ {
[DataMember] [DataMember]
internal string outcome; internal string outcome;
[DataMember] [DataMember]
internal int duration; internal int duration;
[DataMember(EmitDefaultValue = false)] [DataMember(EmitDefaultValue = false)]
internal string log; internal string log;
[DataMember(EmitDefaultValue = false)] [DataMember(EmitDefaultValue = false)]
internal string[] screenshots; internal string[] screenshots;
[DataMember(EmitDefaultValue = false)] [DataMember(EmitDefaultValue = false)]
internal int errorIndex; internal int errorIndex;
} }
public class TestPass public class TestPass
{ {
public TimeSpan TestPassExecutionTime { get; set; } public TimeSpan TestPassExecutionTime { get; set; }
public List<TestResult> TestResults { get; set; } public List<TestResult> TestResults { get; set; }
public static TestPass ParseTestWttFile(string fileName, bool cleanupFailuresAreRegressions, bool truncateTestNames) public static TestPass ParseTestWttFile(string fileName, bool cleanupFailuresAreRegressions, bool truncateTestNames)
{ {
using (var stream = File.OpenRead(fileName)) using (var stream = File.OpenRead(fileName))
@ -174,7 +174,7 @@ namespace HelixTestHelpers
if (testsExecuting == 1) if (testsExecuting == 1)
{ {
string testName = element.Attribute("Title").Value; string testName = element.Attribute("Title").Value;
if (truncateTestNames) if (truncateTestNames)
{ {
const string xamlNativePrefix = "Windows::UI::Xaml::Tests::"; 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 // 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) if (inTestCleanup)
{ {
currentResult.CleanupPassed = false; currentResult.CleanupPassed = false;
@ -292,7 +292,7 @@ namespace HelixTestHelpers
foreach(var screenshot in screenshots) foreach(var screenshot in screenshots)
{ {
string fileNameSuffix = string.Empty; string fileNameSuffix = string.Empty;
if (fileName.Contains("_rerun_multiple")) if (fileName.Contains("_rerun_multiple"))
{ {
fileNameSuffix = "_rerun_multiple"; fileNameSuffix = "_rerun_multiple";
@ -301,7 +301,7 @@ namespace HelixTestHelpers
{ {
fileNameSuffix = "_rerun"; fileNameSuffix = "_rerun";
} }
currentResult.Screenshots.Add(screenshot.Replace(".jpg", fileNameSuffix + ".jpg")); 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); testPassStopTime = Int64.Parse(doc.Root.Descendants("WexTraceInfo").Last().Attribute("TimeStamp").Value);
var testPassTime = TimeSpan.FromSeconds((double)(testPassStopTime - testPassStartTime) / frequency); var testPassTime = TimeSpan.FromSeconds((double)(testPassStopTime - testPassStartTime) / frequency);
foreach (TestResult testResult in testResults) foreach (TestResult testResult in testResults)
{ {
if (testResult.Details != null) if (testResult.Details != null)
@ -331,13 +331,13 @@ namespace HelixTestHelpers
return testpass; return testpass;
} }
} }
public static TestPass ParseTestWttFileWithReruns(string fileName, string singleRerunFileName, string multipleRerunFileName, bool cleanupFailuresAreRegressions, bool truncateTestNames) public static TestPass ParseTestWttFileWithReruns(string fileName, string singleRerunFileName, string multipleRerunFileName, bool cleanupFailuresAreRegressions, bool truncateTestNames)
{ {
TestPass testPass = ParseTestWttFile(fileName, cleanupFailuresAreRegressions, truncateTestNames); TestPass testPass = ParseTestWttFile(fileName, cleanupFailuresAreRegressions, truncateTestNames);
TestPass singleRerunTestPass = File.Exists(singleRerunFileName) ? ParseTestWttFile(singleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null; TestPass singleRerunTestPass = File.Exists(singleRerunFileName) ? ParseTestWttFile(singleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null;
TestPass multipleRerunTestPass = File.Exists(multipleRerunFileName) ? ParseTestWttFile(multipleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null; TestPass multipleRerunTestPass = File.Exists(multipleRerunFileName) ? ParseTestWttFile(multipleRerunFileName, cleanupFailuresAreRegressions, truncateTestNames) : null;
List<TestResult> rerunTestResults = new List<TestResult>(); List<TestResult> rerunTestResults = new List<TestResult>();
if (singleRerunTestPass != null) if (singleRerunTestPass != null)
@ -377,9 +377,9 @@ namespace HelixTestHelpers
public static void OutputFailedTestQuery(string wttInputPath) public static void OutputFailedTestQuery(string wttInputPath)
{ {
var testPass = TestPass.ParseTestWttFile(wttInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false); var testPass = TestPass.ParseTestWttFile(wttInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false);
List<string> failedTestNames = new List<string>(); List<string> failedTestNames = new List<string>();
foreach (var result in testPass.TestResults) foreach (var result in testPass.TestResults)
{ {
if (!result.Passed) if (!result.Passed)
@ -387,23 +387,23 @@ namespace HelixTestHelpers
failedTestNames.Add(result.Name); failedTestNames.Add(result.Name);
} }
} }
if (failedTestNames.Count > 0) if (failedTestNames.Count > 0)
{ {
string failedTestSelectQuery = "(@Name='"; string failedTestSelectQuery = "(@Name='";
for (int i = 0; i < failedTestNames.Count; i++) for (int i = 0; i < failedTestNames.Count; i++)
{ {
failedTestSelectQuery += failedTestNames[i]; failedTestSelectQuery += failedTestNames[i];
if (i < failedTestNames.Count - 1) if (i < failedTestNames.Count - 1)
{ {
failedTestSelectQuery += "' or @Name='"; failedTestSelectQuery += "' or @Name='";
} }
} }
failedTestSelectQuery += "')"; failedTestSelectQuery += "')";
Console.WriteLine(failedTestSelectQuery); Console.WriteLine(failedTestSelectQuery);
} }
else else
@ -418,7 +418,7 @@ namespace HelixTestHelpers
private string testNamePrefix; private string testNamePrefix;
private string helixResultsContainerUri; private string helixResultsContainerUri;
private string helixResultsContainerRsas; private string helixResultsContainerRsas;
public TestResultParser(string testNamePrefix, string helixResultsContainerUri, string helixResultsContainerRsas) public TestResultParser(string testNamePrefix, string helixResultsContainerUri, string helixResultsContainerRsas)
{ {
this.testNamePrefix = testNamePrefix; this.testNamePrefix = testNamePrefix;
@ -430,7 +430,7 @@ namespace HelixTestHelpers
{ {
Dictionary<string, string> subResultsJsonByMethod = new Dictionary<string, string>(); Dictionary<string, string> subResultsJsonByMethod = new Dictionary<string, string>();
TestPass testPass = TestPass.ParseTestWttFileWithReruns(wttInputPath, wttSingleRerunInputPath, wttMultipleRerunInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false); TestPass testPass = TestPass.ParseTestWttFileWithReruns(wttInputPath, wttSingleRerunInputPath, wttMultipleRerunInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false);
foreach (var result in testPass.TestResults) foreach (var result in testPass.TestResults)
{ {
var methodName = result.Name.Substring(result.Name.LastIndexOf('.') + 1); var methodName = result.Name.Substring(result.Name.LastIndexOf('.') + 1);
@ -488,7 +488,7 @@ namespace HelixTestHelpers
int resultCount = results.Count; int resultCount = results.Count;
int passedCount = results.Where(r => r.Passed).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". // 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 // 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. // 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")); assembly.SetAttributeValue("run-date", DateTime.Now.ToString("yyyy-MM-dd"));
// This doesn't need to be completely accurate since it's not exposed anywhere. // 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. // now this is fine.
assembly.SetAttributeValue("run-time", (DateTime.Now - testPass.TestPassExecutionTime).ToString("hh:mm:ss")); assembly.SetAttributeValue("run-time", (DateTime.Now - testPass.TestPassExecutionTime).ToString("hh:mm:ss"));
assembly.SetAttributeValue("total", resultCount); assembly.SetAttributeValue("total", resultCount);
assembly.SetAttributeValue("passed", passedCount); assembly.SetAttributeValue("passed", passedCount);
assembly.SetAttributeValue("failed", failedCount); assembly.SetAttributeValue("failed", failedCount);
assembly.SetAttributeValue("skipped", skippedCount); assembly.SetAttributeValue("skipped", skippedCount);
assembly.SetAttributeValue("time", (int)testPass.TestPassExecutionTime.TotalSeconds); assembly.SetAttributeValue("time", (int)testPass.TestPassExecutionTime.TotalSeconds);
assembly.SetAttributeValue("errors", 0); assembly.SetAttributeValue("errors", 0);
root.Add(assembly); root.Add(assembly);
@ -537,9 +537,9 @@ namespace HelixTestHelpers
test.SetAttributeValue("method", methodName); test.SetAttributeValue("method", methodName);
test.SetAttributeValue("time", result.ExecutionTime.TotalSeconds); test.SetAttributeValue("time", result.ExecutionTime.TotalSeconds);
string resultString = string.Empty; string resultString = string.Empty;
if (result.Passed && !result.Skipped) if (result.Passed && !result.Skipped)
{ {
resultString = "Pass"; resultString = "Pass";
@ -554,7 +554,7 @@ namespace HelixTestHelpers
resultString = "Fail"; resultString = "Fail";
} }
if (!result.Passed) if (!result.Passed)
{ {
if (result.Skipped) if (result.Skipped)
@ -579,36 +579,36 @@ namespace HelixTestHelpers
File.WriteAllText(xunitOutputPath, root.ToString()); File.WriteAllText(xunitOutputPath, root.ToString());
} }
private JsonSerializableTestResult ConvertToSerializableResult(TestResult rerunResult, string[] uniqueErrors) private JsonSerializableTestResult ConvertToSerializableResult(TestResult rerunResult, string[] uniqueErrors)
{ {
var serializableResult = new JsonSerializableTestResult(); var serializableResult = new JsonSerializableTestResult();
serializableResult.outcome = rerunResult.Passed ? "Passed" : "Failed"; serializableResult.outcome = rerunResult.Passed ? "Passed" : "Failed";
serializableResult.duration = (int)Math.Round(rerunResult.ExecutionTime.TotalMilliseconds); serializableResult.duration = (int)Math.Round(rerunResult.ExecutionTime.TotalMilliseconds);
if (!rerunResult.Passed) if (!rerunResult.Passed)
{ {
serializableResult.log = Path.GetFileName(rerunResult.SourceWttFile); serializableResult.log = Path.GetFileName(rerunResult.SourceWttFile);
if (rerunResult.Screenshots.Any()) if (rerunResult.Screenshots.Any())
{ {
List<string> screenshots = new List<string>(); List<string> screenshots = new List<string>();
foreach (var screenshot in rerunResult.Screenshots) foreach (var screenshot in rerunResult.Screenshots)
{ {
screenshots.Add(Path.GetFileName(screenshot)); screenshots.Add(Path.GetFileName(screenshot));
} }
serializableResult.screenshots = screenshots.ToArray(); 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 // 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 // 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. // serializing this property when it has the default value of 0.
serializableResult.errorIndex = Array.IndexOf(uniqueErrors, rerunResult.Details) + 1; serializableResult.errorIndex = Array.IndexOf(uniqueErrors, rerunResult.Details) + 1;
} }
return serializableResult; return serializableResult;
} }
@ -617,7 +617,7 @@ namespace HelixTestHelpers
var filename = Path.GetFileName(filePath); var filename = Path.GetFileName(filePath);
return string.Format("{0}/{1}{2}", helixResultsContainerUri, filename, helixResultsContainerRsas); return string.Format("{0}/{1}{2}", helixResultsContainerUri, filename, helixResultsContainerRsas);
} }
private string GetTestNameSeparator(string testname) private string GetTestNameSeparator(string testname)
{ {
var separatorString = "."; var separatorString = ".";

View File

@ -56,11 +56,11 @@ Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme der Com
<ReleaseNotes> <ReleaseNotes>
Version __VERSION_NUMBER__ 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"! Eine komplett neue Erweiterungsseite, die anzeigt, was in Ihrem Terminal installiert ist
- Wir haben die Fensterverwaltung zurückgesetzt, um die Zuverlässigkeit zu verbessern; Melden Sie alle Fehler, die mit dem alias "wt.exe" auftreten. Die Befehlspalette wird jetzt sowohl in Ihrer Muttersprache als auch auf Englisch angezeigt
- Profile zeigen jetzt ein Symbol an, wenn sie ausgeblendet wurden oder auf programme verweisen, die deinstalliert wurden. 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> </ReleaseNotes>
<ScreenshotCaptions> <ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform --> <!-- 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"> <ReleaseNotes _locID="App_ReleaseNotes">
<!-- _locComment_text="{MaxLength=1500} {Locked=__VERSION_NUMBER__}{Locked=wt.exe} App Release Note" -->Version __VERSION_NUMBER__ <!-- _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! - A whole new Extensions page that shows what has been installed into your Terminal
- We have rearchitected window management to improve reliability; please file any bugs you encounter with the wt.exe alias - Command Palette now shows up in your native language as well as English
- Profiles now show an icon if they've been hidden or refer to programs which were uninstalled. - 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. Please see our GitHub releases page for additional details.
</ReleaseNotes> </ReleaseNotes>

View File

@ -56,11 +56,11 @@ Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Pa
<ReleaseNotes> <ReleaseNotes>
Versión __VERSION_NUMBER__ 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. - Página Extensiones completamente nueva que muestra lo que se ha instalado en tu terminal
- Tenemos administración de ventanas rearchitecdas para mejorar la confiabilidad; envíe los errores que encuentre con el alias de wt.exe. - La paleta de comandos ahora se muestra en tu idioma nativo, así como en inglés
- Ahora, los perfiles muestran un icono si se han ocultado o hacen referencia a programas que se han desinstalado. - 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> </ReleaseNotes>
<ScreenshotCaptions> <ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform --> <!-- 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> </DevStudio>
<ReleaseNotes> <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 ! - Une toute nouvelle page Extensions qui montre ce qui a été installé dans votre terminal
- Nous avons réarchitialiser la gestion des fenêtres pour améliorer la fiabilité ; entrez les bogues rencontrés avec lalias wt.exe - La palette de commandes saffiche désormais dans votre langue native, ainsi quen anglais
- 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. - 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> </ReleaseNotes>
<ScreenshotCaptions> <ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform --> <!-- 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> </DevStudio>
<ReleaseNotes> <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. - Una pagina Estensioni completamente nuova che mostra ciò che è stato installato nel terminale
- È stata riattivata la gestione delle finestre per migliorare l'affidabilità; inserire eventuali bug riscontrati con l'alias wt.exe - Il riquadro comandi ora viene visualizzato nella tua lingua di origine oltre che in inglese
- I profili ora mostrano un'icona se sono stati nascosti o fanno riferimento ai programmi che sono stati disinstallati. - 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> </ReleaseNotes>
<ScreenshotCaptions> <ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform --> <!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

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

View File

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

View File

@ -54,13 +54,13 @@ Este é um projeto de código aberto e a participação da comunidade é bem-vin
</DevStudio> </DevStudio>
<ReleaseNotes> <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! Uma nova página de Extensões que mostra o que foi instalado no seu Terminal
- Temos o gerenciamento de janelas rearmado para melhorar a confiabilidade; registre todos os bugs encontrados com o wt.exe alias A Paleta de Comandos agora aparece no seu idioma nativo, além do inglês
- Os perfis agora mostram um ícone se eles foram ocultos ou se referem a programas que foram desinstalados. 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> </ReleaseNotes>
<ScreenshotCaptions> <ScreenshotCaptions>
<!-- Valid length: 200 character limit, up to 9 elements per platform --> <!-- Valid length: 200 character limit, up to 9 elements per platform -->

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -56,12 +56,9 @@ Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme an der
<ReleaseNotes> <ReleaseNotes>
Version __VERSION_NUMBER__ Version __VERSION_NUMBER__
Wir haben umgeschrieben, wie Konsolenanwendungen im Terminal gehostet werden! Melden Sie alle auftretenden Fehler. 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“!
Terminal unterstützt jetzt Sixels! Wir haben die Fensterverwaltung umgestaltet, um die Zuverlässigkeit zu verbessern. Melden Sie alle Fehler, die beim alias „wt.exe“ auftreten
Sie können jetzt einen angedockten Bereich öffnen, der Ausschnitte von Befehlen enthält, die Sie gespeichert haben, um sie später zu verwenden. Profile zeigen jetzt ein Symbol an, wenn sie ausgeblendet wurden oder auf Programme verweisen, die deinstalliert wurden.
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.
Weitere Informationen finden Sie auf unserer GitHub-Releaseseite. Weitere Informationen finden Sie auf unserer GitHub-Releaseseite.
</ReleaseNotes> </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" --> <!-- _locComment_text="{MaxLength=255} App DevStudio" -->
</DevStudio> </DevStudio>
<ReleaseNotes _locID="App_ReleaseNotes"> <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. - 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!
- Terminal now supports Sixels! - We have rearchitected window management to improve reliability; please file any bugs you encounter with the wt.exe alias
- You can now open a docked panel containing snippets of commands you have saved to use later - Profiles now show an icon if they've been hidden or refer to programs which were uninstalled.
- 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.
Please see our GitHub releases page for additional details. Please see our GitHub releases page for additional details.
</ReleaseNotes> </ReleaseNotes>

View File

@ -56,12 +56,9 @@ Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Pa
<ReleaseNotes> <ReleaseNotes>
Versión __VERSION_NUMBER__ Versión __VERSION_NUMBER__
- Hemos reescrito cómo se hospedan las aplicaciones de consola en Terminal. Informe de los errores que encuentre. - 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.
- Terminal ahora admite síxeles. - Hemos reestructurado la gestión de ventanas para mejorar la fiabilidad; informe de cualquier error que encuentre con el alias wt.exe
- Ahora puede abrir un panel acoplado que contenga fragmentos de comandos que haya guardado para usarlos más adelante - Ahora, los perfiles muestran un icono si han sido ocultados o hacen referencia a programas que han sido desinstalados.
- 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.
Consulte la página de versiones de GitHub para más información. Consulte la página de versiones de GitHub para más información.
</ReleaseNotes> </ReleaseNotes>

View File

@ -56,12 +56,9 @@ Il sagit dun projet open source et nous encourageons la participation à l
<ReleaseNotes> <ReleaseNotes>
Version __VERSION_NUMBER__ 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. - 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.
Terminal prend désormais en charge Sixels ! - 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.
Vous pouvez maintenant ouvrir un panneau ancré contenant des extraits de commandes que vous avez enregistrées pour les utiliser ultérieurement - 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.
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.
Veuillez consulter notre page des versions GitHub pour découvrir dautres détails. Veuillez consulter notre page des versions GitHub pour découvrir dautres détails.
</ReleaseNotes> </ReleaseNotes>

View File

@ -56,12 +56,9 @@ Si tratta di un progetto open source e la partecipazione della community è molt
<ReleaseNotes> <ReleaseNotes>
Versione __VERSION_NUMBER__ Versione __VERSION_NUMBER__
- Abbiamo cambiato il modo in cui le applicazioni della console vengono ospitate allinterno di Terminale. Segnala eventuali bug riscontrati. - 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.
- Ora Terminale supporta i Sixel. - Abbiamo riprogettato la gestione delle finestre per migliorarne l'affidabilità; segnala eventuali bug riscontrati con l'alias wt.exe
- Puoi aprire un pannello ancorato contenente frammenti di comandi salvati per usarli in seguito - I profili ora mostrano un'icona se sono stati nascosti o se fanno riferimento a programmi disinstallati.
- 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.
Per altri dettagli, vedi la pagina delle release di GitHub. Per altri dettagli, vedi la pagina delle release di GitHub.
</ReleaseNotes> </ReleaseNotes>

View File

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

View File

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

View File

@ -54,14 +54,11 @@ Este é um projeto de código aberto e a participação da comunidade é bem-vin
</DevStudio> </DevStudio>
<ReleaseNotes> <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. 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!
O terminal agora oferece suporte ao Sixels! Reestruturamos o gerenciamento de janelas para melhorar a confiabilidade; registre os bugs que você encontrar com o alias wt.exe
Agora você pode abrir um painel acoplado contendo snippets de comandos que você salvou para usar mais tarde Os perfis agora exibem um ícone se estiverem ocultos ou se referirem a programas que foram desinstalados.
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.
Confira nossa página de lançamentos no GitHub para obter mais detalhes. Confira nossa página de lançamentos no GitHub para obter mais detalhes.
</ReleaseNotes> </ReleaseNotes>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

@ -2,10 +2,24 @@
{ {
"MatchedPath": [ "MatchedPath": [
"WpfTerminalControl/net472/Microsoft.Terminal.Wpf.dll", "WpfTerminalControl/net472/Microsoft.Terminal.Wpf.dll",
"WpfTerminalControl/net6.0-windows/Microsoft.Terminal.Wpf.dll" "WpfTerminalControl/net8.0-windows/Microsoft.Terminal.Wpf.dll"
], ],
"SigningInfo": { "SigningInfo": {
"Operations": [ "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", "KeyCode": "CP-230012",
"OperationSetCode": "SigntoolSign", "OperationSetCode": "SigntoolSign",

View File

@ -14,21 +14,21 @@
<Package <Package
Name="Microsoft.UI.Xaml.2.8" Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 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" 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 <Package
Name="Microsoft.UI.Xaml.2.8" Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 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" 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 <Package
Name="Microsoft.UI.Xaml.2.8" Name="Microsoft.UI.Xaml.2.8"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 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" 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> </Dependencies>
<UpdateSettings> <UpdateSettings>

View File

@ -1,6 +1,6 @@
{ {
"instanceUrl": "https://microsoft.visualstudio.com", "instanceUrl": "https://microsoft.visualstudio.com",
"projectName": "OS", "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"] "notificationAliases": ["condev@microsoft.com", "duhowett@microsoft.com"]
} }

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="MUXCustomBuildTasks" version="1.0.48" targetFramework="native" />
<package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" /> <package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" />
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" 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.PdbStr" version="20220617.1556.0" targetFramework="native" />

View File

@ -47,7 +47,7 @@ steps:
git config --local core.autocrlf true git config --local core.autocrlf true
displayName: Prepare git submission environment 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' displayName: 'Touchdown Build - 7105, PRODEXT'
inputs: inputs:
teamId: 7105 teamId: 7105

View File

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

View File

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

View File

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

View File

@ -75,10 +75,22 @@ jobs:
} }
displayName: "Wrangle Unpackaged builds into place, rename" displayName: "Wrangle Unpackaged builds into place, rename"
- powershell: |- - task: PowerShell@2
Get-PackageProvider -Name NuGet -ForceBootstrap displayName: Install Azure Modules from custom PowerShell Gallery Repo
Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute env:
displayName: Install Azure Module Dependencies 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 - task: AzureFileCopy@6
displayName: Publish to Storage Account displayName: Publish to Storage Account

View File

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

View File

@ -30,7 +30,7 @@ jobs:
steps: steps:
- checkout: self - checkout: self
clean: true 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 fetchDepth: 0
submodules: false submodules: false
persistCredentials: false persistCredentials: false

View File

@ -52,11 +52,6 @@ jobs:
itemPattern: '**/*.pdb' itemPattern: '**/*.pdb'
targetPath: '$(Build.SourcesDirectory)/bin' 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. # Transit the Azure token from the Service Connection into a secret variable for the rest of the pipeline to use.
- task: AzurePowerShell@5 - task: AzurePowerShell@5
displayName: Generate an Azure Token displayName: Generate an Azure Token
@ -66,7 +61,7 @@ jobs:
pwsh: true pwsh: true
ScriptType: InlineScript ScriptType: InlineScript
Inline: |- 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" Write-Host "##vso[task.setvariable variable=SymbolAccessToken;issecret=true]$AzToken"

View File

@ -69,10 +69,3 @@ jobs:
artifact: $(JobOutputArtifactName) artifact: $(JobOutputArtifactName)
displayName: 'Publish VPack Manifest to Drop' 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

@ -78,7 +78,9 @@ extends:
template: v2/Microsoft.NonOfficial.yml@templates template: v2/Microsoft.NonOfficial.yml@templates
parameters: parameters:
featureFlags: featureFlags:
WindowsHostVersion: 1ESWindows2022 WindowsHostVersion:
Version: 2022
Network: R1
platform: platform:
name: 'windows_undocked' name: 'windows_undocked'
product: 'Windows Terminal' product: 'Windows Terminal'
@ -86,6 +88,9 @@ extends:
enabled: false enabled: false
globalSdl: # https://aka.ms/obpipelines/sdl globalSdl: # https://aka.ms/obpipelines/sdl
enableCheckCFlags: false # CheckCFlags is broken and exploding our builds; to remove, :g/BAD-FLAGS/d enableCheckCFlags: false # CheckCFlags is broken and exploding our builds; to remove, :g/BAD-FLAGS/d
isNativeCode: true
prefast:
enabled: true
asyncSdl: asyncSdl:
enabled: true enabled: true
tsaOptionsFile: 'build/config/tsa.json' tsaOptionsFile: 'build/config/tsa.json'
@ -113,6 +118,8 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory) ob_outputDirectory: $(JobOutputDirectory)
@ -147,6 +154,7 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory) ob_outputDirectory: $(JobOutputDirectory)
@ -178,6 +186,7 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory) ob_outputDirectory: $(JobOutputDirectory)
@ -232,6 +241,7 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory) ob_outputDirectory: $(JobOutputDirectory)
@ -250,6 +260,7 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(JobOutputDirectory) ob_outputDirectory: $(JobOutputDirectory)
@ -275,6 +286,7 @@ extends:
variables: variables:
ob_sdl_checkcflags_enabled: false # BAD-FLAGS ob_sdl_checkcflags_enabled: false # BAD-FLAGS
ob_sdl_xfgcheck_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_checkout: false # This job checks itself out
ob_git_skip_checkout_none: true ob_git_skip_checkout_none: true
ob_outputDirectory: $(Build.ArtifactStagingDirectory) ob_outputDirectory: $(Build.ArtifactStagingDirectory)

View File

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

@ -19,14 +19,16 @@ steps:
restoreSolution: build/packages.config restoreSolution: build/packages.config
restoreDirectory: '$(Build.SourcesDirectory)\packages' restoreDirectory: '$(Build.SourcesDirectory)\packages'
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 - task: VSBuild@1
displayName: Restore NuGet packages for solution displayName: Restore NuGet packages for solution
inputs: inputs:
command: restore solution: 'OpenConsole.slnx'
feedsToUse: config msbuildArgs: /t:Restore
configPath: NuGet.config platform: $(BuildPlatform)
restoreSolution: OpenConsole.sln configuration: $(BuildConfiguration)
restoreDirectory: '$(Build.SourcesDirectory)\packages' msbuildArchitecture: x64
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 - task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
displayName: Restore NuGet packages for global nuget 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)) $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 $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; $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 "Latest VCToolsVersion: $LatestVCToolsVersion"
Write-Output "Updating VCToolsVersion environment variable for job" Write-Output "Updating VCToolsVersion environment variable for job"
Write-Output "##vso[task.setvariable variable=VCToolsVersion]$LatestVCToolsVersion" Write-Output "##vso[task.setvariable variable=VCToolsVersion]$LatestVCToolsVersion"

View File

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

View File

@ -4,8 +4,8 @@
<!-- Native packages --> <!-- Native packages -->
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" targetFramework="native" /> <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.Taef" version="10.93.240607003" targetFramework="native" />
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" /> <package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
<package id="Microsoft.Internal.Windows.Terminal.ThemeHelpers" version="0.7.230706001" 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.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.UI.Xaml" version="2.8.4" targetFramework="native" />
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" /> <package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />

View File

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 88c12148..967b53dd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -260,7 +260,7 @@ if (FMT_MASTER_PROJECT AND CMAKE_GENERATOR MATCHES "Visual Studio")
join(netfxpath
"C:\\Program Files\\Reference Assemblies\\Microsoft\\Framework\\"
".NETFramework\\v4.0")
- file(WRITE run-msbuild.bat "
+ file(WRITE "${CMAKE_BINARY_DIR}/run-msbuild.bat" "
${MSBUILD_SETUP}
${CMAKE_MAKE_PROGRAM} -p:FrameworkPathOverride=\"${netfxpath}\" %*")
endif ()

View File

@ -0,0 +1,38 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO fmtlib/fmt
REF "${VERSION}"
SHA512 573b7de1bd224b7b1b60d44808a843db35d4bc4634f72a9edcb52cf68e99ca66c744fd5d5c97b4336ba70b94abdabac5fc253b245d0d5cd8bbe2a096bf941e39
HEAD_REF master
PATCHES
fix-write-batch.patch
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DFMT_CMAKE_DIR=share/fmt
-DFMT_TEST=OFF
-DFMT_DOC=OFF
-DFMT_PEDANTIC=ON
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup()
vcpkg_fixup_pkgconfig()
vcpkg_copy_pdbs()
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/fmt/base.h"
"defined(FMT_SHARED)"
"1"
)
endif()
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
)
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

View File

@ -0,0 +1,8 @@
The package fmt provides CMake targets:
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt)
# Or use the header-only version
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt-header-only)

View File

@ -0,0 +1,17 @@
{
"name": "fmt",
"version": "11.1.4",
"description": "{fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.",
"homepage": "https://github.com/fmtlib/fmt",
"license": "MIT",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

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? ## <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. `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. 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 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? ## <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. 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...) 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. 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. 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 Original Source: https://github.com/microsoft/terminal/issues/327#issuecomment-447391705
## <a name="gfxMsgStack"></a>How are the Windows graphics/messaging stack assembled? ## <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. 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. 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 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. 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. 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. 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. 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 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" ## <a name="fesb"></a>Output Processing between "Far East" and "Western"
> >
> ``` > ```
> if (WI_IsFlagSet(CharType, C1_CNTRL)) > 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. 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: 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. 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. 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. 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? ## <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. 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. 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: 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. * 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. 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. 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. 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. 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. 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 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: 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 ```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): 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 ```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: 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": { "DynamicProfileSource": {
"enum": [ "type": "string",
"Windows.Terminal.Wsl", "anyOf": [
"Windows.Terminal.Azure", {
"Windows.Terminal.PowershellCore", "type": "string"
"Windows.Terminal.VisualStudio" },
], {
"type": "string" "enum": [
"Microsoft.WSL",
"Windows.Terminal.Wsl",
"Windows.Terminal.Azure",
"Windows.Terminal.PowershellCore",
"Windows.Terminal.VisualStudio"
]
}
]
}, },
"BellStyle": { "BellStyle": {
"oneOf": [ "oneOf": [
@ -2294,8 +2302,15 @@
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"id": { "id": {
"description": "The ID of the command this keybinding should execute.", "description": "The ID of the command this keybinding should execute (or null to disable a default).",
"type": "string" "oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}, },
"keys": { "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", "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 +2383,16 @@
"description": "When set to true, the terminal will focus the pane on mouse hover.", "description": "When set to true, the terminal will focus the pane on mouse hover.",
"type": "boolean" "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": { "compatibility.allowHeadless": {
"default": false, "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.", "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.",
@ -3114,12 +3139,13 @@
}, },
"pathTranslationStyle": { "pathTranslationStyle": {
"default": "none", "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": [ "enum": [
"none", "none",
"wsl", "wsl",
"cygwin", "cygwin",
"msys2" "msys2",
"mingw"
], ],
"type": "string" "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. - [ ] 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="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" /> <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. - _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 ### 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. 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 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.

View File

@ -9,7 +9,7 @@ issue id: 1564
## Abstract ## Abstract
Windows Terminal's settings model adheres to a cascading settings architecture. This allows a settings object to be defined incrementally across multiple layers of declarations. The value for any global setting like `copyOnSelect`, for example, is set to your settings.json value if one is defined, otherwise defaults.json, and otherwise a system set value. Profiles in particular are more complicated in that they must also take into account the values in `profiles.defaults` and dynamic profile generators. Windows Terminal's settings model adheres to a cascading settings architecture. This allows a settings object to be defined incrementally across multiple layers of declarations. The value for any global setting like `copyOnSelect`, for example, is set to your settings.json value if one is defined; otherwise, defaults.json, and otherwise a system set value. Profiles in particular are more complicated in that they must also take into account the values in `profiles.defaults` and dynamic profile generators.
This spec explores how to represent this feature in the Settings UI. This spec explores how to represent this feature in the Settings UI.

View File

@ -529,7 +529,7 @@ their own workflows.
* `--local`: Save to the `.wt.json` in the CWD, if there is one (or create * `--local`: Save to the `.wt.json` in the CWD, if there is one (or create
one) one)
* `--parent`: Save to the `.wt.json` in the first ancestor of the CWD, if * `--parent`: Save to the `.wt.json` in the first ancestor of the CWD, if
there is one. Otherwise create one here. there is one. Otherwise, create one here.
* `--settings`: Manually save to the settings file? * `--settings`: Manually save to the settings file?
* `--profile`: save to this profile???? Not sure if this is actually possible. * `--profile`: save to this profile???? Not sure if this is actually possible.
Maybe with the `WT_SESSION_ID` env var to figure out which profile is in use Maybe with the `WT_SESSION_ID` env var to figure out which profile is in use

View File

@ -23,7 +23,7 @@ In a similar vein, many fonts allow for setting variations on the font along cer
### Font features ### Font features
It is already possible to pass in a list of [font feature structs](https://docs.microsoft.com/en-us/windows/win32/api/dwrite/ns-dwrite-dwrite_font_feature) to DWrite for it to handle. A font feature struct contains only 2 things: It is already possible to pass in a list of [font feature structs](https://docs.microsoft.com/en-us/windows/win32/api/dwrite/ns-dwrite-dwrite_font_feature) to DWrite for it to handle. A font feature struct contains only 2 things:
1. A font feature tag 1. A font feature tag
2. A parameter value 2. A parameter value
@ -78,7 +78,7 @@ Aside from additional parsing required for the settings file (which inherently o
### Compatibility ### Compatibility
Older versions of Windows may not have the DWrite updates that allow for defining font features and axes of variation. We must make sure to fallback to the current implementation in these cases. Older versions of Windows may not have the DWrite updates that allow for defining font features and axes of variation. We must make sure to fall back to the current implementation in these cases.
### Performance, Power, and Efficiency ### Performance, Power, and Efficiency
@ -102,4 +102,4 @@ We will also need to consider how we want to represent this in the settings UI.
[DWRITE_FONT_FEATURE structure](https://docs.microsoft.com/en-us/windows/win32/api/dwrite/ns-dwrite-dwrite_font_feature) [DWRITE_FONT_FEATURE structure](https://docs.microsoft.com/en-us/windows/win32/api/dwrite/ns-dwrite-dwrite_font_feature)
[DWRITE_FONT_AXIS_VALUE structure](https://docs.microsoft.com/en-us/windows/win32/api/dwrite_3/ns-dwrite_3-dwrite_font_axis_value) [DWRITE_FONT_AXIS_VALUE structure](https://docs.microsoft.com/en-us/windows/win32/api/dwrite_3/ns-dwrite_3-dwrite_font_axis_value)

View File

@ -17,7 +17,7 @@ I work remotely as a developer, so I have to spend a lot of hours in front of my
Normally I like dark modes in all the programs and apps I use, but when there's too much sunlight, it becomes annoying, and sometimes even painful, to work in dark mode. So, I have all the programs and apps I use (at least, those that can) set to switch their color themes to what the system has. Normally I like dark modes in all the programs and apps I use, but when there's too much sunlight, it becomes annoying, and sometimes even painful, to work in dark mode. So, I have all the programs and apps I use (at least, those that can) set to switch their color themes to what the system has.
The company I work for sent me a Macbook Pro, and my personal phone is an Android, both with automatic dark mode at sunset and light mode at sunrise, and in those devices it's been working relatively well. In Windows, as it is known, there's no such feature, so I manually change between dark and light mode when it's needed, and most of the programs and apps I use go along with this change. Windows Terminal, is not one of them. The company I work for sent me a MacBook Pro, and my personal phone is an Android, both with automatic dark mode at sunset and light mode at sunrise, and in those devices it's been working relatively well. In Windows, as it is known, there's no such feature, so I manually change between dark and light mode when it's needed, and most of the programs and apps I use go along with this change. Windows Terminal, is not one of them.
The theme changes just as expected, but in an app like this, this change only affects the top of the window, leaving almost all of the screen at the mercy of what the color scheme is, and it doesn't depend on the theme, which defeats any attempt to make a good use of the `system` theme feature. The theme changes just as expected, but in an app like this, this change only affects the top of the window, leaving almost all of the screen at the mercy of what the color scheme is, and it doesn't depend on the theme, which defeats any attempt to make a good use of the `system` theme feature.

View File

@ -94,7 +94,7 @@ configurations:
- `"useExisting"`: always glom to the most recent window, regardless of desktop. - `"useExisting"`: always glom to the most recent window, regardless of desktop.
- `"useExistingOnSameDesktop"`: Only glom if there's an existing window on this - `"useExistingOnSameDesktop"`: Only glom if there's an existing window on this
virtual desktop, otherwise create a new window. This will be the new default virtual desktop; otherwise, create a new window. This will be the new default
value. value.
- `"useNew"`: Never glom, always create a new window. This is technically the - `"useNew"`: Never glom, always create a new window. This is technically the
current behavior of the Terminal. current behavior of the Terminal.

View File

@ -362,7 +362,7 @@ Essentially, the probabilistic elective monarchy will work in the following way:
register. register.
3. After registering as a server for `Monarch`s, attempt to create a `Monarch` 3. After registering as a server for `Monarch`s, attempt to create a `Monarch`
using `winrt::create_instance`. using `winrt::create_instance`.
4. Using that `Monarch`, ask it for it's PID. 4. Using that `Monarch`, ask it for its PID.
- If that PID is the same as the PID of the current process, then the window - If that PID is the same as the PID of the current process, then the window
process knows that it is the monarch. process knows that it is the monarch.
- If that PID is some other process, then we know that we're not currently - If that PID is some other process, then we know that we're not currently
@ -1102,7 +1102,7 @@ launch to use seems like an obvious next step. See also [#961].
- `true` or `"always"`: always glom to the most recent window, regardless of - `true` or `"always"`: always glom to the most recent window, regardless of
desktop desktop
- `"sameDesktop"`: Only glom if there's an existing window on this virtual - `"sameDesktop"`: Only glom if there's an existing window on this virtual
desktop, otherwise create a new window desktop; otherwise, create a new window
- `false` or `"never"`: Never glom, always create a new window. - `false` or `"never"`: Never glom, always create a new window.

View File

@ -13,7 +13,7 @@ This spec is for feature request #605 "Search". It goes over the details of a ne
## Inspiration ## Inspiration
One of the superior features of iTerm2 is it's content search. The search comes in two variants: search from active tab and search from all tabs. In almost any editor, there is an roughly equivalent string search. We also want to realize search experience in Terminal. There will be two variants, search within one tab or from multiple tabs. We will start with one-tab search implementation. One of the superior features of iTerm2 is it's content search. The search comes in two variants: search from active tab and search from all tabs. In almost any editor, there is a roughly equivalent string search. We also want to realize search experience in Terminal. There will be two variants, search within one tab or from multiple tabs. We will start with one-tab search implementation.
## Solution Design ## Solution Design

View File

@ -331,7 +331,7 @@ Are there other allocation policies we need to consider?
- requires coordination between tooling teams both within and without Microsoft (regarding any tool that operates on - requires coordination between tooling teams both within and without Microsoft (regarding any tool that operates on
or produces PE files) or produces PE files)
- An exported symbol that shells can check for to determine whether to wait for the attached process to exit - An exported symbol that shells can check for in order to determine whether to wait for the attached process to exit
- relies on shells to update and check for this - relies on shells to update and check for this
- cracking an executable to look for symbols is probably the last thing shells want to do - cracking an executable to look for symbols is probably the last thing shells want to do
- we could provide an API to determine whether to wait or return? - we could provide an API to determine whether to wait or return?

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