← Commit history
Publish 0.4.2
5 files changed
+48−9
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-browser-extension",- "version": "0.4.1",+ "version": "0.4.2", "type": "app", "title": "Adom Native Browser Extension (Chrome + Edge)", "description": "Drive your real, logged-in Chrome/Edge from the Adom ecosystem: the nbrowser_* native-browser bridge (counterpart to pup). Multi-profile driving, a read-only credential-library query over the browser's own saved logins (Chrome + Edge), and hands-free vendor login automation, so chip CAD / datasheets download past every login wall in your real signed-in session.",
page.json+1−1@@ -58,7 +58,7 @@ "visibility": "public", "brief": "Your AI's hands in your real, signed-in Chrome & Edge: build, drive, and test web apps, and log past vendor walls, in the browser you already use. The nbrowser_* native-browser bridge (pup's counterpart) - runs in your actual logged-in profile, so cookies/SSO/saved-logins/captcha all work.", "discovery_pitch": "The native-browser extension drives the user's REAL signed-in Chrome/Edge via nbrowser_* verbs: use it for LOGGING IN, filling forms, and downloading behind auth with their OWN saved passwords - pup cannot (it is a fresh Chrome-for-Testing with no logins). Next moves: run 'adom-desktop bridge_list' to check it is installed; if not, OFFER to install it (see the installing-the-extension skill) - never make the user do it. If this container lacks the skills, 'adom-wiki pkg install adom/adom-browser-extension'. Check readiness with 'adom-desktop nbrowser_readiness' (state:needs-extension means offer the install).",- "version": "0.4.1",+ "version": "0.4.2", "type": "app", "description": "Drive your real, logged-in Chrome/Edge from the Adom ecosystem: the nbrowser_* native-browser bridge (counterpart to pup). Multi-profile driving, a read-only credential-library query over the browser's own saved logins (Chrome + Edge), and hands-free vendor login automation, so chip CAD / datasheets download past every login wall in your real signed-in session.", "install": {
skills/driving-the-extension-demo/SKILL.md+6−3@@ -96,9 +96,12 @@ nbrowser_taskbar {"sessionId":"demo","progress":{"state":"paused","value":70}} nbrowser_flash {"sessionId":"demo"} # orange "come look" flash nbrowser_flash_stop {"sessionId":"demo"} ```-Verified to render: the **teal Adom badge sits on the Chrome taskbar button's corner**, and a-green/yellow **progress bar** runs along the button's bottom. To prove it in a frame, full-screen-capture then crop+zoom the button (`desktop_screenshot_screen` → crop the bottom taskbar strip).+Verified to render: the badge is a **composite - the profile's circle avatar with the Adom favicon in+its lower-right corner** - sitting in the Chrome/Edge taskbar button's overlay slot (so the user still+sees whose profile it is), and a green/yellow **progress bar** runs along the button's bottom. The badge+applies AUTOMATICALLY while driving and idle-expires (~3 min) back to the plain native avatar, so for a+demo you normally just drive and point at it. To prove it in a frame, full-screen capture then crop+zoom+the button (crop the bottom taskbar strip). ## Recipe - "am I logged in to <site>?" + drive logout/login ```bash
skills/driving-the-extension/SKILL.md+25−4@@ -348,9 +348,23 @@ page, so those coords are page-absolute. Paint glanceable status on the **real browser window's Windows taskbar button** (the hwnd is captured at `open_window`; an **Adom overlay badge** goes on automatically while driving - a trust tell). It lands on **opened windows at open, and on adopted SPAWNED windows** when you call `nbrowser_owned` /-`nbrowser_list_windows` (that is when the bridge learns their hwnd). If a badge is ever missing (immersive-fullscreen hides the taskbar; a diff missed), re-apply `nbrowser_taskbar {overlay:{badge:"adom"}}`. Driven-via AD's `desktop_taskbar` (1.8.152+).+`nbrowser_list_windows` (that is when the bridge learns their hwnd). Driven via AD's `desktop_taskbar`.++**What the badge actually is (v0.1.12+):** Chrome/Edge use the taskbar overlay slot for the **profile+avatar**, so a bare Adom badge would evict it and the user loses "which profile is this?". The bridge+therefore builds a **composite**: the profile's own avatar **circle-cropped** (exactly how the browser+draws it) with the **Adom favicon in its lower-right corner** - one glance says both *whose profile* and+*Adom is driving it*. It works for Chrome AND Edge (each browser's own avatar file), is composited+natively on the user's machine, and is cached per profile.++**Badge lifecycle - you do NOT manage it:**+- Applied automatically at `open_window` and re-asserted by drive verbs.+- **Idle-expires after ~3 min** of no commands: the button repaints the **plain native avatar** (the+ overlay slot is NEVER blanked - blanking would erase the user's own avatar).+- `overlay:{badge:"none"}` = "restore native look" (safe); `overlay:{badge:"adom"}` = re-apply the+ composite (only needed if a badge went missing, e.g. immersive fullscreen hid the taskbar).+- On `close_window` / bridge restart, stale badges are swept by repainting native avatars - never by+ clearing slots. - `nbrowser_flash {sessionId}` / `nbrowser_flash_stop` - orange "come look" cue (auto-clears on focus). - `nbrowser_flash_mode {mode}` - **`quiet`** (default; auto-flash on come-look moments: page load, screenshot, an error/refusal, a human-gate, and freshly SPAWNED windows - flash MANUALLY with@@ -359,7 +373,14 @@ via AD's `desktop_taskbar` (1.8.152+). annoying). - `nbrowser_taskbar {progress:{state,value?}, overlay:{badge,tooltip?}}` - progress states: `normal`(green) · **`paused`(YELLOW - use for captcha/2FA/login human-gates)** · `error`(red) ·- `indeterminate`(marquee) · `none`. Overlay `badge:"adom"|"none"`.+ `indeterminate`(marquee) · `none`. Overlay `badge:"adom"|"none"` (see lifecycle above).++## Activity log - "who drove what, when" (`nbrowser_activity`)+The bridge keeps a bounded in-memory trail (max 600 entries / ~1h TTL; resets on bridge restart) of every+forwarded verb: `{agoMs, verb, sessionId, thread, profile, ok, errorCode}` plus an `activeSessions`+summary (each with `lastAgoMs`). Use it to answer "why is that profile badged?", "what thread is driving+right now?", or to debug a stray window. Filter with `{sessionId, thread, profile, verb, errorsOnly,+sinceMs, limit}`. A session with a large `lastAgoMs` is idle - its badge has already idle-expired. Play it like a status light: indeterminate green while working → yellow + flash on a human-gate → clear + one flash on done. **Respect the user's mode** (anxiety-driven users want `chatty`; trusting users want
skills/native-browser-safety/SKILL.md+15@@ -154,6 +154,21 @@ To record a browser window, use the core adom-desktop verb `desktop_record_windo banner, captures occluded, no focus theft. The extension's own `getdisplaymedia`/`tabcapture` path is a refused-by-default fallback (Chrome forces a manual share picker). Full detail: **native-browser-recording**. +## The badge is the user's trust tell - never fake it, never blank it+While you drive, the bridge automatically paints the window's taskbar button with a **composite badge:+the profile's own circle avatar + the Adom favicon in its corner**. That is how the user knows, at a+glance, that an AI is in that browser and *which profile* it is. Three rules:+- **Don't manage it.** It applies at `open_window`, follows your drive verbs, and idle-expires (~3 min+ of silence) back to the plain native avatar. A badge that lingers with nothing driving is a bug, not+ a feature - never re-apply it to a window you aren't actively working.+- **Never blank the overlay slot.** Chrome/Edge keep the profile avatar there; `overlay:{badge:"none"}`+ is safe (the bridge RESTORES the native avatar), but never try to clear the slot by other means.+- **The orange flash is the "come look" cue** and the user can silence it (`flash_mode:"off"`). Errors,+ human-gates (captcha/2FA/login), and fresh spawned windows auto-flash in `quiet` mode; flash manually+ at task-done. Respect `off` absolutely.+The bounded activity trail (`nbrowser_activity`) records who drove what and when - if the user asks+"why is my browser badged?", query it instead of guessing.+ ## Every verb tells you how to behave - read the hints Every `nbrowser_*` response carries a `_hint` (what you got, what to do next, the trap to avoid), and `nbrowser_describe` lists each verb's `hint` / `related` / `pitfalls`. When unsure, call