← Commit history

v0.16.17 (insiders): Toolbar icon packaged default reads toolbar.json with cache no-store and reports toolbarPackaged plus a diagnostic on nbrowser_status; extension 0.2.13. Note for hosts: after changing the extension folder, the first dev_reload can serve the old files, a second reload reads the folder.

John Lauer ·df0018e519 ·1mo ago ·parent 541e3a8
7 files changed +17−10
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.16';           // keep in lockstep with package.json (pkg version)+const VERSION = '0.16.17';           // 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.16\ No newline at end of file+0.16.17\ 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.16",-  "expectedExtensionVersion": "0.2.12",+  "version": "0.16.17",+  "expectedExtensionVersion": "0.2.13",   "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.16",+  "version": "0.16.17",   "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.12",+  "version": "0.2.13",   "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/sw.js+10−3
@@ -27,10 +27,17 @@ let _toolbarIcon = 'auto', _toolbarEffective = 'auto', _packagedDefault = null; // next to the manifest, {"toolbarIcon":"on"}, and 'auto' then resolves to that. So pup's window shows the // icon while John's own browser, loaded from the plain folder, keeps Chrome's unpinned default; no // desktop-wide setting has to change for one host. The user's explicit on/off (nbrowser_settings) still wins.+let _packagedDiag = null; async function packagedDefault() {   if (_packagedDefault !== null) return _packagedDefault;-  try { const r = await fetch(chrome.runtime.getURL('toolbar.json')); const j = r.ok ? await r.json() : null; _packagedDefault = (j && ['on', 'off'].includes(j.toolbarIcon)) ? j.toolbarIcon : ''; }-  catch { _packagedDefault = ''; }+  try {+    const url = chrome.runtime.getURL('toolbar.json');+    const r = await fetch(url, { cache: 'no-store' });   // a deleted toolbar.json must not keep answering from the HTTP cache+    const text = r.ok ? await r.text() : '';+    let j = null; try { j = text ? JSON.parse(text) : null; } catch (e) { _packagedDiag = { url, status: r.status, parse: String(e), head: text.slice(0, 40) }; }+    if (!_packagedDiag) _packagedDiag = { url, status: r.status, head: text.slice(0, 40) };+    _packagedDefault = (j && ['on', 'off'].includes(j.toolbarIcon)) ? j.toolbarIcon : '';+  } catch (e) { _packagedDiag = { error: String(e && e.message || e) }; _packagedDefault = ''; }   return _packagedDefault; } async function applyToolbarIcon(mode) {@@ -204,7 +211,7 @@ async function dispatch(verb, args) {     // --- meta -------------------------------------------------------------     case 'nbrowser_status': {       const own = native.ownershipSummary(); // dirty_session nag: surfaced while owned/spawned windows remain-      return { ok: true, ext: 'nbe', version: VERSION, engine: 'native', browser: detectBrowser(), toolbarIcon: _toolbarIcon, toolbarIconEffective: _toolbarEffective, ownedWindows: own.ownedWindows, spawnedWindows: own.spawnedWindows, sessions: own.sessions, _hint: own._nag };+      return { ok: true, ext: 'nbe', version: VERSION, engine: 'native', browser: detectBrowser(), toolbarIcon: _toolbarIcon, toolbarIconEffective: _toolbarEffective, toolbarPackaged: _packagedDefault, _toolbarDiag: _packagedDiag, ownedWindows: own.ownedWindows, spawnedWindows: own.spawnedWindows, sessions: own.sessions, _hint: own._nag };     }     case 'nbrowser_whoami': {       // Force a fresh Google-email resolve + RE-announce, so the bridge re-keys this connection to
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "nb-bridge",-  "version": "0.16.16",+  "version": "0.16.17",   "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.",