From ba4d5acc3333a8d393cdd5e9d5118ab93ea0fb37 Mon Sep 17 00:00:00 2001 From: limerc Date: Fri, 9 Jan 2026 21:48:52 +0300 Subject: [PATCH 1/3] feat(chrome): add Chrome Web Store support - Add separate manifests for Chrome and Firefox - Fix cross-browser API compatibility (browser vs chrome) - Fix Chrome MV3 async messaging (sendResponse pattern) - Fix CustomEvent detail passing via JSON serialization - Add auto-reload on settings change - Add tabs permission for reload functionality - Add .dev marker for debug mode detection - Add comprehensive tests (188 total) --- extension/manifest.json | 1 + 1 file changed, 1 insertion(+) create mode 120000 extension/manifest.json diff --git a/extension/manifest.json b/extension/manifest.json new file mode 120000 index 0000000..6cd71e2 --- /dev/null +++ b/extension/manifest.json @@ -0,0 +1 @@ +manifest.firefox.json \ No newline at end of file From 2e3c69fb3cdae13e02fbada1e85641765ee51f0d Mon Sep 17 00:00:00 2001 From: furiosa Date: Fri, 9 Jan 2026 22:45:59 +0300 Subject: [PATCH 2/3] fix(chrome): add retry logic for service worker wake-up Chrome MV3 service workers can be inactive when popup opens, causing sendMessage to return undefined. Added exponential backoff retry logic (50ms, 100ms, 200ms) to handle service worker wake-up delay. - Add MESSAGE_RETRY_DELAYS_MS constant for backoff intervals - Validate response is not undefined before returning - Check chrome.runtime.lastError in Chrome context - Add 5 new tests for retry scenarios --- extension/manifest.json | 1 - extension/src/shared/messages.ts | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 120000 extension/manifest.json diff --git a/extension/manifest.json b/extension/manifest.json deleted file mode 120000 index 6cd71e2..0000000 --- a/extension/manifest.json +++ /dev/null @@ -1 +0,0 @@ -manifest.firefox.json \ No newline at end of file diff --git a/extension/src/shared/messages.ts b/extension/src/shared/messages.ts index c040b80..a6cac9b 100644 --- a/extension/src/shared/messages.ts +++ b/extension/src/shared/messages.ts @@ -34,9 +34,9 @@ export async function sendMessageWithTimeout( // Check Chrome lastError (set when no listener exists) if (isChrome) { - const lastError = (chrome as { runtime: { lastError?: { message?: string } } }).runtime.lastError; - if (lastError) { - throw new Error(lastError.message ?? 'Chrome runtime error'); + const chromeLastError = (chrome as { runtime: { lastError?: { message?: string } } }).runtime.lastError; + if (chromeLastError) { + throw new Error(chromeLastError.message ?? 'Chrome runtime error'); } } From 6765ff47abc2641c73707d21e459e234a7c31688 Mon Sep 17 00:00:00 2001 From: furiosa Date: Sat, 10 Jan 2026 00:51:19 +0300 Subject: [PATCH 3/3] chore: rename extension to LightSession Pro for ChatGPT Update name in both Chrome and Firefox manifests for better visibility in extension stores. --- extension/manifest.chrome.json | 2 +- extension/manifest.firefox.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/manifest.chrome.json b/extension/manifest.chrome.json index 53f7a63..9531be1 100644 --- a/extension/manifest.chrome.json +++ b/extension/manifest.chrome.json @@ -1,6 +1,6 @@ { "manifest_version": 3, - "name": "LightSession Pro", + "name": "LightSession Pro for ChatGPT", "version": "1.6.1", "description": "Keep ChatGPT fast by keeping only the last N messages in the DOM. Local-only.", "icons": { diff --git a/extension/manifest.firefox.json b/extension/manifest.firefox.json index 7881096..1089414 100644 --- a/extension/manifest.firefox.json +++ b/extension/manifest.firefox.json @@ -1,6 +1,6 @@ { "manifest_version": 3, - "name": "LightSession Pro", + "name": "LightSession Pro for ChatGPT", "version": "1.6.1", "description": "Keep ChatGPT fast by keeping only the last N messages in the DOM. Local-only.", "icons": {