fix(vscode,ui): stop postMessage crash when opening chat in Cursor (#2335)

VS Code webviews delete window.parent, so ChatContainer's settings-sync
effect threw TypeError on chat open. Also harden the webview bridge when
acquireVsCodeApi() returns undefined and SSE panel disposal races.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
Serhii Dziupin
2026-07-21 09:48:42 +03:00
committed by GitHub
co-authored by Cursor Agent Serhii Dziupin
parent 200c02cd00
commit 485efc7117
5 changed files with 120 additions and 7 deletions
+15 -1
View File
@@ -9,10 +9,24 @@ interface VSCodeAPI {
}
let vscodeApi: VSCodeAPI | null = null;
let noopWarned = false;
const noopVSCodeApi: VSCodeAPI = {
postMessage: (message) => {
// acquireVsCodeApi() can return undefined in broken/non-standard webview slots
// (Cursor after extension update, VSCodium, headless). Drop the message instead
// of throwing TypeError: Cannot read properties of undefined (reading 'postMessage').
if (!noopWarned) {
noopWarned = true;
console.warn('[openchamber] VS Code API unavailable; dropping postMessage', message);
}
},
};
function getVSCodeAPI(): VSCodeAPI {
if (!vscodeApi) {
vscodeApi = acquireVsCodeApi();
const acquired = typeof acquireVsCodeApi === 'function' ? acquireVsCodeApi() : undefined;
vscodeApi = acquired ?? noopVSCodeApi;
}
return vscodeApi;
}