← Commit history

v0.16.41 (insiders): the extensions-gallery refusal is translated too (it arrived as raw Chrome text in the battery), and that check now runs last so a browser-owned page cannot colour the rest of a run; extension 0.2.19

John Lauer ·efa788a936 ·21d ago ·parent f03bc6f
8 files changed +11−11
bin/nb-dashboard+1−1
@@ -20,7 +20,7 @@ const { execFile, spawn } = require('child_process'); const fs = require('fs'); const crypto = require('crypto'); -const VERSION = '0.16.40';           // keep in lockstep with package.json (pkg version)+const VERSION = '0.16.41';           // keep in lockstep with package.json (pkg version) // SEND TO AI IS UN-PARKED (John: "yeah, we are re-enabling the send to ai. it seems to be good now"). // The ah build thread certified the crash family dead on the gate-fixed build and the delivery leg is // proven end to end. The park const is DELETED rather than flipped, so no dead branch can resurrect it.
bridge/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.16.40\ No newline at end of file+0.16.41\ No newline at end of file
bridge/bridge.json+2−2
@@ -2,8 +2,8 @@   "manifest_version": 1,   "name": "native-browser",   "displayName": "Adom Native Browser",-  "version": "0.16.40",-  "expectedExtensionVersion": "0.2.18",+  "version": "0.16.41",+  "expectedExtensionVersion": "0.2.19",   "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",   "author": "Adom Inc.",
bridge/package.json+1−1
@@ -1,6 +1,6 @@ {   "name": "adom-native-browser-bridge",-  "version": "0.16.40",+  "version": "0.16.41",   "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",
extension/manifest.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 3,   "name": "Adom Native Browser Extension",   "short_name": "Adom",-  "version": "0.2.18",+  "version": "0.2.19",   "description": "Layer 2 of Adom Native Browser (nb): lets your Adom AI drive your real, signed-in Chrome or Edge, using your own logins.",   "minimum_chrome_version": "116",   "background": {
extension/src/cdp.js+2−2
@@ -52,9 +52,9 @@ async function attach(tabId) {         if (/chrome-extension:\/\/ URL of different extension/i.test(m)) {           e.errorCode = 'blocked_by_other_extension';           e.hint = "Another extension has a frame on this page (a password manager on a sign-in page does this), and Chrome will not let the debugger attach through it. CDP verbs (eval, click by selector, screenshot) cannot run here. Use the native verbs instead (nbrowser_navigate, nbrowser_wait_for, nbrowser_list_tabs), or ask the user to finish this page themselves, or retry once past the sign-in.";-        } else if (/cannot attach to the page|cannot access a chrome:\/\/|devtools:\/\//i.test(m)) {+        } else if (/cannot be scripted|extensions gallery|cannot attach to the page|cannot access a chrome:\/\/|devtools:\/\//i.test(m)) {           e.errorCode = 'page_not_debuggable';-          e.hint = 'Chrome forbids the debugger on its own pages (chrome://, the Web Store, devtools). Drive a normal http(s) page, or use ab desktop verbs for browser chrome.';+          e.hint = 'Chrome forbids scripting/debugging this page (chrome://, the Web Store and the extensions gallery, devtools). Drive a normal http(s) page, or use ab desktop verbs for browser chrome.';         } else if (/another debugger|devtools is already/i.test(m)) {           e.errorCode = 'debugger_in_use';           e.hint = "Something else is already debugging this tab (an open DevTools window, or another automation tool). Close DevTools on that tab and retry.";
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "nb-bridge",-  "version": "0.16.40",+  "version": "0.16.41",   "type": "app",   "title": "NB - Native Browser Bridge",   "description": "This package installs the SKILLS into your container so your AI knows how to drive your real signed-in Chrome and Edge; Bridge loads the bridge runtime itself from the release zip.",
tools/verb-battery.mjs+2−2
@@ -379,7 +379,7 @@ if (import.meta.url === `file://${process.argv[1]}`) {   // are an ab lifecycle fact, not a verb regression.   call('nbrowser_wake_profile', { profile: PROFILE });   for (let i = 0; i < 10; i++) { const r = call('nbrowser_readiness'); if (r.ready === true) { console.log(`warm-up: ready after ${i} poll(s)\n`); break; } execFileSync('sleep', ['3']); }-  const order = ['status','readiness','ping','whoami','profiles','resolve_profiles','prewarm','eval_on_browser_page','guard_profile_required','open_minimized','chrome_status','describe','activity','os_windows','wake_profile','rescan','resync_sessions',+  const order = ['status','readiness','ping','whoami','profiles','resolve_profiles','prewarm','guard_profile_required','open_minimized','chrome_status','describe','activity','os_windows','wake_profile','rescan','resync_sessions',     'open_window','pin_session','use_profile','list_windows','window_state','switch_window',     'navigate','reload','back','forward','wait','wait_for','keepalive',     'eval','evaluate','screenshot','screenshot_full_res','errors','fetch_url',@@ -389,7 +389,7 @@ if (import.meta.url === `file://${process.argv[1]}`) {     'record_start','record_status','record_stop','record_list',     'download','download_wait','login_state','login_form','credentials','totp','clear_cookies','add_extension_origin',     'state','demo','open_os_window','guard_autologin','guard_record_fallback','guard_force_close','guard_close_all','profile_block','profile_unblock',-    'events_and_owned','handle_dialog','cleanup','owned','close_window'];+    'events_and_owned','handle_dialog','cleanup','owned','close_window','eval_on_browser_page'];   for (const name of order) {     if (TARGET_LOST) { record(name, 'skip', true, `not run - ${TARGET_LOST}`); continue; }     const fn = T[name]; if (!fn) { record(name, '??', false, 'no test fn'); continue; }