v0.16.18 (insiders): Window identity is scoped to the window's own browser (adom/nb-bridge#47): Edge, Chrome and Chrome…
v0.16.17 (insiders): Toolbar icon packaged default reads toolbar.json with cache no-store and reports toolbarPackaged p…
v0.16.16 (insiders): Toolbar icon: 'auto' resolves to a packaged toolbar.json ({toolbarIcon:on}) when the host that loa…
v0.16.15 (insiders): The nbe's browser toolbar icon is now a setting (toolbarIcon auto|on|off, default auto = Chrome's…
v0.16.14 (insiders): On an Edge-only box nb no longer steers the AI toward installing Chrome (adom/nb-bridge#46): chrom…
v0.16.13 (insiders): chrome_status.notifications finds ab's notifications block by shape (the direct /status nests it d…
v0.16.12 (insiders): chrome_status.notifications: try both ab base URLs for /status and report how the read went (abRea…
v0.16.11 (insiders): chrome_status.notifications reads ab's /status over a plain GET (it is not a command verb), so urg…
v0.16.10 (insiders): chrome_status.notifications reads ab's status reply through the same unwrap the window list uses (…
v0.16.9 (insiders): nbrowser_chrome_status.notifications now also reads ab's own notification permissions (bannersEnabl…
v0.16.8 (insiders): Chrome install on a locked-down box (adom/nb-bridge#45): nbrowser_install_chrome {retryUac:true} re…
v0.16.7 (insiders): Send to AI uses Hydrogen's AI picker (adom/nb-bridge#44): no type on a new thread, so the human pic…
v0.16.6 (insiders): Layer 1 on a fresh box: profiles with no signed-in account are listed (anonymous:true, keyed by dir…
v0.16.5 (insiders): Preflight answers 204 only for the three proxied routes and /api/*, 404 elsewhere (control-api-prox…
v0.16.4 (insiders): Send to AI for Hydrogen 1.0.187+: newbie-panel.js re-vendored at 2.22.0 (job + state polling, pre-1…
v0.16.3 (insiders): nbrowser_close_window replies again: the cleanup branch called .map on close_window's boolean close…
v0.16.2 (insiders): nb-bridge#41: hover/move/wheel accept raw {x,y} (the stale_coordinates gate is clicks-only and name…
v0.16.1 (insiders): Activity rows now project the verified origin (nbrowser_activity entries carry origin: relay|local|…
v0.16.0 (insiders): First insiders-tier build (adom/nb-bridge#39): insidersManifestUrl in bridge.json, one version acro…
nb 0.5.1: taskbar progress value is PERCENT (0..100); the 0..1 bar was invisible - caught by a real capture
nb 0.5.0: persisted user settings + nbrowser_settings (overlayBadge, taskbarActivity progress|flash|off, flashMode); ov…
nb 0.4.13: Edge disabled-detection (disable_reasons, Edge writes no state field) + disabled-is-a-choice hints - a user-…
nb 0.4.12: wake_profile escalates to a minimized window when windowless wake fails (Chromium never starts load-unpacked…
nb 0.4.11 / nbe 0.2.8: dialog pre-answer arming (Chrome cancels dialogs under a debugger; the hold-open design was impo…
nb 0.4.10 / nbe 0.2.7: per-tab last-dialog memory immune to foreign events drains; battery dialog retry
nb 0.4.9 / nbe 0.2.6: a click that opens a dialog reports dialogOpened + changed:true instead of retrying into the froz…
nb 0.4.8: bare pin_session pins to the session's resolved route, never to an empty-email pending socket
nb 0.4.7: register a host on first DATA not on connect (kills pending-N churn from port probers); battery guard matches…
nb 0.4.6: an owner may force_close its own OS window (open_os_window cleanup path was refusing its opener)
nb 0.4.5: readiness proves an unlabelled connection with a live ping probe (flapping host loop reads needs-extension, h…
nb 0.4.4: auto-resolve pending profile labels on connect (was only manual)
nb 0.4.3: pending-* connections are DRIVABLE and count as ready (the real 'nbe not connected' bug); revert the zombie r…
nb 0.4.2: reap zombie hosts on EVIDENCE (unanswered probes), never on age alone
nb 0.4.1 / nbe 0.2.5: force a frame instead of a foreground; zombie host reaper; thread-named foreground caption; nbe p…
0.4.0 + nbe 0.2.4: #21 dialogs auto-answered (page can never wedge) + policy:manual; #20 root-caused - finder ignored o…
0.3.9 + nbe 0.2.2: state enriches url/title via list_tabs (list_windows returns sessionId:null); click change-detection…
0.3.8 + nbe 0.2.1: dialogs auto-answered so a driven confirm() can never wedge the page (#21); click-by-text self-heals…
0.3.7: demo wakes a sleeping profile and retries once - turnkey for the web-control demo
0.3.6: demo bounded (never hangs) + skips a pointless 2.4s pre-close
0.3.5: readiness means DRIVABLE - pending-* no longer counts as ready; unroutable pending fails fast as extension_resol…
0.3.4: bound the optional screenshot leg so nbrowser_state can never hang the caller
0.3.3: state reports only YOUR live sessions (was listing other threads' + dead ones); all:true to inspect
0.3.2: nbrowser_state must report only OUR sessions - it was leaking the user's own windows
0.3.1: fix composite handlers referencing an out-of-scope args alias (30s hang instead of an error) + guarded() so a th…
0.3.0: nbrowser_state + nbrowser_demo (issue #22: own your window identity, no title-guessing)
0.2.6: pending-* pins never stick + close_window forgets registration (battery finding: poisoned sessionIds)
0.2.5: cascade uses ab's real {hive,key} registry args (a joined path silently no-ops)
0.2.4: nbrowser_uninstall cascade hook (ab 2.0.35) + adom-bridge CLI name sweep
0.2.3: Claude-for-Chrome detection in the degradation ladder (human fallback awareness, never drivable)
nb-bridge: slug rename to match the <name>-bridge convention; HD/AD shorthand purge (ah/ab only)