← Commit history
bridge/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.1.48\ No newline at end of file+0.1.49\ No newline at end of file
bridge/bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "native-browser",   "displayName": "Adom Browser Extension",-  "version": "0.1.48",+  "version": "0.1.49",   "expectedExtensionVersion": "0.1.3",   "description": "Drives the user's REAL signed-in Chrome/Edge. MOST verbs require the Adom extension installed in that browser profile (CDP driving: navigate/click/read/screenshot). TWO verbs need NO extension at all and work on any machine: nbrowser_open_os_window (open a URL in the user's real profile, background+flashing - the OAuth/consent path) and nbrowser_os_windows (enumerate browser windows). Also extension-free: nbrowser_profiles, nbrowser_wake_profile, nbrowser_force_close. The bridge binds an ephemeral loopback port and the native-messaging host pumps stdio <-> bridge.",   "homepage": "https://wiki.adom.inc/adom/adom-browser-extension",
bridge/package.json+1−1
@@ -1,6 +1,6 @@ {   "name": "adom-native-browser-bridge",-  "version": "0.1.48",+  "version": "0.1.49",   "private": true,   "description": "adom-desktop bridge for the Adom native-browser extension (Chrome + Edge)",   "main": "server.js",
bridge/server.js+1−1
@@ -737,7 +737,7 @@ function applyBadge(sid, hwnd, profileKey, style) { // honest to show. function announceVisibleOpen(what, why, sid) {   const reason = String(why || (sid && sessionPurpose.get(sid)) || '').trim().slice(0, 160) || 'no reason given';-  adCommand(null, 'desktop_caption', { text: `Adom ${what} - ${reason}`, id: 'adom-foreground', position: 'bottom', duration: 2000 })+  adCommand(null, 'desktop_caption', { text: `Adom ${what} - ${reason}`, id: 'adom-foreground', position: 'bottom', duration: 3000 })     .then((r) => { const ok = !!(r && r.status >= 200 && r.status < 300); logActivity({ verb: '_open_announce', sessionId: sid || null, ok, ops: `${what} | ${reason}`.slice(0, 110), errorCode: ok ? null : `http_${(r && r.status) || 0}`, internal: true }); })     .catch(() => {}); }
dev-skills/developing-the-bridge/SKILL.md+2−1
@@ -298,8 +298,9 @@ exercised, `announceForeground()` now paints a full-desktop `desktop_caption` wi erodes trust in an agent that can touch their desktop.  ## ⭐ Announce EVERY user-visible open, at the BOTTOM of the screen (John, 2026-07-22)+(Duration: **3s** - 2s was tried live and read too fast to actually absorb.) **The rule:** if a native-browser open is going to be visible to the user — because that is simply how-the browser behaves — **allow it**, do not fight it, but put up a **2-second desktop caption naming the+the browser behaves — **allow it**, do not fight it, but put up a **3-second desktop caption naming the reason**. Fighting the browser produced worse bugs than the foregrounding ever did; being unannounced is the actual failure. Three cases must announce (`announceVisibleOpen`): 1. an explicit foreground grant (`foreground:true` / `userRequestedForeground` + reason),
native-browser-bridge-manifest.json+4−4
@@ -1,8 +1,8 @@ {   "manifest_version": 1,-  "version": "0.1.48",-  "url": "https://wiki.adom.inc/download/adom/adom-browser-extension/0.1.48/native-browser-bridge-v0.1.48.zip",-  "sha256": "f031e351ed9ccf53c3aea806b65689398933d234e11add89252447f3d919b4a2",-  "size": 95931,+  "version": "0.1.49",+  "url": "https://wiki.adom.inc/download/adom/adom-browser-extension/0.1.49/native-browser-bridge-v0.1.49.zip",+  "sha256": "3d9b4b0768ebe249f81460d94f3bc44289b1baa88dd96bc9f73d4db96cad4135",+  "size": 95934,   "released_at": "2026-07-22T00:00:00Z" }