Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e76d9c9
fix: wrap long docstrings in parameter hints widget
murataslan1 Feb 2, 2026
85b620a
Bump hono from 4.12.5 to 4.12.7 in /test/mcp (#300620)
dependabot[bot] Mar 11, 2026
aaa3025
Bump tar from 7.5.10 to 7.5.11 in /build/npm/gyp (#300619)
dependabot[bot] Mar 11, 2026
7e8b4cc
Bump actions/upload-artifact from 4 to 7 (#300760)
dependabot[bot] Mar 11, 2026
e7153ed
Bump actions/github-script from 7 to 8 (#300759)
dependabot[bot] Mar 11, 2026
1592b94
Fix `any` usages in the markdown preview sources
mjbvz Mar 11, 2026
393b54f
Bump minimatch from 3.1.2 to 3.1.5 in /test/automation (#300521)
dependabot[bot] Mar 11, 2026
be5d842
Add StaticChatSessionItemController helper for test
mjbvz Mar 11, 2026
af32b7b
Revert "Add `min-release-age` in npmrc files"
mjbvz Mar 11, 2026
9831d8f
add support for running tasks on worktree creation
benibenj Mar 11, 2026
2a83745
Merge branch 'main' into fix/parameter-hints-word-wrap
mjbvz Mar 11, 2026
df48c4b
Sessions - refactor sync changes action (#300840)
lszomoru Mar 11, 2026
0a2e9ef
Merge pull request #300841 from mjbvz/dev/mjbvz/honest-thrush
mjbvz Mar 11, 2026
a9f97ee
Merge pull request #300847 from mjbvz/dev/mjbvz/conventional-damselfly
mjbvz Mar 11, 2026
c3f8358
Sessions - increase default width of auxiliary bar (#300848)
lszomoru Mar 11, 2026
7461493
Bump xterm to 6.1.0-beta.191 (#300822)
anthonykim1 Mar 11, 2026
15c43cb
Merge pull request #300844 from mjbvz/dev/mjbvz/historical-gecko
mjbvz Mar 11, 2026
eda45ca
Sessions: Reduce width of empty state cursor (#300835)
hawkticehurst Mar 11, 2026
8dc072e
add denial details for auto-approval rules in command line tools (#30…
meganrogge Mar 11, 2026
f1428b9
Enables screenshot CI again
hediet Mar 11, 2026
7c08b33
update screenshot baselines from CI
hediet Mar 11, 2026
466961c
remove hook command for sessionStart
benibenj Mar 11, 2026
71487d2
Rename isolation picker labels: Copilot CLI → Worktree, Local → Folde…
sandy081 Mar 11, 2026
772547f
make integrated browser attach to chat feature kb accessible (#300465)
meganrogge Mar 11, 2026
259358f
add autopilot back into copilot cli ui (#300596)
justschen Mar 11, 2026
56540e1
Add aria label hint for keyboard deletion of chat attachments (#299785)
Copilot Mar 11, 2026
5d3da23
Apply suggestion from @Copilot
benibenj Mar 11, 2026
8f44b60
increase model availability to lessen chance of bad terminal tool res…
meganrogge Mar 11, 2026
2f42f2e
Add sessions support to translation resources and update related logi…
TylerLeonhardt Mar 11, 2026
fe7157a
Merge pull request #300905 from microsoft/benibenj/military-rodent
benibenj Mar 11, 2026
ebaff58
Merge pull request #292258 from murataslan1/fix/parameter-hints-word-…
mjbvz Mar 11, 2026
383c174
Add proxy support to WebSocket (#298236)
chrmarti Mar 11, 2026
b49670d
Fix context indicator (#300917)
lramos15 Mar 11, 2026
5d56633
updates component explorer
hediet Mar 11, 2026
bf19d9d
askQuestions tool: default allowFreeformInput to true (#300923)
digitarald Mar 11, 2026
446c755
Using computed editor options instead of direct values (#300868)
aiday-mar Mar 11, 2026
898a015
make accessible view bigger (#300932)
meganrogge Mar 11, 2026
f144e45
Revert macOS chunking PR (#300933)
meganrogge Mar 11, 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
  •  
  •  
  •  
12 changes: 7 additions & 5 deletions .eslint-plugin-local/code-translation-remind.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,19 @@ export default new class TranslationRemind implements eslint.Rule.RuleModule {

private _checkImport(context: eslint.Rule.RuleContext, node: TSESTree.Node, path: string) {

if (path !== TranslationRemind.NLS_MODULE) {
if (path !== TranslationRemind.NLS_MODULE && !path.endsWith('/nls.js')) {
return;
}

const currentFile = context.getFilename();
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
if (!matchService && !matchPart) {
const matchSessionsPart = currentFile.match(/vs\/sessions\/contrib\/\w+/);
if (!matchService && !matchPart && !matchSessionsPart) {
return;
}

const resource = matchService ? matchService[0] : matchPart![0];
const resource = matchService ? matchService[0] : matchPart ? matchPart[0] : matchSessionsPart![0];
let resourceDefined = false;

let json;
Expand All @@ -47,9 +48,10 @@ export default new class TranslationRemind implements eslint.Rule.RuleModule {
console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
return;
}
const workbenchResources = JSON.parse(json).workbench;
const parsed = JSON.parse(json);
const resources = [...parsed.workbench, ...parsed.sessions];

workbenchResources.forEach((existingResource: any) => {
resources.forEach((existingResource: any) => {
if (existingResource.name === resource) {
resourceDefined = true;
return;
Expand Down
3 changes: 1 addition & 2 deletions .github/hooks/hooks.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
"sessionStart": [
{
"type": "command",
"bash": "if [ -f ~/.vscode-worktree-setup ]; then nohup bash -c 'npm ci && npm run compile' > /tmp/worktree-setup-$(date +%Y-%m-%d_%H-%M-%S).log 2>&1 & fi",
"powershell": "if (Test-Path \"$env:USERPROFILE\\.vscode-worktree-setup\") { $log = \"$env:TEMP\\worktree-setup-$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss').log\"; $dir = $PWD.Path; Start-Job -ScriptBlock { param($d, $l) Set-Location $d; & { npm ci; if ($LASTEXITCODE -eq 0) { npm run compile } } *> $l } -ArgumentList $dir, $log | Out-Null }"
"bash": ""
}
],
"sessionEnd": [
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/api-proposal-version-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
steps:
- name: Get PR info
id: pr_info
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
let prNumber, headSha, baseSha;
Expand All @@ -62,7 +62,7 @@ jobs:

- name: Check for override comment
id: check_override
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const prNumber = ${{ steps.pr_info.outputs.number }};
Expand Down Expand Up @@ -130,7 +130,7 @@ jobs:
(github.event.comment.author_association == 'OWNER' ||
github.event.comment.author_association == 'MEMBER' ||
github.event.comment.author_association == 'COLLABORATOR')
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const headSha = '${{ steps.pr_info.outputs.head_sha }}';
Expand Down Expand Up @@ -241,7 +241,7 @@ jobs:

- name: Post warning comment
if: steps.check_override.outputs.override_found != 'true' && steps.version_check.outputs.version_changed == 'true'
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const prNumber = ${{ steps.pr_info.outputs.number }};
Expand Down
23 changes: 18 additions & 5 deletions .github/workflows/screenshot-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ concurrency:

jobs:
screenshots:
if: false # temporarily disabled
name: Checking Component Screenshots
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -55,12 +54,12 @@ jobs:
run: npx playwright install chromium

- name: Capture screenshots
run: npx component-explorer screenshot --project ./test/componentFixtures/component-explorer.json
run: ./node_modules/.bin/component-explorer screenshot --project ./test/componentFixtures/component-explorer.json

- name: Compare screenshots
id: compare
run: |
npx component-explorer screenshot:compare \
./node_modules/.bin/component-explorer screenshot:compare \
--project ./test/componentFixtures \
--report ./test/componentFixtures/.screenshots/report
continue-on-error: true
Expand Down Expand Up @@ -93,19 +92,33 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
REPORT="test/componentFixtures/.screenshots/report/report.json"
STATE="success"
if [ -f "$REPORT" ]; then
CHANGED=$(node -e "const r = require('./$REPORT'); console.log(r.summary.added + r.summary.removed + r.summary.changed)")
TITLE="⚠ ${CHANGED} screenshots changed"
BLOCKS_CI=$(node -e "
const r = require('./$REPORT');
const blocking = Object.entries(r.fixtures).filter(([, f]) =>
f.status !== 'unchanged' && (f.labels || []).includes('blocks-ci')
);
if (blocking.length > 0) {
console.log(blocking.map(([name]) => name).join(', '));
}
")
if [ -n "$BLOCKS_CI" ]; then
STATE="failure"
TITLE="❌ ${CHANGED} screenshots changed (blocks CI: ${BLOCKS_CI})"
fi
else
TITLE="✅ Screenshots match"
fi

SHA="${{ github.event.pull_request.head.sha || github.sha }}"
DETAILS_URL="https://hediet-ghartifactpreview.azurewebsites.net/${{ github.repository }}/run/${{ github.run_id }}/component-explorer/___explorer.html?report=./screenshot-report/report.json"
DETAILS_URL="https://hediet-ghartifactpreview.azurewebsites.net/${{ github.repository }}/run/${{ github.run_id }}/component-explorer/___explorer.html?report=./screenshot-report/report.json&search=changed"

gh api "repos/${{ github.repository }}/statuses/$SHA" \
--input - <<EOF || echo "::warning::Could not create commit status (expected for fork PRs)"
{"state":"success","target_url":"$DETAILS_URL","description":"$TITLE","context":"Component Screenshots"}
{"state":"$STATE","target_url":"$DETAILS_URL","description":"$TITLE","context":"Component Screenshots"}
EOF

# - name: Post PR comment
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sessions-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:

- name: Upload failure screenshots
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: sessions-e2e-failures
path: src/vs/sessions/test/e2e/out/failure-*.png
Expand Down
1 change: 0 additions & 1 deletion .npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@ ignore-scripts=false
build_from_source="true"
legacy-peer-deps="true"
timeout=180000
min-release-age="1"
14 changes: 13 additions & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@
{
"label": "Launch Component Explorer",
"type": "shell",
"command": "npx component-explorer serve -c ./test/componentFixtures/component-explorer.json -vv",
"command": "npx component-explorer serve -c ./test/componentFixtures/component-explorer.json -vv --kill-if-running",
"isBackground": true,
"problemMatcher": {
"owner": "component-explorer",
Expand All @@ -403,6 +403,18 @@
"endsPattern": "Redirection server listening on.*"
}
}
},
{
"label": "Install & Compile",
"type": "shell",
"command": "npm install && npm run compile",
"windows": {
"command": "cmd /d /c \"npm install && npm run compile\""
},
"inSessions": true,
"runOptions": {
"runOn": "worktreeCreated"
}
}
]
}
114 changes: 114 additions & 0 deletions build/lib/i18n.resources.json
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,120 @@
{
"name": "vs/workbench/contrib/list",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/browserView",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/dropOrPasteInto",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/editTelemetry",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/inlineCompletions",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/mcp",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/meteredConnection",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/processExplorer",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/remoteCodingAgents",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/telemetry",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/welcomeAgentSessions",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/accounts",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/chat",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/request",
"project": "vscode-workbench"
}
],
"sessions": [
{
"name": "vs/sessions",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/accountMenu",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/agentFeedback",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/aiCustomizationTreeView",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/applyCommitsToParentRepo",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/changes",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/chat",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/codeReview",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/fileTreeView",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/files",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/git",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/logs",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/sessions",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/terminal",
"project": "vscode-sessions"
},
{
"name": "vs/sessions/contrib/welcome",
"project": "vscode-sessions"
}
]
}
13 changes: 12 additions & 1 deletion build/lib/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,8 @@ const editorProject: string = 'vscode-editor',
workbenchProject: string = 'vscode-workbench',
extensionsProject: string = 'vscode-extensions',
setupProject: string = 'vscode-setup',
serverProject: string = 'vscode-server';
serverProject: string = 'vscode-server',
sessionsProject: string = 'vscode-sessions';

export function getResource(sourceFile: string): Resource {
let resource: string;
Expand All @@ -416,6 +417,11 @@ export function getResource(sourceFile: string): Resource {
return { name: resource, project: workbenchProject };
} else if (/^vs\/workbench/.test(sourceFile)) {
return { name: 'vs/workbench', project: workbenchProject };
} else if (/^vs\/sessions\/contrib/.test(sourceFile)) {
resource = sourceFile.split('/', 4).join('/');
return { name: resource, project: sessionsProject };
} else if (/^vs\/sessions/.test(sourceFile)) {
return { name: 'vs/sessions', project: sessionsProject };
}

throw new Error(`Could not identify the XLF bundle for ${sourceFile}`);
Expand Down Expand Up @@ -737,6 +743,11 @@ export function prepareI18nPackFiles(resultingTranslationPaths: TranslationPath[
if (EXTERNAL_EXTENSIONS.find(e => e === resource)) {
project = extensionsProject;
}
// TODO(tyleonha): Support localization for the Sessions app (https://github.com/microsoft/vscode-internalbacklog/issues/7045)
// vscode-setup has its own import path via prepareIslFiles
if (project === sessionsProject || project === setupProject) {
return;
}
const contents = xlf.contents!.toString();
log(`Found ${project}: ${resource}`);
const parsePromise = getL10nFilesFromXlf(contents);
Expand Down
9 changes: 7 additions & 2 deletions build/lib/test/i18n.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ suite('XLF Parser Tests', () => {

test('JSON file source path to Transifex resource match', () => {
const editorProject: string = 'vscode-editor',
workbenchProject: string = 'vscode-workbench';
workbenchProject: string = 'vscode-workbench',
sessionsProject: string = 'vscode-sessions';

const platform: i18n.Resource = { name: 'vs/platform', project: editorProject },
editorContrib = { name: 'vs/editor/contrib', project: editorProject },
Expand All @@ -40,7 +41,9 @@ suite('XLF Parser Tests', () => {
code = { name: 'vs/code', project: workbenchProject },
workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject },
workbench = { name: 'vs/workbench', project: workbenchProject };
workbench = { name: 'vs/workbench', project: workbenchProject },
sessionsContrib = { name: 'vs/sessions/contrib/chat', project: sessionsProject },
sessions = { name: 'vs/sessions', project: sessionsProject };

assert.deepStrictEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
assert.deepStrictEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
Expand All @@ -50,5 +53,7 @@ suite('XLF Parser Tests', () => {
assert.deepStrictEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
assert.deepStrictEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
assert.deepStrictEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
assert.deepStrictEqual(i18n.getResource('vs/sessions/contrib/chat/browser/chatWidget'), sessionsContrib);
assert.deepStrictEqual(i18n.getResource('vs/sessions/browser/layoutActions'), sessions);
});
});
6 changes: 3 additions & 3 deletions build/npm/gyp/package-lock.json

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

Loading
Loading