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.
Releases 1153
Standalone per-platform binaries to download and run, no tools needed. The newest is pinned on top.
Annotate's quick colors are red, blue and green: the muddy yellow/orange third color is gone from the trio and from Multi's automatic cycle (red, blue, green, purple), so every mark has a color anyone can name to the AI. Yellow stays in the More flyout, and every swatch shows its color name on hover (John, 2026-10-07).
Stable link for websites and docs: /download/adom/pup-bridge/latest
All releases showing 481-500 of 1153
Plain mode now strips everything that was actually branding the grouped button: the property wipe also nulls both WM_SETICON slots so the window falls back to Chrome's own class icon (the leftover pup HICON was what the shell painted on the Chrome for Testing group button), and the registry sweep deletes every Adom.Pup AUMID key instead of only the ones bookkeeping still remembered, which was zero after a prior mode switch had nulled them.
Taskbar mode switches are now race-proof: an identity generation token makes every mode change or new sweep supersede all in-flight stamp work, so rapid state clicking can no longer land stale AUMID stamps on top of a plain-mode strip, and the plain apply runs a verify re-strip after the settle so the glass converges even when a stamp had already passed its abort check when the click arrived.
The apply-progress panel in Settings survives the dialog re-render a state click triggers by re-finding or re-creating itself on every poll tick, so the step list and green check actually stay on screen instead of being wiped milliseconds after insertion.
Switching taskbar identity states in Settings now shows a live step list driven by the real apply promises, stamping or stripping identities then rebuilding buttons then painting overlay badges, ending in a green check when the taskbar actually matches, and the plain rows finally tell the truth visually: one stock Chrome button with a drawn hover-preview fan showing that the windows stay separate windows even though they can no longer have separate buttons.
The pup_configure verb now actually honors the jumpLists master toggle and its four task sub-toggles, wiring them to the live jump-list refresh; previously the verb silently ignored those arguments and only the dashboard dialog path applied them, which the T6 selftest exposed after a respawn left every recovered window without a re-commit trigger.
Classic BMP-in-ICO favicons finally decode: a new DIB-to-RGBA decoder handles the 32bpp uncompressed entries that ti.com and mouser.com ship, which analyzeIconBytes had been discarding as unreadable even though both fetch rails were delivering the correct bytes all along, so those taskbar badges now show the real red Texas Instruments logo and blue Mouser M instead of the generic globe.
The out-of-band favicon recovery now logs every outcome per rail and always falls through to Chrome's CDP network stack when the bridge-side bytes are not a readable icon, closing the silent path where a bot wall's 200-status HTML challenge page masqueraded as a fetched favicon and the badge went generic without a trace.
Favicons that hostile CDNs blocked now fetch through Chrome's own network stack via CDP as the final fallback with failures logged honestly, the dashboard taskbar strip serves the thread tile a button actually wears in tiles mode instead of always showing category art, and the reclaim sweep throttles to thirty seconds so busy multi-thread machines stop paying an enum call every few seconds.
Close issue 55 and its intermittent twin: when the in-page favicon path yields nothing - hostile CDNs blocking the fetch, or sites declaring no icon links - pup now fetches origin favicon.ico bridge-side with a real browser user agent, runs it through the same analysis pipeline, records it as last-good, and never again mislabels an empty fetch as a successful favicon.
Real-time badge paint after identity changes: the post-nudge path now repaints the overlay directly once the shell settles instead of waiting for unrelated churn to kick the enforcer, which had left freshly opened or re-tiled windows badge-less for tens of seconds.
The plain rows in the Settings examples show all five canonical samples like every other row - each as the stock Chrome icon with its own site badge in the overlay state - with the stacking behavior explained in a caption instead of collapsing the samples away.
Overlay badges never settle on the generic globe when a real favicon is known: the last-real-favicon reuse keys on the site origin instead of the exact URL, and a painted generic schedules one thirty-second re-resolve so post-churn windows recover their real badge on their own.