all repos — sz-chrome-remote-extension @ 0ce964f978a613e6dbe624a09210fd71b420546e

pi-chrome, patched to drive a signed-in browser on another host through a broker, with an MCP server

Clear pi-chrome singleton on shutdown
Tianren Dong tianrendong.dtr@gmail.com
Fri, 15 May 2026 02:42:38 -0400
commit

0ce964f978a613e6dbe624a09210fd71b420546e

parent

2f0384423d36b38b6f9552a78ca3d8d3fec1e75d

1 files changed, 6 insertions(+), 2 deletions(-)

jump to
M extensions/chrome-profile-bridge/index.ts → extensions/chrome-profile-bridge/index.ts

@@ -419,8 +419,9 @@ return Type.Union(values.map((value) => Type.Literal(value)) as [ReturnType<typeof Type.Literal>, ...ReturnType<typeof Type.Literal>[]]);

} export default function (pi: ExtensionAPI): void { + const instanceToken = Symbol("pi-chrome-instance"); const globalState = globalThis as typeof globalThis & { - [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string }; + [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string; token: symbol }; }; const alreadyLoaded = globalState[PI_CHROME_GLOBAL_KEY]; if (alreadyLoaded) {

@@ -429,7 +430,7 @@ `pi-chrome already loaded from ${alreadyLoaded.root} (v${alreadyLoaded.version}); skipping duplicate from ${extensionRoot()}.`,

); return; } - globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot() }; + globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot(), token: instanceToken }; const bridge = new ChromeProfileBridge(DEFAULT_HOST, DEFAULT_PORT); let backgroundDefault = false;

@@ -490,6 +491,9 @@ });

pi.on("session_shutdown", () => { bridge.stop(); + if (globalState[PI_CHROME_GLOBAL_KEY]?.token === instanceToken) { + delete globalState[PI_CHROME_GLOBAL_KEY]; + } }); pi.on("before_agent_start", (event) => {