Compare commits
148 Commits
release-1.
...
dev/lhecke
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5bfa47ec33 | ||
|
|
d54ce33afc | ||
|
|
c4436157c1 | ||
|
|
821ae3af2d | ||
|
|
2fb4a7fa91 | ||
|
|
cd80f3c764 | ||
|
|
5651f08770 | ||
|
|
0f61b5f97d | ||
|
|
7a05501907 | ||
|
|
b024efb3b7 | ||
|
|
10ea38c9a7 | ||
|
|
30eb9eed49 | ||
|
|
e10b7e4fb9 | ||
|
|
921d7c3316 | ||
|
|
8f20ea6b2d | ||
|
|
333fcd89b3 | ||
|
|
21c2dee50a | ||
|
|
df648208d5 | ||
|
|
6cb14d226d | ||
|
|
59a7dabf3b | ||
|
|
d28b6bf1f2 | ||
|
|
a7a44901c2 | ||
|
|
3701d0ee95 | ||
|
|
127df073fa | ||
|
|
3afe7a8d11 | ||
|
|
8f4c63e81b | ||
|
|
e5a430ff68 | ||
|
|
b556594793 | ||
|
|
a0c88bb511 | ||
|
|
69eff7e9fd | ||
|
|
d943fa41f6 | ||
|
|
5b44476048 | ||
|
|
e9c8391fd5 | ||
|
|
256d46ad6b | ||
|
|
6a29ca2ada | ||
|
|
1ed57cc5c9 | ||
|
|
9b70a40bf9 | ||
|
|
c6e5f79115 | ||
|
|
2d7066f5c6 | ||
|
|
07566fac4c | ||
|
|
a4340af1e7 | ||
|
|
57b9549ff8 | ||
|
|
1f9426b051 | ||
|
|
cbe915c554 | ||
|
|
d70794a246 | ||
|
|
1a40ff3746 | ||
|
|
5daf4983d2 | ||
|
|
3de496d589 | ||
|
|
7fba298a60 | ||
|
|
0e90b85f5a | ||
|
|
42e9ddcc78 | ||
|
|
648d240105 | ||
|
|
7010626497 | ||
|
|
6a10ea5a7e | ||
|
|
b4042eaaf0 | ||
|
|
482c724de6 | ||
|
|
df8addb068 | ||
|
|
89c39b06ed | ||
|
|
6873c85d2d | ||
|
|
11a9808d85 | ||
|
|
1c8862938b | ||
|
|
91012a4e3f | ||
|
|
f4bcbfbadd | ||
|
|
e078ddd129 | ||
|
|
e1ab64e056 | ||
|
|
2f0d3dc17a | ||
|
|
258a31cdf7 | ||
|
|
0c64b8a105 | ||
|
|
167819a8f4 | ||
|
|
94e6b91c78 | ||
|
|
030db09528 | ||
|
|
a084834596 | ||
|
|
d628c46cd6 | ||
|
|
c22d9b1c77 | ||
|
|
358e10b17f | ||
|
|
80f2776272 | ||
|
|
a56029a807 | ||
|
|
0f41851e67 | ||
|
|
72b44888b5 | ||
|
|
99c18ce57e | ||
|
|
58e1380b8f | ||
|
|
a5960049bf | ||
|
|
f0291c6501 | ||
|
|
e594d97c90 | ||
|
|
191eb00f43 | ||
|
|
a46a2719b8 | ||
|
|
40963c7b18 | ||
|
|
2386abb8df | ||
|
|
b8f402f64b | ||
|
|
f3e2890084 | ||
|
|
427b37c07d | ||
|
|
a38388615e | ||
|
|
c183d12649 | ||
|
|
8f8c79ff58 | ||
|
|
612b00cd44 | ||
|
|
17596d2623 | ||
|
|
37e8aff967 | ||
|
|
c16a74ba39 | ||
|
|
7a3bf7017c | ||
|
|
f1aa6993f1 | ||
|
|
8f83322322 | ||
|
|
c627991522 | ||
|
|
f0705fb7f7 | ||
|
|
0425ab0c1d | ||
|
|
e9de646e54 | ||
|
|
8aefc7a697 | ||
|
|
1bec08ec0a | ||
|
|
c9e993a38e | ||
|
|
cd6b0832e2 | ||
|
|
8611d901b6 | ||
|
|
a19d30a25a | ||
|
|
709189d471 | ||
|
|
aa8ed8c2d4 | ||
|
|
3c3b1aac02 | ||
|
|
6775300f42 | ||
|
|
f5a703c711 | ||
|
|
7650ecf658 | ||
|
|
0073e36d81 | ||
|
|
245b13b94e | ||
|
|
a9f34e3095 | ||
|
|
c589784b54 | ||
|
|
910c61b7e1 | ||
|
|
0ee2c74cd4 | ||
|
|
125026dbb6 | ||
|
|
ce60bf290a | ||
|
|
e269945a74 | ||
|
|
fbe45fafb5 | ||
|
|
62766db94d | ||
|
|
b00b77a7ac | ||
|
|
4628ceb295 | ||
|
|
9a4f4abaf2 | ||
|
|
f6e9f91504 | ||
|
|
457bc65d7e | ||
|
|
4c3d3d83a5 | ||
|
|
af5a6ea640 | ||
|
|
ba39db52d7 | ||
|
|
3d737214a4 | ||
|
|
1324a0148a | ||
|
|
1bf2fcb6e0 | ||
|
|
95944e5939 | ||
|
|
488de2d42c | ||
|
|
bf8ef638b7 | ||
|
|
6a26fd68c4 | ||
|
|
d6eb022975 | ||
|
|
d0f66b9668 | ||
|
|
5c08a86c49 | ||
|
|
99abb2a6b5 | ||
|
|
c6215c8b51 |
8
.github/actions/spelling/allow/allow.txt
vendored
@@ -1,4 +1,3 @@
|
||||
aci
|
||||
admins
|
||||
allcolors
|
||||
Apc
|
||||
@@ -9,12 +8,10 @@ breadcrumbs
|
||||
bsd
|
||||
calt
|
||||
ccmp
|
||||
ccon
|
||||
changelog
|
||||
clickable
|
||||
clig
|
||||
CMMI
|
||||
consvc
|
||||
copyable
|
||||
CtrlDToClose
|
||||
cybersecurity
|
||||
@@ -93,12 +90,12 @@ reserialize
|
||||
reserializes
|
||||
rlig
|
||||
runtimes
|
||||
servicebus
|
||||
shcha
|
||||
slnt
|
||||
Sos
|
||||
ssh
|
||||
stakeholders
|
||||
sxn
|
||||
timeline
|
||||
timelines
|
||||
timestamped
|
||||
@@ -115,8 +112,9 @@ und
|
||||
unregister
|
||||
versioned
|
||||
vsdevcmd
|
||||
walkthrough
|
||||
walkthroughs
|
||||
We'd
|
||||
westus
|
||||
wildcards
|
||||
XBox
|
||||
YBox
|
||||
|
||||
10
.github/actions/spelling/allow/apis.txt
vendored
@@ -28,8 +28,8 @@ CYICON
|
||||
Dacl
|
||||
dataobject
|
||||
dcomp
|
||||
DERR
|
||||
delayimp
|
||||
DERR
|
||||
dlldata
|
||||
DNE
|
||||
DONTADDTORECENT
|
||||
@@ -52,6 +52,7 @@ futex
|
||||
GETDESKWALLPAPER
|
||||
GETHIGHCONTRAST
|
||||
GETMOUSEHOVERTIME
|
||||
GETTEXTLENGTH
|
||||
Hashtable
|
||||
HIGHCONTRASTON
|
||||
HIGHCONTRASTW
|
||||
@@ -88,6 +89,7 @@ IObject
|
||||
iosfwd
|
||||
IPackage
|
||||
IPeasant
|
||||
isa
|
||||
ISetup
|
||||
isspace
|
||||
IStorage
|
||||
@@ -109,12 +111,14 @@ lsass
|
||||
LSHIFT
|
||||
LTGRAY
|
||||
MAINWINDOW
|
||||
MAXIMIZEBOX
|
||||
memchr
|
||||
memicmp
|
||||
MENUCOMMAND
|
||||
MENUDATA
|
||||
MENUINFO
|
||||
MENUITEMINFOW
|
||||
MINIMIZEBOX
|
||||
mmeapi
|
||||
MOUSELEAVE
|
||||
mov
|
||||
@@ -183,6 +187,7 @@ snprintf
|
||||
spsc
|
||||
sregex
|
||||
SRWLOC
|
||||
srwlock
|
||||
SRWLOCK
|
||||
STDCPP
|
||||
STDMETHOD
|
||||
@@ -199,6 +204,7 @@ TABROW
|
||||
TASKBARCREATED
|
||||
TBPF
|
||||
THEMECHANGED
|
||||
THICKFRAME
|
||||
tlg
|
||||
TME
|
||||
tmp
|
||||
@@ -213,7 +219,6 @@ UFIELD
|
||||
ULARGE
|
||||
UOI
|
||||
UPDATEINIFILE
|
||||
urlmon
|
||||
userenv
|
||||
USEROBJECTFLAGS
|
||||
Vcpp
|
||||
@@ -224,7 +229,6 @@ wcsstr
|
||||
wcstoui
|
||||
WDJ
|
||||
winhttp
|
||||
wininet
|
||||
winmain
|
||||
winsta
|
||||
winstamin
|
||||
|
||||
1
.github/actions/spelling/allow/names.txt
vendored
@@ -54,6 +54,7 @@ mikegr
|
||||
mikemaccana
|
||||
miloush
|
||||
miniksa
|
||||
nguyen
|
||||
niksa
|
||||
nvaccess
|
||||
nvda
|
||||
|
||||
2
.github/actions/spelling/candidate.patterns
vendored
@@ -371,8 +371,6 @@ ipfs://[0-9a-z]*
|
||||
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
|
||||
# c99 hex digits (not the full format, just one I've seen)
|
||||
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
||||
# Punycode
|
||||
\bxn--[-0-9a-z]+
|
||||
# sha
|
||||
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
|
||||
# sha-... -- uses a fancy capture
|
||||
|
||||
1
.github/actions/spelling/excludes.txt
vendored
@@ -106,6 +106,7 @@
|
||||
^src/terminal/parser/ft_fuzzwrapper/run\.bat$
|
||||
^src/terminal/parser/ut_parser/Base64Test.cpp$
|
||||
^src/terminal/parser/ut_parser/run\.bat$
|
||||
^src/tools/benchcat
|
||||
^src/tools/integrity/packageuwp/ConsoleUWP\.appxSources$
|
||||
^src/tools/lnkd/lnkd\.bat$
|
||||
^src/tools/pixels/pixels\.bat$
|
||||
|
||||
1
.github/actions/spelling/expect/alphabet.txt
vendored
@@ -21,6 +21,7 @@ BBBBCCCCC
|
||||
BBGGRR
|
||||
efg
|
||||
EFG
|
||||
efgh
|
||||
EFGh
|
||||
KLMNOQQQQQQQQQQ
|
||||
QQQQQQQQQQABCDEFGHIJ
|
||||
|
||||
91
.github/actions/spelling/expect/expect.txt
vendored
@@ -1,4 +1,5 @@
|
||||
aabbcc
|
||||
aarch
|
||||
ABANDONFONT
|
||||
abbcc
|
||||
ABCDEFGHIJKLMNOPQRSTUVWXY
|
||||
@@ -6,7 +7,6 @@ ABCF
|
||||
abgr
|
||||
abi
|
||||
ABORTIFHUNG
|
||||
ACCESSTOKEN
|
||||
acidev
|
||||
ACIOSS
|
||||
ACover
|
||||
@@ -17,7 +17,6 @@ ADDALIAS
|
||||
ADDREF
|
||||
ADDSTRING
|
||||
ADDTOOL
|
||||
AEnd
|
||||
AFew
|
||||
AFill
|
||||
AFX
|
||||
@@ -78,7 +77,6 @@ aumid
|
||||
Authenticode
|
||||
AUTOBUDDY
|
||||
AUTOCHECKBOX
|
||||
autocrlf
|
||||
autohide
|
||||
AUTOHSCROLL
|
||||
automagically
|
||||
@@ -105,6 +103,7 @@ bcx
|
||||
bcz
|
||||
BEFOREPARENT
|
||||
beginthread
|
||||
benchcat
|
||||
bgfx
|
||||
bgidx
|
||||
Bgk
|
||||
@@ -116,10 +115,8 @@ binplace
|
||||
binplaced
|
||||
bitcoin
|
||||
bitcrazed
|
||||
bitflag
|
||||
bitmask
|
||||
BITOPERATION
|
||||
bitsets
|
||||
BKCOLOR
|
||||
BKGND
|
||||
Bksp
|
||||
@@ -148,17 +145,16 @@ bufferout
|
||||
buffersize
|
||||
buflen
|
||||
buildtransitive
|
||||
BUILDURI
|
||||
burriter
|
||||
BValue
|
||||
bytebuffer
|
||||
cac
|
||||
cacafire
|
||||
CALLCONV
|
||||
capslock
|
||||
CARETBLINKINGENABLED
|
||||
CARRIAGERETURN
|
||||
cascadia
|
||||
castsi
|
||||
catid
|
||||
cazamor
|
||||
CBash
|
||||
@@ -192,15 +188,12 @@ changelist
|
||||
chaof
|
||||
charinfo
|
||||
CHARSETINFO
|
||||
chcbpat
|
||||
chh
|
||||
chk
|
||||
chshdng
|
||||
CHT
|
||||
Cic
|
||||
cielab
|
||||
Cielab
|
||||
Clcompile
|
||||
CLE
|
||||
cleartype
|
||||
CLICKACTIVE
|
||||
@@ -219,7 +212,6 @@ cmder
|
||||
CMDEXT
|
||||
cmh
|
||||
CMOUSEBUTTONS
|
||||
cmpeq
|
||||
cmt
|
||||
cmw
|
||||
cmyk
|
||||
@@ -232,7 +224,6 @@ codepage
|
||||
codepath
|
||||
codepoints
|
||||
coinit
|
||||
COLLECTIONURI
|
||||
colorizing
|
||||
COLORMATRIX
|
||||
COLORREFs
|
||||
@@ -310,7 +301,6 @@ coordnew
|
||||
COPYCOLOR
|
||||
CORESYSTEM
|
||||
cotaskmem
|
||||
countof
|
||||
CPG
|
||||
cpinfo
|
||||
CPINFOEX
|
||||
@@ -384,7 +374,6 @@ dai
|
||||
DATABLOCK
|
||||
DBatch
|
||||
dbcs
|
||||
DBCSCHAR
|
||||
DBCSFONT
|
||||
dbg
|
||||
DBGALL
|
||||
@@ -413,6 +402,7 @@ DECANM
|
||||
DECARM
|
||||
DECAUPSS
|
||||
DECAWM
|
||||
DECBI
|
||||
DECBKM
|
||||
DECCARA
|
||||
DECCIR
|
||||
@@ -421,13 +411,17 @@ DECCKSR
|
||||
DECCOLM
|
||||
DECCRA
|
||||
DECCTR
|
||||
DECDC
|
||||
DECDHL
|
||||
decdld
|
||||
DECDMAC
|
||||
DECDWL
|
||||
DECECM
|
||||
DECEKBD
|
||||
DECERA
|
||||
DECFI
|
||||
DECFRA
|
||||
DECIC
|
||||
DECID
|
||||
DECINVM
|
||||
DECKPAM
|
||||
@@ -438,6 +432,7 @@ DECMSR
|
||||
DECNKM
|
||||
DECNRCM
|
||||
DECOM
|
||||
decommit
|
||||
DECPCTERM
|
||||
DECPS
|
||||
DECRARA
|
||||
@@ -500,13 +495,11 @@ devicecode
|
||||
Dext
|
||||
DFactory
|
||||
DFF
|
||||
dhandler
|
||||
dialogbox
|
||||
directio
|
||||
DIRECTX
|
||||
DISABLEDELAYEDEXPANSION
|
||||
DISABLENOSCROLL
|
||||
DISPATCHNOTIFY
|
||||
DISPLAYATTRIBUTE
|
||||
DISPLAYATTRIBUTEPROPERTY
|
||||
DISPLAYCHANGE
|
||||
@@ -519,7 +512,6 @@ dllmain
|
||||
DLLVERSIONINFO
|
||||
DLOAD
|
||||
DLOOK
|
||||
dmp
|
||||
DONTCARE
|
||||
doskey
|
||||
dotnet
|
||||
@@ -575,6 +567,7 @@ EDITTEXT
|
||||
EDITUPDATE
|
||||
edputil
|
||||
Efast
|
||||
efghijklmn
|
||||
EHsc
|
||||
EINS
|
||||
EJO
|
||||
@@ -596,7 +589,6 @@ eplace
|
||||
EPres
|
||||
EQU
|
||||
ERASEBKGND
|
||||
etcoreapp
|
||||
ETW
|
||||
EUDC
|
||||
EVENTID
|
||||
@@ -638,7 +630,6 @@ FGs
|
||||
FILEDESCRIPTION
|
||||
FILESUBTYPE
|
||||
FILESYSPATH
|
||||
fileurl
|
||||
FILEW
|
||||
FILLATTR
|
||||
FILLCONSOLEOUTPUT
|
||||
@@ -687,7 +678,7 @@ FSINFOCLASS
|
||||
fte
|
||||
Ftm
|
||||
Fullscreens
|
||||
fullwidth
|
||||
Fullwidth
|
||||
FUNCTIONCALL
|
||||
fuzzer
|
||||
fuzzmain
|
||||
@@ -820,7 +811,6 @@ HIWORD
|
||||
HKCU
|
||||
hkey
|
||||
hkl
|
||||
HKLM
|
||||
hlocal
|
||||
hlsl
|
||||
HMB
|
||||
@@ -828,7 +818,6 @@ HMK
|
||||
hmod
|
||||
hmodule
|
||||
hmon
|
||||
homeglyphs
|
||||
homoglyph
|
||||
HORZ
|
||||
hostable
|
||||
@@ -916,6 +905,7 @@ INSERTMODE
|
||||
INTERACTIVITYBASE
|
||||
INTERCEPTCOPYPASTE
|
||||
INTERNALNAME
|
||||
Interner
|
||||
intsafe
|
||||
INVALIDARG
|
||||
INVALIDATERECT
|
||||
@@ -932,12 +922,10 @@ itermcolors
|
||||
ITerminal
|
||||
itf
|
||||
Ith
|
||||
itoa
|
||||
IUI
|
||||
IUnknown
|
||||
ivalid
|
||||
IWIC
|
||||
IXMP
|
||||
IXP
|
||||
jconcpp
|
||||
JOBOBJECT
|
||||
@@ -961,7 +949,6 @@ kernelbasestaging
|
||||
KEYBDINPUT
|
||||
keychord
|
||||
keydown
|
||||
keyevent
|
||||
KEYFIRST
|
||||
KEYLAST
|
||||
Keymapping
|
||||
@@ -976,13 +963,15 @@ KLF
|
||||
KLMNO
|
||||
KLMNOPQRST
|
||||
KLMNOPQRSTQQQQQ
|
||||
KLMNOPQRSTUVWXY
|
||||
KLMNOPQRSTY
|
||||
KOK
|
||||
KPRIORITY
|
||||
KVM
|
||||
langid
|
||||
LANGUAGELIST
|
||||
lasterror
|
||||
lastexitcode
|
||||
LASTEXITCODE
|
||||
LAYOUTRTL
|
||||
lbl
|
||||
LBN
|
||||
@@ -1006,7 +995,6 @@ LINEWRAP
|
||||
LINKERRCAP
|
||||
LINKERROR
|
||||
linputfile
|
||||
listproperties
|
||||
listptr
|
||||
listptrsize
|
||||
lld
|
||||
@@ -1018,7 +1006,6 @@ lnkd
|
||||
lnkfile
|
||||
LNM
|
||||
LOADONCALL
|
||||
loadu
|
||||
LOBYTE
|
||||
localappdata
|
||||
locsrc
|
||||
@@ -1027,6 +1014,7 @@ LOGFONT
|
||||
LOGFONTA
|
||||
LOGFONTW
|
||||
logissue
|
||||
losslessly
|
||||
loword
|
||||
lparam
|
||||
LPCCH
|
||||
@@ -1112,6 +1100,7 @@ MDs
|
||||
MEASUREITEM
|
||||
megamix
|
||||
memallocator
|
||||
meme
|
||||
MENUCHAR
|
||||
MENUCONTROL
|
||||
MENUDROPALIGNMENT
|
||||
@@ -1125,7 +1114,6 @@ MIIM
|
||||
milli
|
||||
mincore
|
||||
mindbogglingly
|
||||
minimizeall
|
||||
minkernel
|
||||
MINMAXINFO
|
||||
minwin
|
||||
@@ -1139,6 +1127,7 @@ mmsystem
|
||||
MNC
|
||||
MNOPQ
|
||||
MNOPQR
|
||||
MNOPQRSTUVWXY
|
||||
MODALFRAME
|
||||
MODERNCORE
|
||||
MONITORINFO
|
||||
@@ -1148,7 +1137,6 @@ MOUSEACTIVATE
|
||||
MOUSEFIRST
|
||||
MOUSEHWHEEL
|
||||
MOUSEMOVE
|
||||
movemask
|
||||
MOVESTART
|
||||
msb
|
||||
msctf
|
||||
@@ -1312,7 +1300,7 @@ onecoreuuid
|
||||
ONECOREWINDOWS
|
||||
onehalf
|
||||
oneseq
|
||||
ONLCR
|
||||
OOM
|
||||
openbash
|
||||
opencode
|
||||
opencon
|
||||
@@ -1322,13 +1310,6 @@ openps
|
||||
openvt
|
||||
ORIGINALFILENAME
|
||||
osc
|
||||
OSCBG
|
||||
OSCCT
|
||||
OSCFG
|
||||
OSCRCC
|
||||
OSCSCB
|
||||
OSCSCC
|
||||
OSCWT
|
||||
OSDEPENDSROOT
|
||||
OSG
|
||||
OSGENG
|
||||
@@ -1460,8 +1441,8 @@ prc
|
||||
prealigned
|
||||
prect
|
||||
prefast
|
||||
preflighting
|
||||
prefs
|
||||
preinstalled
|
||||
prepopulated
|
||||
presorted
|
||||
PREVENTPINNING
|
||||
@@ -1474,7 +1455,6 @@ prioritization
|
||||
processenv
|
||||
processhost
|
||||
PROCESSINFOCLASS
|
||||
procs
|
||||
PROPERTYID
|
||||
PROPERTYKEY
|
||||
PROPERTYVAL
|
||||
@@ -1489,7 +1469,6 @@ propvariant
|
||||
propvarutil
|
||||
psa
|
||||
PSECURITY
|
||||
pseudocode
|
||||
pseudoconsole
|
||||
pseudoterminal
|
||||
psh
|
||||
@@ -1608,7 +1587,6 @@ rgrc
|
||||
rgs
|
||||
rgui
|
||||
rgw
|
||||
rgwch
|
||||
RIGHTALIGN
|
||||
RIGHTBUTTON
|
||||
riid
|
||||
@@ -1769,7 +1747,6 @@ SND
|
||||
SOLIDBOX
|
||||
Solutiondir
|
||||
somefile
|
||||
SOURCEBRANCH
|
||||
sourced
|
||||
spammy
|
||||
SRCCODEPAGE
|
||||
@@ -1804,7 +1781,6 @@ STDMETHODCALLTYPE
|
||||
STDMETHODIMP
|
||||
STGM
|
||||
stl
|
||||
stoutapot
|
||||
Stri
|
||||
Stringable
|
||||
STRINGTABLE
|
||||
@@ -1821,7 +1797,6 @@ SUBLANG
|
||||
subresource
|
||||
subsystemconsole
|
||||
subsystemwindows
|
||||
suiteless
|
||||
swapchain
|
||||
swapchainpanel
|
||||
swappable
|
||||
@@ -1860,13 +1835,11 @@ TBM
|
||||
tchar
|
||||
TCHFORMAT
|
||||
TCI
|
||||
tcome
|
||||
tcommandline
|
||||
tcommands
|
||||
Tdd
|
||||
TDelegated
|
||||
TDP
|
||||
TEAMPROJECT
|
||||
tearoff
|
||||
Teb
|
||||
Techo
|
||||
@@ -1878,22 +1851,16 @@ terminalrenderdata
|
||||
TERMINALSCROLLING
|
||||
terminfo
|
||||
TEs
|
||||
testbuildplatform
|
||||
testcon
|
||||
testd
|
||||
testdlls
|
||||
testenv
|
||||
testlab
|
||||
testlist
|
||||
testmd
|
||||
testmode
|
||||
testname
|
||||
testnameprefix
|
||||
TESTNULL
|
||||
testpass
|
||||
testpasses
|
||||
testtestabc
|
||||
testtesttesttesttest
|
||||
testtimeout
|
||||
TEXCOORD
|
||||
texel
|
||||
@@ -1922,7 +1889,6 @@ TJson
|
||||
TLambda
|
||||
TLDP
|
||||
TLEN
|
||||
Tlgdata
|
||||
TMAE
|
||||
TMPF
|
||||
TMult
|
||||
@@ -1982,11 +1948,14 @@ UAC
|
||||
uap
|
||||
uapadmin
|
||||
UAX
|
||||
UBool
|
||||
ucd
|
||||
uch
|
||||
UChars
|
||||
udk
|
||||
UDM
|
||||
uer
|
||||
UError
|
||||
uget
|
||||
uia
|
||||
UIACCESS
|
||||
@@ -2016,13 +1985,14 @@ unknwn
|
||||
UNORM
|
||||
unparseable
|
||||
unregistering
|
||||
untests
|
||||
untextured
|
||||
untimes
|
||||
UPDATEDISPLAY
|
||||
UPDOWN
|
||||
UPKEY
|
||||
UPSS
|
||||
uregex
|
||||
URegular
|
||||
usebackq
|
||||
USECALLBACK
|
||||
USECOLOR
|
||||
@@ -2044,9 +2014,13 @@ USESIZE
|
||||
USESTDHANDLES
|
||||
usp
|
||||
USRDLL
|
||||
utext
|
||||
UText
|
||||
UTEXT
|
||||
utr
|
||||
UVWX
|
||||
UVWXY
|
||||
UVWXYZ
|
||||
uwa
|
||||
uwp
|
||||
uxtheme
|
||||
@@ -2057,6 +2031,7 @@ vcpkg
|
||||
vcprintf
|
||||
vcxitems
|
||||
vec
|
||||
vectorize
|
||||
vectorized
|
||||
VERCTRL
|
||||
VERTBAR
|
||||
@@ -2103,7 +2078,6 @@ vtseq
|
||||
vtterm
|
||||
vttest
|
||||
VWX
|
||||
waaay
|
||||
waitable
|
||||
WANSUNG
|
||||
WANTARROWS
|
||||
@@ -2152,7 +2126,6 @@ windbg
|
||||
WINDEF
|
||||
windll
|
||||
WINDOWALPHA
|
||||
Windowbuffer
|
||||
windowdpiapi
|
||||
WINDOWEDGE
|
||||
windowext
|
||||
@@ -2222,7 +2195,6 @@ wprp
|
||||
wprpi
|
||||
wregex
|
||||
writeback
|
||||
writechar
|
||||
WRITECONSOLE
|
||||
WRITECONSOLEINPUT
|
||||
WRITECONSOLEOUTPUT
|
||||
@@ -2296,7 +2268,6 @@ xunit
|
||||
xutr
|
||||
XVIRTUALSCREEN
|
||||
XWalk
|
||||
xxyyzz
|
||||
yact
|
||||
YCast
|
||||
YCENTER
|
||||
@@ -2306,7 +2277,9 @@ YOffset
|
||||
YSubstantial
|
||||
YVIRTUALSCREEN
|
||||
YWalk
|
||||
Zab
|
||||
zabcd
|
||||
Zabcdefghijklmn
|
||||
Zabcdefghijklmnopqrstuvwxyz
|
||||
ZCmd
|
||||
ZCtrl
|
||||
|
||||
@@ -27,6 +27,12 @@ ROY\sG\.\sBIV
|
||||
# Python stringprefix / binaryprefix
|
||||
\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)'
|
||||
|
||||
# SSE intrinsics like "_mm_subs_epu16"
|
||||
\b_mm(?:|256|512)_\w+\b
|
||||
|
||||
# ARM NEON intrinsics like "vsubq_u16"
|
||||
\bv\w+_[fsu](?:8|16|32|64)\b
|
||||
|
||||
# Automatically suggested patterns
|
||||
# hit-count: 3831 file-count: 582
|
||||
# IServiceProvider
|
||||
|
||||
3156
.github/fabricbot.json
vendored
751
.github/policies/resourceManagement.yml
vendored
Normal file
@@ -0,0 +1,751 @@
|
||||
id:
|
||||
name: GitOps.PullRequestIssueManagement
|
||||
description: GitOps.PullRequestIssueManagement primitive
|
||||
owner:
|
||||
resource: repository
|
||||
disabled: false
|
||||
where:
|
||||
configuration:
|
||||
resourceManagementConfiguration:
|
||||
scheduledSearches:
|
||||
- description:
|
||||
frequencies:
|
||||
- hourly:
|
||||
hour: 3
|
||||
filters:
|
||||
- isIssue
|
||||
- isOpen
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
- noActivitySince:
|
||||
days: 3
|
||||
actions:
|
||||
- closeIssue
|
||||
- description:
|
||||
frequencies:
|
||||
- hourly:
|
||||
hour: 3
|
||||
filters:
|
||||
- isIssue
|
||||
- isOpen
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- noActivitySince:
|
||||
days: 4
|
||||
- isNotLabeledWith:
|
||||
label: No-Recent-Activity
|
||||
actions:
|
||||
- addLabel:
|
||||
label: No-Recent-Activity
|
||||
- addReply:
|
||||
reply: This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **4 days**. It will be closed if no further activity occurs **within 3 days of this comment**.
|
||||
- description:
|
||||
frequencies:
|
||||
- hourly:
|
||||
hour: 3
|
||||
filters:
|
||||
- isIssue
|
||||
- isOpen
|
||||
- hasLabel:
|
||||
label: Resolution-Duplicate
|
||||
- noActivitySince:
|
||||
days: 1
|
||||
actions:
|
||||
- addReply:
|
||||
reply: This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes.
|
||||
- closeIssue
|
||||
- description:
|
||||
frequencies:
|
||||
- hourly:
|
||||
hour: 3
|
||||
filters:
|
||||
- isPullRequest
|
||||
- isOpen
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
- noActivitySince:
|
||||
days: 7
|
||||
actions:
|
||||
- closeIssue
|
||||
- description:
|
||||
frequencies:
|
||||
- hourly:
|
||||
hour: 3
|
||||
filters:
|
||||
- isPullRequest
|
||||
- isOpen
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- noActivitySince:
|
||||
days: 7
|
||||
- isNotLabeledWith:
|
||||
label: No-Recent-Activity
|
||||
actions:
|
||||
- addLabel:
|
||||
label: No-Recent-Activity
|
||||
- addReply:
|
||||
reply: This pull request has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **7 days**. It will be closed if no further activity occurs **within 7 days of this comment**.
|
||||
eventResponderTasks:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- or:
|
||||
- and:
|
||||
- isAction:
|
||||
action: Opened
|
||||
- not:
|
||||
hasLabel:
|
||||
label: ⛺ Reserved
|
||||
then:
|
||||
- addLabel:
|
||||
label: Needs-Triage
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- isAction:
|
||||
action: Created
|
||||
- isActivitySender:
|
||||
issueAuthor: True
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
then:
|
||||
- addLabel:
|
||||
label: Needs-Attention
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- not:
|
||||
isAction:
|
||||
action: Closed
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
then:
|
||||
- removeLabel:
|
||||
label: No-Recent-Activity
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
then:
|
||||
- removeLabel:
|
||||
label: No-Recent-Activity
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request_Review
|
||||
- isAction:
|
||||
action: Submitted
|
||||
- isReviewState:
|
||||
reviewState: Changes_requested
|
||||
then:
|
||||
- addLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
- isActivitySender:
|
||||
issueAuthor: True
|
||||
- not:
|
||||
isAction:
|
||||
action: Closed
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- isActivitySender:
|
||||
issueAuthor: True
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request_Review
|
||||
- isActivitySender:
|
||||
issueAuthor: True
|
||||
- hasLabel:
|
||||
label: Needs-Author-Feedback
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
- not:
|
||||
isAction:
|
||||
action: Closed
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
then:
|
||||
- removeLabel:
|
||||
label: No-Recent-Activity
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
then:
|
||||
- removeLabel:
|
||||
label: No-Recent-Activity
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request_Review
|
||||
- hasLabel:
|
||||
label: No-Recent-Activity
|
||||
then:
|
||||
- removeLabel:
|
||||
label: No-Recent-Activity
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
- hasLabel:
|
||||
label: AutoMerge
|
||||
then:
|
||||
- enableAutoMerge:
|
||||
mergeMethod: Squash
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
- labelRemoved:
|
||||
label: AutoMerge
|
||||
then:
|
||||
- disableAutoMerge
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- or:
|
||||
- and:
|
||||
- isLabeled
|
||||
- hasLabel:
|
||||
label: Mass-Chaos
|
||||
- isOpen
|
||||
- isLabeled
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Needs-Tag-Fix
|
||||
- or:
|
||||
- and:
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Accessibility
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Build
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Extensibility
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Fonts
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Input
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Interaction
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Interop
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Output
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Performance
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Rendering
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Server
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Settings
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-TerminalConnection
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-TerminalControl
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-User Interface
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-VT
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-CodeHealth
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Quality
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-AzureShell
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Schema
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Commandline
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-ShellExtension
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-WPFControl
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Settings UI
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-DefApp
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Remoting
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Windowing
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Theming
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Area-Localization
|
||||
- and:
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Bug
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Docs
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Feature
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Question
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Samples
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Task
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Issue-Scenario
|
||||
- and:
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Cmd.exe
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Colortool
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Conhost
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Conpty
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Meta
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Powershell
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-Terminal
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Product-WSL
|
||||
- and:
|
||||
- not: isOpen
|
||||
- and:
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Answered
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-By-Design
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Duplicate
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-External
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Fix-Available
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Fix-Committed
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Won't-Fix
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Needs-Triage
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Resolution-Duplicate
|
||||
- not:
|
||||
hasLabel:
|
||||
label: ⛺ Reserved
|
||||
- not:
|
||||
hasLabel:
|
||||
label: Tracking-External
|
||||
then:
|
||||
- addLabel:
|
||||
label: Needs-Tag-Fix
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- and:
|
||||
- isLabeled
|
||||
- hasLabel:
|
||||
label: Needs-Tag-Fix
|
||||
- and:
|
||||
- or:
|
||||
- hasLabel:
|
||||
label: Area-Accessibility
|
||||
- hasLabel:
|
||||
label: Area-Build
|
||||
- hasLabel:
|
||||
label: Area-Extensibility
|
||||
- hasLabel:
|
||||
label: Area-Fonts
|
||||
- hasLabel:
|
||||
label: Area-Input
|
||||
- hasLabel:
|
||||
label: Area-Interaction
|
||||
- hasLabel:
|
||||
label: Area-Interop
|
||||
- hasLabel:
|
||||
label: Area-Output
|
||||
- hasLabel:
|
||||
label: Area-Performance
|
||||
- hasLabel:
|
||||
label: Area-Rendering
|
||||
- hasLabel:
|
||||
label: Area-Server
|
||||
- hasLabel:
|
||||
label: Area-Settings
|
||||
- hasLabel:
|
||||
label: Area-TerminalConnection
|
||||
- hasLabel:
|
||||
label: Area-TerminalControl
|
||||
- hasLabel:
|
||||
label: Area-User Interface
|
||||
- hasLabel:
|
||||
label: Area-VT
|
||||
- hasLabel:
|
||||
label: Area-CodeHealth
|
||||
- hasLabel:
|
||||
label: Area-Quality
|
||||
- hasLabel:
|
||||
label: Area-Schema
|
||||
- hasLabel:
|
||||
label: Area-AzureShell
|
||||
- hasLabel:
|
||||
label: Area-Commandline
|
||||
- hasLabel:
|
||||
label: Area-ShellExtension
|
||||
- hasLabel:
|
||||
label: Area-WPFControl
|
||||
- hasLabel:
|
||||
label: Area-Settings UI
|
||||
- hasLabel:
|
||||
label: Area-DefApp
|
||||
- hasLabel:
|
||||
label: Area-Localization
|
||||
- hasLabel:
|
||||
label: Area-Windowing
|
||||
- hasLabel:
|
||||
label: Area-Theming
|
||||
- hasLabel:
|
||||
label: Area-AtlasEngine
|
||||
- hasLabel:
|
||||
label: Area-CmdPal
|
||||
- or:
|
||||
- hasLabel:
|
||||
label: Issue-Bug
|
||||
- hasLabel:
|
||||
label: Issue-Docs
|
||||
- hasLabel:
|
||||
label: Issue-Feature
|
||||
- hasLabel:
|
||||
label: Issue-Question
|
||||
- hasLabel:
|
||||
label: Issue-Samples
|
||||
- hasLabel:
|
||||
label: Issue-Task
|
||||
- hasLabel:
|
||||
label: Issue-Scenario
|
||||
- or:
|
||||
- hasLabel:
|
||||
label: Product-Cmd.exe
|
||||
- hasLabel:
|
||||
label: Product-Colortool
|
||||
- hasLabel:
|
||||
label: Product-Conhost
|
||||
- hasLabel:
|
||||
label: Product-Conpty
|
||||
- hasLabel:
|
||||
label: Product-Meta
|
||||
- hasLabel:
|
||||
label: Product-Powershell
|
||||
- hasLabel:
|
||||
label: Product-Terminal
|
||||
- hasLabel:
|
||||
label: Product-WSL
|
||||
- or:
|
||||
- isOpen
|
||||
- and:
|
||||
- not: isOpen
|
||||
- or:
|
||||
- hasLabel:
|
||||
label: Resolution-Answered
|
||||
- hasLabel:
|
||||
label: Resolution-By-Design
|
||||
- hasLabel:
|
||||
label: Resolution-Duplicate
|
||||
- hasLabel:
|
||||
label: Resolution-External
|
||||
- hasLabel:
|
||||
label: Resolution-Fix-Available
|
||||
- hasLabel:
|
||||
label: Resolution-Fix-Committed
|
||||
- hasLabel:
|
||||
label: Resolution-Won't-Fix
|
||||
- hasLabel:
|
||||
label: Tracking-External
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Tag-Fix
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
then:
|
||||
- inPrLabel:
|
||||
label: In-PR
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- hasLabel:
|
||||
label: Needs-Tag-Fix
|
||||
- hasLabel:
|
||||
label: Resolution-Duplicate
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Tag-Fix
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- or:
|
||||
- titleContains:
|
||||
pattern: ^\s*Bug Report \(IF I DO NOT CHANGE THIS THE ISSUE WILL BE AUTO-CLOSED\)\s*$
|
||||
isRegex: True
|
||||
- titleContains:
|
||||
pattern: ^\s*Bug Report\s*$
|
||||
isRegex: True
|
||||
- or:
|
||||
- isAction:
|
||||
action: Opened
|
||||
- isAction:
|
||||
action: Reopened
|
||||
- not:
|
||||
activitySenderHasPermission:
|
||||
permission: Write
|
||||
- not:
|
||||
activitySenderHasPermission:
|
||||
permission: Admin
|
||||
then:
|
||||
- closeIssue
|
||||
- addLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- addReply:
|
||||
reply: Hi! Thanks for attempting to open an issue. Unfortunately, your title wasn't changed from the original template which makes it very hard for us to track and triage. You are welcome to fix up the title and try again with a new issue.
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- or:
|
||||
- isAction:
|
||||
action: Opened
|
||||
- isAction:
|
||||
action: Reopened
|
||||
- or:
|
||||
- not:
|
||||
bodyContains:
|
||||
pattern: .+
|
||||
isRegex: True
|
||||
then:
|
||||
- closeIssue
|
||||
- addLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- addReply:
|
||||
reply: "Hi! Thanks for attempting to open an issue. Unfortunately, you didn't write anything in the body which makes it impossible to understand your concern. You are welcome to fix up the issue and try again by opening another issue with the body filled out. "
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
- isLabeled
|
||||
- hasLabel:
|
||||
label: Needs-Second
|
||||
- isOpen
|
||||
then:
|
||||
- requestReview:
|
||||
reviewer: zadjii-msft
|
||||
- requestReview:
|
||||
reviewer: PankajBhojwani
|
||||
- requestReview:
|
||||
reviewer: carlos-zamora
|
||||
- requestReview:
|
||||
reviewer: dhowett
|
||||
- requestReview:
|
||||
reviewer: lhecker
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request_Review
|
||||
- not: isOpen
|
||||
- hasLabel:
|
||||
label: Needs-Second
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Second
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issues
|
||||
- hasLabel:
|
||||
label: In-PR
|
||||
- hasLabel:
|
||||
label: Help Wanted
|
||||
- isLabeled
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Help-Wanted
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- commentContains:
|
||||
pattern: '\/dup(licate|e)?(\s+of)?\s+\#[\d]+'
|
||||
isRegex: True
|
||||
- or:
|
||||
- activitySenderHasPermission:
|
||||
permission: Admin
|
||||
- activitySenderHasPermission:
|
||||
permission: Write
|
||||
then:
|
||||
- addReply:
|
||||
reply: Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!
|
||||
- closeIssue
|
||||
- removeLabel:
|
||||
label: Needs-Triage
|
||||
- addLabel:
|
||||
label: Resolution-Duplicate
|
||||
- removeLabel:
|
||||
label: Needs-Tag-Fix
|
||||
- removeLabel:
|
||||
label: Needs-Attention
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- removeLabel:
|
||||
label: Needs-Repro
|
||||
- removeLabel:
|
||||
label: Needs-Second
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- commentContains:
|
||||
pattern: '\/feedback'
|
||||
isRegex: True
|
||||
- or:
|
||||
- activitySenderHasPermission:
|
||||
permission: Admin
|
||||
- activitySenderHasPermission:
|
||||
permission: Write
|
||||
then:
|
||||
- addReply:
|
||||
reply: >2-
|
||||
|
||||
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><br><br><br><br>
|
||||
- addLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
then:
|
||||
- cleanEmailReply
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Pull_Request
|
||||
then:
|
||||
- labelSync:
|
||||
pattern: Issue-
|
||||
- labelSync:
|
||||
pattern: Area-
|
||||
- labelSync:
|
||||
pattern: Priority-
|
||||
- labelSync:
|
||||
pattern: Product-
|
||||
- labelSync:
|
||||
pattern: Severity-
|
||||
- labelSync:
|
||||
pattern: Impact-
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- commentContains:
|
||||
pattern: '\/dup(licate|e)?(\s+of)?\s+https'
|
||||
isRegex: True
|
||||
- or:
|
||||
- activitySenderHasPermission:
|
||||
permission: Admin
|
||||
- activitySenderHasPermission:
|
||||
permission: Write
|
||||
then:
|
||||
- addReply:
|
||||
reply: Hi! We've identified this issue as a duplicate of one that exists on somebody else's Issue Tracker. Please make sure you subscribe to the referenced external issue for future updates. Thanks for your report!
|
||||
- closeIssue
|
||||
- removeLabel:
|
||||
label: Needs-Triage
|
||||
- addLabel:
|
||||
label: Resolution-External
|
||||
- removeLabel:
|
||||
label: Needs-Attention
|
||||
- removeLabel:
|
||||
label: Needs-Author-Feedback
|
||||
- removeLabel:
|
||||
label: Needs-Bisect
|
||||
- removeLabel:
|
||||
label: Needs-Repro
|
||||
- removeLabel:
|
||||
label: Needs-Second
|
||||
description:
|
||||
- if:
|
||||
- payloadType: Issue_Comment
|
||||
- commentContains:
|
||||
pattern: /?
|
||||
isRegex: False
|
||||
- or:
|
||||
- activitySenderHasPermission:
|
||||
permission: Admin
|
||||
- activitySenderHasPermission:
|
||||
permission: Write
|
||||
then:
|
||||
- removeLabel:
|
||||
label: Needs-Attention
|
||||
- addLabel:
|
||||
label: Needs-Author-Feedback
|
||||
description:
|
||||
onFailure:
|
||||
onSuccess:
|
||||
4
.vscode/settings.json
vendored
@@ -103,7 +103,9 @@
|
||||
"files.exclude": {
|
||||
"**/bin/**": true,
|
||||
"**/obj/**": true,
|
||||
"**/packages/**": true,
|
||||
"**/Generated Files/**": true
|
||||
},
|
||||
"search.exclude": {
|
||||
"**/packages/**": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ If you don't have any additional info/context to add but would like to indicate
|
||||
|
||||
If you're able & willing to help fix issues and/or implement features, we'd love your contribution!
|
||||
|
||||
The best place to start is the list of ["good first issue"](https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22++label%3A%22good+first+issue%22+)s. These are bugs or tasks that we on the team believe would be easier to implement for someone without any prior experience in the codebase. Once you're feeling more comfortable in the codebase, feel free to just use the ["Help Wanted"](https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22+) label, or just find an issue you're interested in and hop in!
|
||||
The best place to start is the list of ["walkthroughs"](https://aka.ms/terminal-walkthroughs). This is a collection of issues where we've written a "walkthrough", little guides to help get started with a particular issue. These are usually good first issues, and are a great way to get familiar with the codebase. Additionally, the list of ["good first issue"](https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22++label%3A%22good+first+issue%22+)s is another set of issues that might be easier for first-time contributors. Once you're feeling more comfortable in the codebase, feel free to just use the ["Help Wanted"](https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22+) label, or just find any issue you're interested in and hop in!
|
||||
|
||||
Generally, we categorize issues in the following way, which is largely derived from our old internal work tracking system:
|
||||
* ["Bugs"](https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3A%22Issue-Bug%22+) are parts of the Terminal & Console that are not quite working the right way. There's code to already support some scenario, but it's not quite working right. Fixing these is generally a matter of debugging the broken functionality and fixing the wrong code.
|
||||
|
||||
@@ -420,6 +420,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TerminalStress", "src\tools
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingTests", "src\tools\RenderingTests\RenderingTests.vcxproj", "{37C995E0-2349-4154-8E77-4A52C0C7F46D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchcat", "src\tools\benchcat\benchcat.vcxproj", "{2C836962-9543-4CE5-B834-D28E1F124B66}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleMonitor", "src\tools\ConsoleMonitor\ConsoleMonitor.vcxproj", "{328729E9-6723-416E-9C98-951F1473BBE1}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
AuditMode|Any CPU = AuditMode|Any CPU
|
||||
@@ -2780,11 +2784,8 @@ Global
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x64.Build.0 = Debug|x64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x86.Build.0 = Debug|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64
|
||||
@@ -2793,11 +2794,48 @@ Global
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x64.ActiveCfg = Release|x64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x64.Build.0 = Release|x64
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x86.Build.0 = Release|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM.ActiveCfg = AuditMode|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x64.ActiveCfg = Release|x64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x86.ActiveCfg = Release|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|x64.ActiveCfg = Fuzzing|x64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Release|x64.ActiveCfg = Release|x64
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.Release|x86.ActiveCfg = Release|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|ARM.ActiveCfg = AuditMode|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|x64.ActiveCfg = Release|x64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|x86.ActiveCfg = Release|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|x64.ActiveCfg = Fuzzing|x64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Release|x64.ActiveCfg = Release|x64
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1}.Release|x86.ActiveCfg = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -2904,6 +2942,8 @@ Global
|
||||
{3C67784E-1453-49C2-9660-483E2CC7F7AD} = {40BD8415-DD93-4200-8D82-498DDDC08CC8}
|
||||
{613CCB57-5FA9-48EF-80D0-6B1E319E20C4} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||
{2C836962-9543-4CE5-B834-D28E1F124B66} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||
{328729E9-6723-416E-9C98-951F1473BBE1} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {3140B1B7-C8EE-43D1-A772-D82A7061A271}
|
||||
|
||||
20
README.md
@@ -21,7 +21,8 @@ Related repositories include:
|
||||
|
||||
## Installing and running Windows Terminal
|
||||
|
||||
> **Note**: Windows Terminal requires Windows 10 2004 (build 19041) or later
|
||||
> **Note**\
|
||||
> Windows Terminal requires Windows 10 2004 (build 19041) or later
|
||||
|
||||
### Microsoft Store [Recommended]
|
||||
|
||||
@@ -52,9 +53,10 @@ fails for any reason, you can try the following command at a PowerShell prompt:
|
||||
Add-AppxPackage Microsoft.WindowsTerminal_<versionNumber>.msixbundle
|
||||
```
|
||||
|
||||
> **Note**: If you install Terminal manually:
|
||||
> **Note**\
|
||||
> If you install Terminal manually:
|
||||
>
|
||||
> * You may need to install the [VC++ v14 Desktop Framework Package](https://docs.microsoft.com/troubleshoot/cpp/c-runtime-packages-desktop-bridge#how-to-install-and-update-desktop-framework-packages).
|
||||
> * You may need to install the [VC++ v14 Desktop Framework Package](https://docs.microsoft.com/troubleshoot/cpp/c-runtime-packages-desktop-bridge#how-to-install-and-update-desktop-framework-packages).
|
||||
> This should only be necessary on older builds of Windows 10 and only if you get an error about missing framework packages.
|
||||
> * Terminal will not auto-update when new builds are released so you will need
|
||||
> to regularly install the latest Terminal release to receive all the latest
|
||||
@@ -70,6 +72,9 @@ package:
|
||||
winget install --id Microsoft.WindowsTerminal -e
|
||||
```
|
||||
|
||||
> **Note**\
|
||||
> Due to [a dependency issue](https://github.com/microsoft/terminal/issues/15663), Terminal's current versions cannot be installed via the Windows Package Manager CLI. To install the stable release 1.17 or later, or the Preview release 1.18 or later, please use an alternative installation method.
|
||||
|
||||
#### Via Chocolatey (unofficial)
|
||||
|
||||
[Chocolatey](https://chocolatey.org) users can download and install the latest
|
||||
@@ -235,7 +240,8 @@ Cause: You're launching the incorrect solution in Visual Studio.
|
||||
Solution: Make sure you're building & deploying the `CascadiaPackage` project in
|
||||
Visual Studio.
|
||||
|
||||
> **Note**: `OpenConsole.exe` is just a locally-built `conhost.exe`, the classic
|
||||
> **Note**\
|
||||
> `OpenConsole.exe` is just a locally-built `conhost.exe`, the classic
|
||||
> Windows Console that hosts Windows' command-line infrastructure. OpenConsole
|
||||
> is used by Windows Terminal to connect to and communicate with command-line
|
||||
> applications (via
|
||||
@@ -271,10 +277,10 @@ similar open/closed preexisting issues before creating a new issue.**
|
||||
If you would like to ask a question that you feel doesn't warrant an issue
|
||||
(yet), please reach out to us via Twitter:
|
||||
|
||||
* Kayla Cinnamon, Program Manager:
|
||||
[@cinnamon\_msft](https://twitter.com/cinnamon_msft)
|
||||
* Christopher Nguyen, Product Manager:
|
||||
[@nguyen_dows](https://twitter.com/nguyen_dows)
|
||||
* Dustin Howett, Engineering Lead: [@dhowett](https://twitter.com/DHowett)
|
||||
* Mike Griese, Senior Developer: [@zadjii](https://twitter.com/zadjii)
|
||||
* Mike Griese, Senior Developer: [@zadjii@mastodon.social](https://mastodon.social/@zadjii)
|
||||
* Carlos Zamora, Developer: [@cazamor_msft](https://twitter.com/cazamor_msft)
|
||||
* Pankaj Bhojwani, Developer
|
||||
* Leonard Hecker, Developer: [@LeonardHecker](https://twitter.com/LeonardHecker)
|
||||
|
||||
@@ -20,9 +20,7 @@ Param(
|
||||
$helixResultsContainerUri = $Env:HELIX_RESULTS_CONTAINER_URI
|
||||
$helixResultsContainerRsas = $Env:HELIX_RESULTS_CONTAINER_RSAS
|
||||
|
||||
$rerunPassesRequiredToAvoidFailure = $env:rerunPassesRequiredToAvoidFailure
|
||||
|
||||
Add-Type -Language CSharp -ReferencedAssemblies System.Xml,System.Xml.Linq,System.Runtime.Serialization,System.Runtime.Serialization.Json (Get-Content $PSScriptRoot\HelixTestHelpers.cs -Raw)
|
||||
|
||||
$testResultParser = [HelixTestHelpers.TestResultParser]::new($TestNamePrefix, $helixResultsContainerUri, $helixResultsContainerRsas)
|
||||
$testResultParser.ConvertWttLogToXUnitLog($WttInputPath, $WttSingleRerunInputPath, $WttMultipleRerunInputPath, $XUnitOutputPath, $rerunPassesRequiredToAvoidFailure)
|
||||
$testResultParser.ConvertWttLogToXUnitLog($WttInputPath, $WttSingleRerunInputPath, $WttMultipleRerunInputPath, $XUnitOutputPath)
|
||||
|
||||
@@ -20,32 +20,13 @@ namespace HelixTestHelpers
|
||||
public string Name { get; set; }
|
||||
public string SourceWttFile { get; set; }
|
||||
public bool Passed { get; set; }
|
||||
public bool Skipped { get; set; }
|
||||
public bool CleanupPassed { get; set; }
|
||||
public TimeSpan ExecutionTime { get; set; }
|
||||
public string Details { get; set; }
|
||||
|
||||
public List<string> Screenshots { get; private set; }
|
||||
public List<TestResult> RerunResults { get; private set; }
|
||||
|
||||
// Returns true if the test pass rate is sufficient to avoid being counted as a failure.
|
||||
public bool PassedOrUnreliable(int requiredNumberOfPasses)
|
||||
{
|
||||
if(Passed)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(RerunResults.Count == 1)
|
||||
{
|
||||
return RerunResults[0].Passed;
|
||||
}
|
||||
else
|
||||
{
|
||||
return RerunResults.Where(r => r.Passed).Count() >= requiredNumberOfPasses;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
@@ -221,7 +202,9 @@ namespace HelixTestHelpers
|
||||
testsExecuting--;
|
||||
|
||||
// If any inner test fails, we'll still fail the outer
|
||||
currentResult.Passed &= element.Attribute("Result").Value == "Pass";
|
||||
var value = element.Attribute("Result").Value;
|
||||
currentResult.Passed = value == "Pass";
|
||||
currentResult.Skipped = value == "Skipped";
|
||||
|
||||
// Only gather execution data if this is the outer test we ran initially
|
||||
if (testsExecuting == 0)
|
||||
@@ -498,7 +481,7 @@ namespace HelixTestHelpers
|
||||
return subResultsJsonByMethod;
|
||||
}
|
||||
|
||||
public void ConvertWttLogToXUnitLog(string wttInputPath, string wttSingleRerunInputPath, string wttMultipleRerunInputPath, string xunitOutputPath, int requiredPassRateThreshold)
|
||||
public void ConvertWttLogToXUnitLog(string wttInputPath, string wttSingleRerunInputPath, string wttMultipleRerunInputPath, string xunitOutputPath)
|
||||
{
|
||||
TestPass testPass = TestPass.ParseTestWttFileWithReruns(wttInputPath, wttSingleRerunInputPath, wttMultipleRerunInputPath, cleanupFailuresAreRegressions: true, truncateTestNames: false);
|
||||
var results = testPass.TestResults;
|
||||
@@ -510,8 +493,8 @@ namespace HelixTestHelpers
|
||||
// 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.
|
||||
|
||||
int failedCount = results.Where(r => !r.PassedOrUnreliable(requiredPassRateThreshold)).Count();
|
||||
int skippedCount = results.Where(r => !r.Passed && r.PassedOrUnreliable(requiredPassRateThreshold)).Count();
|
||||
int failedCount = results.Where(r => !r.Passed).Count();
|
||||
int skippedCount = results.Where(r => (!r.Passed && r.Skipped)).Count();
|
||||
|
||||
var root = new XElement("assemblies");
|
||||
|
||||
@@ -557,12 +540,13 @@ namespace HelixTestHelpers
|
||||
|
||||
string resultString = string.Empty;
|
||||
|
||||
if (result.Passed)
|
||||
if (result.Passed && !result.Skipped)
|
||||
{
|
||||
resultString = "Pass";
|
||||
}
|
||||
else if(result.PassedOrUnreliable(requiredPassRateThreshold))
|
||||
else if (result.Skipped)
|
||||
{
|
||||
|
||||
resultString = "Skip";
|
||||
}
|
||||
else
|
||||
@@ -571,31 +555,25 @@ namespace HelixTestHelpers
|
||||
}
|
||||
|
||||
|
||||
test.SetAttributeValue("result", resultString);
|
||||
|
||||
if (!result.Passed)
|
||||
{
|
||||
// If a test failed, we'll have rerun it multiple times.
|
||||
// We'll save the subresults to a JSON text file that we'll upload to the helix results container -
|
||||
// this allows it to be as long as we want, whereas the reason field in Azure DevOps has a 4000 character limit.
|
||||
string subResultsFileName = methodName + "_subresults.json";
|
||||
string subResultsFilePath = Path.Combine(Path.GetDirectoryName(wttInputPath), subResultsFileName);
|
||||
|
||||
if (result.PassedOrUnreliable(requiredPassRateThreshold))
|
||||
if (result.Skipped)
|
||||
{
|
||||
var reason = new XElement("reason");
|
||||
reason.Add(new XCData(GetUploadedFileUrl(subResultsFileName, helixResultsContainerUri, helixResultsContainerRsas)));
|
||||
reason.Add(new XCData("Test skipped"));
|
||||
test.Add(reason);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
var failure = new XElement("failure");
|
||||
var message = new XElement("message");
|
||||
message.Add(new XCData(GetUploadedFileUrl(subResultsFileName, helixResultsContainerUri, helixResultsContainerRsas)));
|
||||
message.Add(new XCData("Test failed"));
|
||||
failure.Add(message);
|
||||
test.Add(failure);
|
||||
}
|
||||
}
|
||||
|
||||
test.SetAttributeValue("result", resultString);
|
||||
|
||||
collection.Add(test);
|
||||
}
|
||||
|
||||
|
||||
38
build/Helix/OutputTestErrorsForAzureDevops.ps1
Normal file
@@ -0,0 +1,38 @@
|
||||
Param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$XUnitOutputPath
|
||||
)
|
||||
|
||||
# This script is used to parse the XUnit output from the test runs and print out
|
||||
# the tests that failed.
|
||||
#
|
||||
# Why you might ask? Well, it sure seems like Azure DevOps doesn't like the fact
|
||||
# that we just call our tests in a powershell script. It can't seemingly find
|
||||
# the actual errors in the TAEF logs. That means when you just go to the
|
||||
# "Checks" page on GitHub, the Azure DevOps integration doesn't have anything
|
||||
# meaningful to say other than "PowerShell exited with code '1'". If we however,
|
||||
# just manually emit the test names formatted with "#[error]" in front of them,
|
||||
# well, then the integration will all work like magic.
|
||||
|
||||
# Load the test results as a XML object
|
||||
$testResults = [xml](Get-Content -Path $XUnitOutputPath)
|
||||
|
||||
# Our XML looks like:
|
||||
# <assemblies>
|
||||
# <assembly name="MUXControls.Test.dll" test-framework="TAEF" run-date="2023-08-14" run-time="11:38:01" total="524" passed="520" failed="4" skipped="1" time="8943" errors="0">
|
||||
# <collection total="524" passed="520" failed="4" skipped="1" name="Test collection" time="8943">
|
||||
# <test name="ControlCoreTests::TestSimpleClickSelection" type="ControlCoreTests" method="TestSimpleClickSelection" time="0.016" result="Fail">
|
||||
|
||||
# Iterate over all the assemblies and print all the tests that failed
|
||||
foreach ($assembly in $testResults.assemblies.assembly) {
|
||||
foreach ($collection in $assembly.collection) {
|
||||
foreach ($test in $collection.test) {
|
||||
if ($test.result -eq "Fail") {
|
||||
# This particular format is taken from the Azure DevOps documentation:
|
||||
# https://github.com/microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md
|
||||
# This will treat this line as an error message
|
||||
Write-Output "##vso[task.logissue type=error]$($test.name) Failed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"instanceUrl": "https://microsoft.visualstudio.com",
|
||||
"projectName": "OS",
|
||||
"areaPath": "OS\\Windows Client and Services\\ADEPT\\E4D-Engineered for Developers\\SHINE\\Terminal",
|
||||
"notificationAliases": ["condev@microsoft.com", "duhowett@microsoft.com"]
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Optional, defaults to main. Name of the branch which will be used for calculating branch point. -->
|
||||
<PGOBranch>release-1.18</PGOBranch>
|
||||
<PGOBranch>main</PGOBranch>
|
||||
|
||||
<!-- Mandatory. Name of the NuGet package which will contain PGO databases for consumption by build system. -->
|
||||
<PGOPackageName>Microsoft.Internal.Windows.Terminal.PGODatabase</PGOPackageName>
|
||||
|
||||
@@ -8,12 +8,6 @@ schedules:
|
||||
- main
|
||||
always: false # only run if there's code changes!
|
||||
|
||||
|
||||
parameters:
|
||||
- name: targetBranch
|
||||
type: string
|
||||
default: "automated/loc-update"
|
||||
|
||||
pool:
|
||||
vmImage: windows-2019
|
||||
|
||||
@@ -44,13 +38,6 @@ steps:
|
||||
persistCredentials: true
|
||||
path: s/Terminal.Internal
|
||||
|
||||
- pwsh: |-
|
||||
Install-Module PSGitHub -Scope CurrentUser -Force
|
||||
git config --local user.email "consvc@microsoft.com"
|
||||
git config --local user.name "Console Service Bot"
|
||||
git config --local core.autocrlf true
|
||||
displayName: Prepare git submission environment
|
||||
|
||||
- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@1
|
||||
displayName: 'Touchdown Build - 7105, PRODEXT'
|
||||
inputs:
|
||||
@@ -64,44 +51,13 @@ steps:
|
||||
outputDirectoryRoot: LocOutput
|
||||
appendRelativeDir: true
|
||||
pseudoSetting: Included
|
||||
localizationTarget: true
|
||||
|
||||
- pwsh: |-
|
||||
Remove-Item -EA:Ignore -R -Force LocOutput\Terminal.Internal
|
||||
$Files = Get-ChildItem LocOutput -R -Include 'ContextMenu.resw','Resources.resw' | ? FullName -Like '*en-US\*\*.resw'
|
||||
$Files | % { Move-Item -Verbose $_.Directory $_.Directory.Parent.Parent -EA:Ignore }
|
||||
& tar.exe -c -f LocOutputMunged.tar -C LocOutput .
|
||||
& tar.exe -x -v -f LocOutputMunged.tar
|
||||
rm LocOutputMunged.tar
|
||||
rm -r -fo LocOutput
|
||||
& ./build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1
|
||||
displayName: Move Loc files to the right places
|
||||
# Saving one of these makes it really easy to inspect the loc output...
|
||||
- powershell: 'tar czf LocOutput.tar.gz LocOutput'
|
||||
displayName: 'Archive Loc Output for Submission'
|
||||
|
||||
- pwsh: |-
|
||||
git add **/*.resw
|
||||
git status
|
||||
git diff --quiet --cached --exit-code
|
||||
If ($LASTEXITCODE -Ne 0) {
|
||||
$Now = Get-Date
|
||||
git commit -m "Localization Updates - $Now"
|
||||
git push origin HEAD:refs/heads/${{parameters.targetBranch}} -f
|
||||
Write-Host "##vso[task.setvariable variable=ChangesPushedToRepo]1"
|
||||
} Else {
|
||||
Write-Host "##vso[task.setvariable variable=ChangesPushedToRepo]0"
|
||||
}
|
||||
displayName: git commit and push
|
||||
|
||||
- pwsh: |-
|
||||
Import-Module PSGitHub
|
||||
$BaseBranch = "$(Build.SourceBranch)" -Replace "^refs/heads/",""
|
||||
Write-Host "Preparing PR against $BaseBranch"
|
||||
$PSDefaultParameterValues['*GitHub*:Owner'] = "microsoft"
|
||||
$PSDefaultParameterValues['*GitHub*:RepositoryName'] = "terminal"
|
||||
$PSDefaultParameterValues['*GitHub*:Token'] = ("$(GithubPullRequestToken)" | ConvertTo-SecureString -AsPlainText -Force)
|
||||
$existingPr = Get-GitHubPullRequest -HeadBranch "${{parameters.targetBranch}}" -BaseBranch $BaseBranch
|
||||
If ($null -Eq $existingPr) {
|
||||
$Now = Get-Date
|
||||
New-GitHubPullRequest -Head "${{parameters.targetBranch}}" -Base $BaseBranch -Title "Localization Updates - $BaseBranch - $Now" -Verbose
|
||||
}
|
||||
displayName: Publish pull request
|
||||
condition: and(eq(variables['ChangesPushedToRepo'], '1'), succeeded())
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: LocOutput'
|
||||
inputs:
|
||||
PathtoPublish: LocOutput.tar.gz
|
||||
ArtifactName: LocOutput
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
trigger: none
|
||||
pr: none
|
||||
schedules:
|
||||
- cron: "30 3 * * 2-6" # Run at 03:30 UTC Tuesday through Saturday (After the work day in Pacific, Mon-Fri)
|
||||
displayName: "Nightly Terminal Build"
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: false # only run if there's code changes!
|
||||
|
||||
parameters:
|
||||
- name: publishToAzure
|
||||
displayName: "Deploy to **PUBLIC** Azure Storage"
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
|
||||
|
||||
variables:
|
||||
- template: templates-v2/variables-nuget-package-version.yml
|
||||
parameters:
|
||||
branding: Canary
|
||||
- template: templates-v2/variables-onebranch-config.yml
|
||||
|
||||
extends:
|
||||
template: templates-v2/pipeline-onebranch-full-release-build.yml
|
||||
parameters:
|
||||
official: true
|
||||
branding: Canary
|
||||
buildTerminal: true
|
||||
pgoBuildMode: Optimize
|
||||
codeSign: true
|
||||
publishSymbolsToPublic: true
|
||||
publishVpackToWindows: false
|
||||
symbolExpiryTime: 15
|
||||
${{ if eq(true, parameters.publishToAzure) }}:
|
||||
extraPublishJobs:
|
||||
- template: job-deploy-to-azure-storage.yml
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
dependsOn: [PublishSymbols]
|
||||
storagePublicRootURL: $(AppInstallerRootURL)
|
||||
subscription: $(AzureSubscriptionName)
|
||||
storageAccount: $(AzureStorageAccount)
|
||||
storageContainer: $(AzureStorageContainer)
|
||||
buildConfiguration: Release
|
||||
buildPlatforms: [x64, x86, arm64]
|
||||
environment: production-canary
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
trigger: none
|
||||
pr: none
|
||||
|
||||
# Expose all of these parameters for user configuration.
|
||||
parameters:
|
||||
- name: branding
|
||||
displayName: "Branding (Build Type)"
|
||||
type: string
|
||||
default: Release
|
||||
values:
|
||||
- Release
|
||||
- Preview
|
||||
- Canary
|
||||
- Dev
|
||||
- name: buildTerminal
|
||||
displayName: "Build Windows Terminal MSIX"
|
||||
type: boolean
|
||||
default: true
|
||||
- name: buildConPTY
|
||||
displayName: "Build ConPTY NuGet"
|
||||
type: boolean
|
||||
default: false
|
||||
- name: buildWPF
|
||||
displayName: "Build Terminal WPF Control"
|
||||
type: boolean
|
||||
default: false
|
||||
- name: pgoBuildMode
|
||||
displayName: "PGO Build Mode"
|
||||
type: string
|
||||
default: Optimize
|
||||
values:
|
||||
- Optimize
|
||||
- Instrument
|
||||
- None
|
||||
- name: buildConfigurations
|
||||
displayName: "Build Configurations"
|
||||
type: object
|
||||
default:
|
||||
- Release
|
||||
- name: buildPlatforms
|
||||
displayName: "Build Platforms"
|
||||
type: object
|
||||
default:
|
||||
- x64
|
||||
- x86
|
||||
- arm64
|
||||
- name: terminalInternalPackageVersion
|
||||
displayName: "Terminal Internal Package Version"
|
||||
type: string
|
||||
default: '0.0.8'
|
||||
|
||||
- name: publishSymbolsToPublic
|
||||
displayName: "Publish Symbols to MSDL"
|
||||
type: boolean
|
||||
default: true
|
||||
- name: publishVpackToWindows
|
||||
displayName: "Publish VPack to Windows"
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
|
||||
|
||||
variables:
|
||||
- template: templates-v2/variables-nuget-package-version.yml
|
||||
parameters:
|
||||
branding: ${{ parameters.branding }}
|
||||
- template: templates-v2/variables-onebranch-config.yml
|
||||
|
||||
extends:
|
||||
template: templates-v2/pipeline-onebranch-full-release-build.yml
|
||||
parameters:
|
||||
official: true
|
||||
branding: ${{ parameters.branding }}
|
||||
buildTerminal: ${{ parameters.buildTerminal }}
|
||||
buildConPTY: ${{ parameters.buildConPTY }}
|
||||
buildWPF: ${{ parameters.buildWPF }}
|
||||
pgoBuildMode: ${{ parameters.pgoBuildMode }}
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
codeSign: true
|
||||
terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }}
|
||||
publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }}
|
||||
publishVpackToWindows: ${{ parameters.publishVpackToWindows }}
|
||||
@@ -10,6 +10,7 @@ parameters:
|
||||
values:
|
||||
- Release
|
||||
- Preview
|
||||
- Canary
|
||||
- Dev
|
||||
- name: buildTerminal
|
||||
displayName: "Build Windows Terminal MSIX"
|
||||
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
flattenFolders: true
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
- task: EsrpCodeSigning@1
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
|
||||
@@ -62,9 +62,6 @@ parameters:
|
||||
- name: publishArtifacts
|
||||
type: boolean
|
||||
default: true
|
||||
- name: removeAllNonSignedFiles
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -171,7 +168,6 @@ jobs:
|
||||
# - Directories ending in Lib (static lib projects that we fully linked into DLLs which may also contain unnecessary resources)
|
||||
# - All LocalTests_ project outputs, as they were subsumed into TestHostApp
|
||||
# - All PDB files inside the WindowsTerminal/ output, which do not belong there.
|
||||
# - console.dll, which apparently breaks XFGCheck? lol.
|
||||
- pwsh: |-
|
||||
$binDir = '$(Terminal.BinDir)'
|
||||
$ImportLibs = Get-ChildItem $binDir -Recurse -File -Filter '*.exp' | ForEach-Object { $_.FullName -Replace "exp$","lib" }
|
||||
@@ -188,8 +184,6 @@ jobs:
|
||||
$Items += Get-ChildItem '$(Terminal.BinDir)' -Filter '*.pdb' -Recurse
|
||||
}
|
||||
|
||||
$Items += Get-ChildItem $binDir -Filter 'console.dll'
|
||||
|
||||
$Items | Remove-Item -Recurse -Force -Verbose -ErrorAction:Ignore
|
||||
displayName: Clean up static libs and extra symbols
|
||||
errorActionPreference: silentlyContinue # It's OK if this silently fails
|
||||
@@ -230,7 +224,7 @@ jobs:
|
||||
|
||||
# Code-sign everything we just put together.
|
||||
# We run the signing in Terminal.BinDir, because all of the signing batches are relative to the final architecture/configuration output folder.
|
||||
- task: EsrpCodeSigning@3
|
||||
- task: EsrpCodeSigning@1
|
||||
displayName: Submit Signing Request
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
@@ -247,14 +241,6 @@ jobs:
|
||||
Write-Host "##vso[task.setvariable variable=WindowsTerminalPackagePath]${PackageFilename}"
|
||||
displayName: Re-pack the new Terminal package after signing
|
||||
|
||||
# Some of our governed pipelines explicitly fail builds that have *any* non-codesigned filed (!)
|
||||
- ${{ if eq(parameters.removeAllNonSignedFiles, true) }}:
|
||||
- pwsh: |-
|
||||
Get-ChildItem "$(Terminal.BinDir)" -Recurse -Include "*.dll","*.exe" |
|
||||
Where-Object { (Get-AuthenticodeSignature $_).Status -Ne "Valid" } |
|
||||
Remove-Item -Verbose -Force
|
||||
displayName: Remove all non-signed output files
|
||||
|
||||
- ${{ else }}: # No Signing
|
||||
- ${{ if or(parameters.buildTerminal, parameters.buildEverything) }}:
|
||||
- pwsh: |-
|
||||
|
||||
@@ -29,9 +29,6 @@ parameters:
|
||||
- name: publishArtifacts
|
||||
type: boolean
|
||||
default: true
|
||||
- name: afterBuildSteps
|
||||
type: stepList
|
||||
default: []
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -86,13 +83,11 @@ jobs:
|
||||
$Components[0] = ([int]$Components[0] + $VersionEpoch)
|
||||
$BundleVersion = $Components -Join "."
|
||||
New-Item -Type Directory "$(System.ArtifactsDirectory)/bundle"
|
||||
$BundlePath = "$(System.ArtifactsDirectory)\bundle\$(BundleStemName)_$(XES_APPXMANIFESTVERSION)_8wekyb3d8bbwe.msixbundle"
|
||||
.\build\scripts\Create-AppxBundle.ps1 -InputPath 'bin/' -ProjectName CascadiaPackage -BundleVersion $BundleVersion -OutputPath $BundlePath
|
||||
Write-Host "##vso[task.setvariable variable=MsixBundlePath]${BundlePath}"
|
||||
.\build\scripts\Create-AppxBundle.ps1 -InputPath 'bin/' -ProjectName CascadiaPackage -BundleVersion $BundleVersion -OutputPath "$(System.ArtifactsDirectory)\bundle\$(BundleStemName)_$(XES_APPXMANIFESTVERSION)_8wekyb3d8bbwe.msixbundle"
|
||||
displayName: Create msixbundle
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
- task: EsrpCodeSigning@1
|
||||
displayName: Submit *.msixbundle to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
@@ -142,8 +137,6 @@ jobs:
|
||||
ValidateSignature: true
|
||||
Verbosity: 'Verbose'
|
||||
|
||||
- ${{ parameters.afterBuildSteps }}
|
||||
|
||||
- ${{ if eq(parameters.publishArtifacts, true) }}:
|
||||
- publish: $(JobOutputDirectory)
|
||||
artifact: $(JobOutputArtifactName)
|
||||
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
versionEnvVar: XES_PACKAGEVERSIONNUMBER
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
- task: EsrpCodeSigning@1
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
|
||||
- template: steps-ensure-nuget-version.yml
|
||||
|
||||
- task: NuGetAuthenticate@1
|
||||
- task: NuGetAuthenticate@0
|
||||
inputs:
|
||||
nuGetServiceConnections: 'Terminal Public Artifact Feed'
|
||||
|
||||
|
||||
@@ -17,12 +17,6 @@ parameters:
|
||||
- name: symbolExpiryTime
|
||||
type: string
|
||||
default: 36530 # This is the default from PublishSymbols@2
|
||||
- name: variables
|
||||
type: object
|
||||
default: {}
|
||||
- name: symbolPatGoesInTaskInputs
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -33,8 +27,6 @@ jobs:
|
||||
${{ else }}:
|
||||
displayName: Publish Symbols Internally
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
variables:
|
||||
${{ insert }}: ${{ parameters.variables }}
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
@@ -84,8 +76,6 @@ jobs:
|
||||
SymbolsProduct: 'Windows Terminal Converged Symbols'
|
||||
SymbolsVersion: '$(XES_APPXMANIFESTVERSION)'
|
||||
SymbolExpirationInDays: ${{ parameters.symbolExpiryTime }}
|
||||
${{ if eq(parameters.symbolPatGoesInTaskInputs, true) }}:
|
||||
Pat: $(ADO_microsoftpublicsymbols_PAT)
|
||||
# The ADO task does not support indexing of GitHub sources.
|
||||
# There is a bug which causes this task to fail if LIB includes an inaccessible path (even though it does not depend on it).
|
||||
# To work around this issue, we just force LIB to be any dir that we know exists.
|
||||
@@ -93,5 +83,4 @@ jobs:
|
||||
env:
|
||||
LIB: $(Build.SourcesDirectory)
|
||||
ArtifactServices_Symbol_AccountName: microsoftpublicsymbols
|
||||
${{ if ne(parameters.symbolPatGoesInTaskInputs, true) }}:
|
||||
ArtifactServices_Symbol_PAT: $(ADO_microsoftpublicsymbols_PAT)
|
||||
ArtifactServices_Symbol_PAT: $(ADO_microsoftpublicsymbols_PAT)
|
||||
|
||||
@@ -64,6 +64,14 @@ jobs:
|
||||
filePath: build\Helix\ConvertWttLogToXUnit.ps1
|
||||
arguments: -WttInputPath '${{ parameters.testLogPath }}' -WttSingleRerunInputPath 'unused.wtl' -WttMultipleRerunInputPath 'unused2.wtl' -XUnitOutputPath 'onBuildMachineResults.xml' -TestNamePrefix '$(BuildConfiguration).$(BuildPlatform)'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Manually log test failures'
|
||||
condition: always()
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: build\Helix\OutputTestErrorsForAzureDevops.ps1
|
||||
arguments: -XUnitOutputPath 'onBuildMachineResults.xml'
|
||||
|
||||
- task: PublishTestResults@2
|
||||
displayName: 'Upload converted test logs'
|
||||
condition: always()
|
||||
|
||||
@@ -58,9 +58,28 @@ parameters:
|
||||
demands: ImageOverride -equals SHINE-VS17-Latest
|
||||
|
||||
variables:
|
||||
- template: variables-nuget-package-version.yml
|
||||
parameters:
|
||||
branding: ${{ parameters.branding }}
|
||||
# If we are building a branch called "release-*", change the NuGet suffix
|
||||
# to "preview". If we don't do that, XES will set the suffix to "release1"
|
||||
# because it truncates the value after the first period.
|
||||
# We also want to disable the suffix entirely if we're Release branded while
|
||||
# on a release branch.
|
||||
# main is special, however. XES ignores main. Since we never produce actual
|
||||
# shipping builds from main, we want to force it to have a beta label as
|
||||
# well.
|
||||
#
|
||||
# In effect:
|
||||
# BRANCH / BRANDING | Release | Preview
|
||||
# ------------------|----------------------------|-----------------------------
|
||||
# release-* | 1.12.20220427 | 1.13.20220427-preview
|
||||
# main | 1.14.20220427-experimental | 1.14.20220427-experimental
|
||||
# all others | 1.14.20220427-mybranch | 1.14.20220427-mybranch
|
||||
${{ if startsWith(variables['Build.SourceBranchName'], 'release-') }}:
|
||||
${{ if eq(parameters.branding, 'Release') }}:
|
||||
NoNuGetPackBetaVersion: true
|
||||
${{ else }}:
|
||||
NuGetPackBetaVersion: preview
|
||||
${{ elseif eq(variables['Build.SourceBranchName'], 'main') }}:
|
||||
NuGetPackBetaVersion: experimental
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
@@ -101,6 +120,10 @@ stages:
|
||||
packageListDownload: e82d490c-af86-4733-9dc4-07b772033204
|
||||
versionListDownload: ${{ parameters.terminalInternalPackageVersion }}
|
||||
|
||||
- template: ./steps-fetch-and-prepare-localizations.yml
|
||||
parameters:
|
||||
includePseudoLoc: true
|
||||
|
||||
- ${{ if eq(parameters.buildWPF, true) }}:
|
||||
# Add an Any CPU build flavor for the WPF control bits
|
||||
- template: ./job-build-project.yml
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
parameters:
|
||||
- name: official
|
||||
type: boolean
|
||||
default: false
|
||||
- name: branding
|
||||
type: string
|
||||
default: Release
|
||||
values:
|
||||
- Release
|
||||
- Preview
|
||||
- Canary
|
||||
- Dev
|
||||
- name: buildTerminal
|
||||
type: boolean
|
||||
default: true
|
||||
- name: buildConPTY
|
||||
type: boolean
|
||||
default: false
|
||||
- name: buildWPF
|
||||
type: boolean
|
||||
default: false
|
||||
- name: pgoBuildMode
|
||||
type: string
|
||||
default: Optimize
|
||||
values:
|
||||
- Optimize
|
||||
- Instrument
|
||||
- None
|
||||
- name: buildConfigurations
|
||||
type: object
|
||||
default:
|
||||
- Release
|
||||
- name: buildPlatforms
|
||||
type: object
|
||||
default:
|
||||
- x64
|
||||
- x86
|
||||
- arm64
|
||||
- name: codeSign
|
||||
type: boolean
|
||||
default: true
|
||||
- name: terminalInternalPackageVersion
|
||||
type: string
|
||||
default: '0.0.8'
|
||||
|
||||
- name: publishSymbolsToPublic
|
||||
type: boolean
|
||||
default: true
|
||||
- name: publishVpackToWindows
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: extraPublishJobs
|
||||
type: object
|
||||
default: []
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: templates
|
||||
type: git
|
||||
name: OneBranch.Pipelines/GovernedTemplates
|
||||
ref: refs/heads/main
|
||||
|
||||
extends:
|
||||
${{ if eq(parameters.official, true) }}:
|
||||
template: v2/Microsoft.Official.yml@templates # https://aka.ms/obpipelines/templates
|
||||
${{ else }}:
|
||||
template: v2/Microsoft.NonOfficial.yml@templates
|
||||
parameters:
|
||||
featureFlags:
|
||||
WindowsHostVersion: 1ESWindows2022
|
||||
platform:
|
||||
name: 'windows_undocked'
|
||||
product: 'Windows Terminal'
|
||||
cloudvault: # https://aka.ms/obpipelines/cloudvault
|
||||
enabled: false
|
||||
globalSdl: # https://aka.ms/obpipelines/sdl
|
||||
tsa:
|
||||
enabled: true
|
||||
configFile: '$(Build.SourcesDirectory)\build\config\tsa.json'
|
||||
binskim:
|
||||
break: false
|
||||
scanOutputDirectoryOnly: true
|
||||
policheck:
|
||||
break: false
|
||||
severity: Note
|
||||
baseline:
|
||||
baselineFile: '$(Build.SourcesDirectory)\build\config\release.gdnbaselines'
|
||||
suppressionSet: default
|
||||
|
||||
stages:
|
||||
- stage: Build
|
||||
displayName: Build
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: ./build/pipelines/templates-v2/job-build-project.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
ob_artifactBaseName: $(JobOutputArtifactName)
|
||||
publishArtifacts: false # Handled by OneBranch
|
||||
branding: ${{ parameters.branding }}
|
||||
buildTerminal: ${{ parameters.buildTerminal }}
|
||||
buildConPTY: ${{ parameters.buildConPTY }}
|
||||
buildWPF: ${{ parameters.buildWPF }}
|
||||
pgoBuildMode: ${{ parameters.pgoBuildMode }}
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # this is handled by onebranch
|
||||
removeAllNonSignedFiles: true # appease the overlords
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
beforeBuildSteps: # Right before we build, lay down the universal package and localizations
|
||||
- task: PkgESSetupBuild@12
|
||||
displayName: Package ES - Setup Build
|
||||
inputs:
|
||||
disableOutputRedirect: true
|
||||
|
||||
- task: UniversalPackages@0
|
||||
displayName: Download terminal-internal Universal Package
|
||||
inputs:
|
||||
feedListDownload: 2b3f8893-a6e8-411f-b197-a9e05576da48
|
||||
packageListDownload: e82d490c-af86-4733-9dc4-07b772033204
|
||||
versionListDownload: ${{ parameters.terminalInternalPackageVersion }}
|
||||
|
||||
- ${{ if eq(parameters.buildWPF, true) }}:
|
||||
# Add an Any CPU build flavor for the WPF control bits
|
||||
- template: ./build/pipelines/templates-v2/job-build-project.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
ob_artifactBaseName: $(JobOutputArtifactName)
|
||||
publishArtifacts: false # Handled by OneBranch
|
||||
jobName: BuildWPF
|
||||
branding: ${{ parameters.branding }}
|
||||
buildTerminal: false
|
||||
buildWPFDotNetComponents: true
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms:
|
||||
- Any CPU
|
||||
generateSbom: false # this is handled by onebranch
|
||||
removeAllNonSignedFiles: true # appease the overlords
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
beforeBuildSteps:
|
||||
- task: PkgESSetupBuild@12
|
||||
displayName: Package ES - Setup Build
|
||||
inputs:
|
||||
disableOutputRedirect: true
|
||||
# WPF doesn't need the localizations or the universal package, but if it does... put them here.
|
||||
|
||||
- stage: Package
|
||||
displayName: Package
|
||||
dependsOn: [Build]
|
||||
jobs:
|
||||
- ${{ if eq(parameters.buildTerminal, true) }}:
|
||||
- template: ./build/pipelines/templates-v2/job-merge-msix-into-bundle.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
ob_artifactBaseName: $(JobOutputArtifactName)
|
||||
### This job is also in charge of submitting the vpack to Windows if it's enabled
|
||||
ob_createvpack_enabled: ${{ and(parameters.buildTerminal, parameters.publishVpackToWindows) }}
|
||||
ob_updateOSManifest_enabled: ${{ and(parameters.buildTerminal, parameters.publishVpackToWindows) }}
|
||||
### If enabled above, these options are in play.
|
||||
ob_createvpack_packagename: 'WindowsTerminal.app'
|
||||
ob_createvpack_owneralias: 'conhost@microsoft.com'
|
||||
ob_createvpack_description: 'VPack for the Windows Terminal Application'
|
||||
ob_createvpack_targetDestinationDirectory: '$(Destination)'
|
||||
ob_createvpack_propsFile: false
|
||||
ob_createvpack_provData: true
|
||||
ob_createvpack_metadata: '$(Build.SourceVersion)'
|
||||
ob_createvpack_topLevelRetries: 0
|
||||
ob_createvpack_failOnStdErr: true
|
||||
ob_createvpack_taskLogVerbosity: Detailed
|
||||
ob_createvpack_verbose: true
|
||||
ob_createvpack_vpackdirectory: '$(JobOutputDirectory)\vpack'
|
||||
ob_updateOSManifest_gitcheckinConfigPath: '$(Build.SourcesDirectory)\build\config\GitCheckin.json'
|
||||
# We're skipping the 'fetch' part of the OneBranch rules, but that doesn't mean
|
||||
# that it doesn't expect to have downloaded a manifest directly to some 'destination'
|
||||
# folder that it can then update and upload.
|
||||
# Effectively: it says "destination" but it means "source"
|
||||
# DH: Don't ask why.
|
||||
ob_updateOSManifest_destination: $(XES_VPACKMANIFESTDIRECTORY)
|
||||
ob_updateOSManifest_skipFetch: true
|
||||
publishArtifacts: false # Handled by OneBranch
|
||||
jobName: Bundle
|
||||
branding: ${{ parameters.branding }}
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # Handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
afterBuildSteps:
|
||||
- pwsh: |-
|
||||
$d = New-Item "$(JobOutputDirectory)/vpack" -Type Directory
|
||||
Copy-Item -Verbose -Path "$(MsixBundlePath)" -Destination (Join-Path $d 'Microsoft.WindowsTerminal_8wekyb3d8bbwe.msixbundle')
|
||||
displayName: Stage msixbundle for vpack
|
||||
|
||||
- ${{ if eq(parameters.buildConPTY, true) }}:
|
||||
- template: ./build/pipelines/templates-v2/job-package-conpty.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
ob_artifactBaseName: $(JobOutputArtifactName)
|
||||
publishArtifacts: false # Handled by OneBranch
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # this is handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
|
||||
- ${{ if eq(parameters.buildWPF, true) }}:
|
||||
- template: ./build/pipelines/templates-v2/job-build-package-wpf.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
ob_artifactBaseName: $(JobOutputArtifactName)
|
||||
publishArtifacts: false # Handled by OneBranch
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # this is handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
|
||||
- stage: Publish
|
||||
displayName: Publish
|
||||
dependsOn: [Build, Package]
|
||||
jobs:
|
||||
- template: ./build/pipelines/templates-v2/job-publish-symbols.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
includePublicSymbolServer: ${{ parameters.publishSymbolsToPublic }}
|
||||
symbolPatGoesInTaskInputs: true # onebranch tries to muck with the PAT variable, so we need to change how it get the PAT
|
||||
variables:
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(Build.ArtifactStagingDirectory)
|
||||
# Without this, OneBranch will nerf our symbol tasks
|
||||
ob_symbolsPublishing_enabled: true
|
||||
|
||||
- ${{ parameters.extraPublishJobs }}
|
||||
@@ -0,0 +1,27 @@
|
||||
parameters:
|
||||
- name: includePseudoLoc
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
steps:
|
||||
- task: TouchdownBuildTask@1
|
||||
displayName: Download Localization Files
|
||||
inputs:
|
||||
teamId: 7105
|
||||
authId: $(TouchdownAppId)
|
||||
authKey: $(TouchdownAppKey)
|
||||
resourceFilePath: |
|
||||
src\cascadia\**\en-US\*.resw
|
||||
appendRelativeDir: true
|
||||
localizationTarget: false
|
||||
${{ if eq(parameters.includePseudoLoc, true) }}:
|
||||
pseudoSetting: Included
|
||||
|
||||
- pwsh: |-
|
||||
$Files = Get-ChildItem . -R -Filter 'Resources.resw' | ? FullName -Like '*en-US\*\Resources.resw'
|
||||
$Files | % { Move-Item -Verbose $_.Directory $_.Directory.Parent.Parent -EA:Ignore }
|
||||
displayName: Move Loc files into final locations
|
||||
|
||||
- pwsh: |-
|
||||
./build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1
|
||||
displayName: Copy the Context Menu Loc Resources to CascadiaPackage
|
||||
@@ -1,7 +1,7 @@
|
||||
steps:
|
||||
- template: steps-ensure-nuget-version.yml
|
||||
|
||||
- task: NuGetAuthenticate@1
|
||||
- task: NuGetAuthenticate@0
|
||||
|
||||
- script: |-
|
||||
echo ##vso[task.setvariable variable=NUGET_RESTORE_MSBUILD_ARGS]/p:Platform=$(BuildPlatform)
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
parameters:
|
||||
- name: branding
|
||||
type: string
|
||||
|
||||
variables:
|
||||
# If we are building a branch called "release-*", change the NuGet suffix
|
||||
# to "preview". If we don't do that, XES will set the suffix to "release1"
|
||||
# because it truncates the value after the first period.
|
||||
# We also want to disable the suffix entirely if we're Release branded while
|
||||
# on a release branch.
|
||||
# main is special, however. XES ignores main. Since we never produce actual
|
||||
# shipping builds from main, we want to force it to have a beta label as
|
||||
# well.
|
||||
#
|
||||
# In effect:
|
||||
# BRANCH / BRANDING | Release | Preview
|
||||
# ------------------|----------------------------|-----------------------------
|
||||
# release-* | 1.12.20220427 | 1.13.20220427-preview
|
||||
# main | 1.14.20220427-experimental | 1.14.20220427-experimental
|
||||
# all others | 1.14.20220427-mybranch | 1.14.20220427-mybranch
|
||||
${{ if startsWith(variables['Build.SourceBranchName'], 'release-') }}:
|
||||
${{ if eq(parameters.branding, 'Release') }}:
|
||||
NoNuGetPackBetaVersion: true
|
||||
${{ else }}:
|
||||
NuGetPackBetaVersion: preview
|
||||
${{ elseif eq(variables['Build.SourceBranchName'], 'main') }}:
|
||||
NuGetPackBetaVersion: experimental
|
||||
@@ -1,2 +0,0 @@
|
||||
variables:
|
||||
WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest'
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_WTBrandingPreprocessorToken Condition="'$(WindowsTerminalBranding)'=='Canary'">WT_BRANDING_CANARY</_WTBrandingPreprocessorToken>
|
||||
<_WTBrandingPreprocessorToken Condition="'$(WindowsTerminalBranding)'=='Preview'">WT_BRANDING_PREVIEW</_WTBrandingPreprocessorToken>
|
||||
<_WTBrandingPreprocessorToken Condition="'$(WindowsTerminalBranding)'=='Release'">WT_BRANDING_RELEASE</_WTBrandingPreprocessorToken>
|
||||
<_WTBrandingPreprocessorToken Condition="'$(_WTBrandingPreprocessorToken)'==''">WT_BRANDING_DEV</_WTBrandingPreprocessorToken>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
DependsOnTargets="_ConsoleMapWinmdsToManifestFiles">
|
||||
|
||||
<!-- This target is batched and a new Exec is spawned for each entry in _ConsoleWinmdManifest. -->
|
||||
<Exec Command="mt.exe -winmd:%(_ConsoleWinmdManifest.WinMDPath) -dll:%(_ConsoleWinmdManifest.Implementation) -out:%(_ConsoleWinmdManifest.Identity)" />
|
||||
<Exec Command="mt.exe -winmd:"%(_ConsoleWinmdManifest.WinMDPath)" -dll:%(_ConsoleWinmdManifest.Implementation) -out:"%(_ConsoleWinmdManifest.Identity)"" />
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Emit the generated manifest into the Link inputs. -->
|
||||
|
||||
@@ -10,12 +10,11 @@ $LocalizationsFromContextMenu | ForEach-Object {
|
||||
ForEach ($pair in $Languages.GetEnumerator()) {
|
||||
$LanguageDir = "./src/cascadia/CascadiaPackage/Resources/$($pair.Key)"
|
||||
$ResPath = "$LanguageDir/Resources.resw"
|
||||
$XmlDocument = $null
|
||||
$PreexistingResw = Get-Item $ResPath -EA:Ignore
|
||||
If ($null -eq $PreexistingResw) {
|
||||
Write-Host "Copying $($pair.Value.FullName) to $ResPath"
|
||||
$XmlDocument = [xml](Get-Content $pair.Value.FullName)
|
||||
New-Item -type Directory $LanguageDir -EA:Ignore
|
||||
Copy-Item $pair.Value.FullName $ResPath
|
||||
} Else {
|
||||
# Merge Them!
|
||||
Write-Host "Merging $($pair.Value.FullName) into $ResPath"
|
||||
@@ -30,19 +29,6 @@ ForEach ($pair in $Languages.GetEnumerator()) {
|
||||
$newXml.root.data | % {
|
||||
$null = $existingXml.root.AppendChild($existingXml.ImportNode($_, $true))
|
||||
}
|
||||
$XmlDocument = $existingXml # (which has been updated)
|
||||
$existingXml.Save($PreexistingResw.FullName)
|
||||
}
|
||||
|
||||
# Reset paths to be absolute (for .NET)
|
||||
$LanguageDir = (Get-Item $LanguageDir).FullName
|
||||
$ResPath = "$LanguageDir/Resources.resw"
|
||||
# Force the "new" and "preexisting" paths to serialize with XmlWriter,
|
||||
# to ensure consistency.
|
||||
$writerSettings = [System.Xml.XmlWriterSettings]::new()
|
||||
$writerSettings.NewLineChars = "`r`n"
|
||||
$writerSettings.Indent = $true
|
||||
$writer = [System.Xml.XmlWriter]::Create($ResPath, $writerSettings)
|
||||
$XmlDocument.Save($writer)
|
||||
$writer.Flush()
|
||||
$writer.Close()
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ function Invoke-CheckBadCodeFormatting() {
|
||||
|
||||
# returns a non-zero exit code if there are any diffs in the tracked files in the repo
|
||||
git diff-index --quiet HEAD --
|
||||
if ($lastExitCode -eq 1) {
|
||||
if ($LASTEXITCODE -eq 1) {
|
||||
|
||||
# Write the list of files that need updating to the log
|
||||
git diff-index --name-only HEAD
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<XesUseOneStoreVersioning>true</XesUseOneStoreVersioning>
|
||||
<XesBaseYearForStoreVersion>2023</XesBaseYearForStoreVersion>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>18</VersionMinor>
|
||||
<VersionMinor>19</VersionMinor>
|
||||
<VersionInfoProductName>Windows Terminal</VersionInfoProductName>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
||||
@@ -85,6 +85,32 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"BuiltinSuggestionSource": {
|
||||
"enum": [
|
||||
"commandHistory",
|
||||
"tasks",
|
||||
"all"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"SuggestionSource": {
|
||||
"default": "all",
|
||||
"description": "Either a single suggestion source, or an array of sources to concatenate. Built-in sources include `commandHistory`, `directoryHistory`, and `tasks`. The special value `all` indicates all suggestion sources should be included",
|
||||
"$comment": "`tasks` and `local` are sources that would be added by the Tasks feature, as a follow-up",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": [ "string", "null", "BuiltinSuggestionSource" ]
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": { "type": "BuiltinSuggestionSource" }
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
}
|
||||
]
|
||||
},
|
||||
"AppearanceConfig": {
|
||||
"properties": {
|
||||
"colorScheme": {
|
||||
@@ -398,6 +424,7 @@
|
||||
"sendInput",
|
||||
"setColorScheme",
|
||||
"setTabColor",
|
||||
"showSuggestions",
|
||||
"splitPane",
|
||||
"switchToTab",
|
||||
"tabSearch",
|
||||
@@ -422,6 +449,7 @@
|
||||
"scrollToMark",
|
||||
"clearMark",
|
||||
"clearAllMarks",
|
||||
"searchWeb",
|
||||
"experimental.colorSelection",
|
||||
"unbound"
|
||||
],
|
||||
@@ -640,7 +668,7 @@
|
||||
},
|
||||
"allowEmpty": {
|
||||
"description": "Whether to render a folder without entries, or to hide it",
|
||||
"default": false,
|
||||
"default": "false",
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
@@ -799,6 +827,11 @@
|
||||
"default": false,
|
||||
"description": "If true, the copied content will be copied as a single line (even if there are hard line breaks present in the text). If false, newlines persist from the selected text."
|
||||
},
|
||||
"dismissSelection": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "If false, the copied content will be copied and the selection will not be dismissed. If true, the selection will be dismissed."
|
||||
},
|
||||
"copyFormatting": {
|
||||
"default": null,
|
||||
"description": "When set to `true`, the color and font formatting of selected text is also copied to your clipboard. When set to `false`, only plain text is copied to your clipboard. An array of specific formats can also be used. Supported array values include `html` and `rtf`. Plain text is always copied. Not setting this value inherits the behavior of the `copyFormatting` global setting.",
|
||||
@@ -1710,6 +1743,29 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"SearchWebAction": {
|
||||
"description": "Search the web for selected text",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/ShortcutAction"
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"action": {
|
||||
"type": "string",
|
||||
"const": "searchWeb"
|
||||
},
|
||||
"queryUrl": {
|
||||
"type": "string",
|
||||
"description": "URL of the web page to launch, %s is replaced with the selected text"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"queryUrl"
|
||||
]
|
||||
},
|
||||
"AdjustOpacityAction": {
|
||||
"description": "Changes the opacity of the active Terminal window. If `relative` is specified, then this action will increase/decrease relative to the current opacity.",
|
||||
"allOf": [
|
||||
@@ -1738,6 +1794,30 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"ShowSuggestionsAction": {
|
||||
"description": "Arguments corresponding to a Open Suggestions Action",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/ShortcutAction"
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"action": {
|
||||
"type": "string",
|
||||
"const": "showSuggestions"
|
||||
},
|
||||
"source": {
|
||||
"$ref": "#/$defs/SuggestionSource",
|
||||
"description": "Which suggestion sources to filter."
|
||||
},
|
||||
"useCommandline": {
|
||||
"default": false,
|
||||
"description": "When set to `true`, the current commandline the user has typed will pre-populate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. When set to false, the filter will start empty."
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ShowCloseButton": {
|
||||
"enum": [
|
||||
"always",
|
||||
@@ -1814,6 +1894,19 @@
|
||||
"description": "True if the Terminal should use a Mica backdrop for the window. This will apply underneath all controls (including the terminal panes and the titlebar)",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"experimental.rainbowFrame": {
|
||||
"description": "When enabled, the frame of the window will cycle through all the colors. Enabling this will override the `frame` and `unfocusedFrame` settings.",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"frame": {
|
||||
"description": "The color of the window frame when the window is inactive. This only works on Windows 11",
|
||||
"$ref": "#/$defs/ThemeColor"
|
||||
},
|
||||
"unfocusedFrame": {
|
||||
"description": "The color of the window frame when the window is inactive. This only works on Windows 11",
|
||||
"$ref": "#/$defs/ThemeColor"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1992,6 +2085,12 @@
|
||||
{
|
||||
"$ref": "#/$defs/ColorSelectionAction"
|
||||
},
|
||||
{
|
||||
"$ref": "#/$defs/SearchWebAction"
|
||||
},
|
||||
{
|
||||
"$ref": "#/$defs/ShowSuggestionsAction"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
@@ -2171,6 +2270,11 @@
|
||||
"description": "When set to true, the background image for the currently focused profile is expanded to encompass the entire window, beneath other panes.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"compatibility.reloadEnvironmentVariables": {
|
||||
"default": true,
|
||||
"description": "When set to true, when opening a new tab or pane it will get reloaded environment variables.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"initialCols": {
|
||||
"default": 120,
|
||||
"description": "The number of columns displayed in the window upon first load. If \"launchMode\" is set to \"maximized\" (or \"maximizedFocus\"), this property is ignored.",
|
||||
@@ -2419,11 +2523,6 @@
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"compatibility.reloadEnvironmentVariables": {
|
||||
"default": true,
|
||||
"description": "When set to true, when opening a new tab or pane it will get reloaded environment variables.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"unfocusedAppearance": {
|
||||
"$ref": "#/$defs/AppearanceConfig",
|
||||
"description": "Sets the appearance of the terminal when it is unfocused.",
|
||||
|
||||
499
doc/specs/#11000 - Marks/Shell-Integration-Marks.md
Normal file
@@ -0,0 +1,499 @@
|
||||
---
|
||||
author: Mike Griese
|
||||
created on: 2022-03-28
|
||||
last updated: 2023-07-19
|
||||
issue id: 11000, 1527, 6232
|
||||
---
|
||||
|
||||
##### [Original issue: [#1527]] [experimental PR [#12948]] [remaining marks [#14341]]
|
||||
|
||||
# Windows Terminal - Shell Integration (Marks)
|
||||
|
||||
## Abstract
|
||||
|
||||
_"Shell integration" refers to a broad category of ways by which a commandline
|
||||
shell can drive richer integration with the terminal. This spec in particular is
|
||||
most concerned with "marks" and other semantic markup of the buffer._
|
||||
|
||||
Marks are a new buffer-side feature that allow the commandline application or
|
||||
user to add a bit of metadata to a range of text. This can be used for marking a
|
||||
region of text as a prompt, marking a command as succeeded or failed, quickly
|
||||
marking errors in the output. These marks can then be exposed to the user as
|
||||
pips on the scrollbar, or as icons in the margins. Additionally, the user can
|
||||
quickly scroll between different marks, to allow easy navigation between
|
||||
important information in the buffer.
|
||||
|
||||
Marks in the Windows Terminal are a combination of functionality from a variety
|
||||
of different terminal emulators. "Marks" attempts to unify these different, but
|
||||
related pieces of functionality.
|
||||
|
||||
## Background
|
||||
|
||||
There's a large amount of prior art on this subject. I've attempted to collect
|
||||
as much as possible in the ["Relevant external docs"](#Relevant-external-docs)
|
||||
section below. "Marks" have been used in different scenarios by different
|
||||
emulators for different purposes. The common thread running between them of
|
||||
marking a region of text in the buffer with a special meaning.
|
||||
|
||||
* iTerm2, ConEmu, FinalTerm et.al. support emitting a VT sequence to indicate
|
||||
that a line is a "prompt" line. This is often used for quick navigation
|
||||
between these prompts.
|
||||
* FinalTerm (and xterm.js) also support marking up more than just the prompt.
|
||||
They go so far as to differentiate the start/end of the prompt, the start of
|
||||
the commandline input, and the start/end of the command output.
|
||||
`FTCS_COMMAND_FINISHED` is even designed to include metadata indicating
|
||||
whether a command succeeded or failed.
|
||||
* Additionally, Terminal.app allows users to "bookmark" lines via the UI. That
|
||||
allows users to quickly come back to something they feel is important.
|
||||
* Consider also editors like Visual Studio. VS also uses little marks on the
|
||||
scrollbar to indicate where other matches are for whatever the given search
|
||||
term is.
|
||||
|
||||
### "Elevator" pitch
|
||||
|
||||
The Terminal provides a way for command line shells to semantically mark parts
|
||||
of the command-line output. By marking up parts of the output, the Terminal can
|
||||
provide richer experiences. The Terminal will know where each command starts and
|
||||
stops, what the actual command was and what the output of that command is. This
|
||||
allows the terminal to expose quick actions for:
|
||||
|
||||
* Quickly navigating the history by scrolling between commands
|
||||
* Re-running a previous command in the history
|
||||
* Copying all the output of a single command
|
||||
* A visual indicator to separate out one command-line from the next, for quicker
|
||||
mental parsing of the output of the command-line.
|
||||
* Collapsing the output of a command, as to reduce noise
|
||||
* Visual indicators that highlight commands that succeeded or failed.
|
||||
* Jumping to previously used directories
|
||||
|
||||
### User Stories
|
||||
|
||||
This is a bit of a unusual section, as this feature was already partially
|
||||
implemented when this spec was written.
|
||||
|
||||
Story | Size | Description
|
||||
--|-----------|--
|
||||
A | ✅ Done | The user can use mark each prompt and have a mark displayed on the scrollbar
|
||||
B | ✅ Done | The user can perform an action to scroll between marks
|
||||
C | ✅ Done | The user can manually add marks to the buffer
|
||||
D | ✅ Done | The shell can emit different marks to differentiate between prompt, command, and output
|
||||
E | ✅ Done | Clearing the buffer clears marks
|
||||
F | 🐣 Crawl | Marks stay in the same place you'd expect after resizing the buffer.
|
||||
G | ✅ Done | Users can perform an action to select the previous command's output
|
||||
H | 🚶 Walk | The find dialog can display marks on the scrollbar indicating the position of search matches
|
||||
I | 🏃♂️ Run | The terminal can display icons in the gutter, with quick actions for that command (re-run, copy output, etc)
|
||||
J | 🏃♂️ Run | The terminal can display a faint horizontal separator between commands in the buffer.
|
||||
K | 🚀 Sprint | The terminal can "collapse" content between two marks.
|
||||
L | 🚀 Sprint | The terminal can display a sticky header above the control which displays the most recent command
|
||||
M | 🚀 Sprint | The user can open a dialog to manually bookmark a line with a custom comment
|
||||
|
||||
## Solution Design
|
||||
|
||||
### Supported VT sequences
|
||||
|
||||
* [x] iTerm2's OSC `SetMark` (in [#12948])
|
||||
* [x] FinalTerm prompt markup sequences
|
||||
- [x] **FTCS_PROMPT** was added in [#13163]
|
||||
- [x] The rest in [#14341]
|
||||
* [ ] additionally, VsCode's FinalTerm prompt markup variant, `OSC 663`
|
||||
* [ ] [ConEmu's
|
||||
`OSC9;12`](https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC)
|
||||
* [ ] Any custom OSC we may want to author ourselves.
|
||||
|
||||
The FinalTerm prompt sequences are probably the most complicated version of all
|
||||
these, so it's important to give these a special callout. Almost all the other
|
||||
VT sequences are roughly equivalent to **FTCS_PROMPT**. The xterm.js / VsCode
|
||||
version has additional cases, that they ironically added to work around conpty
|
||||
not understanding these sequences originally.
|
||||
|
||||
#### FinalTerm sequences
|
||||
|
||||
The relevant FinalTerm sequences for marking up the prompt are as follows.
|
||||
|
||||
|
||||

|
||||
|
||||
* **FTCS_PROMPT**: `OSC 133 ; A ST`
|
||||
- The start of a prompt. Internally, this sets a marker in the buffer
|
||||
indicating we started a prompt at the current cursor position, and that
|
||||
marker will be used when we get a **FTCS_COMMAND_START**
|
||||
* **FTCS_COMMAND_START**: `OSC 133 ; B ST`
|
||||
- The start of a commandline (READ: the end of the prompt). When it follows a
|
||||
**FTCS_PROMPT**, it creates a mark in the buffer from the location of the
|
||||
**FTCS_PROMPT** to the current cursor position, with the category of
|
||||
`prompt`
|
||||
* **FTCS_COMMAND_EXECUTED**: `OSC 133 ; C ST`
|
||||
- The start of the command output / the end of the commandline.
|
||||
* **FTCS_COMMAND_FINISHED**: `OSC 133 ; D ; [Ps] ST`
|
||||
- the end of a command.
|
||||
|
||||
Same deal for the **FTCS_COMMAND_EXECUTED**/**FTCS_COMMAND_FINISHED** ones.
|
||||
**FTCS_COMMAND_EXECUTED** does nothing until we get a **FTCS_COMMAND_FINISHED**,
|
||||
and the `[Ps]` parameter determines the category.
|
||||
- `[Ps] == 0`: success
|
||||
- anything else: error
|
||||
|
||||
This whole sequence will get turned into a single mark.
|
||||
|
||||
When we get the **FTCS_COMMAND_FINISHED**, set the category of the prompt mark
|
||||
that preceded it, so that the `prompt` becomes an `error` or a `success`.
|
||||
|
||||
|
||||
### Buffer implementation
|
||||
|
||||
In the initial PR ([#12948]), marks were stored simply as a `vector<Mark>`,
|
||||
where a mark had a start and end point. These wouldn't reflow on resize, and
|
||||
didn't support all of the FTCS sequences.
|
||||
|
||||
There's ultimately three types of region here we need to mark:
|
||||
* The prompt (starting from A)
|
||||
* the command (starting from B)
|
||||
* the output (starting from C)
|
||||
|
||||
That intuitively feels a bit like a text attribute almost. Additionally, the
|
||||
prompt should be connected to its subsequent command and output, s.t. we can
|
||||
* Select command output
|
||||
* re-run command
|
||||
|
||||
easily. Supposedly, we could do this by iterating through the whole buffer to
|
||||
find the previous/next {whatever}[[1](#footnote-1)]. Additionally, the prompt
|
||||
needs to be able to contain the status / category, and a `133;D` needs to be
|
||||
able to change the category of the previous prompt/command.
|
||||
|
||||
If we instead do a single mark for each command, from `133;A` to `133;A`, and
|
||||
have sub-points for elements within the command
|
||||
* `133;A` starts a mark on the current line, at the current position.
|
||||
* `133;B` sets the end of the mark to the current position.
|
||||
* `133;C` updates the mark's `commandStart` to the current end, then sets the
|
||||
end of the mark to the current position.
|
||||
* `133;D` updates the mark's `outputStart` to the current end, then sets the end
|
||||
of the mark to the current position. It also updates the category of the mark,
|
||||
if needed.
|
||||
|
||||
Each command then only shows up as a single mark on the scrollbar. Jumping
|
||||
between commands is easy, `scrollToMark` operates on `mark.start`, which is
|
||||
where the prompt started. "Bookmarks", i.e. things started by the user wouldn't
|
||||
have `commandStart` or `outputStart` in them. Getting the text of the command,
|
||||
of the output is easy - it's just the text between sub-points.
|
||||
|
||||
Reflow still sucks though - we'd need to basically iterate over all the marks as
|
||||
we're reflowing, to make sure we put them into the right place in the new
|
||||
buffer. This is annoying and tedious, but shouldn't realistically be a
|
||||
performance problem.
|
||||
|
||||
#### Cmd.exe considerations
|
||||
|
||||
`cmd.exe` is generally a pretty bad shell, and doesn't have a lot of the same
|
||||
hooks that other shells do, that might allow for us to emit the
|
||||
**FTCS_COMMAND_EXECUTED** sequence. However, cmd.exe also doesn't allow
|
||||
multiline prompts, so we can be relatively certain that when the user presses
|
||||
<kbd>enter</kbd>, that's the end of the prompt. We will treat the
|
||||
`autoMarkPrompts` setting (which auto-marks <kbd>enter</kbd>) as the _end of the
|
||||
prompt_. That would at least allow cmd.exe to emit a {command finished}{prompt
|
||||
start}{prompt...}{command start} in the prompt, and have us add the command
|
||||
executed. It is not perfect (we wouldn't be able to get error information), but
|
||||
it does work well enough.
|
||||
|
||||
```cmd
|
||||
PROMPT $e]133;D$e\$e]133;A$e\$e]9;9;$P$e\%PROMPT%$e]133;B$e\
|
||||
```
|
||||
|
||||
## Settings proposals
|
||||
|
||||
The below are the proposed additions to the settings for supporting marks and
|
||||
interacting with them. Some of these have already been added as experimental
|
||||
settings - these would be promoted to no longer be experimental.
|
||||
|
||||
Many of the sub-points on these settings are definitely "Future Consideration"
|
||||
level settings. For example, the `scrollToMark` `"highlight"` property. That one
|
||||
is certainly not something we need to ship with.
|
||||
|
||||
### Actions
|
||||
|
||||
In addition to driving marks via the output, we will also want to support adding
|
||||
marks manually. These can be thought of like "bookmarks" - a user indicated
|
||||
region that means something to the user.
|
||||
|
||||
* [ ] `addMark`: add a mark to the buffer. If there's a selection, place the
|
||||
mark covering at the selection. Otherwise, place the mark on the cursor row.
|
||||
- [x] `color`: a color for the scrollbar mark. (in [#12948])
|
||||
- [ ] `category`: one of `{"prompt", "error", "warning", "success", "info"}`
|
||||
* [ ] `scrollToMark`
|
||||
- [x] `direction`: `["first", "previous", "next", "last"]` (in [#12948])
|
||||
- [ ] `category`: `flags({categories}...)`, default `"all"`. Only scroll to
|
||||
one of the categories specified (e.g. only scroll to the previous error,
|
||||
only the previous prompt, or just any mark)
|
||||
- [ ] [#13449] - `center` or some other setting that controls how the mark is scrolled in.
|
||||
- Maybe `top` (current) /`center` (as proposed) /`nearestEdge` (when
|
||||
scrolling down, put the mark at the bottom line of viewport , up -> top
|
||||
line)?
|
||||
- [ ] [#13455] - `highlight`: `bool`, default true. Display a temporary
|
||||
highlight around the mark when scrolling to it. ("Highlight" != "select")
|
||||
- If the mark has prompt/command/output sections, only select the prompt and command.
|
||||
- If the mark has zero width (i.e. the user just wanted to bookmark a line),
|
||||
then highlight the entire row.
|
||||
* [x] `clearMark`: Remove any marks in the selected region (or at the cursor
|
||||
position) (in [#12948])
|
||||
* [x] `clearAllMarks`: Remove all the marks from the buffer. (in [#12948])
|
||||
|
||||
|
||||
#### Selecting commands & output
|
||||
|
||||
_Inspired by a long weekend of manually copying .csv output from the Terminal to
|
||||
a spreadsheet, only to discover that we rejected [#4588] some years ago._
|
||||
|
||||
* [x] `selectCommand(direction=[prev, next])`: Starting at the active selection
|
||||
anchor, (or the cursor if there's no selection), select the command that
|
||||
starts before/after this point (exclusive). Probably shouldn't wrap around
|
||||
the buffer.
|
||||
* Since this will create a selection including the start of the command,
|
||||
performing this again will select the _next_ command (in whatever
|
||||
direction).
|
||||
* [x] `selectOutput(direction=[prev, next])`: same as above, but with command outputs.
|
||||
|
||||
A convenient workflow might be a `multipleActions([selectOutput(prev),
|
||||
copy()])`, to quickly select the previous commands output.
|
||||
|
||||
### Per-profile settings
|
||||
|
||||
* [x] `autoMarkPrompts`: `bool`, default `false`. (in [#12948])
|
||||
* [ ] `showFindMatchesOnScrollbar`: `bool`, default `true`.
|
||||
* [ ] `showMarksOnScrollbar`: `bool` or `flags({categories}...)`
|
||||
* As an example: `"showMarksOnScrollbar": ["error", "success"]`).
|
||||
* Controls if marks should be displayed on the scrollbar.
|
||||
* If `true`/`"all"`, then all marks are displayed.
|
||||
* If `false`/`"none"`, then no marks are displayed.
|
||||
* If a set of categories are provided, only display marks from those categories.
|
||||
* [x] the bool version is (in [#12948])
|
||||
* [ ] The `flags({categories}...)` version is not done yet.
|
||||
* [ ] `showGutterIcons`, for displaying gutter icons.
|
||||
|
||||
## UX Design
|
||||
|
||||
An example of what colored marks look like:
|
||||
|
||||

|
||||
|
||||
This gif demos both prompt marks and marks for search results:
|
||||
|
||||

|
||||
|
||||
|
||||
### Gutter icons
|
||||
|
||||

|
||||
_An example of what the icons in the VsCode gutter look like_
|
||||
|
||||
### Multiple marks on the same line
|
||||
|
||||
When it comes to displaying marks on the scrollbar, or in the margins, the
|
||||
relative priority of these marks matters. Marks are given the following
|
||||
priority, with errors being the highest priority.
|
||||
* Error
|
||||
* Warning
|
||||
* Success
|
||||
* Prompt
|
||||
* Info (default)
|
||||
|
||||
## Work needed to get marks to v1
|
||||
|
||||
* [x] Clearing the screen leaves marks behind
|
||||
* [x] Make sure `ED2` works to clear/move marks
|
||||
* [x] Same with `ED3`
|
||||
* [x] Same with `cls` / `Clear-Host`
|
||||
* [x] Clear Buffer action too.
|
||||
* [X] Circling doesn't update scrollbar
|
||||
* I think this was fixed in [#14341], or in [#14045]
|
||||
* [ ] Resizing / reflowing marks
|
||||
* [x] marks should be stored in the `TextBuffer`
|
||||
|
||||
## Future Considerations
|
||||
* adding a timestamp for when a line was marked?
|
||||
* adding a comment to the mark. How do we display that comment? a TeachingTip on
|
||||
the scrollbar maybe (actually that's a cool idea)
|
||||
* adding a shape to the mark? Terminal.app marks prompt lines with brackets in
|
||||
the margins
|
||||
* Marks are currently just displayed as "last one in wins", they should have a
|
||||
real sort order
|
||||
* Should the height of a mark on the scrollbar be dependent on font size &
|
||||
buffer height? I think I've got it set to like, a static 2dip, but maybe it
|
||||
should represent the actual height of the row (down to a min 1dip)
|
||||
* [#13455] - highlight a mark when scrolled to with the `scrollToMark` action.
|
||||
This is left as a future consideration to figure out what kind of UI we want
|
||||
here. Do we want to highlight
|
||||
- the prompt?
|
||||
- the whole row of the prompt?
|
||||
- the prompt and the command?
|
||||
- The whole prompt & command & output?
|
||||
* an `addBookmark` action: This one's basically just `addMark`, but opens a prompt
|
||||
(like the window renamer) to add some text as a comment. Automatically
|
||||
populated with the selected text (if there was some).
|
||||
- A dedicated transient pane for displaying non-terminal content might be
|
||||
useful for such a thing.
|
||||
- This might just make more sense as a parameter to `addMark`.
|
||||
* Other ideas for `addMark` parameters:
|
||||
- `icon`: This would require us to better figure out how we display gutter
|
||||
icons. This would probably be like, a _shape_ rather than an arbitrary
|
||||
image.
|
||||
- `note`: a note to stick on the mark, as a comment. Might be more valuable
|
||||
with something like `addBookmark`.
|
||||
|
||||
### Gutter icons
|
||||
|
||||
VsCode implements a set of gutter icons to the left of the buffer lines, to
|
||||
provide a UI element for exposing some quick actions to perform, powered by
|
||||
shell integration.
|
||||
|
||||
Gutter icons don't need to implement app-level actions at all. They _should_ be
|
||||
part of the control. At least, part of the UWP `TermControl`. These are some
|
||||
basic "actions" we could add to that menu. Since these are all attached to a
|
||||
mark anyways, we already know what mark the user interacted with, and where the
|
||||
start/end already is.
|
||||
* Copy command
|
||||
* Copy output
|
||||
* Re-run command
|
||||
* Save as task
|
||||
* Explain this (for errors)
|
||||
|
||||
To allow comments in marks (ala "bookmarks"), we can use
|
||||
the gutter flyout to display the comment, and have the tooltip display that
|
||||
comment.
|
||||
|
||||
This is being left as a future consideration for now. We need to really sit and
|
||||
consider what the UX is like for this.
|
||||
* Do we just stick the gutter icons in the margin/padding?
|
||||
* Have it be a separate space in the "buffer"
|
||||
- If it's in the buffer itself, we can render it with the renderer, which by
|
||||
all accounts, we probably should.
|
||||
|
||||
### Edge cases where these might not work as expected
|
||||
|
||||
Much of the benefits of shell integration come from literal buffer text parsing.
|
||||
This can lead to some rough edge cases, such as:
|
||||
|
||||
* the user presses <kbd>Ctrl+V</kbd><kbd>Escape</kbd> to input an ESC character
|
||||
and the shell displays it as `^[`
|
||||
* the user presses <kbd>Ctrl+V</kbd><kbd>Ctrl+J</kbd> to input an LF character
|
||||
and the shell displays it as a line break
|
||||
* the user presses <kbd>Enter</kbd> within a quoted string and the shell
|
||||
displays a continuation prompt
|
||||
* the user types a command including an exclamation point, and the shell invokes
|
||||
history expansion and echoes the result of expansion before it runs the
|
||||
command
|
||||
* The user has a prompt with a right-aligned status, ala
|
||||

|
||||
|
||||
In these cases, the effects of shell integration will likely not work as
|
||||
intended. There are various possible solutions that are being explored. We might
|
||||
want to in the future also use [VsCode's extension to the FTCS sequences] to
|
||||
enable the shell to tell the terminal the literal resulting commandline.
|
||||
|
||||
There's been [other proposals] to extend shell integration features as well.
|
||||
|
||||
### Rejected ideas
|
||||
|
||||
There was originally some discussion as to whether this is a design that should
|
||||
be unified with generic pattern matchers. Something like the URL detection,
|
||||
which identifies part of the buffer and then "marks" it. Prototypes for both of
|
||||
these features are going in very different directions, however. Likely best to
|
||||
leave them separate.
|
||||
|
||||
## Resources
|
||||
|
||||
### Other related issues
|
||||
|
||||
Not necessarily marks related, but could happily leverage this functionality.
|
||||
|
||||
* [#5916] and [#12366], which are likely to be combined into a single thread
|
||||
- Imagine a trigger that automatically detects `error:.*` and then marks the line
|
||||
* [#9583]
|
||||
- Imagine selecting some text, colorizing & marking it all at once
|
||||
- `addMark(selection:false)`, above, was inspired by this.
|
||||
* [#7561] (and broadly, [#3920])
|
||||
- Search results should maybe show up here on the scrollbar too.
|
||||
* [#13455]
|
||||
* [#13449]
|
||||
* [#4588]
|
||||
* [#14754] - A "sticky header" for the `TermControl` that could display the
|
||||
previous command at the top of the buffer.
|
||||
* [#2226] - a scrollable "minimap" in te scrollbar, as opposed to marks
|
||||
|
||||
### Relevant external docs
|
||||
* **GREAT** summary of the state of the ecosystem: https://gitlab.freedesktop.org/terminal-wg/specifications/-/issues/28
|
||||
* https://iterm2.com/documentation-escape-codes.html
|
||||
- `OSC 1337 ; SetMark ST` under "Set Mark"
|
||||
- under "Shell Integration/FinalTerm
|
||||
* https://support.apple.com/en-ca/guide/terminal/trml135fbc26/mac
|
||||
- discusses auto-marked lines on `enter`/`^C`/`^D`
|
||||
- allows bookmarking lines with selection
|
||||
- bookmarks can have a name (maybe not super important)
|
||||
* [How to Use Marks in OS X’s Terminal for Easier Navigation](https://www.howtogeek.com/256548/how-to-use-marks-in-os-xs-terminal-for-easier-navigation/)
|
||||
* [Terminal: The ‘\[‘ Marks the Spot](https://scriptingosx.com/2017/03/terminal-the-marks-the-spot/)
|
||||
* Thread with VsCode (xterm.js) implementation notes: https://github.com/microsoft/terminal/issues/1527#issuecomment-1076455642
|
||||
* [xterm.js prompt markup sequences](https://github.com/microsoft/vscode/blob/39cc1e1c42b2e53e83b1846c2857ca194848cc1d/src/vs/workbench/contrib/terminal/browser/xterm/shellIntegrationAddon.ts#L50-L52)
|
||||
* [VsCode command tracking release notes](https://code.visualstudio.com/updates/v1_22#_command-tracking), also [Terminal shell integration](https://code.visualstudio.com/updates/v1_65#_terminal-shell-integration)
|
||||
* ConEMU:
|
||||
Sequence | Description
|
||||
-- | --
|
||||
ESC ] 9 ; 12 ST | Let ConEmu treat current cursor position as prompt start. Useful with PS1.
|
||||
|
||||
* https://iterm2.com/documentation-one-page.html#documentation-triggers.html"
|
||||
|
||||
### Footnotes
|
||||
|
||||
<a name="footnote-1"><a>[1]: Intuitively, this feels prohibitively expensive,
|
||||
but you'd be mistaken.
|
||||
|
||||
An average device right now (I mean something that was alright about 5 years
|
||||
ago, like an 8700k with regular DDR4) does about 4GB/s of random, un-cached
|
||||
memory access. While low-end devices are probably a bit slower, I think 4GB/s is
|
||||
a good estimate regardless. That's because non-random memory access is way way
|
||||
faster than that at around 20GB/s (DDR4 2400 - what most laptops had for the
|
||||
last decade).
|
||||
|
||||
Assuming a 120 column * 32k line buffer (our current maximum), the buffer would
|
||||
be about 21MB large. Going through the entire buffer linearly at 20GB/s would
|
||||
take just 1ms (including all text and metadata). If we assume that each row has
|
||||
a mark, that marks are 36 byte large and assuming the worst case of random
|
||||
access, we can go through all 32k within about 0.3ms.
|
||||
|
||||
|
||||
|
||||
_(Thanks lhecker for these notes)_
|
||||
|
||||
|
||||
[#1527]: https://github.com/microsoft/terminal/issues/1527
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#1527]: https://github.com/microsoft/terminal/issues/1527
|
||||
[#6232]: https://github.com/microsoft/terminal/issues/6232
|
||||
[#2226]: https://github.com/microsoft/terminal/issues/2226
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#13163]: https://github.com/microsoft/terminal/issues/13163
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#13455]: https://github.com/microsoft/terminal/issues/13455
|
||||
[#13449]: https://github.com/microsoft/terminal/issues/13449
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#4588]: https://github.com/microsoft/terminal/issues/4588
|
||||
[#5804]: https://github.com/microsoft/terminal/issues/5804
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#12948]: https://github.com/microsoft/terminal/issues/12948
|
||||
[#13455]: https://github.com/microsoft/terminal/issues/13455
|
||||
[#5916]: https://github.com/microsoft/terminal/issues/5916
|
||||
[#12366]: https://github.com/microsoft/terminal/issues/12366
|
||||
[#9583]: https://github.com/microsoft/terminal/issues/9583
|
||||
[#7561]: https://github.com/microsoft/terminal/issues/7561
|
||||
[#3920]: https://github.com/microsoft/terminal/issues/3920
|
||||
[#13455]: https://github.com/microsoft/terminal/issues/13455
|
||||
[#13449]: https://github.com/microsoft/terminal/issues/13449
|
||||
[#4588]: https://github.com/microsoft/terminal/issues/4588
|
||||
[#14341]: https://github.com/microsoft/terminal/issues/14341
|
||||
[#14045]: https://github.com/microsoft/terminal/issues/14045
|
||||
[#14754]: https://github.com/microsoft/terminal/issues/14754
|
||||
[#14341]: https://github.com/microsoft/terminal/issues/14341
|
||||
|
||||
[VsCode's extension to the FTCS sequences]: https://code.visualstudio.com/docs/terminal/shell-integration#_vs-code-custom-sequences-osc-633-st
|
||||
|
||||
[other proposals]: https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/6#f6de1e5703f5806d0821d92b0274e895c4b6d850
|
||||
BIN
doc/specs/#11000 - Marks/ftcs-diagram.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 38 KiB |
407
res/terminal/Terminal_Can.svg
Normal file
@@ -0,0 +1,407 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 48 48"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg284"
|
||||
sodipodi:docname="Terminal_Can_Pill.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata288">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="922"
|
||||
inkscape:window-height="816"
|
||||
id="namedview286"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8.8541667"
|
||||
inkscape:cx="-17.429862"
|
||||
inkscape:cy="31.710582"
|
||||
inkscape:window-x="3142"
|
||||
inkscape:window-y="60"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg284" />
|
||||
<g
|
||||
id="g4007"
|
||||
transform="matrix(0.9375,0,0,0.9375,0,1.5)">
|
||||
<path
|
||||
id="path150"
|
||||
d="M 0,13 H 16 V 6 H 2 C 0.9,6 0,6.9 0,8 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#cccccc" />
|
||||
<path
|
||||
id="path152"
|
||||
d="M 32,6 H 16 v 7 h 16 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="path154"
|
||||
d="M 48,13 H 32 V 6 h 14 c 1.1,0 2,0.9 2,2 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#666666" />
|
||||
<path
|
||||
id="path156"
|
||||
d="M 46,42 H 2 C 0.9,42 0,41.1 0,40 V 12 h 48 v 28 c 0,1.1 -0.9,2 -2,2 z"
|
||||
style="fill:url(#paint0_linear)"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="g171"
|
||||
style="filter:url(#filter0_dd)">
|
||||
<path
|
||||
id="path158"
|
||||
d="m 15.2,24.3 -8.80001,8.8 c -0.5,0.5 -0.5,1.2 0,1.6 l 1.8,1.8 C 8.69999,37 9.4,37 9.8,36.5 l 8.8,-8.8 c 0.5,-0.5 0.5,-1.2 0,-1.6 l -1.8,-1.8 c -0.4,-0.4 -1.2,-0.4 -1.6,0 z"
|
||||
style="fill:url(#paint1_linear)"
|
||||
inkscape:connector-curvature="0" />
|
||||
<mask
|
||||
height="13"
|
||||
width="13"
|
||||
y="24"
|
||||
x="6"
|
||||
maskUnits="userSpaceOnUse"
|
||||
mask-type="alpha"
|
||||
id="mask0">
|
||||
<path
|
||||
id="path160"
|
||||
d="m 15.2,24.3 -8.80001,8.8 c -0.5,0.5 -0.5,1.2 0,1.6 l 1.8,1.8 C 8.69999,37 9.4,37 9.8,36.5 l 8.8,-8.8 c 0.5,-0.5 0.5,-1.2 0,-1.6 l -1.8,-1.8 c -0.4,-0.4 -1.2,-0.4 -1.6,0 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#paint2_linear)" />
|
||||
</mask>
|
||||
<g
|
||||
id="g167"
|
||||
mask="url(#mask0)">
|
||||
<g
|
||||
id="g165"
|
||||
style="filter:url(#filter1_dd)">
|
||||
<path
|
||||
id="path163"
|
||||
d="m 9.8,17.3 8.8,8.8 c 0.5,0.5 0.5,1.2 0,1.6 l -1.8,1.8 c -0.5,0.5 -1.2,0.5 -1.6,0 L 6.39999,20.7 c -0.5,-0.5 -0.5,-1.2 0,-1.6 l 1.8,-1.8 C 8.59999,16.9 9.4,16.9 9.8,17.3 Z"
|
||||
style="fill:url(#paint3_linear)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
id="path169"
|
||||
d="m 9.8,17.3 8.8,8.8 c 0.5,0.5 0.5,1.2 0,1.6 l -1.8,1.8 c -0.5,0.5 -1.2,0.5 -1.6,0 L 6.39999,20.7 c -0.5,-0.5 -0.5,-1.2 0,-1.6 l 1.8,-1.8 C 8.59999,16.9 9.4,16.9 9.8,17.3 Z"
|
||||
style="fill:url(#paint4_linear)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="g175"
|
||||
style="filter:url(#filter2_dd)">
|
||||
<path
|
||||
id="path173"
|
||||
d="M 40,32 H 24 c -0.6,0 -1,0.4 -1,1 v 3 c 0,0.6 0.4,1 1,1 h 16 c 0.6,0 1,-0.4 1,-1 v -3 c 0,-0.6 -0.4,-1 -1,-1 z"
|
||||
style="fill:url(#paint5_linear)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<defs
|
||||
id="defs282">
|
||||
<filter
|
||||
id="filter0_dd"
|
||||
x="3.02499"
|
||||
y="15"
|
||||
width="18.95"
|
||||
height="25.875"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood177" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix179" />
|
||||
<feOffset
|
||||
dy="0.5"
|
||||
id="feOffset181" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.5"
|
||||
id="feGaussianBlur183" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
|
||||
id="feColorMatrix185" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow"
|
||||
id="feBlend187" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix189" />
|
||||
<feOffset
|
||||
dy="1"
|
||||
id="feOffset191" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.5"
|
||||
id="feGaussianBlur193" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"
|
||||
id="feColorMatrix195" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="effect1_dropShadow"
|
||||
result="effect2_dropShadow"
|
||||
id="feBlend197" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect2_dropShadow"
|
||||
result="shape"
|
||||
id="feBlend199" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter1_dd"
|
||||
x="3.02499"
|
||||
y="15"
|
||||
width="18.95"
|
||||
height="18.875"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood202" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix204" />
|
||||
<feOffset
|
||||
dy="0.5"
|
||||
id="feOffset206" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.5"
|
||||
id="feGaussianBlur208" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
|
||||
id="feColorMatrix210" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow"
|
||||
id="feBlend212" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix214" />
|
||||
<feOffset
|
||||
dy="1"
|
||||
id="feOffset216" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.5"
|
||||
id="feGaussianBlur218" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"
|
||||
id="feColorMatrix220" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="effect1_dropShadow"
|
||||
result="effect2_dropShadow"
|
||||
id="feBlend222" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect2_dropShadow"
|
||||
result="shape"
|
||||
id="feBlend224" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter2_dd"
|
||||
x="20"
|
||||
y="30"
|
||||
width="24"
|
||||
height="11"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood227" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix229" />
|
||||
<feOffset
|
||||
dy="0.5"
|
||||
id="feOffset231" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.5"
|
||||
id="feGaussianBlur233" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
|
||||
id="feColorMatrix235" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow"
|
||||
id="feBlend237" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
id="feColorMatrix239" />
|
||||
<feOffset
|
||||
dy="1"
|
||||
id="feOffset241" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.5"
|
||||
id="feGaussianBlur243" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"
|
||||
id="feColorMatrix245" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="effect1_dropShadow"
|
||||
result="effect2_dropShadow"
|
||||
id="feBlend247" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect2_dropShadow"
|
||||
result="shape"
|
||||
id="feBlend249" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="paint0_linear"
|
||||
x1="36.4462"
|
||||
y1="47.8257"
|
||||
x2="11.8217"
|
||||
y2="5.1748"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#333333"
|
||||
id="stop252" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#4D4D4D"
|
||||
id="stop254" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="paint1_linear"
|
||||
x1="14.5276"
|
||||
y1="33.9959"
|
||||
x2="10.4841"
|
||||
y2="26.9924"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#999999"
|
||||
id="stop257" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#B3B3B3"
|
||||
id="stop259" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="paint2_linear"
|
||||
x1="14.5276"
|
||||
y1="33.9959"
|
||||
x2="10.4841"
|
||||
y2="26.9924"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#999999"
|
||||
id="stop262" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#B3B3B3"
|
||||
id="stop264" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="paint3_linear"
|
||||
x1="16.2747"
|
||||
y1="30.0336"
|
||||
x2="8.73699"
|
||||
y2="16.9781"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#CCCCCC"
|
||||
id="stop267" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#E6E6E6"
|
||||
id="stop269" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="paint4_linear"
|
||||
x1="16.2747"
|
||||
y1="30.0336"
|
||||
x2="8.73699"
|
||||
y2="16.9781"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#CCCCCC"
|
||||
id="stop272" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#E6E6E6"
|
||||
id="stop274" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="paint5_linear"
|
||||
x1="35.1496"
|
||||
y1="39.9553"
|
||||
x2="28.8504"
|
||||
y2="29.0447"
|
||||
gradientUnits="userSpaceOnUse">
|
||||
<stop
|
||||
stop-color="#CCCCCC"
|
||||
id="stop277" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#E6E6E6"
|
||||
id="stop279" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect
|
||||
x="19"
|
||||
y="31.053001"
|
||||
width="29"
|
||||
height="11.947"
|
||||
rx="1.8238994"
|
||||
id="rect29"
|
||||
style="fill:#fcc024;stroke-width:1;fill-opacity:1;stroke:none;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
d="M29.3999 39.7363C28.9253 39.9824 28.335 40.1055 27.6289 40.1055C26.7148 40.1055 25.9824 39.8169 25.4316 39.2397C24.8809 38.6626 24.6055 37.9053 24.6055 36.9678C24.6055 35.96 24.9146 35.1455 25.5327 34.5244C26.1538 33.9033 26.9375 33.5928 27.8838 33.5928C28.4932 33.5928 28.9985 33.6792 29.3999 33.8521V34.8892C28.9751 34.6372 28.5063 34.5112 27.9937 34.5112C27.311 34.5112 26.7573 34.7295 26.3325 35.166C25.9106 35.6025 25.6997 36.1855 25.6997 36.915C25.6997 37.6094 25.8975 38.1631 26.293 38.5762C26.6885 38.9863 27.2085 39.1914 27.853 39.1914C28.4478 39.1914 28.9634 39.0508 29.3999 38.7695V39.7363ZM35.772 40H34.625L34.0581 38.396H31.5796L31.0347 40H29.8921L32.252 33.6982H33.4297L35.772 40ZM33.7812 37.5435L32.9067 35.0298C32.8804 34.9478 32.8525 34.8159 32.8232 34.6343H32.8057C32.7793 34.8013 32.75 34.9331 32.7178 35.0298L31.8521 37.5435H33.7812ZM41.9858 40H40.8433L37.833 35.3682C37.7568 35.251 37.6938 35.1294 37.644 35.0034H37.6177C37.6411 35.1382 37.6528 35.4268 37.6528 35.8691V40H36.6421V33.6982H37.8594L40.7686 38.2202C40.8916 38.4077 40.9707 38.5366 41.0059 38.6069H41.0234C40.9941 38.4399 40.9795 38.1572 40.9795 37.7588V33.6982H41.9858V40Z"
|
||||
id="pill_text"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#000000;stroke-width:1;stroke:none;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
17
res/terminal/Terminal_Can_HC.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="foreground"><stop stop-color="#000000"/></linearGradient>
|
||||
<linearGradient id="background"><stop stop-color="#ffffff"/></linearGradient>
|
||||
</defs>
|
||||
<!-- background rounded rectangle -->
|
||||
<path d="M2 6C0.9 6 0 6.9 0 8L0 12L0 13L0 40C0 41.1 0.9 42 2 42L46 42C47.1 42 48 41.1 48 40L48 13L48 12L48 8C48 6.9 47.1 6 46 6L32 6L16 6L2 6Z" fill="url(#background)"/>
|
||||
<!-- tab outlines -->
|
||||
<rect y="12" x="0" height="1" width="48" fill="url(#foreground)"/>
|
||||
<rect y="6" x="15.33" height="7" width="1" fill="url(#foreground)"/>
|
||||
<rect y="6" x="31.66" height="7" width="1" fill="url(#foreground)"/>
|
||||
<!-- > -->
|
||||
<path d="M15.2 24.3L6.4 33.1C5.9 33.6 5.9 34.3 6.4 34.7L8.2 36.5C8.7 37 9.4 37 9.8 36.5L18.6 27.7C19.1 27.2 19.1 26.5 18.6 26.1L16.8 24.3C16.4 23.9 15.6 23.9 15.2 24.3Z" fill="url(#foreground)"/>
|
||||
<path d="M9.8 17.3L18.6 26.1C19.1 26.6 19.1 27.3 18.6 27.7L16.8 29.5C16.3 30 15.6 30 15.2 29.5L6.4 20.7C5.9 20.2 5.9 19.5 6.4 19.1L8.2 17.3C8.6 16.9 9.4 16.9 9.8 17.3Z" fill="url(#foreground)"/>
|
||||
<!-- "PRE" -->
|
||||
<path d="m 27.279297,33.324219 c 0,2.468099 0,4.936198 0,7.404297 0.513672,0 1.027343,0 1.541015,0 0,-0.848958 0,-1.697917 0,-2.546875 0.917549,0.01484 1.927453,0.03299 2.65875,-0.616892 1.172278,-0.927905 1.176118,-3.073122 -0.17547,-3.840777 -0.981472,-0.568217 -2.13908,-0.358412 -3.218649,-0.399753 -0.268549,0 -0.537097,0 -0.805646,0 z m 5.869141,0 c 0,2.468099 0,4.936198 0,7.404297 0.513021,0 1.026041,0 1.539062,0 0,-0.950521 0,-1.901042 0,-2.851563 0.431639,-0.03621 0.908827,0.05394 1.148438,0.458985 0.525553,0.771736 0.970414,1.596546 1.458984,2.392578 0.604167,0 1.208333,0 1.8125,0 -0.638695,-0.976785 -1.211177,-1.999445 -1.914561,-2.931671 -0.241051,-0.276681 -0.636923,-0.466649 -0.07177,-0.574189 1.274395,-0.677377 1.378019,-2.774051 0.102268,-3.504493 -0.922467,-0.560429 -2.029423,-0.352936 -3.053526,-0.393944 -0.340466,0 -0.680932,0 -1.021398,0 z m 6.25,0 c 0,2.468099 0,4.936198 0,7.404297 1.440755,0 2.88151,0 4.322265,0 0,-0.454427 0,-0.908855 0,-1.363282 -0.925781,0 -1.851563,0 -2.777344,0 0,-0.566406 0,-1.132812 0,-1.699218 0.804688,0 1.609375,0 2.414063,0 0,-0.454427 0,-0.908855 0,-1.363282 -0.804688,0 -1.609375,0 -2.414063,0 0,-0.536458 0,-1.072917 0,-1.609375 0.873047,0 1.746094,0 2.619141,0 0,-0.45638 0,-0.91276 0,-1.36914 -1.388021,0 -2.776041,0 -4.164062,0 z M 34.6875,34.648438 c 0.570781,0.0371 1.28319,-0.150767 1.691507,0.358943 0.370833,0.564952 0.02331,1.464787 -0.684396,1.526855 -0.334157,0.03512 -0.67147,0.0117 -1.007111,0.0185 0,-0.634765 0,-1.269531 0,-1.904296 z m -5.867188,0.01562 c 0.61736,0.02299 1.42501,-0.135196 1.79395,0.492096 0.333428,0.657753 -0.0252,1.619083 -0.829192,1.664678 -0.319151,0.05007 -0.643164,0.0243 -0.964758,0.03073 0,-0.729167 0,-1.458333 0,-2.1875 z" fill="url(#foreground)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-100.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-100_contrast-black.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-100_contrast-white.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-125.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-125_contrast-black.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-125_contrast-white.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-150.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-150_contrast-black.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-150_contrast-white.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-200.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-200_contrast-black.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-200_contrast-white.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-400.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-400_contrast-black.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
res/terminal/images-Can/LargeTile.scale-400_contrast-white.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
res/terminal/images-Can/LockScreenLogo.scale-100.png
Normal file
|
After Width: | Height: | Size: 834 B |
|
After Width: | Height: | Size: 595 B |
|
After Width: | Height: | Size: 586 B |
BIN
res/terminal/images-Can/LockScreenLogo.scale-125.png
Normal file
|
After Width: | Height: | Size: 1002 B |
|
After Width: | Height: | Size: 770 B |
|
After Width: | Height: | Size: 680 B |
BIN
res/terminal/images-Can/LockScreenLogo.scale-150.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 842 B |
|
After Width: | Height: | Size: 730 B |
BIN
res/terminal/images-Can/LockScreenLogo.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 963 B |
|
After Width: | Height: | Size: 792 B |
BIN
res/terminal/images-Can/LockScreenLogo.scale-400.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-100.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-100_contrast-black.png
Normal file
|
After Width: | Height: | Size: 805 B |
BIN
res/terminal/images-Can/SmallTile.scale-100_contrast-white.png
Normal file
|
After Width: | Height: | Size: 798 B |
BIN
res/terminal/images-Can/SmallTile.scale-125.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-125_contrast-black.png
Normal file
|
After Width: | Height: | Size: 906 B |
BIN
res/terminal/images-Can/SmallTile.scale-125_contrast-white.png
Normal file
|
After Width: | Height: | Size: 904 B |
BIN
res/terminal/images-Can/SmallTile.scale-150.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-150_contrast-black.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-150_contrast-white.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-200.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-200_contrast-black.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-200_contrast-white.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-400.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-400_contrast-black.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
res/terminal/images-Can/SmallTile.scale-400_contrast-white.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
res/terminal/images-Can/SplashScreen.scale-100.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
res/terminal/images-Can/SplashScreen.scale-125.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
BIN
res/terminal/images-Can/SplashScreen.scale-150.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |