sessions - support to open a session in a protocol link opened window (#296962)

This commit is contained in:
Benjamin Pasero
2026-02-23 15:25:55 +01:00
committed by GitHub
parent 059d431fea
commit a609cbda94
3 changed files with 31 additions and 3 deletions

View File

@@ -110,6 +110,7 @@ import { ExtensionsScannerService } from '../../platform/extensionManagement/nod
import { UserDataProfilesHandler } from '../../platform/userDataProfile/electron-main/userDataProfilesHandler.js';
import { ProfileStorageChangesListenerChannel } from '../../platform/userDataProfile/electron-main/userDataProfileStorageIpc.js';
import { Promises, RunOnceScheduler, runWhenGlobalIdle } from '../../base/common/async.js';
import { CancellationToken } from '../../base/common/cancellation.js';
import { resolveMachineId, resolveSqmId, resolveDevDeviceId, validateDevDeviceId } from '../../platform/telemetry/electron-main/telemetryUtils.js';
import { ExtensionsProfileScannerService } from '../../platform/extensionManagement/node/extensionsProfileScannerService.js';
import { LoggerChannel } from '../../platform/log/electron-main/logIpc.js';
@@ -927,6 +928,15 @@ export class CodeApplication extends Disposable {
this.environmentMainService.continueOn = continueOn ?? undefined;
}
// Extract session parameter to open a specific chat session in the target window
const session = params.get('session');
if (session !== null) {
this.logService.trace(`app#handleProtocolUrl() found 'session' as parameter:`, uri.toString(true));
params.delete('session');
uri = uri.with({ query: params.toString() });
}
// Check if the protocol URL is a window openable to open...
const windowOpenableFromProtocolUrl = this.getWindowOpenableFromProtocolUrl(uri);
if (windowOpenableFromProtocolUrl) {
@@ -948,6 +958,11 @@ export class CodeApplication extends Disposable {
window?.focus(); // this should help ensuring that the right window gets focus when multiple are opened
// Open chat session in the target window if requested
if (window && session) {
window.sendWhenReady('vscode:openChatSession', CancellationToken.None, session);
}
return true;
}
}