Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
b633a09
fix: strip outputs from notebook backup when exceeding size limit (#3…
bryanchen-d Mar 19, 2026
1f15876
fix: handle notebook snapshot failure in chat editing callers (#301202)
bryanchen-d Mar 19, 2026
6a0fe95
fix: catch notebook snapshot errors in chat editing with telemetry (#…
bryanchen-d Mar 19, 2026
ea64ce8
Try storing all chat session options in a map
mjbvz Mar 19, 2026
ba18c00
fix: catch notebook snapshot errors in chat editing with log fallback…
bryanchen-d Mar 19, 2026
7081563
fix: catch notebook snapshot errors in chat editing (#301202)
bryanchen-d Mar 19, 2026
f43d8aa
refactor: extract _safeCreateSnapshot helper to deduplicate catch
bryanchen-d Mar 20, 2026
92e096f
fix: enhance draft PR guidelines for error handling and validation steps
bryanchen-d Mar 20, 2026
872a726
Merge branch 'main' into dev/mjbvz/distinct-mockingbird
mjbvz Mar 20, 2026
1846413
update distro pointer
isidorn Mar 20, 2026
e4c0ce5
Add chat session header component and styles
mrleemurray Mar 20, 2026
cb83ad1
Add click event listener to prevent propagation on Mark as Done button
mrleemurray Mar 20, 2026
fe68d3a
Refactor chat session header rendering logic and update styles
mrleemurray Mar 20, 2026
1556677
Improve chat session header injection logic to target specific contai…
mrleemurray Mar 20, 2026
21a0998
Update milestone version to 1.113.0 in GitHub issues configuration (#…
jrieken Mar 20, 2026
95b0031
event: classify listener leak errors as dominated or popular (#303543)
jrieken Mar 20, 2026
adfabb8
Merge pull request #303329 from mjbvz/dev/mjbvz/distinct-mockingbird
mjbvz Mar 20, 2026
939ffba
Sessions: remove diff changes from title (#303544)
sandy081 Mar 20, 2026
df4e95d
Merge pull request #303470 from microsoft/mrleemurray/chat-session-he…
mrleemurray Mar 20, 2026
7dcd2c9
Git - update DotGit file watcher to ignore worktree index.lock files …
lszomoru Mar 20, 2026
c99f810
Sessions: Enhance collapsed sidebar widget with session status indica…
mrleemurray Mar 20, 2026
193de6c
Fixes artifact view styling issues.
hediet Mar 20, 2026
0ce5a87
Merge branch 'main' into isidorn/nursing-marlin
benvillalobos Mar 20, 2026
f74be76
Mark chat.artifacts.enabled setting as experimental instead of preview
hediet Mar 20, 2026
25c64d1
Merge branch 'main' into mrleemurray/sessions-panel-animations
mrleemurray Mar 20, 2026
4818a0e
Merge pull request #303453 from microsoft/isidorn/nursing-marlin
isidorn Mar 20, 2026
bc389a0
Sessions - refactor updating a pull request (#303558)
lszomoru Mar 20, 2026
30a711e
Set Session Artifacts -> artifacts
hediet Mar 20, 2026
289b95b
fix subagent tool id mismatch (#303580)
justschen Mar 20, 2026
2372a22
fixes #303425
isidorn Mar 20, 2026
d8238df
Sessions - remove code that is not needed + increase width for the se…
lszomoru Mar 20, 2026
c459317
Add eslint rule for telemetry props that override common props (#303592)
roblourens Mar 20, 2026
1e6a57b
feat: group chat extension customizations under 'Built-in' in managem…
joshspicer Mar 20, 2026
1d47f23
Update src/vs/workbench/contrib/terminalContrib/chatAgentTools/browse…
isidorn Mar 20, 2026
dd92840
Merge pull request #303499 from microsoft/mrleemurray/sessions-panel-…
mrleemurray Mar 20, 2026
877acec
Sessions: Adjust auxiliary bar margins for improved layout (#303501)
mrleemurray Mar 20, 2026
69ca0c3
Sessions: Replace badge with inline title count in Changes view (#303…
mrleemurray Mar 20, 2026
b266620
Merge pull request #303596 from microsoft/isidorn/attractive-goldfish
isidorn Mar 20, 2026
1285a52
Remove `as sinon.SinonStub` casts
mjbvz Mar 20, 2026
6ee1160
Bump tar from 0.4.44 to 0.4.45 in /cli (#303573)
dependabot[bot] Mar 20, 2026
bde0340
Use proper typings
mjbvz Mar 20, 2026
71b6237
Move find to browser feature contribution (#303562)
kycutler Mar 20, 2026
79d5a79
Sessions - add prompt for merging changes (#303607)
lszomoru Mar 20, 2026
b7462b4
Merge pull request #303597 from microsoft/connor4312/agent-host-serve…
connor4312 Mar 20, 2026
ef1e52a
Add inline badge to customization list items for context instructions…
joshspicer Mar 20, 2026
5f09429
sessions: prevent welcome overlay flash on transient entitlement stat…
joshspicer Mar 20, 2026
c9335c2
node_modules is stale -> ignore node-version changes
hediet Mar 20, 2026
a4b2a16
chore: bump flatted (#303340)
rzhao271 Mar 20, 2026
4db9da0
Merge pull request #303226 from microsoft/bryanchen-d/fix-notebook-sn…
bryanchen-d Mar 20, 2026
5396fe3
agentPlugins: allow paths in github sources (#303599)
connor4312 Mar 20, 2026
d50a3ac
Merge pull request #303610 from mjbvz/dev/mjbvz/fit-hare
mjbvz Mar 20, 2026
8f46cf3
integrate image carousel support in sessions. (#303615)
rebornix Mar 20, 2026
a3512f0
fix: enhance session resolution in sessionSupportsFork method (#303624)
TylerLeonhardt Mar 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
103 changes: 103 additions & 0 deletions .eslint-plugin-local/code-no-telemetry-common-property.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
/*---------------------------------------------------------------------------------------------
* 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';
import type * as ESTree from 'estree';

const telemetryMethods = new Set(['publicLog', 'publicLog2', 'publicLogError', 'publicLogError2']);

/**
* Common telemetry property names that are automatically added to every event.
* Telemetry events must not set these because they would collide with / be
* overwritten by the common properties that the telemetry pipeline injects.
*
* Collected from:
* - src/vs/platform/telemetry/common/commonProperties.ts (resolveCommonProperties)
* - src/vs/workbench/services/telemetry/common/workbenchCommonProperties.ts
* - src/vs/workbench/services/telemetry/browser/workbenchCommonProperties.ts
*/
const commonTelemetryProperties = new Set([
'common.machineid',
'common.sqmid',
'common.devdeviceid',
'sessionid',
'commithash',
'version',
'common.releasedate',
'common.platformversion',
'common.platform',
'common.nodeplatform',
'common.nodearch',
'common.product',
'common.msftinternal',
'timestamp',
'common.timesincesessionstart',
'common.sequence',
'common.snap',
'common.platformdetail',
'common.version.shell',
'common.version.renderer',
'common.firstsessiondate',
'common.lastsessiondate',
'common.isnewsession',
'common.remoteauthority',
'common.cli',
'common.useragent',
'common.istouchdevice',
]);

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

readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noCommonProperty: 'Telemetry events must not contain the common property "{{name}}". Common properties are automatically added by the telemetry pipeline and will be dropped.',
},
schema: false,
};

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

/**
* Check whether any property key in an object expression is a reserved common telemetry property.
*/
function checkObjectForCommonProperties(node: ESTree.ObjectExpression) {
for (const prop of node.properties) {
if (prop.type === 'Property') {
let name: string | undefined;
if (prop.key.type === 'Identifier') {
name = prop.key.name;
} else if (prop.key.type === 'Literal' && typeof prop.key.value === 'string') {
name = prop.key.value;
}
if (name && commonTelemetryProperties.has(name.toLowerCase())) {
context.report({
node: prop.key,
messageId: 'noCommonProperty',
data: { name },
});
}
}
}
}

return {
['CallExpression[callee.property.type="Identifier"]'](node: ESTree.CallExpression) {
const callee = node.callee;
if (callee.type !== 'MemberExpression') {
return;
}
const prop = callee.property;
if (prop.type !== 'Identifier' || !telemetryMethods.has(prop.name)) {
return;
}
// The data argument is the second argument for publicLog/publicLog2/publicLogError/publicLogError2
const dataArg = node.arguments[1];
if (dataArg && dataArg.type === 'ObjectExpression') {
checkObjectForCommonProperties(dataArg);
}
},
};
}
};
42 changes: 29 additions & 13 deletions .github/prompts/fix-error.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,32 @@ After the fix is validated (compilation clean, tests pass):
1. **Create a branch**: `git checkout -b <github-username>/<short-description>` (e.g., `bryanchen-d/fix-notebook-index-error`).
2. **Commit**: Stage changed files and commit with a message like `fix: <brief description> (#<issue-number>)`.
3. **Push**: `git push -u origin <branch-name>`.
4. **Create a draft PR** with a description that includes:
- A summary of the change.
- `Fixes #<issue-number>` so GitHub auto-closes the issue when the PR merges.
- What scenarios may trigger the error.
- The code flow explaining why the error gets thrown and goes unhandled.
- Steps a user can follow to manually validate the fix.
- How the fix addresses the issue, with a brief note per changed file.
5. **Monitor the PR** for Copilot review comments. Wait 1-2 minutes after each push for Copilot to leave its review, then check for new comments. Evaluate each comment:
- If valid, apply the fix in a new commit, push, and **resolve the comment thread** using the GitHub GraphQL API (`resolveReviewThread` mutation with the thread's node ID).
- If not applicable, leave a reply explaining why.
- After addressing comments, update the PR description if the changes affect the summary, code flow explanation, or per-file notes.
6. **Repeat monitoring** after each push: wait 1-2 minutes, check for new Copilot comments, and address them. Continue this loop until no new comments appear.
7. **Re-run tests** after addressing review comments to confirm nothing regressed.
4. **Create a draft PR** with a description that includes these sections:
- **Summary**: A concise description of what was changed and why.
- **Issue link**: `Fixes #<issue-number>` so GitHub auto-closes the issue when the PR merges.
- **Trigger scenarios**: What user actions or system conditions cause this error to surface.
- **Code flow diagram**: A Mermaid swimlane/sequence diagram showing the call chain from trigger to error. Use participant labels for the key components (e.g., classes, modules, processes). Example:
````
```mermaid
sequenceDiagram
participant A as CallerComponent
participant B as MiddleLayer
participant C as LowLevelUtil
A->>B: someOperation(data)
B->>C: validate(data)
C-->>C: data is invalid
C->>B: throws "error message"
B->>A: unhandled error propagates
```
````
- **Manual validation steps**: Concrete, step-by-step instructions a reviewer can follow to reproduce the original error and verify the fix. Include specific setup requirements (e.g., file types to open, settings to change, actions to perform). If the error cannot be easily reproduced manually, explain why and describe what alternative validation was performed (e.g., unit tests, code inspection).
- **How the fix works**: A brief explanation of the fix approach, with a note per changed file.
5. **Monitor the PR — BLOCKING**: You MUST NOT complete the task until the monitoring loop below is done.
- Wait 2 minutes after each push, then check for Copilot review comments using `gh pr view <number> --json reviews,comments` and `gh api repos/{owner}/{repo}/pulls/{number}/comments`.
- If there are review comments, evaluate each one:
- If valid, apply the fix in a new commit, push, and **resolve the comment thread** using the GitHub GraphQL API (`resolveReviewThread` mutation with the thread's node ID).
- If not applicable, leave a reply explaining why.
- After addressing comments, update the PR description if the changes affect the summary, diagram, or per-file notes.
- **Re-run tests** after addressing review comments to confirm nothing regressed.
- After each push, repeat the wait-and-check cycle. Continue until **two consecutive checks return zero new comments**.
6. **Verify CI**: After the monitoring loop is done, check that CI checks are passing using `gh pr checks <number>`. If any required checks fail, investigate and fix. Do NOT complete the task with failing CI.
2 changes: 1 addition & 1 deletion .vscode/extensions/vscode-extras/src/npmUpToDateFeature.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export class NpmUpToDateFeature extends vscode.Disposable {
}
try {
const script = path.join(workspaceRoot, 'build', 'npm', 'installStateHash.ts');
const output = cp.execFileSync(process.execPath, [script], {
const output = cp.execFileSync(process.execPath, [script, '--ignore-node-version'], {
cwd: workspaceRoot,
timeout: 10_000,
encoding: 'utf8',
Expand Down
2 changes: 1 addition & 1 deletion .vscode/notebooks/my-endgame.github-issues
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$MILESTONE=milestone:\"1.112.0\"\n\n$MINE=assignee:@me"
"value": "$MILESTONE=milestone:\"1.113.0\"\n\n$MINE=assignee:@me"
},
{
"kind": 2,
Expand Down
2 changes: 1 addition & 1 deletion .vscode/notebooks/my-work.github-issues
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce repo:microsoft/vscode-copilot-issues repo:microsoft/vscode-extension-samples\n\n// current milestone name\n$MILESTONE=milestone:\"March 2026\"\n"
"value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce repo:microsoft/vscode-copilot-issues repo:microsoft/vscode-extension-samples\n\n// current milestone name\n$MILESTONE=milestone:\"1.113.0\"\n"
},
{
"kind": 1,
Expand Down
3 changes: 3 additions & 0 deletions build/azure-pipelines/win32/product-build-win32-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ jobs:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
displayName: ✍️ Codesign

- powershell: Remove-Item -Path "$(Build.ArtifactStagingDirectory)/sign/CodeSignSummary*.md" -Force -ErrorAction SilentlyContinue
displayName: Remove CodeSignSummary

- task: ArchiveFiles@2
displayName: Archive signed CLI
inputs:
Expand Down
1 change: 1 addition & 0 deletions build/next/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ const serverEntryPoints = [
'vs/workbench/api/node/extensionHostProcess',
'vs/platform/files/node/watcher/watcherMain',
'vs/platform/terminal/node/ptyHostMain',
'vs/platform/agentHost/node/agentHostMain',
];

// Bootstrap files per target
Expand Down
17 changes: 11 additions & 6 deletions build/npm/installStateHash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ function hashContent(content: string): string {
return hash.digest('hex');
}

export function computeState(): PostinstallState {
export function computeState(options?: { ignoreNodeVersion?: boolean }): PostinstallState {
const fileHashes: Record<string, string> = {};
for (const filePath of collectInputFiles()) {
const key = path.relative(root, filePath);
Expand All @@ -97,7 +97,7 @@ export function computeState(): PostinstallState {
// file may not be readable
}
}
return { nodeVersion: process.versions.node, fileHashes };
return { nodeVersion: options?.ignoreNodeVersion ? '' : process.versions.node, fileHashes };
}

export function computeContents(): Record<string, string> {
Expand Down Expand Up @@ -141,18 +141,23 @@ export function readSavedContents(): Record<string, string> | undefined {

// When run directly, output state as JSON for tooling (e.g. the vscode-extras extension).
if (import.meta.filename === process.argv[1]) {
if (process.argv[2] === '--normalize-file') {
const filePath = process.argv[3];
const args = new Set(process.argv.slice(2));

if (args.has('--normalize-file')) {
const filePath = process.argv[process.argv.indexOf('--normalize-file') + 1];
if (!filePath) {
process.exit(1);
}
process.stdout.write(normalizeFileContent(filePath));
} else {
const ignoreNodeVersion = args.has('--ignore-node-version');
const current = computeState({ ignoreNodeVersion });
const saved = readSavedState();
console.log(JSON.stringify({
root,
stateContentsFile,
current: computeState(),
saved: readSavedState(),
current,
saved: saved && ignoreNodeVersion ? { nodeVersion: '', fileHashes: saved.fileHashes } : saved,
files: [...collectInputFiles(), stateFile],
}));
}
Expand Down
6 changes: 3 additions & 3 deletions build/vite/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ cfg-if = "1.0.0"
pin-project = "1.1.0"
console = "0.15.7"
bytes = "1.11.1"
tar = "0.4.38"
tar = "0.4.45"

[build-dependencies]
serde = { version="1.0.163", features = ["derive"] }
Expand Down
Loading
Loading