app
Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
← Commit history
SKILL.md+42@@ -363,3 +363,45 @@ that owns it. **Do NOT `export ADOM_AI_THREAD`** — threads share one container and one `$HOME`, so it names the shell rather than you: every thread reports the same name, which is worse than none because it is confident and wrong. Pass it per call (or `{"caller":{"aiThread":"..."}}` in the args).++## AUDIT YOURSELF — the standard procedure when John says "audit your windows" (2026-07-30)++**"Audit your windows" ALWAYS includes the ICONS.** John had to tell me this twice: I reported+sessions, health, geometry and logs and left the taskbar out, and the icon state was where the real+regressions were hiding (a window that silently lost its badge after a restart; 8 stale AUMID keys for+3 windows). An audit without the icon section is not an audit — and it is not finished until you have+looked at the taskbar ON GLASS, because the API reports a badge as applied while it is invisible.++Run ALL SEVEN sections, in this order, and report them as a table:++1. **Sessions (bridge view)** — `browser_list_windows`: count, sessionId, owner, tabCount, profile,+ ageMinutes, `_degraded`. Flag: owner:null (ownership protection is off), duplicate sessions+ pointing at one window, a tabCount that does not match what was opened.+2. **ICONS / TASKBAR (never skip)**+ - per window: the `overlay` field — `favicon+adom:<host>` (correct), `count:N`, or `none` **plus+ its reason**. A `none` on a favicon-serving page is a regression; a `none` on local PDFs is+ legitimate (no favicon exists).+ - AUMID keys: `reg query HKCU\Software\Classes\AppUserModelId` filtered to `Adom.Pup*`.+ Expect **exactly 1** (`Adom.Pup`) under minimalTouch. More = stale keys from closed windows, or+ per-window identity churn that destroys/recreates taskbar buttons.+ - **ON GLASS:** `desktop_screenshot_screen`, crop the taskbar strip, and LOOK. Confirm each pup+ button wears the composite badge (page favicon + Adom mark inset flush in the lower-right).+ Report how many of N windows are actually badged.+3. **OS ground truth** — `desktop_find_window {titleContains:"(session:"}`: one real window per+ session (no ghosts, no untracked strays), and each rect at the standard inset frame+ (15,15 2531x1499 on this laptop). A maximized window reads ~-11,-11 2582x1550 — that is+ maximized, not stranded. `-32000,-32000` = minimized, confirm with IsIconic before calling it lost.+4. **Health** — `browser_eval` per window: `readyState`, `visibilityState`, a `1+1` drivability check.+ `visibilityState:hidden` is NORMAL for a parked/minimized window; only **frontmost-yet-hidden** is+ the broken state. Note any crashed tabs.+5. **Log** — `bridge_log_read`, count `[crash] [heal] [health] [unstick] [disconnect] [reclaim]+ [tabs] park-failed Handler error`. Explicitly report **park-failed** and **[reclaim] adopted**+ lines: a park-failed window is sitting wherever Chrome left it, and an adoption means pup LOST a+ window and re-bound it (which produces duplicate sessions for one window).+6. **Chrome footprint** — procs + total MB, and **pup's share vs the user's own Chrome**. Never+ report a big total as if it were all pup's.+7. **Cleanup state** — leftover test windows, phantom sessions, stale session files.++**Report rules:** state what is WRONG first, name which findings are your own regressions, and never+present an API-reported success (badge applied, verb ok:true) as proof — prove it on glass or in the+page.
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-puppeteer-bridge",- "version": "1.9.201",+ "version": "1.9.202", "type": "app", "description": "The pup SKILL PACK \u2014 the AI skills that teach a cloud/container AI how to drive the Adom Desktop Puppeteer (pup) bridge (browser_* verbs): the everyday `pup` skill plus focused sub-skills for windows/sessions/tabs, screenshots+recording, browsers+Chrome install, and driving the Adom wiki. Installs into ~/.claude/skills + ~/.codex/skills. DOCS ONLY \u2014 this is NOT the bridge runtime. The bridge itself (the Node program that drives the browser) runs on the DESKTOP: Adom Desktop bundles it and auto-installs/updates it, and it's published separately on the Releases tab as adom-bridge-puppeteer-v<ver>.zip. So the pkg version (skills, bumps often) and the Release version (runtime, bumps rarely) differ on purpose. TL;DR: pkg install = the skills for your AI; the bridge = the Release zip, which Adom Desktop manages for you.", "keywords": [
page.json+1−1@@ -4,7 +4,7 @@ "slug": "adom-desktop-puppeteer-bridge", "title": "Adom Desktop - Puppeteer Bridge", "brief": "The Adom Desktop Puppeteer (pup) bridge — drive a real headful browser on the user's desktop from the cloud: open/screenshot/eval/record. Cold-start drives the browser ALREADY on the machine (installed Chrome, else Microsoft Edge — every Windows PC ships with Edge) with a fresh isolated profile, so the common case needs NO download; Chrome for Testing is fetched only as a last resort. Two artifacts: the Releases zip is the bridge runtime (also bundled in Adom Desktop); the pkg installs the container-side Claude skills.",- "version": "1.9.201",+ "version": "1.9.202", "tags": [ "skills", "pup",