← Commit history

Scrub real personal emails/names from public repo (keep privacy@/support@ role contacts)

John Lauer ·59e1f9789e · ·parent 8ff928c
3 files changed +7−7
README.md+1−1
@@ -95,7 +95,7 @@ point it at, via the debugger/scripting APIs — never by loading external scrip  ## What's new -- **Drive ALL your browser profiles** ([email protected], [email protected], …), not just one — `nbrowser_profiles`+- **Drive ALL your browser profiles** (your work + personal Chrome/Edge profiles, …), not just one — `nbrowser_profiles`   / `nbrowser_use_profile` switch instantly, with a persistent **security blocklist** to exclude any. - **Know which of your tools you're signed into** — `nbrowser_credentials` is a *read-only* query over the   browser's own saved-login store (**Chrome + Edge**); it never stores or exposes passwords.
skills/driving-gusto/SKILL.md+4−4
@@ -19,7 +19,7 @@ Gusto = **Keycloak** (realm `zenpayroll`, at `login.gusto.com`) in front of a Ra  **Alternatives the detector may report:** - `action:"sso"` — **"Sign in with Google"** is offered. On a TRUSTED device with an active Google session it-  goes straight through (background, no password): click it → account chooser → pick `[email protected]` → Continue.+  goes straight through (background, no password): click it → account chooser → pick your work account → Continue. - `action:"autofill-popup"` — a **split** "Enter your password" step that did NOT autofill. Needs the ~1s   foreground autofill popup (see driving-the-desktop). Prefer the combined-form path above, which autofills. @@ -75,9 +75,9 @@ cookie** → the very next login is forced through **2FA**. If the user has no a lockout you created. Don't do it.  **Use Gusto's OWN Sign out instead:**-- The account menu is top-right: **"John Lauer / Adom Industries"** — a `button[aria-haspopup="menu"]`.+- The account menu is top-right: **"<Your Name> / <Your Org>"** — a `button[aria-haspopup="menu"]`. - ⚠️ **It does NOT open via a CDP `nbrowser_click`** (finicky React menu). Open it with a **real desktop click**:-  `desktop_find_control {contains:"Adom Industries"}` → `desktop_click` its rect → then `desktop_find_control+  `desktop_find_control {contains:"<your org>"}` → `desktop_click` its rect → then `desktop_find_control   {contains:"Sign out"}` → click. (A brief foreground for the logout; the login itself stays background.) - The Keycloak end-session URL (`/realms/zenpayroll/protocol/openid-connect/logout`) and `/logout` do **NOT**   clear the Rails app session — don't rely on them.@@ -91,5 +91,5 @@ lockout you created. Don't do it. | Password field | `input[type=password]` · UIA `automationId:"password"` | | Submit | `button[name='btn-login']` (label "Continue") | | Google SSO | text **"Sign in with Google"** |-| Account menu (for Sign out) | `button[aria-haspopup="menu"]`, text contains **"Adom Industries"** |+| Account menu (for Sign out) | `button[aria-haspopup="menu"]`, text contains **"<your org>"** | | 2FA | code field · **"Get text instead"** (SMS) · **"Remember device for 30 days"** checkbox |
skills/driving-the-extension/SKILL.md+2−2
@@ -78,14 +78,14 @@ Mouser uses a **Username** field (not email) — check `input` by name, not just  ## Parallel multi-browser / multi-profile control Every **BROWSER × PROFILE is its own independently-addressable connection**, keyed `browser:email`-(e.g. `chrome:[email protected]`, `edge:[email protected]`, `chrome:[email protected]`). The same account signed into+(e.g. `chrome:[email protected]`, `edge:[email protected]`, `chrome:[email protected]`). The same account signed into Chrome AND Edge are DISTINCT connections that coexist — the host singleton AND the bridge both key by `browser:profile`, so the 2nd browser's host no longer exits with *"Native host has exited."*  - **List them:** `nbrowser_profiles` → each entry's `profile` field is its addressable key, plus   `browser`, `email`, `live`, `active`. - **Target any of them, in PARALLEL:** pass `profile:"<key>"` on ANY verb —-  `nbrowser_navigate {profile:"edge:[email protected]", url:…}`. Also accepts `profile:"<email>"`++  `nbrowser_navigate {profile:"edge:[email protected]", url:…}`. Also accepts `profile:"<email>"`+   `browser:"edge"`, or `browser:"edge"` alone (that browser's active profile). A wrong/absent target   no-routes cleanly (doesn't fall through to the wrong browser). - **Multiple AI threads at once:** separate Claude/Codex threads can each drive their own