diff options
| author | Tianren Dong <tianrendong.dtr@gmail.com> | 2026-05-16 14:01:00 -0400 |
|---|---|---|
| committer | Tianren Dong <tianrendong.dtr@gmail.com> | 2026-05-16 14:01:00 -0400 |
| commit | b792f22f2c2ef4dfb7bd300e7381a186e34e0c18 (patch) | |
| tree | a31a4e6d1213478f5ac96e2208d1a1c16fc825b9 /extensions | |
| parent | f133011c8ecda06ae63068649a9714c88a7b901e (diff) | |
0.15.25: fix reload after stale singleton
Diffstat (limited to 'extensions')
| -rw-r--r-- | extensions/chrome-profile-bridge/browser-extension/manifest.json | 2 | ||||
| -rw-r--r-- | extensions/chrome-profile-bridge/index.ts | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/extensions/chrome-profile-bridge/browser-extension/manifest.json b/extensions/chrome-profile-bridge/browser-extension/manifest.json index 36da9f4..84e3986 100644 --- a/extensions/chrome-profile-bridge/browser-extension/manifest.json +++ b/extensions/chrome-profile-bridge/browser-extension/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Pi Chrome Connector", - "version": "0.15.24", + "version": "0.15.25", "description": "Lets Pi control tabs in Chrome via a local connector at 127.0.0.1.", "permissions": [ "tabs", diff --git a/extensions/chrome-profile-bridge/index.ts b/extensions/chrome-profile-bridge/index.ts index c8c921a..77ae767 100644 --- a/extensions/chrome-profile-bridge/index.ts +++ b/extensions/chrome-profile-bridge/index.ts @@ -470,17 +470,21 @@ function StringEnum<T extends readonly [string, ...string[]]>(values: T) { export default function (pi: ExtensionAPI): void { const instanceToken = Symbol("pi-chrome-instance"); + const currentRoot = extensionRoot(); const globalState = globalThis as typeof globalThis & { - [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string; token: symbol }; + [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string; token?: symbol }; }; const alreadyLoaded = globalState[PI_CHROME_GLOBAL_KEY]; - if (alreadyLoaded) { + if (alreadyLoaded?.token || (alreadyLoaded && alreadyLoaded.root !== currentRoot)) { console.warn( - `pi-chrome already loaded from ${alreadyLoaded.root} (v${alreadyLoaded.version}); skipping duplicate from ${extensionRoot()}.`, + `pi-chrome already loaded from ${alreadyLoaded.root} (v${alreadyLoaded.version}); skipping duplicate from ${currentRoot}.`, ); return; } - globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot(), token: instanceToken }; + // pi-chrome <=0.15.19 set the singleton flag but did not clear it on reload. + // If the stale flag points at this same extension root, replace it instead of + // skipping the freshly reloaded extension. + globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: currentRoot, token: instanceToken }; const bridge = new ChromeProfileBridge(DEFAULT_HOST, DEFAULT_PORT); let backgroundDefault = false; |
