Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
0540db4
Agent Host changes for agents/investigate-unit-tests-issue-reproduction
vritant24 Jul 31, 2026
7ceb90a
chat: fix custom model Chat Completions token limit
vritant24 Aug 4, 2026
4e18680
Merge branch 'main' into agents/investigate-unit-tests-issue-reproduc…
vritant24 Aug 4, 2026
0db2883
chat: fix token parameter setting registration
vritant24 Aug 4, 2026
1626b65
Fix PowerShell quoting for runInTerminal env values
zainnadeem786 Aug 20, 2026
9e09ac5
Preserve PowerShell env values when quoting
zainnadeem786 Aug 20, 2026
f4bfa76
Refactor configuration and update test cases for Copilot extension
vritant24 Aug 20, 2026
c02a2af
Merge branch 'main' into agents/investigate-unit-tests-issue-reproduc…
vritant24 Aug 20, 2026
c93133e
Merge branch 'main' into agents/investigate-unit-tests-issue-reproduc…
vritant24 Aug 20, 2026
2479bb3
Handle PowerShell smart quotes in env values
zainnadeem786 Aug 20, 2026
2f898b8
Ask the agent SDK about setup instead of guessing from the filesystem…
TylerLeonhardt Aug 20, 2026
c14e0dc
Agents window: adopt Modern UI notification and dialog styles (#331808)
mrleemurray Aug 20, 2026
32b97f5
Cap External Agent Sessions to 30 Days (replace `all`, enforce ingest…
Copilot Aug 20, 2026
97a9b4a
agentHost: keep peer database alive during multi-root diffs (#331759)
chrmarti Aug 20, 2026
d06ea12
Align chat UI with design tokens (#331791)
mrleemurray Aug 20, 2026
6cc800d
Merge pull request #328458 from microsoft/agents/investigate-unit-tes…
vritant24 Aug 20, 2026
9ee20ae
Replace Automation icon with spinner while an automation is running (…
Copilot Aug 20, 2026
f44c690
Bump xterm to 6.1.0-beta.302 (#331830)
anthonykim1 Aug 20, 2026
8161484
sessions: make changes diffs responsive (#331851)
sandy081 Aug 20, 2026
0234402
Add experiment driven inline model feedback survey (#331850)
lramos15 Aug 20, 2026
342a753
chore: add more foundry-local-sdk patches (#331843)
rzhao271 Aug 20, 2026
0b862a7
agentHost: stop the agent editing host-created attachment snapshots (…
DonJayamanne Aug 20, 2026
56a267c
agentHost: stop a failed git probe from stalling Agent Merge (#331792)
benibenj Aug 20, 2026
919e585
Disabling sandbox toggle when managed settings are enabled for sandbo…
dileepyavan Aug 20, 2026
78cd214
sessions: Move chat actions to overflow menu (#331857)
sandy081 Aug 20, 2026
310ba23
Persist state between profiled startup runs (#331860)
dmitrivMS Aug 20, 2026
506d2e1
Polish automation run history list (#331866)
benvillalobos Aug 20, 2026
5270254
Let the setup banner reload an agent's configuration (#331848)
TylerLeonhardt Aug 20, 2026
4b5f3ab
Move the scenario runner out of the MCP server (#331862)
bryanchen-d Aug 20, 2026
fea32a8
Avoid forced layout when measuring the Chat view title (#331846)
dmitrivMS Aug 20, 2026
70af9b1
Keep context menus above shadow DOM hosts (#323776)
Copilot Aug 20, 2026
c90d9c7
agentHost: Use canonical Copilot telemetry provider (#330964)
amunger Aug 20, 2026
fcaba37
Merge pull request #331753 from zainnadeem786/research/oss-assurance-…
connor4312 Aug 20, 2026
7edc21d
sessions: Respect metadata pill placement in chat tabs (#331870)
sandy081 Aug 20, 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
1 change: 1 addition & 0 deletions .github/CODENOTIFY
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ extensions/vscode-api-tests/src/singlefolder-tests/browser*.test.ts @kycutler @j

# Testing
test/mcp/** @TylerLeonhardt
test/scenario/** @bryanchen-d
test/sanity/** @dmitrivMS

# Agents Workbench
Expand Down
8 changes: 4 additions & 4 deletions .github/skills/validate-ui-scenario/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ Use this to reproduce a reported bug, to show that a fix works, or to attach a r
test-plan item. For deterministic regression coverage that runs on every build, write a smoke test
instead (see the `smoke-tests` skill) — this skill is for one-off, issue-derived validation.

A scenario is a small JavaScript file run by `test/mcp/out/runScenario.js`. Nothing else has to be
A scenario is a small JavaScript file run by `test/scenario/out/runScenario.js`. Nothing else has to be
configured: the runner launches VS Code, records video and a trace, captures a screenshot at every
step boundary, writes the report, and captions the recording with each step and its result.

## Prepare

```bash
npm install # once
npm --prefix test/mcp run compile # after any change under test/mcp
npm --prefix test/scenario run compile # after any change under test/scenario
```

Add `ffmpeg` and `ffprobe` to `PATH` to get the caption band on the video. Without them the run still
Expand Down Expand Up @@ -130,7 +130,7 @@ Each step receives a `context` with `app`, `workbench`, `code`, `page`, and `ski
## Run it

```bash
node test/mcp/out/runScenario.js <scenario.cjs> --build "<app-root>"
node test/scenario/out/runScenario.js <scenario.cjs> --build "<app-root>"
```

Exit code `0` means every step passed, `1` means the run failed or was aborted, `2` a usage error.
Expand All @@ -149,7 +149,7 @@ Evidence is written to `.build/vscode-playwright-mcp/evidence/<run-id>/`:
The caption band is added **above** the recorded frame rather than drawn over it, so no recorded
pixel is hidden and the recording keeps its original length. Each caption carries the step number
and id, its status, the step title, and the validation detail the step reported. Re-render after
editing a manifest with `node test/mcp/out/renderEvidenceChapters.js <run-dir>`.
editing a manifest with `node test/scenario/out/renderEvidenceChapters.js <run-dir>`.

## What makes evidence trustworthy

Expand Down
2 changes: 1 addition & 1 deletion build/.cachesalt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2026-08-05T23:47:14.698Z
2026-08-20T17:32:07.583Z
10 changes: 10 additions & 0 deletions build/azure-pipelines/alpine/product-build-alpine-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ jobs:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication

- template: ../common/foundry-local.yml@self
parameters:
phase: prepare
onlyOnNodeModulesCacheMiss: true

- task: Docker@1
inputs:
azureSubscriptionEndpoint: vscode
Expand Down Expand Up @@ -128,6 +133,11 @@ jobs:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))

- template: ../common/foundry-local.yml@self
parameters:
phase: install
onlyOnNodeModulesCacheMiss: true

- script: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Verify native optional dependency binaries
Expand Down
9 changes: 9 additions & 0 deletions build/azure-pipelines/common/foundry-local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,24 @@ parameters:
values:
- prepare
- install
- name: onlyOnNodeModulesCacheMiss
type: boolean
default: false

steps:
- ${{ if eq(parameters.phase, 'prepare') }}:
- task: NuGetAuthenticate@1
${{ if eq(parameters.onlyOnNodeModulesCacheMiss, true) }}:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NuGet Authentication

- script: node build/azure-pipelines/common/disableFoundryLocalInstall.ts
${{ if eq(parameters.onlyOnNodeModulesCacheMiss, true) }}:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Disable Foundry Local Native Install

- ${{ if eq(parameters.phase, 'install') }}:
- script: node build/azure-pipelines/common/foundryLocalInstall.ts
${{ if eq(parameters.onlyOnNodeModulesCacheMiss, true) }}:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Install Foundry Local Native Dependencies
10 changes: 10 additions & 0 deletions build/azure-pipelines/darwin/product-build-darwin-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ jobs:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Setup PyPI Authentication

- template: ../common/foundry-local.yml@self
parameters:
phase: prepare
onlyOnNodeModulesCacheMiss: true

- script: |
set -e
c++ --version
Expand Down Expand Up @@ -102,6 +107,11 @@ jobs:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))

- template: ../common/foundry-local.yml@self
parameters:
phase: install
onlyOnNodeModulesCacheMiss: true

- script: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Verify native optional dependency binaries
Expand Down
10 changes: 10 additions & 0 deletions build/azure-pipelines/linux/product-build-linux-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ jobs:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication

- template: ../common/foundry-local.yml@self
parameters:
phase: prepare
onlyOnNodeModulesCacheMiss: true

- script: |
set -e

Expand Down Expand Up @@ -142,6 +147,11 @@ jobs:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))

- template: ../common/foundry-local.yml@self
parameters:
phase: install
onlyOnNodeModulesCacheMiss: true

- script: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Verify native optional dependency binaries
Expand Down
10 changes: 10 additions & 0 deletions build/azure-pipelines/web/product-build-web-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ jobs:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication

- template: ../common/foundry-local.yml@self
parameters:
phase: prepare
onlyOnNodeModulesCacheMiss: true

- script: |
set -e
./build/azure-pipelines/linux/apt-retry.sh sudo apt-get update
Expand All @@ -79,6 +84,11 @@ jobs:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))

- template: ../common/foundry-local.yml@self
parameters:
phase: install
onlyOnNodeModulesCacheMiss: true

- script: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Verify native optional dependency binaries
Expand Down
10 changes: 10 additions & 0 deletions build/azure-pipelines/win32/product-build-win32-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ jobs:
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication

- template: ../common/foundry-local.yml@self
parameters:
phase: prepare
onlyOnNodeModulesCacheMiss: true

- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
Expand All @@ -85,6 +90,11 @@ jobs:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))

- template: ../common/foundry-local.yml@self
parameters:
phase: install
onlyOnNodeModulesCacheMiss: true

- powershell: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Verify native optional dependency binaries
Expand Down
3 changes: 3 additions & 0 deletions build/lib/stylelint/vscode-known-variables.json
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,9 @@
"--modern-ui-editor-tab-unfocused-hover-foreground",
"--modern-ui-editor-tab-unfocused-inactive-background",
"--modern-ui-editor-tab-unfocused-inactive-foreground",
"--modern-ui-notifications-block-end-inset",
"--modern-ui-notifications-block-start-inset",
"--modern-ui-notifications-inline-inset",
"--modern-ui-shell-background",
"--modern-ui-tab-active-background",
"--modern-ui-tab-hover-background",
Expand Down
1 change: 1 addition & 0 deletions build/npm/dirs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export const dirs = [
'test/integration/browser',
'test/monaco',
'test/smoke',
'test/scenario',
'test/mcp',
'.vscode/extensions/vscode-selfhost-import-aid',
'.vscode/extensions/vscode-selfhost-test-provider',
Expand Down
12 changes: 12 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2329,10 +2329,22 @@ export default defineConfig(
'*' // node modules
]
},
{
'target': 'test/scenario/**',
'restrictions': [
'test/automation',
'test/scenario/**',
'@vscode/*',
'@parcel/*',
'@playwright/*',
'*' // node modules
]
},
{
'target': 'test/mcp/**',
'restrictions': [
'test/automation',
'test/scenario',
'test/mcp/**',
'@vscode/*',
'@parcel/*',
Expand Down
18 changes: 18 additions & 0 deletions extensions/copilot/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
"onStartupFinished",
"onLanguageModelChat:copilot",
"onUri",
"onCommand:_github.copilot.chat.reportModelFeedbackSurvey",
"onFileSystem:ccreq",
"onFileSystem:ccsettings"
],
Expand Down Expand Up @@ -4341,6 +4342,23 @@
{
"id": "advanced",
"properties": {
"github.copilot.chat.chatCompletionsTokenParameter": {
"type": "string",
"enum": [
"max_completion_tokens",
"max_tokens"
],
"enumDescriptions": [
"%github.copilot.config.chatCompletionsTokenParameter.maxCompletionTokens%",
"%github.copilot.config.chatCompletionsTokenParameter.maxTokens%"
],
"default": "max_tokens",
"markdownDescription": "%github.copilot.config.chatCompletionsTokenParameter%",
"tags": [
"advanced",
"onExp"
]
},
"github.copilot.chat.inlineEdits.xtabProvider.modelConfiguration": {
"type": [
"object",
Expand Down
3 changes: 3 additions & 0 deletions extensions/copilot/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,9 @@
"github.copilot.tools.githubTextSearch.userDescription": "Text search a GitHub repository or organization for files containing specific keywords or code patterns.",
"github.copilot.config.autoFix": "Automatically fix diagnostics for edited files.",
"github.copilot.config.rateLimitAutoSwitchToAuto": "Automatically switch to the Auto model and retry when you hit a per-model rate limit.",
"github.copilot.config.chatCompletionsTokenParameter": "Controls the output token limit parameter sent to custom Chat Completions APIs. Use `max_completion_tokens` for endpoints that do not support `max_tokens`.",
"github.copilot.config.chatCompletionsTokenParameter.maxCompletionTokens": "Send `max_completion_tokens`.",
"github.copilot.config.chatCompletionsTokenParameter.maxTokens": "Send the legacy `max_tokens` parameter for compatibility.",
"github.copilot.tools.createNewWorkspace.userDescription": "Scaffold a new workspace in VS Code",
"github.copilot.chat.tools.grepSearch.outputFormat": "The output format for the grep search tool. Can be either 'grep' or 'tag'. The default is 'grep'.",
"github.copilot.chat.tools.grepSearch.defaultMaxResults": "The default maximum number of results to return from the grep search tool. The default is 100.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { asContributionFactory, IExtensionContributionFactory } from '../../comm
import * as contextContribution from '../../context/vscode/context.contribution';
import { LifecycleTelemetryContrib } from '../../telemetry/common/lifecycleTelemetryContrib';
import { GithubTelemetryForwardingContrib } from '../../telemetry/vscode/githubTelemetryForwardingContrib';
import { ChatModelFeedbackSurveyForwardingContrib } from '../../telemetry/vscode/chatModelFeedbackSurveyForwardingContrib';

// ###############################################################################
// ### ###
Expand All @@ -21,6 +22,7 @@ const vscodeContributions: IExtensionContributionFactory[] = [
asContributionFactory(LifecycleTelemetryContrib),
asContributionFactory(NesActivationTelemetryContribution),
asContributionFactory(GithubTelemetryForwardingContrib),
asContributionFactory(ChatModelFeedbackSurveyForwardingContrib),
contextContribution,
];

Expand Down
Loading
Loading