Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
00915f8
workbench: fix workspace folder path handling in settings reader (#31…
connor4312 Apr 16, 2026
fb4f555
fix(tasks): add hover description for required property in taskDefini…
maruthang Apr 16, 2026
1482ee8
Fix chat-lib pipeline
chrmarti Apr 16, 2026
57c365c
Consolidate chat-lib pipelines
chrmarti Apr 16, 2026
06cd43f
Cleanup usage dash further + fix it not refreshing (#310778)
lramos15 Apr 16, 2026
df87114
Merge pull request #310763 from maruthang/fix/issue-289678-disassembl…
maruthang Apr 16, 2026
5cc9a19
remove setting SubagentToolCustomAgents, enabled by default (#310103)
aeschli Apr 16, 2026
3b7a361
chat customizations: add ChatResourceEnablement (#310212)
aeschli Apr 16, 2026
f563e5b
Add reverse-agreement rebase for NES cache behind experiment flag (#3…
ulugbekna Apr 16, 2026
2d68d33
Fix router model selection: filter available_models, remove same-prov…
Apr 16, 2026
1696c19
Add automode.routerModelSelection telemetry with actualModel
Apr 16, 2026
8bae860
Agent web: Build system for agent sessions and fixes (#310202)
osortega Apr 16, 2026
d60ffdc
fix: set isNESForAnotherDoc correctly for cross-file NES (#310794)
ulugbekna Apr 16, 2026
fb01006
fix: prevent update server from bogus 'unknown' commit in overwrite c…
deepak1556 Apr 16, 2026
ce9d8b3
remove 'included' property from input latency telemetry configuration
hediet Apr 16, 2026
e2a6c9c
Fix Agents window accessibility: picker aria labels and keybindings (…
meganrogge Apr 16, 2026
aadd092
agentHost: connect status and update diffs occasionally in the sessio…
connor4312 Apr 16, 2026
2c6e38b
agentHost: make file paths in tool invocation messages nicer (#310813)
connor4312 Apr 16, 2026
294552b
Merge pull request #310814 from microsoft/hediet/b/puny-goldfish
hediet Apr 16, 2026
8ce3152
Log agent host catch failures (#310815)
roblourens Apr 16, 2026
98fff9f
Address review: single partition pass, fix failing test
Apr 16, 2026
f785e01
Merge pull request #310238 from microsoft/aashnagarg/actual-model-tel…
aashna Apr 16, 2026
e5cd52f
Merge remote-tracking branch 'origin/main' into aashnagarg/iterate-ca…
Apr 16, 2026
e8eefeb
mobile friendly agent sessions view (#310552)
rebornix Apr 16, 2026
347ce1c
feat: support launching agents/vscode app without protocol handler (#…
deepak1556 Apr 16, 2026
80eacda
Merge pull request #310210 from microsoft/aashnagarg/iterate-candidat…
aashna Apr 16, 2026
a494136
Fix z-index for webviews with modals
mjbvz Apr 16, 2026
f23d5e2
Merge pull request #310832 from mjbvz/dev/mjbvz/moral-deer
mjbvz Apr 16, 2026
b47efc0
Add `Sort by Created/Updated` filters to sessions view (#310835)
meganrogge Apr 16, 2026
88fc271
Add GitHub Copilot upgrader skill and CLI integration documentation (…
DonJayamanne Apr 16, 2026
17c5eed
fix #310143 (#310840)
sandy081 Apr 16, 2026
a6d1c31
add `Edit` action to queued message context menu (#310837)
meganrogge Apr 16, 2026
3eaee99
Agents app web: terminal integration with ahp (#310553)
rebornix Apr 16, 2026
c58f1a7
Close customizations editor and auto-send chat on troubleshoot (#310845)
joshspicer Apr 16, 2026
b0adc5d
Handle showing weekly and session rate limit data (#310836)
lramos15 Apr 16, 2026
ea03e19
Agents web: Changes view support (#310843)
osortega Apr 16, 2026
afe454b
Use `System notification` vs `Steering` for system steering messages …
meganrogge Apr 16, 2026
96c09fc
fix bg for agent sidebar mobile (#310849)
rebornix Apr 16, 2026
437414d
fix(chat): guard renderWelcomeViewContentIfNeeded against undisposed …
maruthang Apr 16, 2026
ec963bb
agents: restore built-in skills and merge them into the provider-base…
joshspicer Apr 16, 2026
9319b95
Bump dompurify from 3.3.2 to 3.4.0 in /extensions/mermaid-chat-featur…
dependabot[bot] Apr 16, 2026
f4c8a0c
fix: duplicate open in vscode command registration (#310852)
deepak1556 Apr 16, 2026
f80f392
enable multi chat sessions by default (#310856)
sandy081 Apr 16, 2026
b3b6831
Add `Developer: Sync Account Policy` command (#310855)
joshspicer Apr 16, 2026
5289257
Fix terminal auto-approve splitting commands at `--flag=value` in pow…
anthonykim1 Apr 16, 2026
a03c093
agentHost: Fix issue with auth/models (#310866)
roblourens Apr 16, 2026
5f42e17
Bump hono from 4.12.12 to 4.12.14 in /extensions/copilot (#310373)
dependabot[bot] Apr 16, 2026
717d2a3
Bump hono from 4.12.12 to 4.12.14 in /test/mcp (#310374)
dependabot[bot] Apr 16, 2026
dccd12b
Restrict autoImportSpecifierExcludeRegexes to trusted workspaces
jakebailey Apr 17, 2026
4cd72fd
Always open Chat Customizations overview from sidebar (#310871)
joshspicer Apr 17, 2026
51adf6f
Make sure we clear notebook styles
mjbvz Apr 17, 2026
88cd054
Add agentName to chronicle telemetry (#310880)
vijayupadya Apr 17, 2026
ea34727
Merge pull request #310882 from mjbvz/dev/mjbvz/rural-donkey
mjbvz Apr 17, 2026
6bc5ae8
Fix chat sessions not preserved
mjbvz Apr 17, 2026
37d6ea1
Simplify compaction fallback: use Simple mode on budget exceeded (#31…
bhavyaus Apr 17, 2026
2e621fb
Merge pull request #310891 from mjbvz/dev/mjbvz/leading-pike
mjbvz Apr 17, 2026
4f9f0ea
Tone down sessions shell gradient (#310873)
hawkticehurst Apr 17, 2026
3bf6c70
Merge pull request #310894 from microsoft/restrict-autoImportSpecifie…
mjbvz Apr 17, 2026
4ce5ace
Plumb agent host model configuration through sessions (#310465)
roblourens Apr 17, 2026
d4f80cb
Enable remote agent hosts by default in Insiders (#310883)
roblourens Apr 17, 2026
b6035ba
Fix agent host worktree terminal cwd (#310893)
roblourens Apr 17, 2026
f97c287
Don't add agent-host worktree as workspace folder (#310888)
roblourens Apr 17, 2026
104e9ec
Fix an issue with updateReadonly perf (#310262)
pwang347 Apr 17, 2026
6cd94dd
revert: remove anthropic-beta header merge in Claude streaming endpoi…
bhavyaus Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build/buildfile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ export const workbenchDesktop = [

export const workbenchWeb = createModuleDescription('vs/workbench/workbench.web.main.internal');

export const sessionsWeb = createModuleDescription('vs/sessions/sessions.web.main.internal');

export const keyboardMaps = [
createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux'),
createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.darwin'),
Expand Down Expand Up @@ -73,6 +75,7 @@ const buildfile = {
workerBackgroundTokenization,
workbenchDesktop,
workbenchWeb,
sessionsWeb,
keyboardMaps,
code,
codeWeb,
Expand Down
23 changes: 16 additions & 7 deletions build/gulpfile.vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,10 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d

const name = product.nameShort;
const packageJsonUpdates: Record<string, unknown> = { name, version };
const isInsiderOrExploration = quality === 'insider' || quality === 'exploration';
const embedded = isInsiderOrExploration
? (product as typeof product & { embedded?: EmbeddedProductInfo }).embedded
: undefined;

if (platform === 'linux') {
packageJsonUpdates.desktopName = `${product.applicationName}.desktop`;
Expand All @@ -387,18 +391,23 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d

let productJsonContents: string;
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(jsonEditor({ commit, date: readISODate(out), checksums, version }))
.pipe(jsonEditor((json: Record<string, unknown>) => {
json.commit = commit;
json.date = readISODate(out);
json.checksums = checksums;
json.version = version;
if (embedded) {
json['darwinSiblingBundleIdentifier'] = embedded.darwinBundleIdentifier;
const embeddedObj = json['embedded'] as EmbeddedProductInfo;
embeddedObj['darwinSiblingBundleIdentifier'] = json['darwinBundleIdentifier'] as string;
}
return json;
}))
.pipe(es.through(function (file) {
productJsonContents = file.contents.toString();
this.emit('data', file);
}));


const isInsiderOrExploration = quality === 'insider' || quality === 'exploration';
const embedded = isInsiderOrExploration
? (product as typeof product & { embedded?: EmbeddedProductInfo }).embedded
: undefined;

const packageSubJsonStream = embedded
? gulp.src(['package.json'], { base: '.' })
.pipe(jsonEditor((json: Record<string, unknown>) => {
Expand Down
1 change: 1 addition & 0 deletions build/gulpfile.vscode.web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ const vscodeWebEntryPoints = [
buildfile.workerBackgroundTokenization,
buildfile.keyboardMaps,
buildfile.workbenchWeb,
buildfile.sessionsWeb,
].flat();

/**
Expand Down
1 change: 1 addition & 0 deletions build/lib/embeddedType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export type EmbeddedProductInfo = {
applicationName: string;
dataFolderName: string;
darwinBundleIdentifier: string;
darwinSiblingBundleIdentifier?: string;
urlProtocol: string;
win32AppUserModelId: string;
win32MutexName: string;
Expand Down
1 change: 1 addition & 0 deletions build/lib/mangle/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@ const skippedExportMangledFiles = [
buildfile.workerBackgroundTokenization,
buildfile.workbenchDesktop,
buildfile.workbenchWeb,
buildfile.sessionsWeb,
buildfile.code,
buildfile.codeWeb
].flat().map(x => x.name),
Expand Down
7 changes: 7 additions & 0 deletions build/next/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,11 @@ const webEntryPoints = [
'vs/code/browser/workbench/workbench',
];

// Additional web-only entry points (CDN build only, not in server-web)
const webOnlyEntryPoints = [
'vs/sessions/sessions.web.main.internal',
];

const keyboardMapEntryPoints = [
'vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux',
'vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.darwin',
Expand Down Expand Up @@ -173,6 +178,7 @@ function getEntryPointsForTarget(target: BuildTarget): string[] {
case 'web':
return [
...workerEntryPoints,
...webOnlyEntryPoints,
'vs/workbench/workbench.web.main.internal', // web workbench only (no browser shell)
...keyboardMapEntryPoints,
];
Expand Down Expand Up @@ -220,6 +226,7 @@ function getCssBundleEntryPointsForTarget(target: BuildTarget): Set<string> {
case 'web':
return new Set([
'vs/workbench/workbench.web.main.internal',
'vs/sessions/sessions.web.main.internal',
]);
default:
throw new Error(`Unknown target: ${target}`);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: updateGithubCopilotSDK
name: github-copilot-upgrader
description: Use this to update the Github Copilot CLI/SDK
model: Claude Opus 4.6
---
Expand All @@ -10,7 +10,6 @@ You are an expert at upgrading the @github/copilot npm package in the vscode-cop

You must create a TODO list of all items that are to be completed.
You MUST create a TODO markdown file before commencing any of the work. Update this file after each step is completed.
You must also use the update_todo tool on each step.
Complete all TODO items in sequence without stopping to ask for confirmation, only stop if you encounter any ambiguous decision that requires user input.
The TODO is your primary tracking mechanism. Before each step you MUST read the TODO to determine what to do next.

Expand All @@ -23,9 +22,12 @@ At a minimum your TODO must contain the following:
6. test
7. Repease steps Compile, fix and tests until all tests are passing
8. Run integration tests
9. Repeate Compile, Fix, Test, Test integration tests until all integration tests are passing
9. Repeate Compile, Fix, Test, until all tests are passing
11. Create a summary

Note:
* Do not run any integration test.

Follow these steps exactly:

### 1. Snapshot of old type definitions
Expand All @@ -48,6 +50,7 @@ After this you MSUT run `npm run postinstall`
- You must perform a deep analysis of the compilation errors before attempting to resolve them.
- Ensure there are no compilation errors before proceeding to run the tests.
```bash
npm run postinstall
npm run compile
npx tsc --noEmit --project tsconfig.json
```
Expand All @@ -61,36 +64,6 @@ npm run test:unit
If the upgrade causes a test to fail, you must analyze the failure and determine if it is due to a legitimate issue caused by the upgrade or if it is a problem with the test itself.
- Ensure all tests are passing before proceeding to the next step.

### 5. Running integration tests

- The tests are located in test/e2e/cli.stest.ts.
- The tests in this file are all skipped by default using `suite.skip`, so you must remove the `.skip` to enable them before running the tests.
- Run the tests using the following command:
```bash
npm run simulate -- --grep=@cli --verbose -n=1 -p=1@cli
```

These tests are very slow, you might have to wait for around 5 minutes for them to complete.
- As earlier, fix the test failures without changing the behavior of the code, and ensure that all tests are passing.

NOTE:
Tests are considered passing only if you get a score of 100%
Here's a sample output. As you can see below the score needs to be 100/100 for the tests to be considered passing.
```
Suite Summary by Language:
┌─────────┬───────────────────┬──────────┬───────┬────────────┬──────────┐
│ (index) │ Suite │ Language │ Model │ # of tests │ Score(%) │
├─────────┼───────────────────┼──────────┼───────┼────────────┼──────────┤
│ 0 │ '@cli [external]' │ '-' │ '-' │ 16 │ 100 │
└─────────┴───────────────────┴──────────┴───────┴────────────┴──────────┘

Approximate Summary (due to using --n=1 instead of --n=10):
Overall Approximate Score: 100.00 / 100

```

#### 6. Re-introduce `stest.skip` changes in cli.stest.ts

#### 5. Summarize the changes

- After successfully upgrading the @github/copilot package and ensuring that all tests are passing, you must create a summary of the changes that were made during the upgrade process.
Expand Down
113 changes: 113 additions & 0 deletions extensions/copilot/build/npm-package-next.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
trigger: none

pr: none

resources:
repositories:
- repository: templates
type: github
name: microsoft/vscode-engineering
ref: main
endpoint: Monaco
pipelines:
- pipeline: vscode
source: '⭐️ VS Code'
trigger:
stages:
- Release
branches:
include:
- main
- release/*

parameters:
- name: NPM_REGISTRY
displayName: "Custom NPM Registry"
type: string
default: 'https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/'

name: "$(Date:yyyyMMdd).$(Rev:r)"

extends:
template: azure-pipelines/npm-package/pipeline.yml@templates
parameters:
npmPackages:
- name: vscode-copilot-chat
buildSteps:
- task: NodeTool@0
inputs:
versionSpec: 22.x
displayName: 🛠 Install Node.js (22.x)

- template: extensions/copilot/build/steps/setup-npm.yml@self
parameters:
NPM_REGISTRY: ${{ parameters.NPM_REGISTRY }}

- download: vscode
artifact: copilot_vsix
displayName: 📥 Download Copilot VSIX
condition: and(succeeded(), ne(variables['resources.pipeline.vscode.runName'], ''))

- bash: |
set -e
if [ -f "$(Pipeline.Workspace)/vscode/copilot_vsix/copilot-chat.vsix" ]; then
unzip -o "$(Pipeline.Workspace)/vscode/copilot_vsix/copilot-chat.vsix" 'extension/package.json'
VERSION=$(node -p "require('./extension/package.json').version")
rm -rf extension
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '$VERSION';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
"
echo "Set extension version to $VERSION"
else
echo "No Copilot VSIX found, using version from package.json"
fi
displayName: 📋 Sync version from extension
workingDirectory: extensions/copilot

- bash: npm ci && npm run extract-chat-lib && rm -rf node_modules
displayName: 📂 Extract chat-lib
workingDirectory: extensions/copilot
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1

- bash: |
set -e
VERSION=$(node -p "require('../package.json').version")
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '$VERSION';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
"
echo "Set chat-lib version to $VERSION"
displayName: 📋 Sync chat-lib version
workingDirectory: extensions/copilot/chat-lib

- script: npm ci
displayName: 📦 Install chat-lib dependencies
workingDirectory: extensions/copilot/chat-lib

- script: npm run build
displayName: 🔨 Build chat-lib
workingDirectory: extensions/copilot/chat-lib
testPlatforms:
- name: Linux
nodeVersions: [22.x]
- name: MacOS
nodeVersions: [22.x]
- name: Windows
nodeVersions: [22.x]
workingDirectory: extensions/copilot/chat-lib
testSteps:
- template: extensions/copilot/build/steps/test-chat-lib.yml@self
parameters:
NPM_REGISTRY: ${{ parameters.NPM_REGISTRY }}
# Triggered by ⭐️ VS Code pipeline → always publish to next
publishPackage: true
publishRequiresApproval: false
tag: next
ghCreateRelease: false
ghReleaseAddChangeLog: false
64 changes: 16 additions & 48 deletions extensions/copilot/build/npm-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@ trigger:
branches:
include:
- main
tags:
include:
- v*
- release/*

pr: [main]
pr: none

resources:
repositories:
Expand All @@ -18,6 +16,10 @@ resources:
endpoint: Monaco

parameters:
- name: NPM_REGISTRY
displayName: "Custom NPM Registry"
type: string
default: 'https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/'
- name: nextVersion
displayName: '🚀 Release Version (eg: none, major, minor, patch, prerelease, or X.X.X)'
type: string
Expand All @@ -31,58 +33,24 @@ extends:
npmPackages:
- name: vscode-copilot-chat
buildSteps:
- task: NodeTool@0
inputs:
versionSpec: 22.x
displayName: 🛠 Install Node.js (22.x)

- bash: npm ci && npm run extract-chat-lib && rm -rf node_modules
displayName: 📂 Extract chat-lib

- script: npm ci
displayName: 📦 Install chat-lib dependencies
workingDirectory: chat-lib

- script: npm run build
displayName: 🔨 Build chat-lib
workingDirectory: chat-lib
- template: extensions/copilot/build/steps/build-chat-lib.yml@self
parameters:
NPM_REGISTRY: ${{ parameters.NPM_REGISTRY }}
testPlatforms:
- name: Linux
nodeVersions: [22.x]
- name: MacOS
nodeVersions: [22.x]
- name: Windows
nodeVersions: [22.x]
workingDirectory: chat-lib
workingDirectory: extensions/copilot/chat-lib
testSteps:
- bash: npm ci && npm run extract-chat-lib && rm -rf node_modules
displayName: 📂 Extract chat-lib

- script: npm ci
displayName: 📦 Install chat-lib dependencies
workingDirectory: chat-lib

- script: npm run build
displayName: 🔨 Build chat-lib
workingDirectory: chat-lib

- script: npm test
displayName: 🧪 Run chat-lib tests
workingDirectory: chat-lib
# Tag-triggered: date-stamped patch (e.g., v0.40.2026031601) → publish to next
${{ if and(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), gt(length(variables['Build.SourceBranchName']), 13)) }}:
publishPackage: true
publishRequiresApproval: false
nextVersion: ${{ replace(variables['Build.SourceBranchName'], 'v', '') }}
tag: next
# Tag-triggered: short patch (e.g., v0.39.1) → publish to latest
${{ elseif startsWith(variables['Build.SourceBranch'], 'refs/tags/v') }}:
publishPackage: true
publishRequiresApproval: false
nextVersion: ${{ replace(variables['Build.SourceBranchName'], 'v', '') }}
${{ elseif eq(parameters.nextVersion, 'none') }}:
- template: extensions/copilot/build/steps/test-chat-lib.yml@self
parameters:
NPM_REGISTRY: ${{ parameters.NPM_REGISTRY }}
# Manually triggered → publish to latest or next
${{ if eq(parameters.nextVersion, 'none') }}:
publishPackage: false
# Manual prerelease → publish to next
${{ elseif eq(parameters.nextVersion, 'prerelease') }}:
publishPackage: true
publishRequiresApproval: false
Expand All @@ -92,4 +60,4 @@ extends:
publishPackage: true
nextVersion: ${{ parameters.nextVersion }}
ghCreateRelease: false
ghReleaseAddChangeLog: false
ghReleaseAddChangeLog: false
Loading
Loading