Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
7046 commits
Select commit Hold shift + click to select a range
f2fd44e
Merge branch 'main' into dev/dmitriv/reopen-dirty-untitlied
dmitrivMS Jan 5, 2026
30b902e
Merge branch 'main' into dev/dmitriv/trusted-domains-editor
dmitrivMS Jan 5, 2026
b0b3c10
Merge branch 'main' into dev/dmitriv/disable-compact-folders-for-a11y
dmitrivMS Jan 5, 2026
f3c0317
Merge branch 'main' into dev/dmitriv/finalize-button-location-api
dmitrivMS Jan 5, 2026
9d17178
Merge remote-tracking branch 'origin/main' into dev/dmitriv/keybindin…
dmitrivMS Jan 5, 2026
5bce4f0
Bring keybindings back to editor suggest status bar
Tyriar Jan 5, 2026
4fea0d7
Add TS/JS Template surrounding brackets (#255972)
RedCMD Jan 5, 2026
5533614
Git - repository picker should not contain hidden source control prov…
lszomoru Jan 5, 2026
bd4ba7b
fix: set LANGUAGE for Git (#285410)
flying-sheep Jan 5, 2026
8d2287f
Fix php indenting #248229 (#258016)
RedCMD Jan 5, 2026
9a4f9e2
PR feedback
dmitrivMS Jan 5, 2026
54e7962
Merge pull request #284486 from gjsjohnmurray/fix-257550
jrieken Jan 5, 2026
aa1000f
SCM - only show repository status bar item if there are multiple visi…
lszomoru Jan 5, 2026
e96281c
@xterm/xterm@6.1.0-beta.89
Tyriar Jan 5, 2026
274865a
Merge pull request #285913 from microsoft/xterm_20250105
Tyriar Jan 5, 2026
8b0dc7d
Merge pull request #285634 from murataslan1/fix/jumpy-marker-navigation
jrieken Jan 5, 2026
5656423
Show message about denied commands with links
Tyriar Jan 5, 2026
ffc3844
Add denial tests
Tyriar Jan 5, 2026
3259bee
Merge pull request #285102 from microsoft/dev/dmitriv/fetch-tool-hang
dmitrivMS Jan 5, 2026
c9f592b
Show command descriptions as tooltips in Command Palette (#284609)
Riya-chandra Jan 5, 2026
cc361ad
update notebook milestones (#285934)
jrieken Jan 5, 2026
8e5ca52
fix mcp server editor layout (#285935)
sandy081 Jan 5, 2026
01b7deb
Merge pull request #284894 from microsoft/dev/dmitriv/trusted-domains…
dmitrivMS Jan 5, 2026
3c759fb
The Move options in the tab editor context menu move the wrong tab (f…
bpasero Jan 5, 2026
b4ac641
Merge pull request #284897 from microsoft/dev/dmitriv/reopen-dirty-un…
dmitrivMS Jan 5, 2026
dd65f0c
Engineering - switch from npm-run-all to npm-run-all2 (#284087)
lszomoru Jan 5, 2026
a682122
Bump qs from 6.14.0 to 6.14.1 in /test/mcp (#285589)
dependabot[bot] Jan 5, 2026
6533950
Bump qs from 6.14.0 to 6.14.1 in /build (#285915)
dependabot[bot] Jan 5, 2026
4f0688d
Merge pull request #285103 from microsoft/dev/dmitriv/trust-ipv6-loca…
dmitrivMS Jan 5, 2026
512a130
extensions: TreeItem `no-twisty` CSS not always following TreeItemCol…
alexr00 Jan 5, 2026
8ca6cc6
Fixes Can't accept rename with Shift+Tab
dbaeumer Jan 5, 2026
31df1f4
Allow writing prompt with voice when session is in progress (fix #285…
bpasero Jan 5, 2026
6b17069
Merge pull request #285955 from microsoft/dbaeumer/poised-worm-lavender
dbaeumer Jan 5, 2026
8c6ab52
Add Import Profile command and use it to implement drag & drop of cod…
dmitrivMS Jan 5, 2026
ad8920b
clean up (#285960)
sandy081 Jan 5, 2026
76f9d67
Remove ! assertion
Tyriar Jan 5, 2026
7c36a58
Polish comment
Tyriar Jan 5, 2026
298ef56
Fix import in test
Tyriar Jan 5, 2026
8ebff69
Merge pull request #284888 from microsoft/dev/dmitriv/disable-compact…
dmitrivMS Jan 5, 2026
0b97f91
Merge pull request #285925 from microsoft/tyriar/285921
Tyriar Jan 5, 2026
8fdef91
Merge pull request #284360 from microsoft/dev/dmitriv/finalize-button…
dmitrivMS Jan 5, 2026
de56ab1
Fix querySelector TypeError in terminal suggest when xterm element be…
Copilot Jan 5, 2026
6cb6399
mcp: allow start server command to start all servers (#285980)
connor4312 Jan 5, 2026
6e00083
Suppress unhandled errors in WordHighlighter's runDelayer triggers. (…
junhaoliao Jan 5, 2026
51a4f38
Add telemetry logging for chat status widget action execution (#285981)
bhavyaus Jan 5, 2026
6a0b247
Merge branch 'main' into patch-1
Tyriar Jan 5, 2026
8c26205
chore: bump plist (#285982)
rzhao271 Jan 5, 2026
550f052
Format changed files
Tyriar Jan 5, 2026
e617b6f
Rename allowIcons -> showIconsNoKeybindings
Tyriar Jan 5, 2026
fb9b039
Merge pull request #285575 from microsoft/tyriar/285574
Tyriar Jan 5, 2026
af8eceb
update notebook milestones (#285988)
jrieken Jan 5, 2026
d639efa
Add custom xterm logger for tests
Tyriar Jan 5, 2026
71ff42f
Merge pull request #285896 from microsoft/tyriar/285886
Tyriar Jan 5, 2026
9564c70
Merge pull request #284044 from anki-code/patch-1
Tyriar Jan 5, 2026
cbc91ee
Revert "Finalize quickPickButtonLocation API proposal" (#285984)
TylerLeonhardt Jan 5, 2026
85b4883
Add command to announce editor line and column number (#282152)
anthonykim1 Jan 5, 2026
1d414d3
Unify voice command categories under "Voice" (#285973)
Copilot Jan 5, 2026
c84a26e
Add `${activeEditorLanguageId}` variable to window title (#284151)
Copilot Jan 5, 2026
8da7f80
Use remote authority names from product configuration (#284942)
dmitrivMS Jan 5, 2026
34b051a
Merge pull request #285992 from microsoft/tyriar/242077
Tyriar Jan 5, 2026
88f0a65
buffer telemetry events until the exp config is set (#281658)
sbatten Jan 5, 2026
5d583ad
use v2 controller with old notebook prompt (#284160)
amunger Jan 5, 2026
0c04c5f
stop the focus communication cycle (#286004)
amunger Jan 5, 2026
655abb9
Avoid re-auth when the user signs out (#286019)
TylerLeonhardt Jan 6, 2026
793bf89
Merge branch 'main' into dev/dmitriv/keybinding-labels
dmitrivMS Jan 6, 2026
9952de3
increase/decrease view width/size commands not applying properly in f…
bpasero Jan 6, 2026
4ed90f7
3rd party notices (#286063)
jrieken Jan 6, 2026
7f374a7
Useless regular-expression character escape (#286069)
aeschli Jan 6, 2026
7993d60
Merge branch 'main' into dev/dmitriv/keybinding-labels
dmitrivMS Jan 6, 2026
f61c9aa
Fix inconsistent order of wordBasedSuggestions (#286112)
benibenj Jan 6, 2026
1b4715b
Remove flakey test (#286023)
TylerLeonhardt Jan 6, 2026
5cc8c5a
SCM - do not show hidden repositories in the Repositories menu (#286129)
lszomoru Jan 6, 2026
4f805b6
SCM - badge should not show changes in hidden repositories (#286130)
lszomoru Jan 6, 2026
67c15fe
instructions - make it clear to reuse code and not duplicate (#286131)
bpasero Jan 6, 2026
d0576da
Git - add extension API to get a patch for a commit range (#286159)
lszomoru Jan 6, 2026
31de8ea
adding trace logs to trace double paste issue (#286158)
aiday-mar Jan 6, 2026
fb2a051
@xterm/xterm@6.1.0-beta.91
Tyriar Jan 6, 2026
08070ad
fix accessiblity signal bug (#286198)
meganrogge Jan 6, 2026
a967622
Fix race condition in terminal suggest widget initialization causing …
Copilot Jan 6, 2026
b69e4fc
Git - fix default worktree path when creating a worktree in a worktre…
lszomoru Jan 6, 2026
b095009
Merge pull request #286178 from microsoft/tyriar/xterm_20260106
Tyriar Jan 6, 2026
5a569e3
Merge pull request #286218 from microsoft/connor4312/286107
connor4312 Jan 6, 2026
d07da7b
chat: fix MCP tool confirmation quick tree hide timing (#286235)
connor4312 Jan 6, 2026
a675bab
Merge branch 'main' into fix/memory-leak-terminal-process-manager
SimonSiefke Jan 6, 2026
8bb40dd
Fixes one instance causing "Chat not available" (#286252)
TylerLeonhardt Jan 7, 2026
ca80d6a
Fix regression package.json task fail to re-run (#286230)
anthonykim1 Jan 7, 2026
004cb2e
chat: fix modified state after accepting agent edits with setContents…
connor4312 Jan 7, 2026
d1d43fd
testing: fix duplicated command in command palette (#286279)
connor4312 Jan 7, 2026
3d862df
chat: add confirmation not needed reason to tool invocations (#286257)
connor4312 Jan 7, 2026
d309d86
Merge branch 'main' into dev/dmitriv/keybinding-labels
dmitrivMS Jan 7, 2026
90191d5
agent sessions - trace logging to diagnose issues resolving (#286305)
bpasero Jan 7, 2026
09952bd
"Search with AI" option shows even if you have "Disable AI Features" …
bpasero Jan 7, 2026
b3200ed
Make JDoc on `resourceUri` properties in `TreeItem` and `QuickPickIte…
dmitrivMS Jan 7, 2026
f9fedc5
Merge pull request #286317 from microsoft/dev/dmitriv/align-resourceU…
dmitrivMS Jan 7, 2026
78444f4
Agent sessions - back button in the title feedback (fix #286098) (#28…
bpasero Jan 7, 2026
53ee45f
Fix a set of issues around transfer and save of custom editor documents
dmitrivMS Jan 7, 2026
fc07512
Strange UI behaviour when Show Agent Session sidebar (fix #286166) (#…
bpasero Jan 7, 2026
42434d7
Can't preview custom agents' markdown files (#286331)
aeschli Jan 7, 2026
09bdc4b
PR feedback
dmitrivMS Jan 7, 2026
bebe4a9
Merge branch 'main' into dev/dmitriv/custom-editors-bugs
dmitrivMS Jan 7, 2026
6f88b8d
Tweak wording of suggest selection mode hover
Tyriar Jan 7, 2026
4f2819d
Tweak wording when adding rules
Tyriar Jan 7, 2026
0a48f4c
Merge pull request #286347 from microsoft/tyriar/286067
Tyriar Jan 7, 2026
ca44c15
Merge pull request #286350 from microsoft/tyriar/286139
Tyriar Jan 7, 2026
cf21a7b
Strip quotes as needed from redirection paths
Tyriar Jan 7, 2026
d424443
Refactor: Encapsulate _initialize waiting
alexdima Jan 7, 2026
62172cc
Remove unneeded jsdoc
Tyriar Jan 7, 2026
7cc9ef3
Address feedback
Tyriar Jan 7, 2026
ac7f89b
Fix web page loader to handle nested iframes correctly
dmitrivMS Jan 7, 2026
4770c8f
Attempt to improve situation for very early callers of activateByEven…
alexdima Jan 7, 2026
2ab78a0
Merge pull request #286363 from microsoft/tyriar/i6524
Tyriar Jan 7, 2026
b13bafa
Merge pull request #286368 from microsoft/alexd/tropical-mule
alexdima Jan 7, 2026
87b50d1
Combine action and warning tooltip text into a single string in getHo…
dmitrivMS Jan 7, 2026
f45e849
Merge branch 'main' into dev/dmitriv/model-picker-tooltip
dmitrivMS Jan 7, 2026
cbf9991
Merge branch 'main' into dev/dmitriv/fetch-tool-frames
dmitrivMS Jan 7, 2026
338a0c0
Merge branch 'main' into dev/dmitriv/custom-editors-bugs
dmitrivMS Jan 7, 2026
dc17837
fix: memory leak call stack widget (#286246)
SimonSiefke Jan 7, 2026
fa6c146
Finalize quickInputButtonLocation API proposal
dmitrivMS Jan 7, 2026
2294cd0
Merge pull request #286383 from microsoft/dev/dmitriv/model-picker-to…
dmitrivMS Jan 7, 2026
0a29012
Memory leak related to diff editor (fix #286336) (#286385)
bpasero Jan 7, 2026
dfba89f
Remove `provideNewChatSessionItem`
mjbvz Jan 7, 2026
6c46006
Merge pull request #286399 from mjbvz/dev/mjbvz/sensible-wildebeest
mjbvz Jan 7, 2026
075474a
Bump distro (#286410)
lramos15 Jan 7, 2026
8268e61
Properly account for tabs when announcing col number (#286412)
anthonykim1 Jan 7, 2026
84ce6e1
Revert "debt - remove AMD support of VSCode for web" (#286421)
osortega Jan 7, 2026
ec711a3
chat: support MCP apps (#285864)
connor4312 Jan 7, 2026
7e1838e
bump to 1.109 (#286424)
joshspicer Jan 7, 2026
734c24e
SCM - add missing filter clause to visible repositories (#286431)
lszomoru Jan 7, 2026
e166b7b
Revert "Revert "debt - remove AMD support of VSCode for web"" (#286423)
osortega Jan 7, 2026
0ccfbc0
bump copyright (#286438)
joshspicer Jan 7, 2026
a68ea80
fix: missing semicolon
SimonSiefke Jan 7, 2026
a03084b
Merge pull request #286444 from microsoft/chat-import-programmatic
rwoll Jan 7, 2026
56b2d5f
edit markdown parts in collapsible part (#286301)
justschen Jan 7, 2026
db52340
Bump @playwright/mcp from 0.0.37 to 0.0.40 in /test/mcp (#286425)
dependabot[bot] Jan 7, 2026
43629e0
chat: store binary attachments as base64 (#286436)
connor4312 Jan 7, 2026
c21cd6d
mcp: update tasks to spec, fix not restoring after hiding sidebar (#2…
connor4312 Jan 8, 2026
9ea3725
Bump @modelcontextprotocol/sdk from 1.24.0 to 1.25.2 in /test/mcp (#2…
dependabot[bot] Jan 8, 2026
f368d57
chat: cache variable part of dataId in request hash (#286458)
connor4312 Jan 8, 2026
ace694a
Save as doesn't keep identation and end of line sequence (fix #285514…
Copilot Jan 8, 2026
851852c
Smoke test failure: `verifies that "hot exit" works for dirty files`…
bpasero Jan 8, 2026
935ce47
debt - cleanup some todos (#286481)
bpasero Jan 8, 2026
6cbc8d5
untitled - fix leaking models (#286482)
bpasero Jan 8, 2026
db6e9f3
Make `IAuthMetadata` not MCP specific (#286473)
TylerLeonhardt Jan 8, 2026
9cbd2f4
Merge pull request #283994 from microsoft/dev/dmitriv/keybinding-labels
dmitrivMS Jan 8, 2026
5107de3
Merge pull request #286388 from microsoft/dev/dmitriv/finalize-quickI…
dmitrivMS Jan 8, 2026
62323cd
Merge branch 'main' into dev/dmitriv/fetch-tool-frames
dmitrivMS Jan 8, 2026
4d8bdc1
Merge branch 'main' into dev/dmitriv/custom-editors-bugs
dmitrivMS Jan 8, 2026
2893b0e
agent sessions - more tweaks to sizing for side by side (#286491)
bpasero Jan 8, 2026
47485ec
Fix Link component Space key activation for accessibility (#286485)
Copilot Jan 8, 2026
f769285
on cursor move, clear and recreate terminal initial hint (#286392)
meganrogge Jan 8, 2026
7419543
debt - remove old inline chat world (#286503)
jrieken Jan 8, 2026
ce0c968
Fix rendering of deny message containing $
Tyriar Jan 8, 2026
a8b8823
Simplify replacing of $
Tyriar Jan 8, 2026
54a582f
Relayout term inline chat on model change
Tyriar Jan 8, 2026
93738a8
Remove sendKeybindingsToShell notification
Tyriar Jan 8, 2026
2598adc
Simplify wsl profile detection regex
Tyriar Jan 8, 2026
c3d1fac
Update src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
Tyriar Jan 8, 2026
4d55a1d
Disable inital hint if sendKeybindingsToShell=true
Tyriar Jan 8, 2026
5ba5b2f
Inline regex, don't use ctor
Tyriar Jan 8, 2026
69f3384
Merge pull request #286251 from SimonSiefke/fix/memory-leak-terminal-…
Tyriar Jan 8, 2026
68f898c
debt - more cleanup (#286519)
jrieken Jan 8, 2026
4852c48
remove double ctrl registration... (#286523)
jrieken Jan 8, 2026
7585085
Merge pull request #286511 from microsoft/tyriar/286120
Tyriar Jan 8, 2026
3c07a7b
Merge pull request #286516 from microsoft/tyriar/271422_2
Tyriar Jan 8, 2026
ff1effc
Merge pull request #286518 from microsoft/tyriar/286065
Tyriar Jan 8, 2026
9e2646e
Merge pull request #286524 from microsoft/tyriar/286138
Tyriar Jan 8, 2026
f52989a
Merge pull request #286527 from microsoft/tyriar/286517
Tyriar Jan 8, 2026
10a5645
Merge pull request #286325 from microsoft/dev/dmitriv/custom-editors-…
dmitrivMS Jan 8, 2026
f0a5b2f
AI related quick picker accessible even when AI disabled (fix #286526…
bpasero Jan 8, 2026
741cff2
Revert "adding trace logs to trace double paste issue (#286158)"
alexdima Jan 8, 2026
51f978b
Revert "making sure the then on triggerPaste is not evaluated twice (…
alexdima Jan 8, 2026
d162db1
Revert "WORKAROUND - paste fix - using readText from navigator API wh…
alexdima Jan 8, 2026
0c38ca0
Revert "Add logging for early returns in copy and paste handling (#28…
alexdima Jan 8, 2026
cdd00f2
Disabling AI does not apply without restart when Copilot installed (f…
bpasero Jan 8, 2026
1d06fe6
Merge pull request #286545 from microsoft/alexd/cool-skink
alexdima Jan 8, 2026
81fff3e
Merge branch 'main' into dev/dmitriv/fetch-tool-frames
dmitrivMS Jan 8, 2026
1950f4c
Refactor action widget CSS padding and margin for improved layout con…
mrleemurray Jan 8, 2026
fb42854
tweak inline chat styles, no input border (#286550)
jrieken Jan 8, 2026
9d3ba96
fix support for inline eval (#286552)
jrieken Jan 8, 2026
4c737c5
Merge pull request #286551 from microsoft/mrleemurray/isolated-puffin…
mrleemurray Jan 8, 2026
16ccd1a
debug: fix memory leak in linkDetector (#280204)
SimonSiefke Jan 8, 2026
c8fdd16
Update TextMate grammars from upstream sources (#286560)
dmitrivMS Jan 8, 2026
cb2efdd
Fix disposable leak in ViewGpuContext
Tyriar Jan 8, 2026
75c5b13
Fix error in rasterizeGlyph
Tyriar Jan 8, 2026
7939bad
Merge pull request #286570 from microsoft/tyriar/286569
Tyriar Jan 8, 2026
e785475
Merge pull request #286573 from microsoft/tyriar/246658
Tyriar Jan 8, 2026
2240dcf
Chat - adding multi-diff part should respect the `chat.checkpoints.sh…
lszomoru Jan 8, 2026
f85cf0a
Integrated Browser (#278677)
kycutler Jan 8, 2026
1ed1331
improve UX of terminal quick suggest setting (#286419)
meganrogge Jan 8, 2026
28873d3
fix remote terminal suggest (#286407)
meganrogge Jan 8, 2026
831d16b
Fix newline formatting in terminal suggest details widget (#286584)
Copilot Jan 8, 2026
8823d93
fix announce cursor position for windows (#286586)
anthonykim1 Jan 8, 2026
c0848ca
revert css changes (#286595)
meganrogge Jan 8, 2026
fbeac9f
Add enforceModelTimeout setting
Tyriar Jan 8, 2026
7dc75de
Make enforceTimeoutModel restricted
Tyriar Jan 8, 2026
b17ee43
Merge pull request #286607 from microsoft/tyriar/286598
Tyriar Jan 8, 2026
5b9faf1
debt - update `@vscode/sudo-prompt` to `9.3.2` (#286557)
bpasero Jan 8, 2026
b069e34
Add readonly and lock file commands for npm, yarn and pnpm
Tyriar Jan 8, 2026
bacafe4
Fix terminal suggest to select first item when triggered explicitly v…
Copilot Jan 8, 2026
23b39ce
Fix progress sound for backgrounded session re-entry (#286428)
Copilot Jan 8, 2026
66fa7fe
trim start of command before rendering in chat terminal part (#286599)
meganrogge Jan 8, 2026
e97a82b
Hide selection mode in terminal suggest toolbar when quick suggestion…
Copilot Jan 8, 2026
9986468
add accessibility tests for more of the workbench (#286446)
meganrogge Jan 8, 2026
247c959
Update src/vs/workbench/contrib/terminalContrib/chatAgentTools/common…
Tyriar Jan 8, 2026
dea178a
Merge pull request #286612 from microsoft/tyriar/286463
Tyriar Jan 8, 2026
69b73b7
mcp: fix start all servers command (#286624)
rwoll Jan 8, 2026
7c62052
mcp: fix visibility not set on cached mcp tools (#286643)
connor4312 Jan 9, 2026
fe665a9
watcher - update to latest version (#286484)
bpasero Jan 9, 2026
861cb20
Chat - polish to the working set (#286609)
lszomoru Jan 9, 2026
fcb46c7
Merge pull request #286367 from microsoft/dev/dmitriv/fetch-tool-frames
dmitrivMS Jan 9, 2026
9c3e6e2
Chat - working set/todo list rendering polish (#286679)
lszomoru Jan 9, 2026
00863a1
debt - check in dirty lock file (#286686)
bpasero Jan 9, 2026
ccad785
Add glob pattern filter settings to snippets (#284165)
dmitrivMS Jan 9, 2026
8edf92d
debt - update `esbuild@0.27.2` (#286687)
bpasero Jan 9, 2026
3dfd29a
Removes unused source code that relied on AMD (see https://github.com…
hediet Jan 9, 2026
4f9b1f6
Deletes unused playground-server. (#286718)
hediet Jan 9, 2026
63c5841
Don't include loader.js in monaco-editor-core build, as the loader is…
hediet Jan 9, 2026
5fb3fcc
Don't show suggest hint when it's not enabled
Tyriar Jan 9, 2026
9ad93e3
Remove `src/vs/loader.js` (fix #285255) (#286727)
bpasero Jan 9, 2026
51eb18d
Hide primary sidebar when showing sessions sidebar on narrow windows …
Copilot Jan 9, 2026
759266a
Fix incorrect label for background sessions in Agent Sessions status …
Copilot Jan 9, 2026
d7c3e6f
Fix dismiss of "Other files" node in the search tree (#286749)
dmitrivMS Jan 9, 2026
a41570f
Merge pull request #286744 from microsoft/tyriar/286680
Tyriar Jan 9, 2026
72a0366
Dispose of initial hint when there's nothing to show
Tyriar Jan 9, 2026
cc74836
Skip creating reactions container when no reactions or handler exist …
Copilot Jan 9, 2026
aa23d4a
agent sessions - slightly increase delay before refresh to reduce pre…
bpasero Jan 9, 2026
38721fc
Merge pull request #286756 from microsoft/tyriar/286683
Tyriar Jan 9, 2026
b1bf400
Initial revision of automated release sanity checks. (#280857)
dmitrivMS Jan 9, 2026
e67d7c9
Use package.json to detect if workspace is vscode workspace (#286714)
hediet Jan 9, 2026
bf90c47
Bring back a11y smoke tests, add exclusion for flake case (#286773)
meganrogge Jan 9, 2026
f8edfb1
mcp: allow resource domains in script-src and style-src CSP (#286690)
qchuchu Jan 9, 2026
1c97a46
on model content change, restore last cursor position (#286779)
meganrogge Jan 9, 2026
f12cf7d
Require at least 300px to show initial hint
Tyriar Jan 9, 2026
b42b32a
Merge pull request #286786 from microsoft/tyriar/286783
Tyriar Jan 9, 2026
4b937a2
mcp: allow nested patching of postMessage from mcp apps (#286788)
connor4312 Jan 9, 2026
efcd799
clean up edit processing, add new tests (#286785)
amunger Jan 9, 2026
88d46fe
Add proposed API for prompt files providers (#280426)
pwang347 Jan 9, 2026
4e9a8da
fix flaky smoke test 🤞🏼 (#286806)
meganrogge Jan 9, 2026
9b90136
skip smoke test for web on mac (#286808)
meganrogge Jan 9, 2026
2b74946
improve fix (#286798)
meganrogge Jan 9, 2026
e7a9730
?workerModule -> ?esm (#284458)
hediet Jan 9, 2026
0a2c5f1
context keys for chatInputPart optionGroups (#286814)
joshspicer Jan 9, 2026
4f24fc8
Git - add `git.worktreeIncludeFiles` setting (#286816)
lszomoru Jan 9, 2026
0a75e1f
Cache resolved CSS variables
Tyriar Jan 9, 2026
a1c4b06
watcher - update `@parcel/watcher` to latest (#286827)
bpasero Jan 9, 2026
07bb542
add `New Chat` alert, remove will continue in bg as it's no longer ne…
meganrogge Jan 9, 2026
8fdbf92
Merge pull request #286838 from microsoft/tyriar/286833
Tyriar Jan 9, 2026
d77cf17
fallback to label for aria label when tooltip isn't provided (#286843)
meganrogge Jan 9, 2026
2dbfc69
enable focusing the size link on the extension page via keyboard (#28…
meganrogge Jan 9, 2026
5091c35
Disable tooltips for Quick Input to prevent obscuring dropdown result…
MohamedEmirHajji Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
420 changes: 0 additions & 420 deletions .config/guardian/.gdnbaselines

This file was deleted.

52 changes: 37 additions & 15 deletions .config/guardian/.gdnsuppress
Original file line number Diff line number Diff line change
@@ -1,46 +1,68 @@
{
"hydrated": false,
"hydrated": true,
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions"
},
"version": "1.0.0",
"suppressionSets": {
"default": {
"name": "default",
"createdDate": "2025-03-17 11:52:32Z",
"lastUpdatedDate": "2025-03-17 11:52:32Z"
"createdDate": "2025-01-28 06:29:05Z",
"lastUpdatedDate": "2025-08-25 17:55:20Z"
}
},
"results": {
"216e2ac9cb596796224b47799f656570a01fa0d9b5f935608b47d15ab613c8e8": {
"signature": "216e2ac9cb596796224b47799f656570a01fa0d9b5f935608b47d15ab613c8e8",
"6216d3477ad4f56cb4ec316a9aaff02e9530a10d56469a4ef4063b8d02fe344b": {
"signature": "6216d3477ad4f56cb4ec316a9aaff02e9530a10d56469a4ef4063b8d02fe344b",
"alternativeSignatures": [
"07746898f43afab7cc50931b33154c2d9e1a35f82a649dbe8aecf785b3d5a813"
"46ad210995b2ff199f3bee5f271938a4251ed7a60058041ace1beaa53e36b51c"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-x64/node.exe",
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:54:06Z"
},
"77797a3e44634bb2994bd13ccc95ff4575bba474585dbd2cf3068a1c16bc0624": {
"signature": "77797a3e44634bb2994bd13ccc95ff4575bba474585dbd2cf3068a1c16bc0624",
"b8a4702fb4b855719e5e5033c3b629fbe6267d516ce8a18bd8f3be3b9962434b": {
"signature": "b8a4702fb4b855719e5e5033c3b629fbe6267d516ce8a18bd8f3be3b9962434b",
"alternativeSignatures": [
"4a6cb67bd4b401e9669c13a2162660aaefc0a94a4122e5b50c198414db545672"
"52d986be88f1c5696fc87d7794279d02f5084c645440e2dd2c3b5a2176b6bf52"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-x64-web/node.exe",
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:54:06Z"
},
"30418bcc5269eaeb2832a2404465784431d4e72a2af332320c2b1db4768902ad": {
"signature": "30418bcc5269eaeb2832a2404465784431d4e72a2af332320c2b1db4768902ad",
"4dbc45d0405de2e83d53f10227e36b2a9d15eceb2c5e6934da5c4a1bffbfad89": {
"signature": "4dbc45d0405de2e83d53f10227e36b2a9d15eceb2c5e6934da5c4a1bffbfad89",
"alternativeSignatures": [
"b7b9eb974d7d3a4ae14df8695ca5a62592c8c9d20b7eda70a6535d50cbda3e7f"
"b6bab85ba5e97bc4e6ff2e8a7913cb9f4f3346f7bda435d176e0b1e3cfb883cf"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-arm64/node.exe",
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:45:35Z"
},
"024ff37af329b63d2d9c83784cc071badf63b7729e3dd0969ab921d2f04d8e09": {
"signature": "024ff37af329b63d2d9c83784cc071badf63b7729e3dd0969ab921d2f04d8e09",
"alternativeSignatures": [
"b46b7d6ed331f3e62eff23c57d3a074f76ef618f108929851065904200f5a572"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-arm64-web/node.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:45:35Z"
}
}
}
7 changes: 3 additions & 4 deletions .eslint-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
**/extensions/markdown-language-features/media/**
**/extensions/markdown-language-features/notebook-out/**
**/extensions/markdown-math/notebook-out/**
**/extensions/mermaid-chat-features/chat-webview-out/**
**/extensions/notebook-renderers/renderer-out/index.js
**/extensions/simple-browser/media/index.js
**/extensions/terminal-suggest/src/completions/upstream/**
Expand All @@ -24,16 +25,14 @@
**/extensions/vscode-api-tests/testWorkspace2/**
**/fixtures/**
**/node_modules/**
**/out-*/**/*.js
**/out-editor-*/**
**/out/**/*.js
**/out/**
**/out-*/**
**/src/**/dompurify.js
**/src/**/marked.js
**/src/**/semver.js
**/src/typings/**/*.d.ts
**/src/vs/*/**/*.d.ts
**/src/vs/base/test/common/filters.perf.data.js
**/src/vs/loader.js
**/test/unit/assert.js
**/test/automation/out/**
**/typings/**
Expand Down
125 changes: 125 additions & 0 deletions .eslint-plugin-local/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Custom ESLint rules

We use a set of custom [ESLint](http://eslint.org) to enforce repo specific coding rules and styles. These custom rules are run in addition to many standard ESLint rules we enable in the project. Some example custom rules includes:

- Enforcing proper code layering
- Preventing checking in of `test.only(...)`
- Enforcing conventions in `vscode.d.ts`

Custom rules are mostly used for enforcing or banning certain coding patterns. We tend to leave stylistic choices up to area owners unless there's a good reason to enforce something project wide.

This doc provides a brief overview of how these rules are setup and how you can add a new one.

# Resources
- [ESLint rules](https://eslint.org/docs/latest/extend/custom-rules) — General documentation about writing eslint rules
- [TypeScript ASTs and eslint](https://typescript-eslint.io/blog/asts-and-typescript-eslint/) — Look at how ESLint works with TS programs
- [ESTree selectors](https://eslint.org/docs/latest/extend/selectors) — Info about the selector syntax rules use to target specific nodes in an AST. Works similarly to css selectors.
- [TypeScript ESLint playground](https://typescript-eslint.io/play/#showAST=es) — Useful tool for figuring out the structure of TS programs and debugging custom rule selectors


# Custom Rule Configuration

Custom rules are defined in the `.eslint-plugin-local` folder. Each rule is defined in its own TypeScript file. These follow the naming convention:

- `code-RULE-NAME.ts` — General rules that apply to the entire repo.
- `vscode-dts-RULE-NAME.ts` — Rules that apply just to `vscode.d.ts`.

These rules are then enabled in the `eslint.config.js` file. This is the main eslint configuration for our repo. It defines a set of file scopes which rules should apply to files in those scopes.

For example, here's a configuration that enables the no `test.only` rule in all `*.test.ts` files in the VS Code repo:

```ts
{
// Define which files these rules apply to
files: [
'**/*.test.ts'
],
languageOptions: { parser: tseslint.parser, },
plugins: {
'local': pluginLocal,
},
rules: {
// Enable the rule from .eslint-plugin-local/code-no-test-only.ts
'local/code-no-test-only': 'error',
}
}
```

# Creating a new custom rule
This walks through the steps to create a new eslint rule:

1. Create a new rule file under `.eslint-plugin-local`. Generally you should call it `code-YOUR-RULE-NAME.ts`, for example, `.eslint-plugin-local/code-no-not-null-assertions-on-undefined-values.ts`

2. In this file, add the rule. Here's a template:

```ts
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import * as eslint from 'eslint';

export = new class YourRuleName implements eslint.Rule.RuleModule {

readonly meta: eslint.Rule.RuleMetaData = {
messages: {
customMessageName: 'message text shown in errors/warnings',
},
schema: false,
};

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
[SELECTOR]: (node: any) => {
// Report errors if needed
return context.report({
node,
messageId: 'customMessageName'
});
}
};
}
};
```

- Update the name of the class to match the name of your rule
- Add message entries for any errors you want to report
- Update `SELECTOR` with the [ESTree selector](https://eslint.org/docs/latest/extend/selectors) needed to target the nodes you are interested in. Use the [TypeScript ESLint playground](https://typescript-eslint.io/play/#showAST=es) to figure out which nodes you need and debug selectors

3. Register the rule in `eslint.config.js`

Generally this is just turning on the rule in the rule list like so:

```js
rules: {
// Name should match file name
'local/code-no-not-null-assertions-on-undefined-values': 'warn',
...
}
```

Rules can also take custom arguments. For example, here's how we can pass arguments to a custom rule in the `eslint.config.js`:

```
rules: {
'local/code-no-not-null-assertions-on-undefined-values': ['warn', { testsOk: true }],
...
}
```

In these cases make sure to update the `meta.schema` property on your rule with the JSON schema for the arguments. You can access these arguments using `context.options` in the rule `create` function


## Adding fixes to custom rules
Fixes are a useful way to mechanically fix basic linting issues, such as auto inserting semicolons. These fixes typically work at the AST level, so they are a more reliable way to perform bulk fixes compared to find/replaces.

To add a fix for a custom rule:

1. On the `meta` for your rule, add `fixable: 'code'`

2. When reporting an error in the rule, also include a `fix`. This is a function that takes a `fixer` argument and returns one or more fixes.

See the [Double quoted to single quoted string covert fix](https://github.com/microsoft/vscode/blob/b074375e1884ae01033967bf0bbceeaa4795354a/.eslint-plugin-local/code-no-unexternalized-strings.ts#L128) for an example. The ESLint docs also have [details on adding fixes and the fixer api](https://eslint.org/docs/latest/extend/custom-rules#applying-fixes)

The fixes can be run using `npx eslint --fix` in the VS Code repo
13 changes: 8 additions & 5 deletions .eslint-plugin-local/code-amd-node-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
*--------------------------------------------------------------------------------------------*/

import * as eslint from 'eslint';
import type * as ESTree from 'estree';
import { readFileSync } from 'fs';
import { join } from 'path';


export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
export default new class ApiProviderNaming implements eslint.Rule.RuleModule {

readonly meta: eslint.Rule.RuleMetaData = {
messages: {
Expand All @@ -21,7 +23,8 @@ export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
const modules = new Set<string>();

try {
const { dependencies, optionalDependencies } = require(join(__dirname, '../package.json'));
const packageJson = JSON.parse(readFileSync(join(import.meta.dirname, '../package.json'), 'utf-8'));
const { dependencies, optionalDependencies } = packageJson;
const all = Object.keys(dependencies).concat(Object.keys(optionalDependencies));
for (const key of all) {
modules.add(key);
Expand All @@ -33,13 +36,13 @@ export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
}


const checkImport = (node: any) => {
const checkImport = (node: ESTree.Literal & { parent?: ESTree.Node & { importKind?: string } }) => {

if (node.type !== 'Literal' || typeof node.value !== 'string') {
if (typeof node.value !== 'string') {
return;
}

if (node.parent.importKind === 'type') {
if (node.parent?.type === 'ImportDeclaration' && node.parent.importKind === 'type') {
return;
}

Expand Down
5 changes: 3 additions & 2 deletions .eslint-plugin-local/code-declare-service-brand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
*--------------------------------------------------------------------------------------------*/

import * as eslint from 'eslint';
import type * as ESTree from 'estree';

export = new class DeclareServiceBrand implements eslint.Rule.RuleModule {
export default new class DeclareServiceBrand implements eslint.Rule.RuleModule {

readonly meta: eslint.Rule.RuleMetaData = {
fixable: 'code',
Expand All @@ -14,7 +15,7 @@ export = new class DeclareServiceBrand implements eslint.Rule.RuleModule {

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['PropertyDefinition[key.name="_serviceBrand"][value]']: (node: any) => {
['PropertyDefinition[key.name="_serviceBrand"][value]']: (node: ESTree.PropertyDefinition) => {
return context.report({
node,
message: `The '_serviceBrand'-property should not have a value`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
*--------------------------------------------------------------------------------------------*/

import * as eslint from 'eslint';
import { Node } from 'estree';
import type * as estree from 'estree';

export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rule.RuleModule {
export default new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rule.RuleModule {

readonly meta: eslint.Rule.RuleMetaData = {
type: 'problem',
Expand All @@ -18,15 +18,15 @@ export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rul
};

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ exclude: string[] }>context.options[0];
const config = context.options[0] as { exclude: string[] };

const needle = context.getFilename().replace(/\\/g, '/');
if (config.exclude.some((e) => needle.endsWith(e))) {
return {};
}

return {
[`Program > ExpressionStatement > CallExpression[callee.name='suite']`]: (node: Node) => {
[`Program > ExpressionStatement > CallExpression[callee.name='suite']`]: (node: estree.Node) => {
const src = context.getSourceCode().getText(node);
if (!src.includes('ensureNoDisposablesAreLeakedInTestSuite(')) {
context.report({
Expand Down
12 changes: 6 additions & 6 deletions .eslint-plugin-local/code-import-patterns.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
import * as path from 'path';
import minimatch from 'minimatch';
import { createImportRuleListener } from './utils';
import { createImportRuleListener } from './utils.ts';

const REPO_ROOT = path.normalize(path.join(__dirname, '../'));
const REPO_ROOT = path.normalize(path.join(import.meta.dirname, '../'));

interface ConditionalPattern {
when?: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
Expand All @@ -31,15 +31,15 @@ interface LayerAllowRule {
type RawOption = RawImportPatternsConfig | LayerAllowRule;

function isLayerAllowRule(option: RawOption): option is LayerAllowRule {
return !!((<LayerAllowRule>option).when && (<LayerAllowRule>option).allow);
return !!((option as LayerAllowRule).when && (option as LayerAllowRule).allow);
}

interface ImportPatternsConfig {
target: string;
restrictions: string[];
}

export = new class implements eslint.Rule.RuleModule {
export default new class implements eslint.Rule.RuleModule {

readonly meta: eslint.Rule.RuleMetaData = {
messages: {
Expand All @@ -55,7 +55,7 @@ export = new class implements eslint.Rule.RuleModule {
};

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const options = <RawOption[]>context.options;
const options = context.options as RawOption[];
const configs = this._processOptions(options);
const relativeFilename = getRelativeFilename(context);

Expand Down Expand Up @@ -217,7 +217,7 @@ export = new class implements eslint.Rule.RuleModule {
configs.push(testConfig);
}
} else {
configs.push({ target, restrictions: <string[]>restrictions.filter(r => typeof r === 'string') });
configs.push({ target, restrictions: restrictions.filter(r => typeof r === 'string') as string[] });
}
}
this._optionsCache.set(options, configs);
Expand Down
Loading