Change:
} try { <del> const changes: ({ uri: URI; type: ChangeType; contents: string | undefined })[] = []; let hasLocalUncommittedChanges = false; const workspaceFolders = this.contextService.getWorkspace().folders; for (const folder of editSession.folders) { const cancellationTokenSource = new CancellationTokenSource(); let folderRoot: IWorkspaceFolder | undefined; if (folder.canonicalIdentity) { // Look for an edit session identifier that we can use for (const f of workspaceFolders) { const identity = await this.editSessionIdentityService.getEditSessionIdentifier(f, cancellationTokenSource); this.logService.info(`Matching identity ${identity} against edit session folder identity ${folder.canonicalIdentity}...`); if (equals(identity, folder.canonicalIdentity)) { folderRoot = f; break; } } } else { folderRoot = workspaceFolders.find((f) => f.name === folder.name); } if (!folderRoot) { this.logService.info(`Skipping applying ${folder.workingChanges.length} changes from edit session with ref ${ref} as no matching workspace folder was found.`); return; } for (const repository of this.scmService.repositories) { if (repository.provider.rootUri !== undefined && this.contextService.getWorkspaceFolder(repository.provider.rootUri)?.name === folder.name && this.getChangedResources(repository).length > 0 ) { hasLocalUncommittedChanges = true; break; } } for (const { relativeFilePath, contents, type } of folder.workingChanges) { const uri = joinPath(folderRoot.uri, relativeFilePath); changes.push({ uri: uri, type: type, contents: contents }); } } </del> <ins> const { changes, conflictingChanges } = await this.generateChanges(editSession, ref); // TODO@joyceerhl Provide the option to diff files which would be overwritten by edit session contents if (conflictingChanges.length > 0) { const yes = localize('resume edit session yes', 'Yes'); const cancel = localize('resume edit session cancel', 'Cancel'); // Allow to show edit sessions const result = await this.dialogService.show( Severity.Warning, changes.length > 1 ? localize('resume edit session warning many', 'Resuming your edit session will overwrite the following {0} files. Do you want to proceed?', changes.length) : localize('resume edit session warning 1', 'Resuming your edit session will overwrite {0}. Do you want to proceed?', basename(changes[0].uri)), [cancel, yes], { custom: true, detail: changes.length > 1 ? getFileNamesMessage(conflictingChanges.map((c) => c.uri)) : undefined, cancelId: 0 }); </ins> <del> if (hasLocalUncommittedChanges) { // TODO@joyceerhl Provide the option to diff files which would be overwritten by edit session contents const result = await this.dialogService.confirm({ message: localize('resume edit session warning', 'Resuming your edit session may overwrite your existing uncommitted changes. Do you want to proceed?'), type: 'warning', title: EDIT_SESSION_SYNC_CATEGORY.value }); if (!result.confirmed) { </del> <ins> if (result.choice === 0) { </ins> return; } }

Discussion:
Testing Continue from web inside desktop Let the window sit Install update (which restarts the App) you are instantly greeted with a modal dialog (I wasn't even in that window of VS Code) Ideas don't use a modal but the custom modal overlay which is more friendly and doesn't steep focus don't show this when my local changes are no different to those on the server <img width="1391" alt="Screenshot 2022-08-24 at 09 26 13" src="https://user-"
Is the custom modal overlay the same thing as the custom modal dialog, i.e. :+1: I filed for this.