all repos — sz-chrome-remote-extension @ 7fcc851d89bf1db4e188d81ca84362a3f4a8cbed

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

Record Chrome tool authorization state explicitly
Tianren Dong tianrendong.dtr@gmail.com
Tue, 07 Jul 2026 01:18:11 -0400
commit

7fcc851d89bf1db4e188d81ca84362a3f4a8cbed

parent

132c106bb924cf9ae318ba425e5607d2721f662a

M extensions/chrome-profile-bridge/browser-extension/manifest.json → extensions/chrome-profile-bridge/browser-extension/manifest.json

@@ -1,7 +1,7 @@

{ "manifest_version": 3, "name": "Pi Chrome Connector", - "version": "0.15.44", + "version": "0.15.45", "description": "Lets Pi control tabs in Chrome via a local connector at 127.0.0.1.", "permissions": [ "tabs",
M extensions/chrome-profile-bridge/index.ts → extensions/chrome-profile-bridge/index.ts

@@ -734,10 +734,13 @@ pi.setActiveTools(before.filter((name) => !CHROME_TOOL_NAME_SET.has(name)));

return chromeToolsActive(before); }; - const logChromeToolChange = (action: "authorized" | "revoked" | "expired", label?: string): void => { + const logChromeToolChange = ( + action: "authorized" | "revoked" | "expired", + options: { label?: string; authorizedUntil?: number | "indefinite" } = {}, + ): void => { const enabled = action === "authorized"; const content = enabled - ? `Chrome tools enabled by /chrome authorize${label ? ` (${label})` : ""}.` + ? `Chrome tools enabled by /chrome authorize${options.label ? ` (${options.label})` : ""}.` : action === "expired" ? "Chrome tools disabled because /chrome authorize grant expired." : "Chrome tools disabled by /chrome revoke.";

@@ -748,7 +751,7 @@ display: true,

details: { action, tools: [...CHROME_TOOL_NAMES], - authorizedUntil: chromeAuthorizedUntil, + authorizedUntil: options.authorizedUntil, at: Date.now(), }, }, { triggerTurn: false });

@@ -767,7 +770,7 @@ const lockChromeControl = (logAction?: "revoked" | "expired"): void => {

clearAuthExpiryTimer(); clearCountdownInterval(); const hadChromeTools = deactivateChromeTools(); - if (logAction && hadChromeTools) logChromeToolChange(logAction); + if (logAction && hadChromeTools) logChromeToolChange(logAction, { authorizedUntil: undefined }); chromeAuthorizedUntil = undefined; persistAuth(); // Revoking control ends pi-chrome's automation for this session; tidy up the target we own.

@@ -1066,7 +1069,7 @@ }

chromeAuthorizedUntil = until; persistAuth(); activateChromeTools(); - logChromeToolChange("authorized", label); + logChromeToolChange("authorized", { label, authorizedUntil: until }); scheduleAuthExpiry(ctx, until); ctx.ui.notify(`Chrome control authorized for ${label}.`, "info"); updateChromeStatus(ctx);
M package-lock.json → package-lock.json

@@ -1,12 +1,12 @@

{ "name": "pi-chrome", - "version": "0.15.44", + "version": "0.15.45", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-chrome", - "version": "0.15.44", + "version": "0.15.45", "license": "MIT", "peerDependencies": { "@earendil-works/pi-coding-agent": "*",
M package.json → package.json

@@ -1,6 +1,6 @@

{ "name": "pi-chrome", - "version": "0.15.44", + "version": "0.15.45", "scripts": { "test": "node test-suite/unit/csp-eval.test.mjs && node test-suite/unit/automation-target.test.mjs", "version": "node scripts/sync-manifest-version.js",