From e5b7b65dd470a40feb09ef4018f7700c2232f184 Mon Sep 17 00:00:00 2001 From: NSIETeam Date: Mon, 13 Jul 2026 18:30:49 +0800 Subject: [PATCH 1/2] fix: resolve model switch UI freeze on edge cases --- packages/vscode-ui-plugin/src/extension.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/vscode-ui-plugin/src/extension.ts b/packages/vscode-ui-plugin/src/extension.ts index 85b41b8d..0291eb2d 100644 --- a/packages/vscode-ui-plugin/src/extension.ts +++ b/packages/vscode-ui-plugin/src/extension.ts @@ -2574,6 +2574,8 @@ function setupLoginHandlers() { }); } else if (config && config.setModel) { config.setModel(payload.modelName); + // Fix: notify frontend when model is set via config.setModel (no geminiClient) + await communicationService.sendModelSwitchComplete(payload.sessionId, payload.modelName); } } @@ -2599,6 +2601,10 @@ function setupLoginHandlers() { success: false, error: error instanceof Error ? error.message : 'Unknown error' }); + // Fix: notify frontend to clear isModelSwitching state on failure + if (payload.sessionId) { + await communicationService.sendModelSwitchComplete(payload.sessionId, payload.modelName); + } } }); From b59f09b0460eb15eeeb3c1077ea2eb6b97d06916 Mon Sep 17 00:00:00 2001 From: NSIETeam Date: Mon, 13 Jul 2026 20:13:37 +0800 Subject: [PATCH 2/2] fix: address code review - double notification and catch block safety --- packages/vscode-ui-plugin/src/extension.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/vscode-ui-plugin/src/extension.ts b/packages/vscode-ui-plugin/src/extension.ts index 0291eb2d..dac16e63 100644 --- a/packages/vscode-ui-plugin/src/extension.ts +++ b/packages/vscode-ui-plugin/src/extension.ts @@ -2574,8 +2574,8 @@ function setupLoginHandlers() { }); } else if (config && config.setModel) { config.setModel(payload.modelName); - // Fix: notify frontend when model is set via config.setModel (no geminiClient) - await communicationService.sendModelSwitchComplete(payload.sessionId, payload.modelName); + // Fix: model_switch_complete is sent below after updateSessionModelConfig + // — no need to send it here (would cause double notification) } } @@ -2602,8 +2602,16 @@ function setupLoginHandlers() { error: error instanceof Error ? error.message : 'Unknown error' }); // Fix: notify frontend to clear isModelSwitching state on failure + // Use try-catch to avoid masking the original error if webview is disposed if (payload.sessionId) { - await communicationService.sendModelSwitchComplete(payload.sessionId, payload.modelName); + try { + await communicationService.sendModelResponse(payload.requestId, { + success: false, + error: error instanceof Error ? error.message : 'Unknown error' + }); + // Only clear isModelSwitching, don't update selectedModelId + await communicationService.sendModelSwitchComplete(payload.sessionId, ''); + } catch {} } } });