← Commit history

v0.16.5 (insiders): Preflight answers 204 only for the three proxied routes and /api/*, 404 elsewhere (control-api-proxy trap 1), so checkSend's send-route row compares a real route against a real 404.

John Lauer ·f4bacdf2ce ·2mo ago ·parent 36d36d7
5 files changed +11−6
bin/nb-dashboard+7−2
@@ -20,7 +20,7 @@ const { execFile, spawn } = require('child_process'); const fs = require('fs'); const crypto = require('crypto'); -const VERSION = '0.16.4';           // keep in lockstep with package.json (pkg version)+const VERSION = '0.16.5';           // 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.@@ -864,7 +864,12 @@ function startServer() {     // the send route with OPTIONS, and until 0.15.1 the page catch-all answered it with HTML 200,     // so the 'send route wired' row passed for the wrong reason. A real 204 makes it pass for the     // right one, and is what a cross-origin caller needs anyway (2026-08-25).-    if (req.method === 'OPTIONS' && (u.startsWith('/api/') || u.startsWith('/updater/status') || u.startsWith('/ai-threads/run-prompt'))) {+    // Preflight ONLY for paths that exist (control-api-proxy trap 1): a blanket 204 makes checkSend's+    // "send route wired" row read 204/204 for a real route and a nonsense path alike, which is a bug in+    // the proxy, not the check. Exact paths for the three proxied routes; /api/* stays a prefix because+    // every /api route is ours.+    const uPath = u.split('?')[0];+    if (req.method === 'OPTIONS' && (uPath.startsWith('/api/') || ['/updater/status', '/ai-threads/run-prompt', '/ai-threads/run-prompt/status'].includes(uPath))) {       res.writeHead(204, CORS); res.end(); return;     }     if (u.startsWith('/api/status')) {
bridge/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.16.4\ No newline at end of file+0.16.5\ No newline at end of file
bridge/bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "native-browser",   "displayName": "Adom Native Browser",-  "version": "0.16.4",+  "version": "0.16.5",   "expectedExtensionVersion": "0.2.10",   "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.16.4",+  "version": "0.16.5",   "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",
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "nb-bridge",-  "version": "0.16.4",+  "version": "0.16.5",   "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.",