From 17686fdbf8c15e6eeed8a5f1b55b55d12960d502 Mon Sep 17 00:00:00 2001 From: leeguooooo Date: Wed, 10 Jun 2026 13:25:50 +0900 Subject: [PATCH] feat(extension): add popup status page (paired/not-paired) for Web Store review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The biggest Web Store rejection risk for a CLI-bridge extension is "non-functional without external software." Give ab-connect a visible standalone UI: a branded popup that shows whether the native-messaging link to the local agent-browser CLI is live (Connected + attached tab count, or Not paired with the install hint), plus a one-line privacy statement (no tracking, no remote server) and a repo link. - manifest: action.default_popup = popup.html; bump 0.4.0 -> 0.4.1 - background.js: track hostConnected; respond to {type:'ab-status'} from the popup and nudge a reconnect on open - popup.html/popup.js: dark/cyan branded status page (MV3-CSP-safe: external JS, no inline handlers), with a safety timeout so it never hangs on "Checking…" - repacked ab-connect.zip/.crx --- extensions/ab-connect.crx | Bin 8379 -> 30195 bytes extensions/ab-connect.zip | Bin 7916 -> 29937 bytes extensions/ab-connect/background.js | 19 ++++- extensions/ab-connect/manifest.json | 7 +- extensions/ab-connect/popup.html | 126 ++++++++++++++++++++++++++++ extensions/ab-connect/popup.js | 64 ++++++++++++++ 6 files changed, 212 insertions(+), 4 deletions(-) create mode 100644 extensions/ab-connect/popup.html create mode 100644 extensions/ab-connect/popup.js diff --git a/extensions/ab-connect.crx b/extensions/ab-connect.crx index 3561590f26c98a8361119b2cbe6f7afcb8a06042..c54c22178673e31df24cac4a1be1a8dd7fbc4d9a 100644 GIT binary patch delta 29075 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 delta 7182 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 diff --git a/extensions/ab-connect/background.js b/extensions/ab-connect/background.js index d7b314c..e519090 100644 --- a/extensions/ab-connect/background.js +++ b/extensions/ab-connect/background.js @@ -21,6 +21,9 @@ const SKIP_URL = /^(chrome|chrome-extension|devtools|chrome-untrusted|edge|about /** @type {chrome.runtime.Port|null} */ let port = null +/** Whether the native-messaging host (the local agent-browser CLI) is linked. + * Read by the popup status page. */ +let hostConnected = false let nextSession = 1 /** tabId -> { sessionId, targetId } */ const tabs = new Map() @@ -92,13 +95,16 @@ function connectHost() { if (port) return try { port = chrome.runtime.connectNative(HOST_NAME) + hostConnected = true } catch (e) { port = null + hostConnected = false return } port.onMessage.addListener((msg) => void whenReady(() => onHostMessage(msg))) port.onDisconnect.addListener(() => { port = null + hostConnected = false // Sessions are stale once the host is gone; the daemon re-discovers on // reconnect. Keep chrome.debugger attached so reconnect is cheap. for (const tabId of tabs.keys()) setBadge(tabId, 'connecting') @@ -343,7 +349,18 @@ chrome.tabs.onRemoved.addListener((tabId) => void whenReady(() => detachTab(tabI chrome.runtime.onInstalled.addListener(() => void whenReady(connectHost)) chrome.runtime.onStartup.addListener(() => void whenReady(connectHost)) -chrome.action.onClicked.addListener(() => void whenReady(connectHost)) + +// Popup status page asks for the live pairing state. Attempt a (re)connect on +// demand so opening the popup also nudges the link awake, then report. +chrome.runtime.onMessage.addListener((msg, _sender, sendResponse) => { + if (msg && msg.type === 'ab-status') { + if (!port) { + try { connectHost() } catch (e) {} + } + sendResponse({ connected: hostConnected, tabCount: tabs.size, host: HOST_NAME }) + } + return true +}) // MV3 service workers get suspended; an alarm wakes us to keep the host link // and badges fresh. diff --git a/extensions/ab-connect/manifest.json b/extensions/ab-connect/manifest.json index aca03e4..74ed496 100644 --- a/extensions/ab-connect/manifest.json +++ b/extensions/ab-connect/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 3, "name": "agent-browser-stealth", - "version": "0.4.0", - "description": "Let agent-browser drive your logged-in Chrome — install once, no token, no per-use confirmation.", + "version": "0.4.1", + "description": "Let agent-browser drive your logged-in Chrome \u2014 install once, no token, no per-use confirmation.", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6vQIyscGIPYPZdSpPwPL0+0gxUROyRgCpmvCSDoc8XUm4qm97VbKnD9Ijc1lV22lNWZtE78gaRjt6BeSfuMgnBymnhLKjN1gU6AI5QUU0mrJyeHdWKvrKQR5FmsM2A7Xr1ykE2SiiS8zNUS3Y/6O5l+Nva7wrVy6E4a2dkBVQkOsu+DV+nEZvhIyuDY5D5SPXqNwUTWTaglwj5mjvHz36xSwCWlPmrtJ+ED0AUyrb2z4GIOmvk4kqtBVrh/UD058klLo4CkYOnIybB5aV6WYuwarfPY4bF/dLggPem+ewLNTUNBuwrxj/A4nUv0LJTuRO8rR7f8WR9qnRCY0Ic5saQIDAQAB", "icons": { "16": "icons/icon16.png", @@ -24,6 +24,7 @@ "type": "module" }, "action": { - "default_title": "agent-browser-stealth" + "default_title": "agent-browser-stealth", + "default_popup": "popup.html" } } diff --git a/extensions/ab-connect/popup.html b/extensions/ab-connect/popup.html new file mode 100644 index 0000000..1fa300e --- /dev/null +++ b/extensions/ab-connect/popup.html @@ -0,0 +1,126 @@ + + + + + + + +
+ +
+
agent-browser-stealth
+
local automation bridge
+
+
+ +
+
+ +
+
Checking…
+
contacting the local CLI
+
+
+ +

+ Lets your locally-installed agent-browser command-line tool + drive your own logged-in Chrome tabs — entirely on this machine, only when + you run a command. No remote server, no data collection. +

+ +
+ Not linked yet. Install & pair the CLI, then reopen this popup: + agent-browser extension install +
+
+ +
+ + + + diff --git a/extensions/ab-connect/popup.js b/extensions/ab-connect/popup.js new file mode 100644 index 0000000..76b4234 --- /dev/null +++ b/extensions/ab-connect/popup.js @@ -0,0 +1,64 @@ +// Popup status page for agent-browser-stealth. +// Asks the service worker whether the native-messaging link to the local +// agent-browser CLI is live, and renders a paired / not-paired indicator. + +const dot = document.getElementById('dot') +const label = document.getElementById('statusLabel') +const sub = document.getElementById('statusSub') +const hint = document.getElementById('hint') + +let resolved = false + +function render(state) { + resolved = true + const connected = !!(state && state.connected) + dot.classList.remove('on', 'off') + if (connected) { + dot.classList.add('on') + label.textContent = 'Connected' + const n = state.tabCount | 0 + sub.textContent = + n > 0 + ? `bridged to the local CLI · ${n} tab${n === 1 ? '' : 's'} attached` + : 'bridged to the local CLI · ready' + hint.style.display = 'none' + } else { + dot.classList.add('off') + label.textContent = 'Not paired' + sub.textContent = 'no local agent-browser CLI linked' + hint.style.display = 'block' + } +} + +function queryStatus() { + try { + chrome.runtime.sendMessage({ type: 'ab-status' }, (resp) => { + // lastError fires if the service worker can't be reached. + if (chrome.runtime.lastError) { + render({ connected: false }) + return + } + render(resp) + }) + } catch (e) { + render({ connected: false }) + } +} + +// Open the repo in a real tab (no inline handlers under MV3 CSP). +const repo = document.getElementById('repo') +if (repo) { + repo.addEventListener('click', () => { + chrome.tabs.create({ url: repo.dataset.href }) + }) +} + +// Query now, then once more shortly after — opening the popup also nudges the +// service worker to (re)connect the host, which may complete a beat later. +queryStatus() +setTimeout(queryStatus, 700) + +// Never leave the popup stuck on "Checking…" if the worker never answers. +setTimeout(() => { + if (!resolved) render({ connected: false }) +}, 1500)