From f97750305efd940ef0606c3e3e71e0ab9c55e5ac Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Wed, 9 Sep 2026 11:55:01 -0700 Subject: [PATCH 1/7] sessions: add Agents Window taskbar shortcut Add an Agents Window task to the Windows jump list using the existing --agents launch mode and branded icon.\n\nRefs #335321 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build/gulpfile.vscode.ts | 1 + resources/win32/agents.ico | Bin 0 -> 40511 bytes .../workspacesHistoryMainService.ts | 10 ++++++++++ 3 files changed, 11 insertions(+) create mode 100644 resources/win32/agents.ico diff --git a/build/gulpfile.vscode.ts b/build/gulpfile.vscode.ts index ac122c3794028..e3acdc2da2b56 100644 --- a/build/gulpfile.vscode.ts +++ b/build/gulpfile.vscode.ts @@ -454,6 +454,7 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d if (platform === 'win32') { all = es.merge(all, gulp.src([ + 'resources/win32/agents.ico', 'resources/win32/bower.ico', 'resources/win32/c.ico', 'resources/win32/code.ico', diff --git a/resources/win32/agents.ico b/resources/win32/agents.ico new file mode 100644 index 0000000000000000000000000000000000000000..791ed72afc7bcc5931c867c8ee9126a14e58e87a GIT binary patch literal 40511 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⁡kT*Q{nP$cU;lIO?2M7@ZZ{ug(f ziW)qh=ixN+wQx5jFkHp9RelCT4kj!1KFM7^D3`d>4hMR?aGwMk&OoxDnOqtRxGGF`5LK~@$P%HxwSqY+gq?zc7C2=tfabp zkNJn6{Z%(6pedq=SYH&O9gm+Fp>y-Zz1uU7 z4p+ZyaWF*>M$=AalWOw5*B~Bjz1e$!C;#!Dyr0;ow5O>$gWr<&3;QBGRiUTkVcfNG zRDz<^_OMySTTwf1b3BK`iVwSvL5Xzg z7aKVkt`N6pdg(?6)-htyYt778wScQyxxa>uUTgSah%0zkreg|d|6Sh1z-#*@f~60( zEYmSl76)h_uwTSJrw&&bUN4!Rb*1ZseUhu7;V;q8aflr^dI@$;(4w`{X(x@NjefN+ z;YGBok9U|0<}j-<&uiW5Z?GvFhOZ%Objzmg=s1VN;qMfR$Ih1yW=ga<1)oAYmeKb1 z6r@PnQ)ihrvPv?J(z4jJObf})lY`F>t>Q}wI&ReZuP!!IwIIw?+)wRzX=Te&BKiw1 zdCPaXY6%!9h>rZ_>*Y4S@z2-xcfT?%3vvpA;5pHHgnp(;T6k8VU!G!C_560ZbZWuB zYXx-5ye*-7ju&N{l@6aZ)2+UT2GWdfw|{Hg5? zf$xhRKQ9)5Ayt+0>g=1u@@ZjhZV>f@h9chGFZ=pvr7__1i5X6@3v=aqG#tEI#y94R5kW~!nN1d_H6 z?h~`5vqse9uaxKX-Rhax8@hX@WaJ8MsN47iNj%n|!nU;%DzD^6+se>*UTfp~|4FZ6 p(Ek Date: Wed, 9 Sep 2026 21:34:05 -0700 Subject: [PATCH 2/7] sessions: use Agents icon for Agents Window Give the Windows taskbar button the same visual identity as the jump-list task. Refs #335321 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/vs/platform/windows/electron-main/windowImpl.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 5904f68759d69..232a36728ec92 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -10,6 +10,7 @@ import { toErrorMessage } from '../../../base/common/errorMessage.js'; import { Emitter, Event } from '../../../base/common/event.js'; import { Disposable, DisposableStore, IDisposable, MutableDisposable, toDisposable } from '../../../base/common/lifecycle.js'; import { FileAccess, Schemas } from '../../../base/common/network.js'; +import { join } from '../../../base/common/path.js'; import { getMarks, mark } from '../../../base/common/performance.js'; import { isTahoeOrNewer, isLinux, isMacintosh, isWindows } from '../../../base/common/platform.js'; import { URI } from '../../../base/common/uri.js'; @@ -777,6 +778,9 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { } const options = instantiationService.invokeFunction(defaultBrowserWindowOptions, this.windowState, undefined, webPreferences); + if (config.isSessionsWindow && isWindows) { + options.icon = join(this.environmentMainService.appRoot, 'resources/win32/agents.ico'); + } // Create the browser window mark('code/willCreateCodeBrowserWindow'); From 3731f4f8d44eea2ba230b6531c98810524b858b8 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Wed, 9 Sep 2026 21:41:14 -0700 Subject: [PATCH 3/7] sessions: show Agents icon in window picker Use the branded Agents icon for Agents Window entries while preserving existing file and workspace icons for other windows. Fixes #315734 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../workbench/electron-browser/actions/windowActions.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts index 7cabd5de204f1..12d337aad7e32 100644 --- a/src/vs/workbench/electron-browser/actions/windowActions.ts +++ b/src/vs/workbench/electron-browser/actions/windowActions.ts @@ -27,11 +27,14 @@ import { Categories } from '../../../platform/action/common/actionCommonCategori import { KeyCode, KeyMod } from '../../../base/common/keyCodes.js'; import { KeybindingWeight } from '../../../platform/keybinding/common/keybindingsRegistry.js'; import { isMacintosh } from '../../../base/common/platform.js'; +import { FileAccess } from '../../../base/common/network.js'; import { getActiveWindow } from '../../../base/browser/dom.js'; import { IOpenedAuxiliaryWindow, IOpenedMainWindow, isOpenedAuxiliaryWindow } from '../../../platform/window/common/window.js'; import { IsAuxiliaryWindowContext, IsAuxiliaryWindowFocusedContext, IsWindowAlwaysOnTopContext } from '../../common/contextkeys.js'; import { isAuxiliaryWindow, mainWindow } from '../../../base/browser/window.js'; import { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js'; +import { IWorkbenchEnvironmentService } from '../../services/environment/common/environmentService.js'; +import { isEqual } from '../../../base/common/resources.js'; export class CloseWindowAction extends Action2 { @@ -257,6 +260,7 @@ abstract class BaseSwitchWindow extends Action2 { const modelService = accessor.get(IModelService); const languageService = accessor.get(ILanguageService); const nativeHostService = accessor.get(INativeHostService); + const environmentService = accessor.get(IWorkbenchEnvironmentService); const currentWindowId = getActiveWindow().vscodeWindowId; @@ -296,11 +300,13 @@ abstract class BaseSwitchWindow extends Action2 { const resource = window.filename ? URI.file(window.filename) : isSingleFolderWorkspaceIdentifier(window.workspace) ? window.workspace.uri : isWorkspaceIdentifier(window.workspace) ? window.workspace.configPath : undefined; const fileKind = window.filename ? FileKind.FILE : isSingleFolderWorkspaceIdentifier(window.workspace) ? FileKind.FOLDER : isWorkspaceIdentifier(window.workspace) ? FileKind.ROOT_FOLDER : FileKind.FILE; + const isAgentsWindow = isWorkspaceIdentifier(window.workspace) && isEqual(window.workspace.configPath, environmentService.agentSessionsWorkspace); const pick: IWindowPickItem = { windowId: window.id, label: window.title, ariaLabel: window.dirty ? localize('windowDirtyAriaLabel', "{0}, window with unsaved changes", window.title) : window.title, - iconClasses: getIconClasses(modelService, languageService, resource, fileKind), + iconPath: isAgentsWindow ? { dark: FileAccess.asBrowserUri('vs/sessions/browser/media/sessions-icon.svg') } : undefined, + iconClasses: isAgentsWindow ? undefined : getIconClasses(modelService, languageService, resource, fileKind), description: (currentWindowId === window.id) ? localize('current', "Current Window") : undefined, buttons: window.dirty ? [this.closeDirtyWindowAction] : currentWindowId === window.id ? [this.closeActiveWindowAction] : [this.closeWindowAction] }; From e920a9727cc1e2aab9ea8475a8020a211b6f7749 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Thu, 10 Sep 2026 00:09:47 -0700 Subject: [PATCH 4/7] sessions: fix Agents window icon branding Carry the authoritative Agents window flag into the window picker instead of comparing incompatible native and renderer workspace URI schemes. Reuse the distro-mixed sessions.ico path so native Windows icons match each product quality. Fixes #315734 Refs #335321 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build/gulpfile.vscode.ts | 2 +- resources/win32/{agents.ico => sessions.ico} | Bin .../native/electron-main/nativeHostMainService.ts | 3 ++- src/vs/platform/window/common/window.ts | 1 + src/vs/platform/windows/electron-main/windowImpl.ts | 2 +- .../electron-main/workspacesHistoryMainService.ts | 2 +- .../test/electron-browser/vscodeActions.test.ts | 1 + .../electron-browser/actions/windowActions.ts | 8 ++------ .../services/host/browser/browserHostService.ts | 3 ++- 9 files changed, 11 insertions(+), 11 deletions(-) rename resources/win32/{agents.ico => sessions.ico} (100%) diff --git a/build/gulpfile.vscode.ts b/build/gulpfile.vscode.ts index e3acdc2da2b56..43cf08bbaa3ef 100644 --- a/build/gulpfile.vscode.ts +++ b/build/gulpfile.vscode.ts @@ -454,7 +454,6 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d if (platform === 'win32') { all = es.merge(all, gulp.src([ - 'resources/win32/agents.ico', 'resources/win32/bower.ico', 'resources/win32/c.ico', 'resources/win32/code.ico', @@ -477,6 +476,7 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d 'resources/win32/react.ico', 'resources/win32/ruby.ico', 'resources/win32/sass.ico', + 'resources/win32/sessions.ico', 'resources/win32/shell.ico', 'resources/win32/sql.ico', 'resources/win32/typescript.ico', diff --git a/resources/win32/agents.ico b/resources/win32/sessions.ico similarity index 100% rename from resources/win32/agents.ico rename to resources/win32/sessions.ico diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts index b1fb89e25a3ac..8d0e88196b597 100644 --- a/src/vs/platform/native/electron-main/nativeHostMainService.ts +++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts @@ -219,7 +219,8 @@ export class NativeHostMainService extends Disposable implements INativeHostMain workspace: window.openedWorkspace ?? toWorkspaceIdentifier(window.backupPath, window.isExtensionDevelopmentHost), title: window.win?.getTitle() ?? '', filename: window.getRepresentedFilename(), - dirty: window.isDocumentEdited() + dirty: window.isDocumentEdited(), + isSessionsWindow: window.config?.isSessionsWindow === true })); const auxiliaryWindows = []; diff --git a/src/vs/platform/window/common/window.ts b/src/vs/platform/window/common/window.ts index 357bf62d065e6..e45a63afd6988 100644 --- a/src/vs/platform/window/common/window.ts +++ b/src/vs/platform/window/common/window.ts @@ -92,6 +92,7 @@ interface IOpenedWindow { export interface IOpenedMainWindow extends IOpenedWindow { readonly workspace?: IAnyWorkspaceIdentifier; readonly dirty: boolean; + readonly isSessionsWindow: boolean; } export interface IOpenedAuxiliaryWindow extends IOpenedWindow { diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 232a36728ec92..405e3cae7f8af 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -779,7 +779,7 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { const options = instantiationService.invokeFunction(defaultBrowserWindowOptions, this.windowState, undefined, webPreferences); if (config.isSessionsWindow && isWindows) { - options.icon = join(this.environmentMainService.appRoot, 'resources/win32/agents.ico'); + options.icon = join(this.environmentMainService.appRoot, 'resources/win32/sessions.ico'); } // Create the browser window diff --git a/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts b/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts index 3a5166969c487..57508f30f8ab1 100644 --- a/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts +++ b/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts @@ -393,7 +393,7 @@ export class WorkspacesHistoryMainService extends Disposable implements IWorkspa description: localize('openAgentsWindowDesc', "Opens the Agents Window"), program: process.execPath, args: '--agents', - iconPath: join(this.environmentMainService.appRoot, 'resources/win32/agents.ico'), + iconPath: join(this.environmentMainService.appRoot, 'resources/win32/sessions.ico'), iconIndex: 0 } ] diff --git a/src/vs/sessions/test/electron-browser/vscodeActions.test.ts b/src/vs/sessions/test/electron-browser/vscodeActions.test.ts index 10267fdeb4334..257570b701745 100644 --- a/src/vs/sessions/test/electron-browser/vscodeActions.test.ts +++ b/src/vs/sessions/test/electron-browser/vscodeActions.test.ts @@ -70,6 +70,7 @@ function createWindow(id: number): IOpenedMainWindow { id, title: `Window ${id}`, dirty: false, + isSessionsWindow: false, }; } diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts index 12d337aad7e32..9cebaaef80db4 100644 --- a/src/vs/workbench/electron-browser/actions/windowActions.ts +++ b/src/vs/workbench/electron-browser/actions/windowActions.ts @@ -33,8 +33,6 @@ import { IOpenedAuxiliaryWindow, IOpenedMainWindow, isOpenedAuxiliaryWindow } fr import { IsAuxiliaryWindowContext, IsAuxiliaryWindowFocusedContext, IsWindowAlwaysOnTopContext } from '../../common/contextkeys.js'; import { isAuxiliaryWindow, mainWindow } from '../../../base/browser/window.js'; import { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js'; -import { IWorkbenchEnvironmentService } from '../../services/environment/common/environmentService.js'; -import { isEqual } from '../../../base/common/resources.js'; export class CloseWindowAction extends Action2 { @@ -260,7 +258,6 @@ abstract class BaseSwitchWindow extends Action2 { const modelService = accessor.get(IModelService); const languageService = accessor.get(ILanguageService); const nativeHostService = accessor.get(INativeHostService); - const environmentService = accessor.get(IWorkbenchEnvironmentService); const currentWindowId = getActiveWindow().vscodeWindowId; @@ -300,13 +297,12 @@ abstract class BaseSwitchWindow extends Action2 { const resource = window.filename ? URI.file(window.filename) : isSingleFolderWorkspaceIdentifier(window.workspace) ? window.workspace.uri : isWorkspaceIdentifier(window.workspace) ? window.workspace.configPath : undefined; const fileKind = window.filename ? FileKind.FILE : isSingleFolderWorkspaceIdentifier(window.workspace) ? FileKind.FOLDER : isWorkspaceIdentifier(window.workspace) ? FileKind.ROOT_FOLDER : FileKind.FILE; - const isAgentsWindow = isWorkspaceIdentifier(window.workspace) && isEqual(window.workspace.configPath, environmentService.agentSessionsWorkspace); const pick: IWindowPickItem = { windowId: window.id, label: window.title, ariaLabel: window.dirty ? localize('windowDirtyAriaLabel', "{0}, window with unsaved changes", window.title) : window.title, - iconPath: isAgentsWindow ? { dark: FileAccess.asBrowserUri('vs/sessions/browser/media/sessions-icon.svg') } : undefined, - iconClasses: isAgentsWindow ? undefined : getIconClasses(modelService, languageService, resource, fileKind), + iconPath: window.isSessionsWindow ? { dark: FileAccess.asBrowserUri('vs/sessions/browser/media/sessions-icon.svg') } : undefined, + iconClasses: window.isSessionsWindow ? undefined : getIconClasses(modelService, languageService, resource, fileKind), description: (currentWindowId === window.id) ? localize('current', "Current Window") : undefined, buttons: window.dirty ? [this.closeDirtyWindowAction] : currentWindowId === window.id ? [this.closeActiveWindowAction] : [this.closeWindowAction] }; diff --git a/src/vs/workbench/services/host/browser/browserHostService.ts b/src/vs/workbench/services/host/browser/browserHostService.ts index 3815713423ed8..2ed8f93e6cafd 100644 --- a/src/vs/workbench/services/host/browser/browserHostService.ts +++ b/src/vs/workbench/services/host/browser/browserHostService.ts @@ -596,7 +596,8 @@ export class BrowserHostService extends Disposable implements IHostService { id: activeWindowId, title: activeWindow.document.title, workspace: toWorkspaceIdentifier(this.contextService.getWorkspace()), - dirty: false + dirty: false, + isSessionsWindow: this.environmentService.isSessionsWindow }]; // Auxiliary windows From 0fd8124f4ef1f205ce9a88812bc5e328e5a7fcc8 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Thu, 10 Sep 2026 01:52:07 -0700 Subject: [PATCH 5/7] window: expose native icon in window picker Carry the BrowserWindow icon path through opened-window metadata so Switch Window can render it without depending on Sessions-owned assets. Fixes #315734 Refs #315935 #335321 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../platform/native/electron-main/nativeHostMainService.ts | 2 +- src/vs/platform/window/common/window.ts | 2 +- src/vs/platform/window/electron-main/window.ts | 3 +++ src/vs/platform/windows/electron-main/windowImpl.ts | 4 ++++ .../windows/test/electron-main/windowsFinder.test.ts | 1 + src/vs/sessions/test/electron-browser/vscodeActions.test.ts | 1 - src/vs/workbench/electron-browser/actions/windowActions.ts | 5 ++--- src/vs/workbench/services/host/browser/browserHostService.ts | 3 +-- 8 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts index 8d0e88196b597..8ce5c511ce030 100644 --- a/src/vs/platform/native/electron-main/nativeHostMainService.ts +++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts @@ -220,7 +220,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain title: window.win?.getTitle() ?? '', filename: window.getRepresentedFilename(), dirty: window.isDocumentEdited(), - isSessionsWindow: window.config?.isSessionsWindow === true + iconPath: window.iconPath })); const auxiliaryWindows = []; diff --git a/src/vs/platform/window/common/window.ts b/src/vs/platform/window/common/window.ts index e45a63afd6988..d2dc38e615d08 100644 --- a/src/vs/platform/window/common/window.ts +++ b/src/vs/platform/window/common/window.ts @@ -92,7 +92,7 @@ interface IOpenedWindow { export interface IOpenedMainWindow extends IOpenedWindow { readonly workspace?: IAnyWorkspaceIdentifier; readonly dirty: boolean; - readonly isSessionsWindow: boolean; + readonly iconPath?: URI; } export interface IOpenedAuxiliaryWindow extends IOpenedWindow { diff --git a/src/vs/platform/window/electron-main/window.ts b/src/vs/platform/window/electron-main/window.ts index fe369ee4da2cc..ccf4b58c522ba 100644 --- a/src/vs/platform/window/electron-main/window.ts +++ b/src/vs/platform/window/electron-main/window.ts @@ -7,6 +7,7 @@ import electron from 'electron'; import { CancellationToken } from '../../../base/common/cancellation.js'; import { Event } from '../../../base/common/event.js'; import { IDisposable } from '../../../base/common/lifecycle.js'; +import { URI } from '../../../base/common/uri.js'; import { ISerializableCommandAction } from '../../action/common/action.js'; import { NativeParsedArgs } from '../../environment/common/argv.js'; import { FocusMode, IApplicationBadge } from '../../native/common/native.js'; @@ -63,6 +64,8 @@ export interface ICodeWindow extends IBaseWindow { readonly remoteAuthority?: string; + readonly iconPath?: URI; + readonly isExtensionDevelopmentHost: boolean; readonly isExtensionTestHost: boolean; diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 405e3cae7f8af..06f3f0f6b4c26 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -702,6 +702,9 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { get remoteAuthority(): string | undefined { return this._config?.remoteAuthority; } + private readonly _iconPath: URI | undefined; + get iconPath(): URI | undefined { return this._iconPath; } + private _config: INativeWindowConfiguration | undefined; get config(): INativeWindowConfiguration | undefined { return this._config; } @@ -781,6 +784,7 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { if (config.isSessionsWindow && isWindows) { options.icon = join(this.environmentMainService.appRoot, 'resources/win32/sessions.ico'); } + this._iconPath = typeof options.icon === 'string' ? URI.file(options.icon) : undefined; // Create the browser window mark('code/willCreateCodeBrowserWindow'); diff --git a/src/vs/platform/windows/test/electron-main/windowsFinder.test.ts b/src/vs/platform/windows/test/electron-main/windowsFinder.test.ts index 85214ff775b89..476aa933a16ab 100644 --- a/src/vs/platform/windows/test/electron-main/windowsFinder.test.ts +++ b/src/vs/platform/windows/test/electron-main/windowsFinder.test.ts @@ -50,6 +50,7 @@ suite('WindowsFinder', () => { openedWorkspace = options.openedFolderUri ? { id: '', uri: options.openedFolderUri } : options.openedWorkspace; backupPath?: string | undefined; remoteAuthority?: string | undefined; + iconPath?: URI | undefined; isExtensionDevelopmentHost = false; isExtensionTestHost = false; lastFocusTime = options.lastFocusTime; diff --git a/src/vs/sessions/test/electron-browser/vscodeActions.test.ts b/src/vs/sessions/test/electron-browser/vscodeActions.test.ts index 257570b701745..10267fdeb4334 100644 --- a/src/vs/sessions/test/electron-browser/vscodeActions.test.ts +++ b/src/vs/sessions/test/electron-browser/vscodeActions.test.ts @@ -70,7 +70,6 @@ function createWindow(id: number): IOpenedMainWindow { id, title: `Window ${id}`, dirty: false, - isSessionsWindow: false, }; } diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts index 9cebaaef80db4..e2659d27dbc99 100644 --- a/src/vs/workbench/electron-browser/actions/windowActions.ts +++ b/src/vs/workbench/electron-browser/actions/windowActions.ts @@ -27,7 +27,6 @@ import { Categories } from '../../../platform/action/common/actionCommonCategori import { KeyCode, KeyMod } from '../../../base/common/keyCodes.js'; import { KeybindingWeight } from '../../../platform/keybinding/common/keybindingsRegistry.js'; import { isMacintosh } from '../../../base/common/platform.js'; -import { FileAccess } from '../../../base/common/network.js'; import { getActiveWindow } from '../../../base/browser/dom.js'; import { IOpenedAuxiliaryWindow, IOpenedMainWindow, isOpenedAuxiliaryWindow } from '../../../platform/window/common/window.js'; import { IsAuxiliaryWindowContext, IsAuxiliaryWindowFocusedContext, IsWindowAlwaysOnTopContext } from '../../common/contextkeys.js'; @@ -301,8 +300,8 @@ abstract class BaseSwitchWindow extends Action2 { windowId: window.id, label: window.title, ariaLabel: window.dirty ? localize('windowDirtyAriaLabel', "{0}, window with unsaved changes", window.title) : window.title, - iconPath: window.isSessionsWindow ? { dark: FileAccess.asBrowserUri('vs/sessions/browser/media/sessions-icon.svg') } : undefined, - iconClasses: window.isSessionsWindow ? undefined : getIconClasses(modelService, languageService, resource, fileKind), + iconPath: window.iconPath ? { dark: window.iconPath } : undefined, + iconClasses: window.iconPath ? undefined : getIconClasses(modelService, languageService, resource, fileKind), description: (currentWindowId === window.id) ? localize('current', "Current Window") : undefined, buttons: window.dirty ? [this.closeDirtyWindowAction] : currentWindowId === window.id ? [this.closeActiveWindowAction] : [this.closeWindowAction] }; diff --git a/src/vs/workbench/services/host/browser/browserHostService.ts b/src/vs/workbench/services/host/browser/browserHostService.ts index 2ed8f93e6cafd..3815713423ed8 100644 --- a/src/vs/workbench/services/host/browser/browserHostService.ts +++ b/src/vs/workbench/services/host/browser/browserHostService.ts @@ -596,8 +596,7 @@ export class BrowserHostService extends Disposable implements IHostService { id: activeWindowId, title: activeWindow.document.title, workspace: toWorkspaceIdentifier(this.contextService.getWorkspace()), - dirty: false, - isSessionsWindow: this.environmentService.isSessionsWindow + dirty: false }]; // Auxiliary windows From 0b497a30e957ec85896966fcc9915e8a65c30b5e Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Thu, 10 Sep 2026 11:58:20 -0700 Subject: [PATCH 6/7] sessions: hide Agents workspace from taskbar recents Keep the internal Agents workspace in shared recent history while omitting it from the Windows jump list now that a dedicated task is available. Refresh the CI-provided component fixture hashes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../electron-main/workspacesHistoryMainService.ts | 10 ++++++++-- test/componentFixtures/blocks-ci-screenshots.md | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts b/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts index 57508f30f8ab1..2339704fcb150 100644 --- a/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts +++ b/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService.ts @@ -373,6 +373,7 @@ export class WorkspacesHistoryMainService extends Disposable implements IWorkspa } const jumpList: JumpListCategory[] = []; + let recentWorkspaces = this.getWindowsJumpListWorkspaces((await this.getRecentlyOpened()).workspaces); // Tasks jumpList.push({ @@ -400,7 +401,7 @@ export class WorkspacesHistoryMainService extends Disposable implements IWorkspa }); // Recent Workspaces - if ((await this.getRecentlyOpened()).workspaces.length > 0) { + if (recentWorkspaces.length > 0) { // The user might have meanwhile removed items from the jump list and we have to respect that // so we need to update our list of recent paths with the choice of the user to not add them again @@ -418,10 +419,11 @@ export class WorkspacesHistoryMainService extends Disposable implements IWorkspa } } await this.removeRecentlyOpened(toRemove); + recentWorkspaces = this.getWindowsJumpListWorkspaces((await this.getRecentlyOpened()).workspaces); // Add entries up to the slot count Explorer requested (jumpListSettings.minItems). let hasWorkspaces = false; - const items: JumpListItem[] = coalesce((await this.getRecentlyOpened()).workspaces.slice(0, jumpListSettings.minItems).map(recent => { + const items: JumpListItem[] = coalesce(recentWorkspaces.slice(0, jumpListSettings.minItems).map(recent => { const workspace = isRecentWorkspace(recent) ? recent.workspace : recent.folderUri; const { title, description } = this.getWindowsJumpListLabel(workspace, recent.label); @@ -468,6 +470,10 @@ export class WorkspacesHistoryMainService extends Disposable implements IWorkspa } } + private getWindowsJumpListWorkspaces(workspaces: Array): Array { + return workspaces.filter(recent => isRecentFolder(recent) || !this.isAgentSessionsWorkspace(recent.workspace)); + } + private getWindowsJumpListLabel(workspace: IWorkspaceIdentifier | URI, recentLabel: string | undefined): { title: string; description: string } { // Prefer recent label diff --git a/test/componentFixtures/blocks-ci-screenshots.md b/test/componentFixtures/blocks-ci-screenshots.md index b71da1f499167..3106585fb2e22 100644 --- a/test/componentFixtures/blocks-ci-screenshots.md +++ b/test/componentFixtures/blocks-ci-screenshots.md @@ -271,10 +271,10 @@ ![screenshot](https://hediet-screenshots.azurewebsites.net/images/fe4b95bf8348637bba9f8c0dda791924e6c67fd7b5d173398f9b2c0bfc9f7071) #### sessions/chat/input/chatInput/ResponsiveModelResizeCycleMinimal/Dark -![screenshot](https://hediet-screenshots.azurewebsites.net/images/8afa4c4eeb9f78079ea98efe10b841be3ba1104fe5fcf7f0e936113243017792) +![screenshot](https://hediet-screenshots.azurewebsites.net/images/526d939cafbcd94d8f64f3a669ac289a069ea4d26d971ca11bbf320df5f3b9d2) #### sessions/chat/input/chatInput/ResponsiveModelResizeCycleMinimal/Light -![screenshot](https://hediet-screenshots.azurewebsites.net/images/0fe9bb7434b473795187b0545ccaed6aa77af4b7e9f90890dc8885c7f31ddebb) +![screenshot](https://hediet-screenshots.azurewebsites.net/images/0abda7daac19d748993717e2e9d38721267804478f9a9425303572c9827ff425) #### sessions/chat/newWidget/newChatWidget/NewSessionAttachedContext/Dark ![screenshot](https://hediet-screenshots.azurewebsites.net/images/8d645ad50d59242fcc6c7b4b2c83b1af2cac745d06ea776bee35870e524bb379) From ce3435d66d953b9bd5c7f392797540046e9a1a85 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Thu, 10 Sep 2026 13:27:04 -0700 Subject: [PATCH 7/7] sessions: preserve ordinary window picker icons Expose native icon metadata only for the explicit Agents Window override so regular workspace, folder, and file entries continue using their resource icons. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/vs/platform/windows/electron-main/windowImpl.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 06f3f0f6b4c26..61bd6c7dcafa6 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -781,10 +781,11 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { } const options = instantiationService.invokeFunction(defaultBrowserWindowOptions, this.windowState, undefined, webPreferences); - if (config.isSessionsWindow && isWindows) { - options.icon = join(this.environmentMainService.appRoot, 'resources/win32/sessions.ico'); + const iconPath = config.isSessionsWindow && isWindows ? join(this.environmentMainService.appRoot, 'resources/win32/sessions.ico') : undefined; + if (iconPath) { + options.icon = iconPath; } - this._iconPath = typeof options.icon === 'string' ? URI.file(options.icon) : undefined; + this._iconPath = iconPath ? URI.file(iconPath) : undefined; // Create the browser window mark('code/willCreateCodeBrowserWindow');