1070 downloads in the last 30 days
2026-09-10: 18 downloads2026-09-11: 20 downloads2026-09-12: 23 downloads2026-09-13: 43 downloads2026-09-14: 35 downloads2026-09-15: 20 downloads2026-09-16: 8 downloads2026-09-17: 26 downloads2026-09-18: 21 downloads2026-09-19: 28 downloads2026-09-20: 13 downloads2026-09-21: 17 downloads2026-09-22: 13 downloads2026-09-23: 11 downloads2026-09-24: 2 downloads2026-09-25: 5 downloads2026-09-26: 4 downloads2026-09-27: 5 downloads2026-09-28: 2 downloads2026-09-29: 22 downloads2026-09-30: 66 downloads2026-10-01: 31 downloads2026-10-02: 18 downloads2026-10-03: 30 downloads2026-10-04: 23 downloads2026-10-05: 28 downloads2026-10-06: 202 downloads2026-10-07: 73 downloads2026-10-08: 179 downloads2026-10-09: 80 downloads

Releases 1153

Standalone per-platform binaries to download and run, no tools needed. The newest is pinned on top.

Compare →
Latest release v2.0.705

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 561-580 of 1153

v2.0.128 2026-08-12

Consumer bug-report fixes: pup_type now verifies the value landed and flags the foreground-required silent no-op (was reporting ok:true on an empty field); new pup_fill verb sets values in the background (native setter + input/change) for React-controlled inputs; pup_click locates the element then clicks by coordinates to beat the 15s selector-timeout on huge DOMs, plus a domClick option for React toggles that ignore trusted clicks; credential auto-capture now hooks programmatic form.submit(), matches masked type=text password fields on click, and adds keydown-Enter + pagehide safety nets; session_not_found is now bridge-restart-aware and states plainly when a window did not survive a restart.

v2.0.127 2026-08-12

pup_uninstall added to the pup_describe catalog so AIs discover it (dryRun-first, confirm-gated, keep-flags documented)

v2.0.126 2026-08-12

Adds pup_uninstall: cleanly removes pups whole machine footprint. Destructive and reason-gated behind confirm uninstall; dryRun true previews the plan without removing. Wipes the HKCU AppUserModelId Adom.Pup registry keys, all staged extensions, all pup profiles and sessions, the OS-keychain credential vault, pup-settings.json, the badge-debug temp dir, and the jump-list launcher; keep-flags keepCredentials and keepProfiles preserve user data, and Chrome-for-Testing plus firewall rules are left alone unless removeChrome or removeFirewallRules. Closes every window and quits every browser first to release profile locks. New credential_vault wipeAll helper

v2.0.125 2026-08-12

Dual-mode login fill, fixing the 2.0.124 regression. Real keystrokes only register when the window is foregrounded (a browser constraint on synthetic key input to a headful window), while a background .value-set works but React-controlled masked fields ignore it. So pup_login now defaults to the background .value-set (works on the vast majority of sites, no foreground) and adds realKeystrokes:true which briefly foregrounds the window and types with genuine key events for React-masked fields like Gustos. When a background fill does not land the password, the response flags reactMaskedFieldSuspected and hints the caller to retry with realKeystrokes. Field detection still matches type=password OR autocomplete=current-password OR name/id password

v2.0.124 2026-08-12

pup_login and autofill now drive login forms with REAL keystrokes (page.keyboard) instead of a programmatic .value set. React-controlled masked password fields (Gusto and many SSO/Keycloak themes) silently ignore a .value set, the value shows in the DOM but the form submits empty because the framework state never updated, which is why pup could find and fill Gustos field yet never authenticate. fillLoginForm now tags the located username and password fields, focuses each, clears with a real select-all plus backspace, types with genuine key events, VERIFIES the value actually landed and retries once if a React re-render ate the first attempt, then submits. This makes pup drive real-world masked logins natively

v2.0.123 2026-08-12

pup now recognizes password fields that are not type=password. Gusto and many SSO/Keycloak login themes render the password as type=text with autocomplete=current-password (masking it themselves), which pups capture rail and fillLoginForm both missed because they keyed only on input[type=password] - so pup could neither capture nor fill those logins. Both now match a field that is type=password OR autocomplete current-password/new-password OR whose name/id is password, and the username heuristic explicitly excludes the password field so it never mistakes a type=text password box for the username. This makes pup drive real-world SSO logins like Gusto

v2.0.122 2026-08-12

Turns OFF Chromes native Save password bubble (John: the save dialog is still showing, just always automatically handle this). pup now owns credential capture end to end: the login-capture rail (hardened in 2.0.121 to grab on password blur/change so it beats cross-origin SSO redirects like Gusto) records into the OS keychain vault, and autofill sets values directly over CDP with no dropdown and no foreground. Chromes bubble was redundant since pup grew its own vault and was the exact dialog the user did not want. Applies on the next window launch since the pref is read at Chrome startup

v2.0.121 2026-08-12

Hardens pups own login capture to catch cross-origin SSO logins like Gusto that submit-only capture was missing. The capture rail now also grabs the credentials the moment the password field loses focus or changes, which fires before the form submits and before a cross-origin redirect (login.gusto.com to app.gusto.com) tears the page down; the synchronous binding delivers the creds first, beating the race that lost them. Chromes native manager stays on as the backup, so this is belt-and-suspenders with no risk of losing a credential. The dialog-free auto-accept of Chromes own save is a separate larger piece still to build

v2.0.120 2026-08-12

Stops pup from triggering a Windows Firewall/UAC prompt (John hit it when his payroll thread opened a Gusto window). Root cause: Chromes Cast/MediaRouter feature binds an mDNS listener on 0.0.0.0:5353, a network-exposed socket that makes Windows Firewall prompt, and it re-prompts on every new Chrome for Testing exe path (a version bump). pup is an automation browser that never casts, so it now disables MediaRouter, the DIAL and Cast route providers, and passes media-router=0; Chrome then binds only loopback and no firewall prompt is shown. disable-background-networking did not cover this because MediaRouters mDNS is a separate binding

v2.0.119 2026-08-12

Log and comment accuracy only: the anchor AUMID registration message no longer claims it makes a Start Menu pin (it is registry-only as of 2.0.118). No behavior change