← Commit history

Update 4 file(s)

John Lauer ·4a1d7ed2a0 ·2mo ago ·parent 532a29a
2 files changed +26
CLAUDE.md+8
@@ -53,6 +53,14 @@ See `PUBLISHING.md` for the full recipe. Short form: edit `src/` → bump `src/B `adom-bridge-cli bridge_install {"manifestUrl": ".../files/adom-bridge-puppeteer-manifest.json","force":true}` to test → verify in pup. Wiki = canonical. +**ALWAYS reload/recreate every pup window after a deploy (standing rule from John, 2026-08-11):**+after EVERY `bridge_install`, close and reopen every window this thread owns (`pup_my_windows` →+`pup_close_window` → `pup_open_window`), run `pup_quit_idle_browsers` between close and reopen so+extension updates actually load (a warm Chrome never reloads its staged extensions), and verify+with a screenshot — the user must never look at a window running yesterday's code. Note: the+shared adom-you Chrome only truly relaunches when NO thread has live windows on it; when other+threads hold it warm, say so instead of claiming the extensions updated.+ **ALWAYS show wiki changes in pup (standing rule from John):** after ANY publish/edit to this wiki page (release, repo push, pkg, page.json), refresh the LIVE page in a pup window the user can see (cache-bust with `?v=<ver>`), screenshot it, and surface the link — never just say "published."
SKILL.md+18
@@ -14,6 +14,24 @@ adom-bridge-cli --ai-thread "<your thread>" pup_open_window '{"sessionId":"mytas adom-bridge-cli --ai-thread "<your thread>" pup_screenshot  '{"sessionId":"mytask-web"}' ``` +## Logins: pup manages your credentials (no Chrome picker)++pup runs its OWN password manager, so the AI signs into sites without Chrome's foreground autofill+dropdown. Backed by the OS keychain (encrypted at rest); passwords are never logged, never echoed.++- **Auto-capture**: sign into any site in a pup window and pup records the credential to the vault+  as you submit. The next verb response carries `_credentialCaptured` telling you it grew the+  shared adom-you identity. Turn off with `pup_configure {captureLogins:"off"}`.+- **Auto-fill on return**: a matching login page is filled in the background over CDP (no dropdown,+  no foregrounding). The response carries `_autoLogin`, which **regurgitates the live domain** and+  asks you to confirm it is the intended site (anti-phishing).+- **Submit is reason-gated**: pup NEVER auto-submits a stored password. To sign in, call+  `pup_login {submit:true, submitReason:"<why this domain is the right one>"}`. Bare `submit:true`+  is refused with `submit_reason_required` and the exact live host, so a lookalike/typo/redirected+  domain is caught before the secret is sent.+- **Manage**: `pup_credentials {}` lists saved logins (host + username only); `credential_delete+  {host}` removes one; `credential_set {host, username, password}` stores one explicitly.+ ## Addressing: your thread name IS the handle  You never need an hwnd, `desktop_find_window`, or `desktop_screenshot_window` for a pup