Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
1c0b3b8
Merge pull request #312243 from microsoft/revert-311606-dev/mjbvz/adv…
mjbvz Apr 23, 2026
9f29c28
Address Copilot PR review feedback
hawkticehurst Apr 23, 2026
2b9d7f7
Use stable group key for workspace picker SubmenuAction id (#312251)
sandy081 Apr 23, 2026
891a3e6
Merge pull request #312237 from austinngan/md-changes
mjbvz Apr 23, 2026
908ea9e
terminal tools: detect prompts on the last output line (#311765)
mossgowild Apr 23, 2026
03beef5
Merge pull request #312244 from microsoft/zhichli/otelfix1
zhichli Apr 23, 2026
5daa981
agents: add "Debug Local Agent Host Process In Dev Tools" command (#3…
roblourens Apr 23, 2026
0496ea6
Fix cglicenses.json (#312255)
benvillalobos Apr 23, 2026
1cfc083
fix: exclude synthetic user messages from chat history processing (#3…
DonJayamanne Apr 23, 2026
e85baae
agentHost: fix duplicate edits being shown in chat (#312252)
connor4312 Apr 23, 2026
f32a933
Browser: prepare for background tabs (#312258)
kycutler Apr 24, 2026
2289e09
agentHost: finish implementing host-level settings
connor4312 Apr 24, 2026
7776b19
Skill for launching and testing vscode-dev browser/mobile.
rebornix Apr 24, 2026
9c60f95
Apply suggestion from @Copilot
rebornix Apr 24, 2026
2e9a405
Remove grayscale filter: always show icon in full color
hawkticehurst Apr 24, 2026
b4d2f1d
Switch to esbuild's native watcher for building extensions
mjbvz Apr 24, 2026
0e2788c
Merge pull request #312277 from microsoft/rebornix/safe-locust
rebornix Apr 24, 2026
392ff04
Refactor CopilotCLISessionService by removing unused logic (#312265)
DonJayamanne Apr 24, 2026
59be36b
agentHost: fix PostToolUse hook additionalContext not injected into s…
digitarald Apr 24, 2026
e2796aa
Fix Copilot CLI mission control remote flows (#312240)
pierceboggan Apr 24, 2026
f0666b8
Update extensions/esbuild-webview-common.mts
mjbvz Apr 24, 2026
12ce175
Update extensions/esbuild-extension-common.mts
mjbvz Apr 24, 2026
2471611
Cleanup
mjbvz Apr 24, 2026
8d10ed4
Don't emit extensionsApiProposals if it has not changed
mjbvz Apr 24, 2026
d90a8a7
Move files into Copilot CLI specific folders (#312266)
DonJayamanne Apr 24, 2026
dd1eb81
Load deferred repo hooks after session creation (#312036)
DonJayamanne Apr 24, 2026
3146146
Merge pull request #312287 from microsoft/dev/mjbvz/little-prawn
mjbvz Apr 24, 2026
452b59f
Merge pull request #312283 from mjbvz/dev/mjbvz/vague-dormouse
mjbvz Apr 24, 2026
cdfcb38
fix: handle heredoc/multiline commands in terminal tool execution (#3…
maruthang Apr 24, 2026
f5d02ff
Add event emitters for workspace folder and worktree changes (#312288)
DonJayamanne Apr 24, 2026
91a8eba
copilot: emit router decision to restricted telemetry with full scores
Apr 23, 2026
a85cc16
Merge pull request #312230 from microsoft/aashnagarg/router-restricte…
aashna Apr 24, 2026
13bad5b
fix: expand Chronicle session_files/refs tracking to match VS Code to…
digitarald Apr 24, 2026
0c13e3e
address disposable for permission picker (#312307)
justschen Apr 24, 2026
e9c39a6
Engineering - fix product build condition (#312311)
lszomoru Apr 24, 2026
b824dc9
[Unhandled Error] command 'github.copilot.signIn' not found (fix #301…
bpasero Apr 24, 2026
fb03ca9
Update distro commit (main) (#312269)
vs-code-engineering[bot] Apr 24, 2026
d314fbc
stests
jrieken Apr 24, 2026
7f677cd
fix: open in vscode action for agents app (#312215)
deepak1556 Apr 24, 2026
f3cd27d
cli plan widget improvements (#312101)
justschen Apr 24, 2026
8c833a0
border animation in line with input box (#312222)
justschen Apr 24, 2026
957e119
actions: lazy-update MenuWorkbenchToolBar based on visibility
jrieken Apr 24, 2026
2993fbd
fix: insert separator between Responses API phase commentary and fina…
ulugbekna Apr 24, 2026
e337ed5
Merge pull request #312156 from microsoft/joh/remove-doc-intent
jrieken Apr 24, 2026
f32c798
address review: per-window observer + fallback
jrieken Apr 24, 2026
deb443d
responseApi: allow dumping stream to a file
ulugbekna Apr 22, 2026
873affe
reused parsing and don't allocate Date unnecessarily
ulugbekna Apr 22, 2026
d1ffb7c
write to repo root easier way
ulugbekna Apr 22, 2026
5d1f845
chat: fix editor change event checking by using .matches()
jrieken Apr 24, 2026
9ffb703
feat: enhance chat input animation for improved accessibility and res…
mrleemurray Apr 24, 2026
c916396
feat: add chat input animation duration variable to stylelint configu…
mrleemurray Apr 24, 2026
cfce517
Update src/vs/workbench/contrib/chat/browser/widget/input/chatInputPa…
mrleemurray Apr 24, 2026
99482aa
Update src/vs/workbench/contrib/chat/browser/widget/input/chatInputPa…
mrleemurray Apr 24, 2026
7022c4a
Update src/vs/sessions/browser/media/style.css
mrleemurray Apr 24, 2026
e1329b7
Merge pull request #312317 from microsoft/joh/toolbar-visibility
jrieken Apr 24, 2026
750552d
add Turkish DOS (CP 857) encoding support (#300114)
ssg Apr 24, 2026
c020167
contextkey: fix scanner returning '>=' instead of '>' for greater-tha…
xingsy97 Apr 24, 2026
274f8c8
MultiFileDiffEditor - fix flickering on diff editors when switching r…
lszomoru Apr 24, 2026
51a8287
Merge pull request #312323 from microsoft/joh/active-editor-pane-matches
jrieken Apr 24, 2026
b091f1d
refactor: clean up CODEOWNERS and CODENOTIFY by removing unnecessary …
jrieken Apr 24, 2026
cbbe899
fixes https://github.com/microsoft/vscode/issues/303069 (#312332)
jrieken Apr 24, 2026
75dcfb9
refactor: replace IInlineChatEditStrategy with InlineChatToolCalling …
jrieken Apr 24, 2026
a4fed9c
Merge branch 'main' into agents/update-titlebar-open-vscode-button
Copilot Apr 24, 2026
4f5dd1c
Agents - hide "Open File" and "Open Changes" action for folders (#312…
lszomoru Apr 24, 2026
a41f4f5
chore: inline cleanup (#312341)
jrieken Apr 24, 2026
3981b5d
Agents - improve GitHub model handling (#312342)
lszomoru Apr 24, 2026
dfb67da
Move shared keychain migration from renderer to main process
alexdima Apr 24, 2026
0622a64
Merge remote-tracking branch 'origin/main' into alexdima/shared-keychain
alexdima Apr 24, 2026
4b8f34e
Preserve focus when opening browser with non-agentic tool (#312344)
kycutler Apr 24, 2026
f7c2ced
Add isMacintosh guards before using the shared keychain service
alexdima Apr 24, 2026
c140f4f
refactor: remove unnecessary assignees from classifier.json (#312345)
jrieken Apr 24, 2026
c3afbbf
Add contributable Manage submenu to workspace picker (#312340)
sandy081 Apr 24, 2026
9680ee1
Fix memory leak in AutoRepliesPtyServiceContribution on process dispo…
winjo Apr 24, 2026
859b8c4
inline edit: fix spurious console warnings for reusedInFlight outcome…
ulugbekna Apr 24, 2026
d3042bc
Merge pull request #312324 from microsoft/mrleemurray/convincing-crim…
mrleemurray Apr 24, 2026
29396e6
Agents: Truncate chat input placeholder in narrow views (#312337)
mrleemurray Apr 24, 2026
c5b38e3
add ICustomizationHarnessService.getCustomAgentsorigin/aeschli (#312353)
aeschli Apr 24, 2026
904a60e
nes: lang ctx: register for NES as well
ulugbekna Apr 24, 2026
cae7455
sessions: restore agents application support on Linux (#312360)
sandy081 Apr 24, 2026
c01e67a
Engineering - increase timeout for the web stage (#312355)
lszomoru Apr 24, 2026
0748f7f
pr comments
connor4312 Apr 24, 2026
a25b7d1
Merge remote-tracking branch 'origin/main' into connor4312/agent-host…
connor4312 Apr 24, 2026
4da0963
Agents: Adjust padding and border radius for harness dropdown button …
mrleemurray Apr 24, 2026
e4a9466
Add error telemetry for GetPullRequestGlobal (#312362)
alexr00 Apr 24, 2026
aa05d1f
sessions: register native IPluginGitService for desktop (#312346)
ulugbekna Apr 24, 2026
dd18039
Fix inconsistent model picker hover (#312378)
lramos15 Apr 24, 2026
0f0b735
Agents: Implement scrollable container for welcome prompts (#312357)
mrleemurray Apr 24, 2026
9a6329f
Agents: Adjust dimensions and alignment for chat input buttons (#312376)
mrleemurray Apr 24, 2026
19d48a9
Use service assessor
mjbvz Apr 24, 2026
113125f
Remove now unused props
mjbvz Apr 24, 2026
2d0f70c
Move agentPluginsHome to IUserDataProfile and IEnvironmentService (#3…
sandy081 Apr 24, 2026
64e0919
fix: schedule promptFallbackScheduler immediately in trackIdleOnPromp…
meganrogge Apr 24, 2026
d444d45
agentHost: finish implementing host-level settings (#312268)
connor4312 Apr 24, 2026
4b5b21a
Terminal agent: improve send_to_terminal output capture and add waitF…
meganrogge Apr 24, 2026
4b6403a
Merge pull request #312393 from mjbvz/dev/mjbvz/adverse-tyrannosaurus
mjbvz Apr 24, 2026
559c217
Fix sessions pickers/quick access (#312389)
roblourens Apr 24, 2026
f2b51f3
Fix browser view being always hidden (#312391)
kycutler Apr 24, 2026
4651bee
fix: use setupDelayedHover for settings indicator hovers (#304990)
yogeshwaran-c Apr 24, 2026
439c85a
sessions: enable customizations UI for all session types with deep-li…
TylerLeonhardt Apr 24, 2026
5bd1da4
feedback
sandy081 Apr 24, 2026
a080227
Improve screenshot diff logic for pull requests and pushes; add job s…
hediet Apr 24, 2026
172a0fd
Merge branch 'main' into agents/update-titlebar-open-vscode-button
lostintangent Apr 24, 2026
bb09e73
terminal: Disable read all by default (#311850)
dileepyavan Apr 24, 2026
f6a18ce
tools: fix run task tool not finding tools consistently
connor4312 Apr 24, 2026
10a3d98
Merge pull request #312250 from microsoft/agents/update-titlebar-open…
lostintangent Apr 24, 2026
10e4db6
Merge pull request #312411 from microsoft/connor4312/task-fix
connor4312 Apr 24, 2026
0e1f836
Make localIndex setting public (#312402)
vijayupadya Apr 24, 2026
5407371
Chat: Show provider instance name for duplicate BYOK models in model …
fishcharlie Apr 24, 2026
a9c0f03
fix: prevent tool deferral when tool_search is not in request (#312406)
bhavyaus Apr 24, 2026
96d2420
Mobile titlebar: live session title + web host widget on welcome (#31…
osortega Apr 24, 2026
f18d459
Update skill parsing behaviour (#311797)
pwang347 Apr 24, 2026
faf8592
Improve browser experience in Agents app (#312420)
kycutler Apr 24, 2026
ee29e9a
Agents web: drop [hostname] from remote agent host session labels (#3…
osortega Apr 24, 2026
2100f01
Merge branch 'main' into dev/mjbvz/complete-gibbon
mjbvz Apr 24, 2026
6aa1e80
Accessibility: Add verbosity setting, keybinding, and aria hints for …
meganrogge Apr 24, 2026
8f938b4
Fix mocks
mjbvz Apr 24, 2026
fda5c96
fix: post-install script doesn't check for existing sources (#311795)
rzhao271 Apr 24, 2026
337fb19
agents: persist agent-host workspace selection across reload (#312037)
roblourens Apr 24, 2026
8660159
mobile: drop unneeded !important from phone-layout CSS
rebornix Apr 24, 2026
2723584
Dismiss welcome dialog again. (#312421)
dmitrivMS Apr 24, 2026
f5cf1f0
mobile: full-width sidebar drawer + sidebar-toggle icon
rebornix Apr 24, 2026
8f547df
Bump openssl from 0.10.75 to 0.10.78 in /cli (#312161)
dependabot[bot] Apr 24, 2026
2565d6c
mobile: fix one-frame snap when toggling sidebar drawer
rebornix Apr 24, 2026
fe9a973
Merge pull request #312433 from mjbvz/dev/mjbvz/complete-gibbon
mjbvz Apr 24, 2026
52368ad
Rework titlebar item to use View > Browser command (#312440)
kycutler Apr 24, 2026
ff13067
/remote fixes for chat state, disablement, and session titles (#312428)
pierceboggan Apr 24, 2026
c36e7fb
Plan agent: 3-tier graceful degradation for Explore and search subage…
digitarald Apr 24, 2026
4dd2e61
Fix popup-blocked dialog on vscode.dev/agents first load (#312417)
osortega Apr 24, 2026
c43bef1
smooth slide in and less !important
rebornix Apr 24, 2026
f73bbb7
fix corner cut in border animation (#312447)
justschen Apr 24, 2026
da39f28
Add support for load skill tool (#311800)
pwang347 Apr 24, 2026
6227889
Show hint text when links are opened in the browser by default (#312451)
kycutler Apr 24, 2026
f6efdfe
Merge pull request #312441 from microsoft:rebornix/growing-dingo
rebornix Apr 24, 2026
d507173
link to claude in permissions picker (#312412)
justschen Apr 24, 2026
a7d4bdd
phone: replace bottom-sheet quick pick with width-only widening
rebornix Apr 25, 2026
0725586
better autopilot wording + if no tools were called in the last round …
justschen Apr 25, 2026
9f5641b
phone: exclude chat input toolbar from 44px touch-target rule
rebornix Apr 25, 2026
d716c75
sessions: fix account widget missing from titlebar after Intersection…
osortega Apr 25, 2026
059bd5e
fix input send button jumping (#312476)
justschen Apr 25, 2026
64e2c15
Merge pull request #312475 from microsoft/rebornix/southern-pinniped
rebornix Apr 25, 2026
38c9d8e
Don't add listener for webview webview resource load
mjbvz Apr 25, 2026
8ad1c44
Fix enter/exit plan mode not reflecting in UI (#312487)
TylerLeonhardt Apr 25, 2026
253347a
Simplify subagent processing for Claude (#312486)
TylerLeonhardt Apr 25, 2026
53be7ff
Add toolSearch to vscode toolset (#312485)
bhavyaus Apr 25, 2026
e6bbfd5
Merge pull request #312490 from mjbvz/dev/mjbvz/inland-bug
mjbvz Apr 25, 2026
cf56ced
BYOK: support tool_search for Claude Opus 4.7 (#312491)
bhavyaus Apr 25, 2026
e59d407
Fix "Open in VS Code" not opening workspace for Claude agent sessions…
Copilot Apr 25, 2026
5886d86
Fix false-positive input detection causing premature command terminat…
meganrogge Apr 25, 2026
c810f47
Sandbox_integration: Skipping sandbox integration tests to unblock. (…
dileepyavan Apr 25, 2026
e98c872
More effective disabling of browser tools in agents app (#312535)
kycutler Apr 25, 2026
63edbac
Rebase attachment URIs onto worktree working directory (#312547)
roblourens Apr 25, 2026
37eaefa
chat: replace embedded MCP/plugin editors with compact detail widgets…
joshspicer Apr 25, 2026
8950ba5
Adopt message attachment URI protocol (#312553)
roblourens Apr 25, 2026
fc15846
Lift customization items into a single observable model (#312463)
joshspicer Apr 25, 2026
4a3156a
refactor: update session management to use onDidDispose for cleanup a…
TylerLeonhardt Apr 25, 2026
3109dfc
Fix reasoning text rendering when restoring agent host sessions (#312…
roblourens Apr 25, 2026
0cb2f1d
Fix empty detailedOutcome in summarization failure telemetry (#312552)
bhavyaus Apr 26, 2026
13e2859
Cache listSessions result in AgentHostSessionListController (#312563)
roblourens Apr 26, 2026
7ac607f
Render copilot skill invocations as a tool call (#312557)
roblourens Apr 26, 2026
9c40178
Add cache-stable mode for vscode_renameSymbol and vscode_listCodeUsag…
kevin-m-kent Apr 26, 2026
cf1f600
Enable inline history summarization and GPT-5.5 tool search (#312570)
bhavyaus Apr 26, 2026
b35a44f
Restore empty link text for non-skill agent-host links (#312571)
roblourens Apr 26, 2026
1fa1b7a
agent-host: surface session git state via SessionState._meta (#312543)
roblourens Apr 26, 2026
efe3661
Remove spec
alexdima Apr 26, 2026
8a565ba
Tweak comments
alexdima Apr 26, 2026
602d64e
Optimize prompt cache hit rate by freezing deferred tool list in init…
bhavyaus Apr 26, 2026
d816eba
PromptsService: remove 'when' from APIs (#312424)
aeschli Apr 26, 2026
40cc75e
nes: support neighbor files to be included in NES prompt
ulugbekna Apr 26, 2026
d603ad4
Add 'last two messages' cache breakpoint strategy for Messages API (#…
bhavyaus Apr 26, 2026
bccdfa8
copilot agent type cleanup (#312611)
roblourens Apr 26, 2026
b4347c5
Share secrets between Code and Agents app via macOS Keychain (#308990)
alexdima Apr 26, 2026
fe0c770
promptValidator: log error (#311899)
aeschli Apr 26, 2026
1d8e3cb
round trip permission levels to extension (#312479)
justschen Apr 26, 2026
15d2d8c
Fix agent host agents in vscode (#312628)
roblourens Apr 26, 2026
6743fb4
agents: enhance welcome screen for first-launch and signed-in users (…
sandy081 Apr 26, 2026
ee2b159
Workaround zero size layouts of webview elements
mjbvz Apr 27, 2026
cac0e71
Add guard for repeated calls
mjbvz Apr 27, 2026
f7696ee
plan widget fixes (#312631)
justschen Apr 27, 2026
d0898dc
sessions: ensure account/update widgets render with icons (#312645)
osortega Apr 27, 2026
672efcd
Agents: enhance SSH and remote agent host management (#312630)
roblourens Apr 27, 2026
7326d67
Merge pull request #312649 from mjbvz/dev/mjbvz/selected-chimpanzee
mjbvz Apr 27, 2026
5d9b7ef
Agents Web: touch for ahs picker (#312651)
rebornix Apr 27, 2026
8ae0d8e
agent-host: report git-driven session file diffs (#312632)
roblourens Apr 27, 2026
6c5bcb5
Do not have pending title show up in session list title (#312657)
anthonykim1 Apr 27, 2026
4c1d247
Revert "actions: lazy-update MenuWorkbenchToolBar based on visibility"
jrieken Apr 27, 2026
8ff5242
comments: fix listener leak in mainThreadComments (#312613)
roblourens Apr 27, 2026
603ca23
Merge pull request #312669 from microsoft/revert-312317-joh/toolbar-v…
jrieken Apr 27, 2026
afe5823
Revert "Share secrets between Code and Agents app via macOS Keychain"…
deepak1556 Apr 27, 2026
6aab3cc
[cherry-pick] agents: show disclaimer on signed-in welcome screen (#3…
vs-code-engineering[bot] Apr 27, 2026
1b91e5e
[cherry-pick] Run Agents App in transient mode when VS Code is launch…
vs-code-engineering[bot] Apr 27, 2026
a6dfb3b
nes: flip default for early curosr line divergence cancellation (#312…
ulugbekna Apr 27, 2026
b6cfea3
Cherry-pick: Remove anthropic.thinking.budgetTokens setting and hardc…
bhavyaus Apr 27, 2026
726a939
[cherry-pick] Agents welcome: improve sign-in flow, loading state, an…
vs-code-engineering[bot] Apr 27, 2026
6282484
Change websockets to be ON by default (#312325)
chrmarti Apr 27, 2026
920d22c
Sessions: Add cross-app trust note to all workspace trust dialogs (#3…
sandy081 Apr 27, 2026
02aadcb
nes: flip default for more permissive rebasing (#312763)
ulugbekna Apr 27, 2026
3920deb
[cherry-pick] fix: handle BudgetExceededError after background compac…
vs-code-engineering[bot] Apr 27, 2026
4515fcd
Fix MCP install manifest dialog showing literal '&&Install' label (#3…
ulugbekna Apr 27, 2026
5331cd7
[cherry-pick] Update default to chatAndAgent (#312907)
vs-code-engineering[bot] Apr 27, 2026
3d2f404
[cherry-pick] nes: make tryRebase conflict limit exp-configurable (#3…
vs-code-engineering[bot] Apr 27, 2026
175b230
[cherry-pick] Enable tool search for Claude Opus 4.6/4.7 1M context m…
vs-code-engineering[bot] Apr 27, 2026
d60378a
nes: make tryRebase conflict limit exp-configurable (#312916)
ulugbekna Apr 27, 2026
eb6e594
Update CLI settings to disable default options for exit mode, auto mo…
DonJayamanne Apr 28, 2026
8d0d0c4
Update distro commit (release/1.118) (#312944)
vs-code-engineering[bot] Apr 28, 2026
896acaf
OSS tool: update third-party notices (v1.118.0) (#312941)
vs-code-engineering[bot] Apr 28, 2026
c0dcabe
Update GitHub Copilot dependency to version 1.0.38 (#312947)
DonJayamanne Apr 28, 2026
a00ef59
Cherry-pick: Fix Copilot CLI /remote session prompt handling (#312874…
pierceboggan Apr 28, 2026
47fc011
[cherry-pick] fix placeholder not showing up + inline chat progress b…
vs-code-engineering[bot] Apr 28, 2026
9b0c5d3
[cherry-pick] inlineChat: make status placeholder registration a sing…
vs-code-engineering[bot] Apr 28, 2026
b7dbb50
Merge pull request #313000 from microsoft/cherry-pick/312975
jrieken Apr 28, 2026
c3df922
Multifile Diff Editor - fix error on initial reveal (#313016)
lszomoru Apr 28, 2026
fa7dd79
Revert Copilot CLI version 1.0.34 (#313125)
rebornix Apr 28, 2026
9b8ae15
[release/1.118] On agent mode change, ignore stateful marker (#313071)
dileepyavan Apr 28, 2026
a2827af
Revert "Update GitHub Copilot dependency to version 1.0.38 (#312947)"
alexdima Apr 29, 2026
c33cc23
Merge pull request #313225 from microsoft/revert-312947-don/high-dolphin
alexdima Apr 29, 2026
235c96f
Bump the Copilot extension to 0.46.1
alexdima Apr 29, 2026
4a47fde
Merge pull request #313228 from microsoft/alexd/bump-chat-0-46-1
alexdima Apr 29, 2026
13dc53e
Bump version to 1.118.1
hediet Apr 29, 2026
be081e4
Bump copilot-chat to 0.46.2
hediet Apr 29, 2026
8b9790c
Merge pull request #313231 from microsoft/hediet/release-1.118.1-bump
alexdima Apr 29, 2026
9ccb28f
Bump engines.vscode to ^1.118.1
hediet Apr 29, 2026
034f571
Merge pull request #313240 from microsoft/hediet/fix-engines-vscode
alexdima Apr 29, 2026
d2efef4
feat: CortexIDE v2 — i18n, rules UI, slash cmds, UX improvements
May 4, 2026
a7eb54e
fix: resolve renderer crash and pre-existing type/API bugs
May 4, 2026
8b467c5
feat(agent): production-quality agent — loop, prompts, tools, cache
May 4, 2026
eb13a5c
chore: rebase onto VS Code 1.118.1
May 5, 2026
e11ec1a
feat(ui): redesign dropdown — portal rendering, theme colors, keyboar…
May 5, 2026
8be7c2d
feat(agent): context overflow detection and step-progress labels
May 5, 2026
9213bde
fix: restore CortexIDE startup after VS Code 1.118.1 rebase
May 5, 2026
dcb58d2
fix(react): compile Tailwind CSS so chat UI renders correctly
May 5, 2026
8e7bd5c
fix(ui): sidebar logo, dropdown void-scope portal fix, buildreact rsync
May 7, 2026
0ceecb4
fix(qa): address 10 QA bugs across React UI and TypeScript services
May 7, 2026
bb1162e
fix(ui): hide VS Code 'Try out the new Agents app' banner
May 7, 2026
12c61e4
feat(agent): add Plan mode + rename Chat → Ask to match industry stan…
May 7, 2026
3e666c9
fix(ui): fix chat mode + model dropdown not showing options
May 8, 2026
46fead9
feat(agent): overhaul agentic mode — new tools, loop fix, security ha…
May 8, 2026
5201075
fix(agent): use resultIsMatch type guard + correct ITextSearchMatch f…
May 8, 2026
fb5c358
chore: add cortexVersion/cortexRelease to product.json for builder ve…
May 9, 2026
6c03bf9
fix(build): add --experimental-strip-types to gulp script for Node 22.15
May 9, 2026
adf33cd
fix(build): resolve TS compile errors from VS Code 1.118.1 API changes
May 9, 2026
85d04ff
fix(build): suppress TS strict errors in React utility files + add po…
May 9, 2026
cab5e2e
fix(build): pass --experimental-strip-types when spawning .mts/.ts no…
May 9, 2026
0bdb847
fix(build): use createRequire shim for event-stream to fix Node 22.15…
May 9, 2026
6321a67
fix(build): add types:node and exclude tests from github extension ts…
May 10, 2026
f0b6e59
fix: skip Copilot ripgrep shim when extension is not present
May 10, 2026
5ec4cec
fix: guard against empty dependenciesSrc in REH gulp task
May 10, 2026
6aa498b
fix(build): correct event-stream-compat import path in watch-win32.ts
May 10, 2026
64498b1
fix(preinstall): guard Linux v8-source-location patch when local npmr…
May 10, 2026
7de915d
fix(preinstall): use --forward flag and tolerate exit code 1 for idem…
May 10, 2026
7884ce2
fix(build): add riscv64/loong64/ppc64/s390x to REH targets and suppor…
May 10, 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.
374 changes: 374 additions & 0 deletions .agents/skills/launch/SKILL.md

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions .cortexide/rules/cortexide-standards.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# CortexIDE Engineering Standards

This file is auto-injected into every CortexIDE agent session for this workspace.
Rules defined here take precedence over the agent's default preferences.

## Code Quality

- **TypeScript strict mode** is mandatory. Never use `any` or `unknown` without explicit narrowing.
- All `catch` blocks must re-throw, fire an error event, or surface a user notification. Silent swallowing is a bug.
- No hardcoded hex colors in React components — use `var(--cortex-*, fallback)` CSS custom properties.

## Architecture Layers

This codebase has three strictly enforced layers:
- `common/` — platform-agnostic. No DOM, no Node, no Electron APIs.
- `browser/` — DOM + VS Code browser APIs. No Node.
- `electron-main/` — Node + Electron only. No DOM.

Never import `browser/` from `common/`, or `electron-main/` from `browser/`.

## Security Rules

- All child processes must be spawned via `spawn(command, argsArray)` — never via string interpolation.
- Never log, telemetry, or transmit API keys. Route all credentials through `ICortexideSettingsService`.
- Run `secretDetectionService.scan()` on all user content before it reaches an LLM provider.

## Testing

- Every new `IService` needs at least one unit test.
- New IPC channels need integration smoke tests.

## PR Checklist

Before every PR:
1. `npm run buildreact` — zero errors
2. `npx tsc --noEmit --skipLibCheck` — zero errors
3. No hardcoded colors, no `console.log` debug statements
4. No `@ts-ignore` without explanation comment
16 changes: 8 additions & 8 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {
"version": "1.0.8",
"resolved": "ghcr.io/devcontainers/features/desktop-lite@sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7",
"integrity": "sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7"
"ghcr.io/devcontainers/features/desktop-lite:": {
"version": "1.2.8",
"resolved": "ghcr.io/devcontainers/features/desktop-lite@sha256:14ac23fd59afab939e6562ba6a1f42a659a805e4c574a1be23b06f28eb3b0b71",
"integrity": "sha256:14ac23fd59afab939e6562ba6a1f42a659a805e4c574a1be23b06f28eb3b0b71"
},
"ghcr.io/devcontainers/features/rust:1": {
"version": "1.3.3",
"resolved": "ghcr.io/devcontainers/features/rust@sha256:2521a8eeb4911bfcb22557c8394870ea22eb790d8e52219ddc5182f62d388995",
"integrity": "sha256:2521a8eeb4911bfcb22557c8394870ea22eb790d8e52219ddc5182f62d388995"
"ghcr.io/devcontainers/features/rust:": {
"version": "1.5.0",
"resolved": "ghcr.io/devcontainers/features/rust@sha256:0c55e65f2e3df736e478f26ee4d5ed41bae6b54dac1318c443e31444c8ed283c",
"integrity": "sha256:0c55e65f2e3df736e478f26ee4d5ed41bae6b54dac1318c443e31444c8ed283c"
}
}
}
4 changes: 2 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {},
"ghcr.io/devcontainers/features/rust:1": {}
"ghcr.io/devcontainers/features/desktop-lite:": {},
"ghcr.io/devcontainers/features/rust:": {}
},
"containerEnv": {
"DISPLAY": "" // Allow the Dev Containers extension to set DISPLAY, post-create.sh will add it back in ~/.bashrc and ~/.zshrc if not set.
Expand Down
4 changes: 1 addition & 3 deletions .eslint-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
**/extensions/**/*.d.ts
**/extensions/**/build/**
**/extensions/**/colorize-fixtures/**
**/extensions/copilot/**
**/extensions/css-language-features/server/test/pathCompletionFixtures/**
**/extensions/html-language-features/server/lib/jquery.d.ts
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
Expand All @@ -18,8 +19,6 @@
**/extensions/terminal-suggest/src/shell/fishBuiltinsCache.ts
**/extensions/terminal-suggest/third_party/**
**/extensions/typescript-language-features/test-workspace/**
**/extensions/typescript-language-features/extension.webpack.config.js
**/extensions/typescript-language-features/extension-browser.webpack.config.js
**/extensions/typescript-language-features/package-manager/node-maintainer/**
**/extensions/vscode-api-tests/testWorkspace/**
**/extensions/vscode-api-tests/testWorkspace2/**
Expand All @@ -33,7 +32,6 @@
**/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
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
8 changes: 3 additions & 5 deletions .eslint-plugin-local/code-layering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

import * as eslint from 'eslint';
import { join, dirname } from 'path';
import { createImportRuleListener } from './utils';
import { createImportRuleListener } from './utils.ts';

type Config = {
allowed: Set<string>;
disallowed: Set<string>;
};

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

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

const fileDirname = dirname(context.getFilename());
const parts = fileDirname.split(/\\|\//);
const ruleArgs = <Record<string, string[]>>context.options[0];

const ruleArgs = context.options[0] as Record<string, string[]>;
let config: Config | undefined;
for (let i = parts.length - 1; i >= 0; i--) {
if (ruleArgs[parts[i]]) {
Expand Down Expand Up @@ -91,4 +90,3 @@ export = new class implements eslint.Rule.RuleModule {
});
}
};

15 changes: 8 additions & 7 deletions .eslint-plugin-local/code-limited-top-functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
import * as eslint from 'eslint';
import { dirname, relative } from 'path';
import minimatch from 'minimatch';
import type * as ESTree from 'estree';

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

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

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
let fileRelativePath = relative(dirname(__dirname), context.getFilename());
let fileRelativePath = relative(dirname(import.meta.dirname), context.getFilename());
if (!fileRelativePath.endsWith('/')) {
fileRelativePath += '/';
}
const ruleArgs = <Record<string, string[]>>context.options[0];
const ruleArgs = context.options[0] as Record<string, string[]>;

const matchingKey = Object.keys(ruleArgs).find(key => fileRelativePath.startsWith(key) || minimatch(fileRelativePath, key));
if (!matchingKey) {
Expand All @@ -43,8 +44,8 @@ export = new class implements eslint.Rule.RuleModule {
const restrictedFunctions = ruleArgs[matchingKey];

return {
FunctionDeclaration: (node: any) => {
const isTopLevel = node.parent.type === 'Program';
FunctionDeclaration: (node: ESTree.FunctionDeclaration & { parent?: ESTree.Node }) => {
const isTopLevel = node.parent?.type === 'Program';
const functionName = node.id.name;
if (isTopLevel && !restrictedFunctions.includes(node.id.name)) {
context.report({
Expand All @@ -53,10 +54,10 @@ export = new class implements eslint.Rule.RuleModule {
});
}
},
ExportNamedDeclaration(node: any) {
ExportNamedDeclaration(node: ESTree.ExportNamedDeclaration & { parent?: ESTree.Node }) {
if (node.declaration && node.declaration.type === 'FunctionDeclaration') {
const functionName = node.declaration.id.name;
const isTopLevel = node.parent.type === 'Program';
const isTopLevel = node.parent?.type === 'Program';
if (isTopLevel && !restrictedFunctions.includes(node.declaration.id.name)) {
context.report({
node,
Expand Down
11 changes: 6 additions & 5 deletions .eslint-plugin-local/code-must-use-result.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,30 @@
*--------------------------------------------------------------------------------------------*/

import * as eslint from 'eslint';
import type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';

const VALID_USES = new Set<TSESTree.AST_NODE_TYPES | undefined>([
TSESTree.AST_NODE_TYPES.AwaitExpression,
TSESTree.AST_NODE_TYPES.VariableDeclarator,
]);

export = new class MustUseResults implements eslint.Rule.RuleModule {
export default new class MustUseResults implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
schema: false
};

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {

const config = <{ message: string; functions: string[] }[]>context.options[0];
const config = context.options[0] as { message: string; functions: string[] }[];
const listener: eslint.Rule.RuleListener = {};

for (const { message, functions } of config) {
for (const fn of functions) {
const query = `CallExpression[callee.property.name='${fn}'], CallExpression[callee.name='${fn}']`;
listener[query] = (node: any) => {
const cast: TSESTree.CallExpression = node;
if (!VALID_USES.has(cast.parent?.type)) {
listener[query] = (node: ESTree.Node) => {
const callExpression = node as TSESTree.CallExpression;
if (!VALID_USES.has(callExpression.parent?.type)) {
context.report({ node, message });
}
};
Expand Down
8 changes: 5 additions & 3 deletions .eslint-plugin-local/code-must-use-super-dispose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
import type * as ESTree from 'estree';

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

create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function doesCallSuperDispose(node: any) {
function doesCallSuperDispose(node: TSESTree.MethodDefinition) {

if (!node.override) {
return;
}

const body = context.getSourceCode().getText(node);
const body = context.getSourceCode().getText(node as ESTree.Node);

if (body.includes('super.dispose')) {
return;
Expand Down
Loading
Loading