Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2ef6933
Move continue chat in into agent type picker
benibenj Jan 19, 2026
a2ad5ac
agent sessions - introduce experiments and adopt for projection & sta…
bpasero Jan 19, 2026
6ba7b2e
Chat: Fix excessive top padding in request bubble when user replies w…
Copilot Jan 19, 2026
08132f0
remote cli: do not open files with openExternal (#288856)
aeschli Jan 19, 2026
0971437
Background - fix viewing changes action in working set (#288845)
lszomoru Jan 19, 2026
6704466
Merge pull request #288850 from microsoft/benibenj/free-tortoise
benibenj Jan 19, 2026
9a0734e
Remove chat_enabled flag
benibenj Jan 19, 2026
4547b4a
Add ChatContextUsageWidget to display token usage in chat input
mrleemurray Jan 19, 2026
e5c481e
do not set policy data if not fetched (#288866)
sandy081 Jan 19, 2026
de60e8a
Merge pull request #288863 from microsoft/benibenj/elaborate-mastodon
benibenj Jan 19, 2026
a81e20f
Enhance ChatContextUsageWidget with hover display and token usage upd…
mrleemurray Jan 19, 2026
c0828d0
Add suspend/resume telemetry for reliability insights
chrmarti Jan 19, 2026
6543b51
feat: enabled windows version update for stable (#288126)
deepak1556 Jan 19, 2026
27c0d63
Refactor ChatContextUsageWidget to improve token usage display and en…
mrleemurray Jan 19, 2026
ecb744f
Remove unused hover separator from ChatContextUsageWidget styles
mrleemurray Jan 19, 2026
e9f7917
Add tooltip to chat context item (#288418)
alexr00 Jan 19, 2026
658baa7
Refactor token counting in ChatContextUsageWidget for improved perfor…
mrleemurray Jan 19, 2026
986be4e
Don't persist extension contributed chat contexts across reload (#288…
Copilot Jan 19, 2026
e2b039a
Refactor token counting in ChatContextUsageWidget to include image an…
mrleemurray Jan 19, 2026
6aa8209
chat - end the log spam when reading from disk (#288877)
bpasero Jan 19, 2026
99d227e
agents - fix regression with projection not applying when opening ses…
bpasero Jan 19, 2026
afea1bf
Log error for invalid chatContext icon format instead of silently ign…
Copilot Jan 19, 2026
b2795bd
Add `Collapse All` action to SCM view pane (#285407)
dmitrivMS Jan 19, 2026
0fb4f77
allow agents to define which subagents can be used (#288902)
aeschli Jan 19, 2026
38e15e9
chat - indicate running session in view badge (#283051) (#288905)
bpasero Jan 19, 2026
2882d8f
Engineering - release the build that is being triggered at 19:00 (#28…
lszomoru Jan 19, 2026
05e7063
fix review comments (#288913)
aeschli Jan 19, 2026
28fb9be
Enhance ChatContextUsageWidget with additional token tracking and imp…
mrleemurray Jan 19, 2026
d331d50
See more -> Show pull request (#288916)
alexr00 Jan 19, 2026
7d2e826
Merge pull request #288921 from microsoft/mrleemurray/usage-indicator
mrleemurray Jan 19, 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
2 changes: 0 additions & 2 deletions .github/CODENOTIFY
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ src/vs/base/common/path.ts @bpasero
src/vs/base/common/stream.ts @bpasero
src/vs/base/common/uri.ts @jrieken
src/vs/base/browser/domSanitize.ts @mjbvz
src/vs/base/browser/** @bpasero
src/vs/base/node/pfs.ts @bpasero
src/vs/base/node/unc.ts @bpasero
src/vs/base/parts/contextmenu/** @bpasero
Expand Down Expand Up @@ -110,7 +109,6 @@ src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css @bpasero
src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css @bpasero
src/vs/workbench/contrib/chat/browser/agentSessions/** @bpasero
src/vs/workbench/contrib/chat/browser/chatSessions/** @bpasero
src/vs/workbench/contrib/localization/** @TylerLeonhardt
src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts @TylerLeonhardt
src/vs/workbench/contrib/scm/** @lszomoru
Expand Down
5 changes: 5 additions & 0 deletions build/azure-pipelines/product-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ schedules:
branches:
include:
- main
- cron: "0 17 * * Mon-Fri"
displayName: Mon-Fri at 19:00
branches:
include:
- main

trigger:
batch: true
Expand Down
20 changes: 7 additions & 13 deletions build/gulpfile.vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ const glob = promisify(globCallback);
const rcedit = promisify(rceditCallback);
const root = path.dirname(import.meta.dirname);
const commit = getVersion(root);
const versionedResourcesFolder = (product as typeof product & { quality?: string })?.quality === 'insider' ? commit!.substring(0, 10) : '';
const useVersionedUpdate = process.platform === 'win32' && (product as typeof product & { win32VersionedUpdate?: boolean })?.win32VersionedUpdate;
const versionedResourcesFolder = useVersionedUpdate ? commit!.substring(0, 10) : '';

// Build
const vscodeEntryPoints = [
Expand Down Expand Up @@ -321,7 +322,6 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
deps
);

let customElectronConfig = {};
if (platform === 'win32') {
all = es.merge(all, gulp.src([
'resources/win32/bower.ico',
Expand Down Expand Up @@ -354,12 +354,6 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
'resources/win32/code_70x70.png',
'resources/win32/code_150x150.png'
], { base: '.' }));
if (quality && quality === 'insider') {
customElectronConfig = {
createVersionedResources: true,
productVersionString: `${versionedResourcesFolder}`,
};
}
} else if (platform === 'linux') {
const policyDest = gulp.src('.build/policies/linux/**', { base: '.build/policies/linux' })
.pipe(rename(f => f.dirname = `policies/${f.dirname}`));
Expand All @@ -377,7 +371,7 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions())
.pipe(filter(['**', '!**/.github/**'], { dot: true })) // https://github.com/microsoft/vscode/issues/116523
.pipe(electron({ ...config, platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: false, ...customElectronConfig }))
.pipe(electron({ ...config, platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: false }))
.pipe(filter(['**', '!LICENSE', '!version'], { dot: true }));

if (platform === 'linux') {
Expand All @@ -393,21 +387,21 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
if (platform === 'win32') {
result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32', allowEmpty: true }));

if (quality && quality === 'insider') {
result = es.merge(result, gulp.src('resources/win32/insider/bin/code.cmd', { base: 'resources/win32/insider' })
if (useVersionedUpdate) {
result = es.merge(result, gulp.src('resources/win32/versioned/bin/code.cmd', { base: 'resources/win32/versioned' })
.pipe(replace('@@NAME@@', product.nameShort))
.pipe(replace('@@VERSIONFOLDER@@', versionedResourcesFolder))
.pipe(rename(function (f) { f.basename = product.applicationName; })));

result = es.merge(result, gulp.src('resources/win32/insider/bin/code.sh', { base: 'resources/win32/insider' })
result = es.merge(result, gulp.src('resources/win32/versioned/bin/code.sh', { base: 'resources/win32/versioned' })
.pipe(replace('@@NAME@@', product.nameShort))
.pipe(replace('@@PRODNAME@@', product.nameLong))
.pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', String(commit)))
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(replace('@@VERSIONFOLDER@@', versionedResourcesFolder))
.pipe(replace('@@SERVERDATAFOLDER@@', product.serverDataFolderName || '.vscode-remote'))
.pipe(replace('@@QUALITY@@', quality))
.pipe(replace('@@QUALITY@@', quality!))
.pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; })));
} else {
result = es.merge(result, gulp.src('resources/win32/bin/code.cmd', { base: 'resources/win32' })
Expand Down
9 changes: 3 additions & 6 deletions build/gulpfile.vscode.win32.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,9 @@ function buildWin32Setup(arch: string, target: string): task.CallbackTask {
fs.mkdirSync(outputPath, { recursive: true });

const quality = (product as typeof product & { quality?: string }).quality || 'dev';
let versionedResourcesFolder = '';
let issPath = path.join(import.meta.dirname, 'win32', 'code.iss');
if (quality && quality === 'insider') {
versionedResourcesFolder = commit!.substring(0, 10);
issPath = path.join(import.meta.dirname, 'win32', 'code-insider.iss');
}
const useVersionedUpdate = (product as typeof product & { win32VersionedUpdate?: boolean })?.win32VersionedUpdate;
const versionedResourcesFolder = useVersionedUpdate ? commit!.substring(0, 10) : '';
const issPath = path.join(import.meta.dirname, 'win32', 'code.iss');
const originalProductJsonPath = path.join(sourcePath, versionedResourcesFolder, 'resources/app/product.json');
const productJsonPath = path.join(outputPath, 'product.json');
const productJson = JSON.parse(fs.readFileSync(originalProductJsonPath, 'utf8'));
Expand Down
6 changes: 5 additions & 1 deletion build/lib/electron.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ function isDocumentSuffix(str?: string): str is DarwinDocumentSuffix {
const root = path.dirname(path.dirname(import.meta.dirname));
const product = JSON.parse(fs.readFileSync(path.join(root, 'product.json'), 'utf8'));
const commit = getVersion(root);
const useVersionedUpdate = process.platform === 'win32' && (product as typeof product & { win32VersionedUpdate?: boolean })?.win32VersionedUpdate;
const versionedResourcesFolder = useVersionedUpdate ? commit!.substring(0, 10) : '';

function createTemplate(input: string): (params: Record<string, string>) => string {
return (params: Record<string, string>) => {
Expand Down Expand Up @@ -203,6 +205,8 @@ export const config = {
repo: product.electronRepository || undefined,
validateChecksum: true,
checksumFile: path.join(root, 'build', 'checksums', 'electron.txt'),
createVersionedResources: useVersionedUpdate,
productVersionString: versionedResourcesFolder,
};

function getElectron(arch: string): () => NodeJS.ReadWriteStream {
Expand All @@ -226,7 +230,7 @@ function getElectron(arch: string): () => NodeJS.ReadWriteStream {
async function main(arch: string = process.arch): Promise<void> {
const version = electronVersion;
const electronPath = path.join(root, '.build', 'electron');
const versionFile = path.join(electronPath, 'version');
const versionFile = path.join(electronPath, versionedResourcesFolder, 'version');
const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;

if (!isUpToDate) {
Expand Down
Loading
Loading