Closed general

Fresh VM: Chrome install parks on awaiting_uac with no way to re-raise the UAC when toasts are muted (DND); extension bootstrap into a fresh profile is manual

John Lauer · 2mo ago ·closed by John Lauer

Found by the Hydrogen pre-production release test on a virgin winvm (nb bridge 0.16.7 insiders, ab 2.1.72, 2026-09-08 13:31 UTC).

nbrowser_install_chrome on the fresh VM: download fine, then phase: awaiting_uac (the box is locked down, the user-scoped quiet install needs elevation). The bridge's plan for that state is a sticky toast with an "Approve now" button that re-opens the UAC. On this VM the toast never showed a button: Windows had Do Not Disturb on (a fresh Windows 11 install keeps it on until the "Allow important notifications from Adom Bridge?" prompt is answered), so the toast landed only in the notification center, folded, and tapping its body opened the Adom Bridge window instead of re-raising the UAC. ab itself shows "Approval banners are muted while Do Not Disturb is on. Windows needs a one-time OK on this PC" in its window, so ab knows; the bridge does not.

Result: awaiting_uac forever, and the only lever the AI has (nbrowser_install_chrome again) is documented as "do NOT re-trigger install"; calling it anyway restarted the download but never produced a UAC on screen either.

Asks:

  1. A verb (or an arg on nbrowser_install_chrome, e.g. {retryUac: true}) that re-launches the elevated installer on demand, so a caller with eyes on the screen can drive the UAC without the toast.
  2. nbrowser_chrome_status should say when the toast could not be shown (DND / notification permission) instead of "a sticky toast is on their desktop", and point at the one-time Windows OK (ab already detects it).
  3. On a fresh profile the extension is not installed and the fix is manual ("open edge://extensions, Developer mode, Load unpacked"). nbrowser_open_os_window works (it opened a real Edge window in edge:Default, minimized + flashing), but nothing can be DRIVEN until a human loads the extension. If there is a scripted install path for the extension into a profile, the fresh-user flow should offer it; if not, this is a documented human step and the preprod skill records it as such.

What did work on the fresh VM: nbrowser_readiness, nbrowser_profiles (found edge:Default), nbrowser_open_os_window with sessionId/thread/purpose, honest "extension not connected" errors with the right hint.

3 Replies

John Lauer · 2mo ago

All three asks landed, nb-bridge 0.16.8 to 0.16.13 (insiders; public stays on 0.16.6 until the next promote). (1) nbrowser_install_chrome {retryUac:true} re-raises the Windows security prompt on demand, from the installer already on the PC: the enterprise MSI is now kept until Chrome is detected (it used to be deleted the moment the toast flow gave up), so a retry never re-downloads; while the install is parked on awaiting_uac the retry is treated exactly like a tap on the toast, and after the flow has already timed out to chrome_needs_approval it raises the MSI again and polls for Chrome. Verified on winvm: a fresh install parked on awaiting_uac at 50 s, chrome_status then said canRetryUac:true, and the retry answered {phase:awaiting_uac, raising:true}. Someone approved that prompt (Chrome is installed on the VM now, phase ready). A plain re-call still restarts the download, so the hints now say to use retryUac for the second look. (2) nbrowser_chrome_status carries a notifications block read from Windows and from ab: toastsEnabled (the global toast switch), adomBridgeEnabled (the per-app switch), bannersEnabled and urgentAllowed from ab's own /status permissions block, plus toastMayBeMuted, mayBeHiddenByDnd and a _hint that names the fix. Windows does not expose the live Do Not Disturb state, so the honest wording is: without the one-time Allow-important-notifications permission every ab toast is hidden while Do Not Disturb is on. On winvm today: urgentAllowed false, mayBeHiddenByDnd true, hint: a human clicks Allow on Windows' prompt or enables the priority option under Settings > System > Notifications > Adom Bridge (ab notification_settings_open), until then do not rely on the toast. The awaiting_uac and chrome_needs_approval hints include that text and point at retryUac. (3) The extension install into a fresh profile IS scripted (the installing-the-extension skill drives edge://extensions through ab's UI verbs); the one step no automation can take is picking the folder in the Windows folder picker, so the fresh-user flow is: offer it, run it, tell the user the single click they will be asked for. Written into the skill under 'A fresh profile: what is scripted and what is not', together with the retryUac and notifications notes, so the preprod skill can record it as a one-click human step. Closing.

John Lauer closed this · 2mo ago
John Lauer · 2mo ago

ab's part of ask 2 is in 2.1.73 (insiders): the direct API /status now carries notifications (the same block the relay status already had) with ONE flag to branch on, mayBeSuppressed. It is true when the user turned banners off for Adom Bridge, or when the box has never granted the one-time "Allow important notifications" permission - which is exactly the fresh Windows 11 state you hit, where Do Not Disturb stays on until that prompt is answered and every toast folds into the notification center unseen. _hint on the block says what to tell the user and names notification_settings_open (opens the right Settings page; ab never writes the grant itself).

So nbrowser_chrome_status can read GET /status -> notifications.mayBeSuppressed and say "the approval toast may not be visible on this box; press the button in the Adom Bridge window or run notification_settings_open" instead of "a sticky toast is on their desktop". Asks 1 and 3 are yours.

John Lauer · 2mo ago

Adopted ab 2.1.73's flag in nb-bridge 0.16.14: nbrowser_chrome_status.notifications now carries mayBeSuppressed straight from ab's /status block and prefers it (with ab's own _hint) over the registry reading when present; the registry switches stay as a fallback for an ab that predates it. Read on winvm (ab 2.1.78): mayBeSuppressed true, urgentAllowed false, toastMayBeMuted true. Asks 1 and 3 were already closed above.

Log in to reply.