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
package.json+2−2@@ -1,6 +1,6 @@ { "slug": "pup-bridge",- "version": "2.0.569",+ "version": "2.0.570", "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. The pkg version is kept in lockstep with the Release version so the page's max version row always carries BOTH a pkg tarball (skills) and a runtime zip (bridge) \u2014 a skills-only or runtime-only bump on the top row breaks constraint installs. TL;DR: pkg install = the skills for your AI; the bridge = the Release zip, which Adom Desktop manages for you.", "keywords": [@@ -148,5 +148,5 @@ "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js" } ],- "changelog": "Annotate works on the extension lane, and a pup update no longer waits for every window to close. (1) pup_annotate on the default lane: the overlay script is now ONE file shipped in the extension (src/extension/annotate-overlay.js), file-injected into the page's MAIN world on the extension lane (a page CSP cannot refuse a file injection, unlike eval; the pen showed 'Annotating...' and did nothing on Google Docs, John 2026-09-14) and evaluated over CDP on the CDP lane; start, result polling and the Done callback go through lane-generic helpers (inject_script, call_window_fn, read_window, capture_viewport_png); the capture's caption strip and preview are composed in the binary (pup_identity::badge::annotate_compose, fontdue text) instead of an in-page canvas. (2) Worker self-reload: on each health tick, if the lane's worker is behind the bridge version, pup re-stages the extension folder in place and asks the worker to chrome.runtime.reload(); it comes back on the new files with the same lane token and in-flight commands are re-queued. Carries 2.0.568 (overlay badge in the binary) and 2.0.567 (ext windows branded before first show)."+ "changelog": "Two fixes found by 2.0.569's proofs. (1) The extension-lane command channel is a QUEUE: it was one slot, so two callers at once (the annotate watcher polling every 500 ms and a pup_eval, or the health tick's overlay and a verb) overwrote each other, one timed out, and the annotate watcher died on its first read. Commands queue by id, results are keyed by id, the worker drains the queue on every poll, and everything the worker had taken is re-queued on a fresh hello. (2) The annotate overlay no longer uses innerHTML: pages that enforce Trusted Types (Google Docs) refused it, so annotate had never worked there on either lane. Carries 2.0.569 (annotate on the extension lane, worker self-reload after an install)." }
page.json+2−2@@ -4,7 +4,7 @@ "slug": "pup-bridge", "title": "Pup - Puppeteer Bridge", "brief": "pup is the AI's own browser: a real, full Chrome on the user's desktop that the AI fully controls (a sandbox, not the user's signed-in browser). Rides Bridge; pup_* verbs open windows and tabs, navigate, screenshot, and eval JS.",- "version": "2.0.569",+ "version": "2.0.570", "tags": [ "skills", "pup",@@ -168,5 +168,5 @@ "pup-bridge verbs are invoked through the adom-bridge CLI, not through a binary this package installs, so prefix rules cannot reach them." ] },- "changelog": "Annotate works on the extension lane, and a pup update no longer waits for every window to close. (1) pup_annotate on the default lane: the overlay script is now ONE file shipped in the extension (src/extension/annotate-overlay.js), file-injected into the page's MAIN world on the extension lane (a page CSP cannot refuse a file injection, unlike eval; the pen showed 'Annotating...' and did nothing on Google Docs, John 2026-09-14) and evaluated over CDP on the CDP lane; start, result polling and the Done callback go through lane-generic helpers (inject_script, call_window_fn, read_window, capture_viewport_png); the capture's caption strip and preview are composed in the binary (pup_identity::badge::annotate_compose, fontdue text) instead of an in-page canvas. (2) Worker self-reload: on each health tick, if the lane's worker is behind the bridge version, pup re-stages the extension folder in place and asks the worker to chrome.runtime.reload(); it comes back on the new files with the same lane token and in-flight commands are re-queued. Carries 2.0.568 (overlay badge in the binary) and 2.0.567 (ext windows branded before first show)."+ "changelog": "Two fixes found by 2.0.569's proofs. (1) The extension-lane command channel is a QUEUE: it was one slot, so two callers at once (the annotate watcher polling every 500 ms and a pup_eval, or the health tick's overlay and a verb) overwrote each other, one timed out, and the annotate watcher died on its first read. Commands queue by id, results are keyed by id, the worker drains the queue on every poll, and everything the worker had taken is re-queued on a fresh hello. (2) The annotate overlay no longer uses innerHTML: pages that enforce Trusted Types (Google Docs) refused it, so annotate had never worked there on either lane. Carries 2.0.569 (annotate on the extension lane, worker self-reload after an install)." }