Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
bb8e884
Initial plan
Copilot Feb 21, 2026
b506711
Remove gray background container for single editor buttons
Copilot Feb 21, 2026
8130d4e
Refactor floating menu styles for single button and adjust height dyn…
mrleemurray Feb 24, 2026
6ff0262
Refactor floating menu styles for single button and adjust height dyn…
mrleemurray Feb 24, 2026
2d936dc
Merge branch 'main' into copilot/remove-gray-background-single-button
mrleemurray Feb 26, 2026
235c74e
Merge branch 'main' into copilot/remove-gray-background-single-button
bpasero Mar 1, 2026
ccbe5ab
Enhance source map handling in NLS plugin and related components
jrieken Mar 3, 2026
e39f657
Merge branch 'main' into joh/source-map-fixes
jrieken Mar 3, 2026
5c7e861
sessions - enable terminal auto approve (#298917)
bpasero Mar 3, 2026
a6e427e
refactor: update box-shadow styles across various components to use n…
mrleemurray Mar 3, 2026
7b9ab5a
agent sessions approval row
benibenj Mar 3, 2026
985ce38
refactor: reorganize shadow variables in theme styles for consistency
mrleemurray Mar 3, 2026
858363e
sessions - always prefer session label (#298926)
bpasero Mar 3, 2026
cbfb758
Apply suggestion from @Copilot
benibenj Mar 3, 2026
459bfb2
refactor: remove redundant overflow styles and apply box-shadow to no…
mrleemurray Mar 3, 2026
50d5600
refactor: remove overflow styles from notifications and clean up inpu…
mrleemurray Mar 3, 2026
f7d4cc7
fix sessions title bar (#298932)
sandy081 Mar 3, 2026
51f5caf
Revert "Port github extension to use esbuild" (#298920)
chrmarti Mar 3, 2026
2044d6e
Merge branch 'main' into benibenj/resonant-hummingbird
bpasero Mar 3, 2026
f8fab13
Hiding and showing of terminals
benibenj Mar 3, 2026
51223b6
Enhance task entry interface and add tests for command arguments (#29…
benibenj Mar 3, 2026
8e35f3e
Agent sessions approval row (#298933)
Copilot Mar 3, 2026
b02a0fd
refactor: enhance box-shadow styling for menu container based on shad…
mrleemurray Mar 3, 2026
3205ec3
refactor: add box-shadow styling to rename widget for improved visibi…
mrleemurray Mar 3, 2026
cd41bf1
Updates component explorer
hediet Mar 3, 2026
7794c41
update distro (#298931)
bpasero Mar 3, 2026
41054e8
Merge pull request #298929 from microsoft/benibenj/resonant-hummingbird
benibenj Mar 3, 2026
fff1ab0
Update editor widget background colors in 2026 Light theme
mrleemurray Mar 3, 2026
93b18fe
Add padding to statusbar left and right items for improved layout
mrleemurray Mar 3, 2026
8497430
Merge pull request #298937 from microsoft/benibenj/select-grouse
benibenj Mar 3, 2026
23cfa3e
Refactor statusbar padding for improved layout and item visibility
mrleemurray Mar 3, 2026
6e24247
Remove padding adjustments for first and last visible statusbar items
mrleemurray Mar 3, 2026
2c34409
Merge pull request #298930 from microsoft/mrleemurray/port-2026-theme…
mrleemurray Mar 3, 2026
8c68748
sessions - updates to selfhost setup (#298943)
bpasero Mar 3, 2026
fb87d94
Git - expose random name generation for branches (#298938)
lszomoru Mar 3, 2026
4cbf86e
Merge pull request #298944 from microsoft/mrleemurray/average-emerald…
mrleemurray Mar 3, 2026
42cdbe2
configures dependabot to automatically update component explorer
hediet Mar 3, 2026
4db4a55
Merge pull request #298945 from microsoft/mrleemurray/creepy-gold-gui…
mrleemurray Mar 3, 2026
e833446
sessions - indicate isolation level in viewer (#298955)
bpasero Mar 3, 2026
46b1b6e
sessions: fix separator in windows (#298961)
sandy081 Mar 3, 2026
091ef37
Update grammars (#298962)
alexr00 Mar 3, 2026
7bcb255
Enhance source map handling in build tasks for CI environments
jrieken Mar 3, 2026
06b198f
improves npm cache logic
hediet Mar 3, 2026
bf882b6
fix: explicitly set volume size for dmg (#298918)
deepak1556 Mar 3, 2026
0364597
sessions - context menu on title for session actions (#298968)
bpasero Mar 3, 2026
2be5f84
f5 run action keybinding and command handler
benibenj Mar 3, 2026
a437b74
Merge pull request #298978 from microsoft/benibenj/geographical-tapir
benibenj Mar 3, 2026
dce8b93
Merge pull request #298894 from microsoft/joh/source-map-fixes
jrieken Mar 3, 2026
1b92648
- remember draft state in new chat (#298983)
sandy081 Mar 3, 2026
0cd1cc4
Merge pull request #296674 from microsoft/copilot/remove-gray-backgro…
mrleemurray Mar 3, 2026
ff7ffa5
sessions - improve session hover title rendering and persistence (#29…
bpasero Mar 3, 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
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,17 @@ updates:
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
allow:
- dependency-name: "@vscode/component-explorer"
- dependency-name: "@vscode/component-explorer-cli"
- package-ecosystem: "npm"
directory: "/build/vite"
schedule:
interval: "daily"
allow:
- dependency-name: "@vscode/component-explorer"
- dependency-name: "@vscode/component-explorer-vite-plugin"
16 changes: 14 additions & 2 deletions .github/hooks/hooks.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@
"sessionStart": [
{
"type": "command",
"bash": "if [ -f ~/.vscode-worktree-setup ]; then nohup npm ci > /tmp/npm-ci-$(date +%Y-%m-%d_%H-%M-%S).log 2>&1 & fi"
"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"
}
],
"sessionEnd": [
{
"type": "command",
"bash": ""
}
],
"agentStop": [
{
"type": "command",
"bash": ""
}
],
"userPromptSubmitted": [
Expand All @@ -26,4 +38,4 @@
}
]
}
}
}
2 changes: 1 addition & 1 deletion .github/skills/component-fixtures/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ src/vs/workbench/test/browser/componentFixtures/
```typescript
import { ComponentFixtureContext, createEditorServices, defineComponentFixture, defineThemedFixtureGroup } from './fixtureUtils.js';

export default defineThemedFixtureGroup({
export default defineThemedFixtureGroup({ path: 'myFeature/' }, {
Default: defineComponentFixture({ render: renderMyComponent }),
AnotherVariant: defineComponentFixture({ render: renderMyComponent }),
});
Expand Down
13 changes: 13 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,19 @@
"inSessions": true,
"problemMatcher": []
},
{
"label": "Run and Compile Dev Sessions",
"type": "shell",
"command": "npm run transpile-client && ./scripts/code.sh",
"windows": {
"command": "npm run transpile-client && .\\scripts\\code.bat"
},
"args": [
"--sessions"
],
"inSessions": true,
"problemMatcher": []
},
{
"type": "npm",
"script": "electron",
Expand Down
5 changes: 3 additions & 2 deletions build/darwin/dmg-settings.py.template
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ format = 'ULMO'
badge_icon = {{BADGE_ICON}}
background = {{BACKGROUND}}

# Volume size (None = auto-calculate)
size = None
# Volume size
size = '1g'
shrink = False

# Files and symlinks
files = [{{APP_PATH}}]
Expand Down
23 changes: 20 additions & 3 deletions build/gulpfile.vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,9 @@ function runTsGoTypeCheck(): Promise<void> {
}

const sourceMappingURLBase = `https://main.vscode-cdn.net/sourcemaps/${commit}`;
const isCI = !!process.env['CI'] || !!process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] || !!process.env['GITHUB_WORKSPACE'];
const useCdnSourceMapsForPackagingTasks = isCI;
const stripSourceMapsInPackagingTasks = isCI;
const minifyVSCodeTask = task.define('minify-vscode', task.series(
bundleVSCodeTask,
util.rimraf('out-vscode-min'),
Expand Down Expand Up @@ -349,8 +352,11 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d

const extensions = gulp.src(['.build/extensions/**', ...platformSpecificBuiltInExtensionsExclusions], { base: '.build', dot: true });

const sourceFilterPattern = stripSourceMapsInPackagingTasks
? ['**', '!**/*.{js,css}.map']
: ['**'];
const sources = es.merge(src, extensions)
.pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true }));
.pipe(filter(sourceFilterPattern, { dot: true }));

let version = packageJson.version;
const quality = (product as { quality?: string }).quality;
Expand Down Expand Up @@ -420,8 +426,13 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
const productionDependencies = getProductionDependencies(root);
const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat().concat('!**/*.mk');

const depFilterPattern = ['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock'];
if (stripSourceMapsInPackagingTasks) {
depFilterPattern.push('!**/*.{js,css}.map');
}

const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
.pipe(filter(['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.{js,css}.map']))
.pipe(filter(depFilterPattern))
.pipe(util.cleanNodeModules(path.join(import.meta.dirname, '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(import.meta.dirname, `.moduleignore.${process.platform}`)))
.pipe(jsFilter)
Expand Down Expand Up @@ -701,7 +712,13 @@ BUILD_TARGETS.forEach(buildTarget => {
if (useEsbuildTranspile) {
const esbuildBundleTask = task.define(
`esbuild-bundle${dashed(platform)}${dashed(arch)}${dashed(minified)}`,
() => runEsbuildBundle(sourceFolderName, !!minified, true, 'desktop', minified ? `${sourceMappingURLBase}/core` : undefined)
() => runEsbuildBundle(
sourceFolderName,
!!minified,
true,
'desktop',
minified && useCdnSourceMapsForPackagingTasks ? `${sourceMappingURLBase}/core` : undefined
)
);
vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
copyCodiconsTask,
Expand Down
8 changes: 6 additions & 2 deletions build/gulpfile.vscode.web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const quality = (product as { quality?: string }).quality;
const version = (quality && quality !== 'stable') ? `${packageJson.version}-${quality}` : packageJson.version;

// esbuild-based bundle for standalone web
function runEsbuildBundle(outDir: string, minify: boolean, nls: boolean): Promise<void> {
function runEsbuildBundle(outDir: string, minify: boolean, nls: boolean, sourceMapBaseUrl?: string): Promise<void> {
return new Promise((resolve, reject) => {
const scriptPath = path.join(REPO_ROOT, 'build/next/index.ts');
const args = [scriptPath, 'bundle', '--out', outDir, '--target', 'web'];
Expand All @@ -44,6 +44,9 @@ function runEsbuildBundle(outDir: string, minify: boolean, nls: boolean): Promis
if (nls) {
args.push('--nls');
}
if (sourceMapBaseUrl) {
args.push('--source-map-base-url', sourceMapBaseUrl);
}

const proc = cp.spawn(process.execPath, args, {
cwd: REPO_ROOT,
Expand Down Expand Up @@ -164,8 +167,9 @@ const minifyVSCodeWebTask = task.define('minify-vscode-web-OLD', task.series(
gulp.task(minifyVSCodeWebTask);

// esbuild-based tasks (new)
const sourceMappingURLBase = `https://main.vscode-cdn.net/sourcemaps/${commit}`;
const esbuildBundleVSCodeWebTask = task.define('esbuild-vscode-web', () => runEsbuildBundle('out-vscode-web', false, true));
const esbuildBundleVSCodeWebMinTask = task.define('esbuild-vscode-web-min', () => runEsbuildBundle('out-vscode-web-min', true, true));
const esbuildBundleVSCodeWebMinTask = task.define('esbuild-vscode-web-min', () => runEsbuildBundle('out-vscode-web-min', true, true, `${sourceMappingURLBase}/core`));

function packageTask(sourceFolderName: string, destinationFolderName: string) {
const destination = path.join(BUILD_ROOT, destinationFolderName);
Expand Down
8 changes: 8 additions & 0 deletions build/lib/stylelint/vscode-known-variables.json
Original file line number Diff line number Diff line change
Expand Up @@ -971,6 +971,14 @@
"--vscode-repl-line-height",
"--vscode-sash-hover-size",
"--vscode-sash-size",
"--vscode-shadow-active-tab",
"--vscode-shadow-depth-x",
"--vscode-shadow-depth-y",
"--vscode-shadow-hover",
"--vscode-shadow-lg",
"--vscode-shadow-md",
"--vscode-shadow-sm",
"--vscode-shadow-xl",
"--vscode-testing-coverage-lineHeight",
"--vscode-editorStickyScroll-scrollableWidth",
"--vscode-editorStickyScroll-foldingOpacityTransition",
Expand Down
47 changes: 36 additions & 11 deletions build/next/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -897,6 +897,13 @@ ${tslib}`,
const mangleStats: { file: string; result: ConvertPrivateFieldsResult }[] = [];
// Map from JS file path to pre-mangle content + edits, for source map adjustment
const mangleEdits = new Map<string, { preMangleCode: string; edits: readonly import('./private-to-property.ts').TextEdit[] }>();
// Map from JS file path to pre-NLS content + edits, for source map adjustment
const nlsEdits = new Map<string, { preNLSCode: string; edits: readonly import('./private-to-property.ts').TextEdit[] }>();
// Defer .map files until all .js files are processed, because esbuild may
// emit the .map file in a different build result than the .js file (e.g.
// code-split chunks), and we need the NLS/mangle edits from the .js pass
// to be available when adjusting the .map.
const deferredMaps: { path: string; text: string; contents: Uint8Array }[] = [];
for (const { result } of buildResults) {
if (!result.outputFiles) {
continue;
Expand Down Expand Up @@ -925,7 +932,12 @@ ${tslib}`,

// Apply NLS post-processing if enabled (JS only)
if (file.path.endsWith('.js') && doNls && indexMap.size > 0) {
content = postProcessNLS(content, indexMap, preserveEnglish);
const preNLSCode = content;
const nlsResult = postProcessNLS(content, indexMap, preserveEnglish);
content = nlsResult.code;
if (nlsResult.edits.length > 0) {
nlsEdits.set(file.path, { preNLSCode, edits: nlsResult.edits });
}
}

// Rewrite sourceMappingURL to CDN URL if configured
Expand All @@ -943,16 +955,8 @@ ${tslib}`,

await fs.promises.writeFile(file.path, content);
} else if (file.path.endsWith('.map')) {
// Source maps may need adjustment if private fields were mangled
const jsPath = file.path.replace(/\.map$/, '');
const editInfo = mangleEdits.get(jsPath);
if (editInfo) {
const mapJson = JSON.parse(file.text);
const adjusted = adjustSourceMap(mapJson, editInfo.preMangleCode, editInfo.edits);
await fs.promises.writeFile(file.path, JSON.stringify(adjusted));
} else {
await fs.promises.writeFile(file.path, file.contents);
}
// Defer .map processing until all .js files have been handled
deferredMaps.push({ path: file.path, text: file.text, contents: file.contents });
} else {
// Write other files (assets, etc.) as-is
await fs.promises.writeFile(file.path, file.contents);
Expand All @@ -961,6 +965,27 @@ ${tslib}`,
bundled++;
}

// Second pass: process deferred .map files now that all mangle/NLS edits
// have been collected from .js processing above.
for (const mapFile of deferredMaps) {
const jsPath = mapFile.path.replace(/\.map$/, '');
const mangle = mangleEdits.get(jsPath);
const nls = nlsEdits.get(jsPath);

if (mangle || nls) {
let mapJson = JSON.parse(mapFile.text);
if (mangle) {
mapJson = adjustSourceMap(mapJson, mangle.preMangleCode, mangle.edits);
}
if (nls) {
mapJson = adjustSourceMap(mapJson, nls.preNLSCode, nls.edits);
}
await fs.promises.writeFile(mapFile.path, JSON.stringify(mapJson));
} else {
await fs.promises.writeFile(mapFile.path, mapFile.contents);
}
}

// Log mangle-privates stats
if (doManglePrivates && mangleStats.length > 0) {
let totalClasses = 0, totalFields = 0, totalEdits = 0, totalElapsed = 0;
Expand Down
Loading
Loading