From 7aa3973564403e51ec80a0299da5a75dbc4de731 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Thu, 2 Apr 2026 19:12:44 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20sidebar=20auth=20race=20=E2=80=94=20pass?= =?UTF-8?q?=20token=20in=20getPort=20response?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sidebar called tryConnect() → getPort → got {port, connected} but NO token. All subsequent requests (SSE, chat poll) failed with 401. The token only arrived later via the health broadcast, but by then the SSE connection was already broken. Fix: include authToken in the getPort response so the sidebar has the token from its very first connection attempt. --- extension/background.js | 2 +- extension/sidepanel.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/extension/background.js b/extension/background.js index 007af21f..516ddb62 100644 --- a/extension/background.js +++ b/extension/background.js @@ -270,7 +270,7 @@ chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { } if (msg.type === 'getPort') { - sendResponse({ port: serverPort, connected: isConnected }); + sendResponse({ port: serverPort, connected: isConnected, token: authToken }); return true; } diff --git a/extension/sidepanel.js b/extension/sidepanel.js index 1eead7d8..e39943f0 100644 --- a/extension/sidepanel.js +++ b/extension/sidepanel.js @@ -1396,8 +1396,7 @@ function tryConnect() { chrome.runtime.sendMessage({ type: 'getPort' }, (resp) => { if (resp && resp.port && resp.connected) { const url = `http://127.0.0.1:${resp.port}`; - // Token arrives via health broadcast from background.js - updateConnection(url, null); + updateConnection(url, resp.token || null); } else { setTimeout(tryConnect, 2000); }