← Commit history
bridge/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.1.52\ No newline at end of file+0.1.53\ 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.52",+  "version": "0.1.53",   "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.52",+  "version": "0.1.53",   "private": true,   "description": "adom-desktop bridge for the Adom native-browser extension (Chrome + Edge)",   "main": "server.js",
bridge/server.js+2−1
@@ -1357,13 +1357,14 @@ function dispatch(verb, args) {       if (args && args.sessionId) rows = rows.filter((r) => r.sessionId === args.sessionId);       if (args && args.profile) rows = rows.filter((r) => (r.profile || '').includes(String(args.profile)));       if (args && args.thread) rows = rows.filter((r) => r.thread === args.thread);+      if (args && args.caller) rows = rows.filter((r) => String(r.caller || '').includes(String(args.caller)));       if (args && args.verb) rows = rows.filter((r) => r.verb === args.verb || r.verb === 'nbrowser_' + args.verb);       if (args && args.errorsOnly) rows = rows.filter((r) => r.ok === false);       if (args && args.sinceMs) rows = rows.filter((r) => r.ts >= now - Number(args.sinceMs));       const limit = Math.min(Number(args && args.limit) || 100, 600);       // Carry the taskbar/window detail through (hwnd + which overlay/flash op) so a missing badge or a       // dead flash is debuggable straight from this trail, not just "something failed".-      const entries = rows.slice(-limit).map((r) => ({ agoMs: now - r.ts, verb: r.verb, sessionId: r.sessionId, thread: r.thread, profile: r.profile, ok: r.ok, errorCode: r.errorCode || undefined, error: r.error || undefined, hwnd: r.hwnd || undefined, ops: r.ops || undefined, internal: r.internal || undefined }));+      const entries = rows.slice(-limit).map((r) => ({ agoMs: now - r.ts, verb: r.verb, sessionId: r.sessionId, thread: r.thread, profile: r.profile, ok: r.ok, errorCode: r.errorCode || undefined, error: r.error || undefined, hwnd: r.hwnd || undefined, ops: r.ops || undefined, internal: r.internal || undefined, caller: r.caller || undefined }));       const bySession = {};       for (const r of rows) { if (!r.sessionId) continue; const s = bySession[r.sessionId] || (bySession[r.sessionId] = { sessionId: r.sessionId, thread: sessionThread.get(r.sessionId) || r.thread, ownerCaller: sessionCaller.get(r.sessionId) || null, purpose: sessionPurpose.get(r.sessionId) || null, profile: r.profile, count: 0, lastAgoMs: Infinity }); s.count++; s.lastAgoMs = Math.min(s.lastAgoMs, now - r.ts); }       return resolve({ success: true, output: JSON.stringify({ ok: true, count: entries.length, totalLogged: ACTIVITY_LOG.length, windowMs: ACT_LOG_TTL_MS, activeSessions: Object.values(bySession).sort((a, b) => a.lastAgoMs - b.lastAgoMs), entries, _hint: 'Bounded activity trail (max 600 entries / ~1h, in-memory, resets on bridge restart). Filter: {sessionId, thread, profile, verb, errorsOnly:true, sinceMs, limit} - verb:"_taskbar" shows every overlay-badge/flash paint (hwnd + ops + ok), verb:"_ad_link" shows AD-link outages/recoveries. activeSessions = who drove what + how long ago (lastAgoMs); a large lastAgoMs means that session is idle (its badge should have faded).' }) });
native-browser-bridge-manifest.json+4−4
@@ -1,8 +1,8 @@ {   "manifest_version": 1,-  "version": "0.1.52",-  "url": "https://wiki.adom.inc/download/adom/adom-browser-extension/0.1.52/native-browser-bridge-v0.1.52.zip",-  "sha256": "87eb000def15054aec5d05f05b6b6d13f35d69f927380504fe93968a75236582",-  "size": 99127,+  "version": "0.1.53",+  "url": "https://wiki.adom.inc/download/adom/adom-browser-extension/0.1.53/native-browser-bridge-v0.1.53.zip",+  "sha256": "ce8b96c1683f52885a8ba7e752a3c05f48595cc4905e244f8ba40f58239699a5",+  "size": 99154,   "released_at": "2026-07-25T00:00:00Z" }