← Commit history
0.3.7: demo wakes a sleeping profile and retries once - turnkey for the web-control demo
5 files changed
+18−9
bridge/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.3.6+0.3.7
bridge/bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "native-browser", "displayName": "Adom Native Browser",- "version": "0.3.6",+ "version": "0.3.7", "expectedExtensionVersion": "0.2.0", "description": "Drives the user's REAL signed-in Chrome/Edge, in two layers. Layer 1 (nb) needs NOTHING installed and works on any machine: nbrowser_open_os_window (open a URL in the user's real profile, background+flashing, the OAuth/consent path), nbrowser_os_windows, nbrowser_profiles, nbrowser_wake_profile, nbrowser_force_close. Layer 2 (nbe, the Adom Native Browser Extension) unlocks the rest: CDP driving (navigate/click/read/screenshot) inside their logged-in profile. The bridge binds an ephemeral loopback port and the native-messaging host pumps stdio <-> bridge.", "homepage": "https://wiki.adom.inc/adom/nb-bridge",
bridge/package.json+1−1@@ -1,6 +1,6 @@ { "name": "adom-native-browser-bridge",- "version": "0.3.6",+ "version": "0.3.7", "private": true, "description": "Native-browser bridge for Bridge (ab): layer 1 (nb) plus layer 2 via nbe, the Adom Native Browser Extension (Chrome + Edge).", "main": "server.js",
bridge/server.js+10−1@@ -1935,7 +1935,16 @@ function dispatch(verb, args) { // idempotent re-run, but only if we actually track it: close_window on an unknown session costs // ~2.4s to tell us it is unknown, and a showcase verb should not pay that on every call. if (sessionHwnd.has(sid) || sessionProfile.has(sid)) await callSelf('nbrowser_close_window', { sessionId: sid });- const open = await callSelf('nbrowser_open_window', { sessionId: sid, thread: da.thread || 'nbrowser_demo', purpose: 'nb demo: show the AI driving the real signed-in browser', profile, url });+ const openArgs = { sessionId: sid, thread: da.thread || 'nbrowser_demo', purpose: 'nb demo: show the AI driving the real signed-in browser', profile, url };+ let open = await callSelf('nbrowser_open_window', openArgs);+ // A profile with NO open window lets its service worker sleep, so the first drive after an idle+ // spell fails 'not connected'. A showcase verb should not make the caller discover that: wake the+ // profile (no window, no foreground) and retry once. Everyday callers still do this explicitly.+ if (open.ok !== true && /not connected/i.test(JSON.stringify(open))) {+ steps.push({ step: 'extension asleep - waking profile', ok: true, profile });+ await callSelf('nbrowser_wake_profile', { profile });+ open = await callSelf('nbrowser_open_window', openArgs);+ } steps.push({ step: 'open in real browser (background)', ok: open.ok === true, hwnd: open.hwnd, tabId: open.tabId }); if (open.ok !== true) return resolve({ success: false, error: open.error || 'open failed', steps }); await new Promise((r) => setTimeout(r, 1200));
native-browser-bridge-manifest.json+5−5@@ -1,8 +1,8 @@ { "manifest_version": 1,- "version": "0.3.6",- "url": "https://wiki.adom.inc/download/adom/nb-bridge/0.3.6/native-browser-bridge-v0.3.6.zip",- "sha256": "b91738dcddd78af2df12ee32da172676bab9c6b1b3d734b050682654f8c90bcf",- "size": 108026,- "released_at": "2026-08-19T08:53:31Z"+ "version": "0.3.7",+ "url": "https://wiki.adom.inc/download/adom/nb-bridge/0.3.7/native-browser-bridge-v0.3.7.zip",+ "sha256": "199a0a09460968473c351a1ae8e058b3fcf0e5d16499a409b209ea3f54b24639",+ "size": 108228,+ "released_at": "2026-08-19T08:54:21Z" }