From cf8b205da65ac5e79db7521ebf86f42cc4710c86 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Sat, 9 May 2026 17:00:04 +0200 Subject: [PATCH 1/3] Agents - do not show "Mark as Done" while a git operation is in progress --- .../contrib/sessions/browser/views/sessionsViewActions.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.ts b/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.ts index decaf809a808a..e2aa3b570042f 100644 --- a/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.ts +++ b/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.ts @@ -798,6 +798,7 @@ registerAction2(class MarkSessionAsDoneAction extends Action2 { IsSessionsWindowContext, IsActiveSessionArchivedContext.negate(), ActiveSessionContextKeys.HasGitRepository.isEqualTo(true), + ActiveSessionContextKeys.HasGitOperationInProgress.negate(), ContextKeyExpr.or( // No changes ActiveSessionContextKeys.HasBranchChanges.negate(), From 9480c23377372ddc7e58c9deb02796b723f7b263 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Sat, 9 May 2026 17:18:13 +0200 Subject: [PATCH 2/3] Copilot - scaffold method to eagerly refresh changes cache --- .../common/chatSessionWorkspaceFolderService.ts | 5 +++++ .../common/chatSessionWorktreeService.ts | 2 ++ .../chatSessionWorkspaceFolderServiceImpl.ts | 8 ++++++++ .../chatSessionWorktreeServiceImpl.ts | 16 ++++++++++++++++ 4 files changed, 31 insertions(+) diff --git a/extensions/copilot/src/extension/chatSessions/common/chatSessionWorkspaceFolderService.ts b/extensions/copilot/src/extension/chatSessions/common/chatSessionWorkspaceFolderService.ts index 3eca66d1ddd0d..a1ed1043cd53d 100644 --- a/extensions/copilot/src/extension/chatSessions/common/chatSessionWorkspaceFolderService.ts +++ b/extensions/copilot/src/extension/chatSessions/common/chatSessionWorkspaceFolderService.ts @@ -52,6 +52,11 @@ export interface IChatSessionWorkspaceFolderService { */ handleRequestCompleted(sessionId: string): Promise; + /** + * Refresh the changes in the workspace folder for a session. + */ + refreshWorkspaceChanges(sessionId: string): Promise; + /** * Get the changes in the workspace folder for a session. */ diff --git a/extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts b/extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts index 7f53c5324e48e..6af41c0aa4715 100644 --- a/extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts +++ b/extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts @@ -80,6 +80,8 @@ export interface IChatSessionWorktreeService { getWorktreeChanges(sessionId: string): Promise; + refreshWorktreeChanges(sessionId: string): Promise; + hasCachedChanges(sessionId: string): Promise; handleRequestCompleted(sessionId: string): Promise; diff --git a/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorkspaceFolderServiceImpl.ts b/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorkspaceFolderServiceImpl.ts index 469f3580862c0..c6f04a96a880d 100644 --- a/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorkspaceFolderServiceImpl.ts +++ b/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorkspaceFolderServiceImpl.ts @@ -116,6 +116,14 @@ export class ChatSessionWorkspaceFolderService extends Disposable implements ICh return !!cachedChanges; } + async refreshWorkspaceChanges(sessionId: string): Promise { + // Clear the cache + this.clearWorkspaceChanges(sessionId); + + // Populate the cache + await this.getWorkspaceChanges(sessionId); + } + async getWorkspaceChanges(sessionId: string): Promise { return this.workspaceChangesSequencer.queue(sessionId, async () => { diff --git a/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorktreeServiceImpl.ts b/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorktreeServiceImpl.ts index 165ba2bd8d44b..5a25da68422a7 100644 --- a/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorktreeServiceImpl.ts +++ b/extensions/copilot/src/extension/chatSessions/vscode-node/chatSessionWorktreeServiceImpl.ts @@ -315,6 +315,22 @@ export class ChatSessionWorktreeService extends Disposable implements IChatSessi return !!worktreeProperties.changes; } + async refreshWorktreeChanges(sessionId: string): Promise { + const worktreeProperties = await this.getWorktreeProperties(sessionId); + if (!worktreeProperties || typeof worktreeProperties === 'string') { + return; + } + + // Clear the cache + await this.setWorktreeProperties(sessionId, { + ...worktreeProperties, + changes: undefined + }); + + // Populate the cache + await this.getWorktreeChanges(sessionId); + } + async getWorktreeChanges(sessionId: string): Promise { const worktreeProperties = await this.getWorktreeProperties(sessionId); if (!worktreeProperties || typeof worktreeProperties === 'string') { From ee1cef20254ed972d3e9b0d7133441a943198250 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Sat, 9 May 2026 17:24:45 +0200 Subject: [PATCH 3/3] Fix tests --- extensions/copilot/test/e2e/cli.stest.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/copilot/test/e2e/cli.stest.ts b/extensions/copilot/test/e2e/cli.stest.ts index f32d7009771da..b86afd11ff7b6 100644 --- a/extensions/copilot/test/e2e/cli.stest.ts +++ b/extensions/copilot/test/e2e/cli.stest.ts @@ -204,6 +204,7 @@ async function registerChatServices(testingServiceCollection: TestingServiceColl async getRepositoryProperties() { return undefined; }, async setRepositoryProperties() { }, async handleRequestCompleted() { }, + async refreshWorkspaceChanges() { }, async getWorkspaceChanges() { return undefined; }, async hasCachedChanges() { return false; }, clearWorkspaceChanges() { return []; }, @@ -218,6 +219,7 @@ async function registerChatServices(testingServiceCollection: TestingServiceColl async getWorktreePath() { return undefined; }, async applyWorktreeChanges() { }, async getSessionIdForWorktree() { return undefined; }, + async refreshWorktreeChanges() { }, async getWorktreeChanges() { return undefined; }, async handleRequestCompleted() { }, async getAdditionalWorktreeProperties() { return []; },