Skip to content

Commit 3b50d63

Browse files
committed
Merge branch 'main' into aeschli/empty-gibbon
2 parents d51b7be + 10219e2 commit 3b50d63

File tree

424 files changed

+37873
-5170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

424 files changed

+37873
-5170
lines changed

.github/CODEOWNERS

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,30 @@
99
.github/workflows/pr-win32-test.yml @lszomoru @joaomoreno
1010
.github/workflows/pr.yml @lszomoru @joaomoreno
1111
.github/workflows/telemetry.yml @lramos15 @lszomoru @joaomoreno
12+
src/vs/base/browser/ui/tree/** @joaomoreno @benibenj
13+
src/vs/base/browser/ui/list/** @joaomoreno @benibenj
14+
src/vs/base/browser/ui/sash/** @joaomoreno @benibenj
15+
src/vs/base/browser/ui/splitview/** @joaomoreno @benibenj
16+
src/vs/base/browser/ui/grid/** @joaomoreno @benibenj
17+
src/bootstrap-cli.ts @bpasero @deepak1556
18+
src/bootstrap-esm.ts @bpasero @deepak1556
19+
src/bootstrap-fork.ts @bpasero @deepak1556
20+
src/bootstrap-import.ts @bpasero @deepak1556
21+
src/bootstrap-meta.ts @bpasero @deepak1556
22+
src/bootstrap-node.ts @bpasero @deepak1556
23+
src/bootstrap-server.ts @bpasero @deepak1556
24+
src/cli.ts @bpasero @deepak1556
25+
src/main.ts @bpasero @deepak1556
26+
src/server-cli.ts @bpasero @deepak1556
27+
src/server-main.ts @bpasero @deepak1556
28+
src/vs/base/parts/sandbox/** @bpasero @deepak1556
29+
src/vs/base/parts/storage/** @bpasero @deepak1556
30+
src/vs/platform/backup/** @bpasero
31+
src/vs/platform/files/** @bpasero @deepak1556
32+
src/vs/base/node/pfs.ts @bpasero @deepak1556
33+
src/vs/code/** @bpasero @deepak1556
34+
src/vs/workbench/services/textfile/** @bpasero
35+
src/vs/workbench/services/workingCopy/** @bpasero
1236

1337
# ensure the API police is aware of changes to the vscode-dts file
1438
# this is only about the final API, not about proposed API changes

.github/copilot-instructions.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,25 @@ Each extension follows the standard VS Code extension structure with `package.js
4646
3. **Follow imports**: Check what files import the problematic module
4747
4. **Check test files**: Often reveal usage patterns and expected behavior
4848

49+
## Validating TypeScript changes
50+
51+
You MUST check compilation output before running ANY script or declaring work complete!
52+
53+
1. **ALWAYS** check the `VS Code - Build` watch task output for compilation errors
54+
2. **NEVER** run tests if there are compilation errors
55+
3. **NEVER** use `npm run compile` to compile TypeScript files, always check task output
56+
4. **FIX** all compilation errors before moving forward
57+
58+
### TypeScript compilation steps
59+
- Monitor the `VS Code - Build` task outputs for real-time compilation errors as you make changes
60+
- This task runs `Core - Build` and `Ext - Build` to incrementally compile VS Code TypeScript sources and built-in extensions
61+
- Start the task if it's not already running in the background
62+
63+
### TypeScript validation steps
64+
- Use run test tool or `scripts/test.sh` (`scripts\test.bat` on Windows) for unit tests (add `--grep <pattern>` to filter tests)
65+
- Use `scripts/test-integration.sh` (or `scripts\test-integration.bat` on Windows) for integration tests
66+
- Use `npm run valid-layers-check` to check for layering issues
67+
4968
## Coding Guidelines
5069

5170
### Indentation
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
applyTo: '**/*.ts'
3+
description: Telemetry Implementation Guide
4+
---
5+
6+
Patterns for GDPR-compliant telemetry in VS Code with proper type safety and privacy protection.
7+
8+
## Implementation Pattern
9+
10+
### 1. Define Types
11+
```typescript
12+
type MyFeatureEvent = {
13+
action: string;
14+
duration: number;
15+
success: boolean;
16+
errorCode?: string;
17+
};
18+
19+
type MyFeatureClassification = {
20+
action: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The action performed.' };
21+
duration: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; isMeasurement: true; comment: 'Time in milliseconds.' };
22+
success: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; isMeasurement: true; comment: 'Whether action succeeded.' };
23+
errorCode: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; comment: 'Error code if action failed.' };
24+
owner: 'yourGitHubUsername';
25+
comment: 'Tracks MyFeature usage and performance.';
26+
};
27+
```
28+
29+
### 2.1. Send Event
30+
```typescript
31+
this.telemetryService.publicLog2<MyFeatureEvent, MyFeatureClassification>('myFeatureAction', {
32+
action: 'buttonClick',
33+
duration: 150,
34+
success: true
35+
});
36+
```
37+
38+
### 2.2. Error Events
39+
For error-specific telemetry with stack traces or error messages:
40+
```typescript
41+
type MyErrorEvent = {
42+
operation: string;
43+
errorMessage: string;
44+
duration?: number;
45+
};
46+
47+
type MyErrorClassification = {
48+
operation: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; comment: 'The operation that failed.' };
49+
errorMessage: { classification: 'CallstackOrException'; purpose: 'PerformanceAndHealth'; comment: 'The error message.' };
50+
duration: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; isMeasurement: true; comment: 'Time until failure.' };
51+
owner: 'yourGitHubUsername';
52+
comment: 'Tracks MyFeature errors for reliability.';
53+
};
54+
55+
this.telemetryService.publicLogError2<MyErrorEvent, MyErrorClassification>('myFeatureError', {
56+
operation: 'fileRead',
57+
errorMessage: error.message,
58+
duration: 1200
59+
});
60+
```
61+
62+
### 3. Service Injection
63+
```typescript
64+
constructor(
65+
@ITelemetryService private readonly telemetryService: ITelemetryService,
66+
) { super(); }
67+
```
68+
69+
## GDPR Classifications & Purposes
70+
71+
**Classifications (choose the most restrictive):**
72+
- `SystemMetaData` - **Most common.** Non-personal system info, user preferences, feature usage, identifiers (extension IDs, language types, counts, durations, success flags)
73+
- `CallstackOrException` - Error messages, stack traces, exception details. **Only for actual error information.**
74+
- `PublicNonPersonalData` - Data already publicly available (rare)
75+
76+
**Purposes (combine with different classifications):**
77+
- `FeatureInsight` - **Default.** Understanding how features are used, user behavior patterns, feature adoption
78+
- `PerformanceAndHealth` - **For errors & performance.** Metrics, error rates, performance measurements, diagnostics
79+
80+
**Required Properties:**
81+
- `comment` - Clear explanation of what the field contains and why it's collected
82+
- `owner` - GitHub username (infer from branch or ask)
83+
- `isMeasurement: true` - **Required** for all numeric values flags used in calculations
84+
85+
## Error Events
86+
87+
Use `publicLogError2` for errors with `CallstackOrException` classification:
88+
89+
```typescript
90+
this.telemetryService.publicLogError2<ErrorEvent, ErrorClassification>('myFeatureError', {
91+
errorMessage: error.message,
92+
errorCode: 'MYFEATURE_001',
93+
context: 'initialization'
94+
});
95+
```
96+
97+
## Naming & Privacy Rules
98+
99+
**Naming Conventions:**
100+
- Event names: `camelCase` with context (`extensionActivationError`, `chatMessageSent`)
101+
- Property names: specific and descriptive (`agentId` not `id`, `durationMs` not `duration`)
102+
- Common patterns: `success/hasError/isEnabled`, `sessionId/extensionId`, `type/kind/source`
103+
104+
**Critical Don'ts:**
105+
- ❌ No PII (usernames, emails, file paths, content)
106+
- ❌ Missing `owner` field in classification (infer from branch name or ask user)
107+
- ❌ Vague comments ("user data" → "selected language identifier")
108+
- ❌ Wrong classification
109+
- ❌ Missing `isMeasurement` on numeric metrics
110+
111+
**Privacy Requirements:**
112+
- Minimize data collection to essential insights only
113+
- Use hashes/categories instead of raw values when possible
114+
- Document clear purpose for each data point

.github/instructions/typescript.instructions.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/prompts/playwright.prompt.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
mode: agent
33
description: 'Use playwright to _see_ the code changes you have made'
4-
tools: ['codebase', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'findTestFiles', 'searchResults', 'githubRepo', 'todos', 'runTests', 'runCommands', 'runTasks', 'editFiles', 'runNotebooks', 'search', 'new', 'browser_click', 'browser_close', 'browser_console_messages', 'browser_drag', 'browser_evaluate', 'browser_file_upload', 'browser_handle_dialog', 'browser_hover', 'browser_install', 'browser_navigate_back', 'browser_navigate_forward', 'browser_network_requests', 'browser_press_key', 'browser_resize', 'browser_select_option', 'browser_snapshot', 'browser_tab_close', 'browser_tab_list', 'browser_tab_new', 'browser_tab_select', 'browser_take_screenshot', 'browser_type', 'browser_wait_for']
4+
tools: ['codebase', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'findTestFiles', 'searchResults', 'githubRepo', 'todos', 'runTests', 'editFiles', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'browser_click', 'browser_close', 'browser_console_messages', 'browser_drag', 'browser_evaluate', 'browser_file_upload', 'browser_handle_dialog', 'browser_hover', 'browser_network_requests', 'browser_press_key', 'browser_resize', 'browser_select_option', 'browser_snapshot', 'browser_tab_close', 'browser_tab_list', 'browser_tab_new', 'browser_tab_select', 'browser_take_screenshot', 'browser_type', 'browser_wait_for', 'get_commit', 'get_discussion', 'get_discussion_comments', 'get_issue', 'get_issue_comments']
55
---
66
For every UI change you make, verify the result interactively using vscode-playwright-mcp. Use Playwright to open the relevant UI, perform the change, and take screenshots to visually confirm the update. This ensures that every modification is visible, correct, and meets the intended requirements.
77

@@ -12,3 +12,7 @@ NOTE: When you use a playwright tool, it will automatically open a VS Code dev b
1212
In addition to visual verification, follow best practices for writing robust, maintainable, and extendable code. Ensure all user-facing messages are localized, use consistent naming and indentation, and prefer async/await for asynchronous operations. Write and update relevant tests, clean up temporary files, and adhere to project coding guidelines for quality and consistency.
1313

1414
If the task is unreasonable or infeasible, or if any of the tests are incorrect, please tell the user. The solution should be robust, maintainable, and extendable.
15+
16+
Tips for navigating VS Code:
17+
* When running a command in the command palette, the line needs to start with `>`
18+
* For Quick Pick bugs, you may need to temporarily modify an existing quick pick to see the issue.

.vscode/mcp.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"vscode-playwright-mcp": {
44
"type": "stdio",
55
"command": "npm",
6+
// Look at the [README](../test/mcp/README.md) to see what arguments are supported
67
"args": ["run", "start-stdio"],
78
"cwd": "${workspaceFolder}/test/mcp"
89
}

.vscode/notebooks/endgame.github-issues

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"kind": 2,
99
"language": "github-issues",
10-
"value": "$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\n\n$MILESTONE=milestone:\"July 2025\""
10+
"value": "$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\n\n$MILESTONE=milestone:\"August 2025\""
1111
},
1212
{
1313
"kind": 1,

.vscode/notebooks/my-endgame.github-issues

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"kind": 2,
99
"language": "github-issues",
10-
"value": "$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\n\n$MILESTONE=milestone:\"July 2025\"\n\n$MINE=assignee:@me"
10+
"value": "$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\n\n$MILESTONE=milestone:\"August 2025\"\n\n$MINE=assignee:@me"
1111
},
1212
{
1313
"kind": 1,

.vscode/notebooks/my-work.github-issues

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"kind": 2,
99
"language": "github-issues",
10-
"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\n\n// current milestone name\n$MILESTONE=milestone:\"July 2025\"\n"
10+
"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\n\n// current milestone name\n$MILESTONE=milestone:\"August 2025\"\n"
1111
},
1212
{
1313
"kind": 1,

0 commit comments

Comments
 (0)