Pup - Puppeteer Bridge
Public Made by Adomby adom
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.
Releases 572
Standalone per-platform binaries to download and run, no tools needed. The newest is pinned on top.
Fixes a data-loss race in pup_quit_idle_browsers that could close a browser holding live windows. It judged idle purely by adopted in-memory sessions, so right after a bridge restart, before re-adoption runs, a warm browser still holding real windows looked session-less and got closed, taking every window with it. It now inspects the browsers ACTUAL open pages before closing and skips any browser that still holds a non-blank page, or that cannot be inspected, so a browser mid-re-adoption or user-held is never reaped
All releases showing 141-160 of 572
Overlay drift fix: the favicon taskbar badge now recomputes on the NAVIGATION EVENT (framenavigated), not just on explicit mutating verbs. Any nav pup didn't initiate — JS redirect, meta refresh, form submit, SPA route change, OAuth bounce, in-tab link click, browser_login submit — previously left a STALE badge; now every navigation from any source re-triggers the recalc (debounced, honors overlayBadges pref, active/visible tab).
Dashboard Settings: 'Import logins from Chrome/Edge' picker (adom-you seed). Reads browser_import_scan, lists every discovered profile with source-account identity tags + saved-login count + ABE lock, checkbox each (default all). Import button reports honest-pending until the AD-core elevated decrypt helper (adom/adom-desktop #51) lands.
browser_import_scan: read-only discovery verb for the comprehensive credential import — enumerates every Chromium profile (Chrome/Edge/Brave) with source-account identity tag, saved-password count, and ABE status; foundation for the Settings import picker. Actual decryption is AD-core (adom/adom-desktop #51).
Make GROUPED mode actually group by category (John: 'i like that you just group to each category icon'): with icon-style category, windows of the same category share one AUMID (Adom.Pup.) so you get up to 5 category buttons each wearing its category icon; standard style still collapses to one Adom Pup button. Previously grouped lumped every window under one button regardless. Updated the setting copy
Fix jump lists not clearing when toggled OFF (John: 'i turned off jump lists but still see them'): turning jumpLists off now commits an EMPTY task list to every window (removing the menu tasks); toggling jumpLists on or the sub-prefs forces a re-commit so changes show live. Wired jumpLists/jlViewTasks/jlCloseAll to refreshAllJumplists()
Correct the jump-list setting copy: remove the stale 'Windows 11 bug keeps tasks off the menu' claim (tasks appear now); note it requires AUMID on and the honest first-click-blip / right-click-again quirk
Replace the fake jump-list settings screenshots with REAL ones: captured the actual Windows jump-list flyout (double right-click for the blip) showing the live tasks, and cropped it into jumplist.png (full menu), jlviewtasks.png (the two Switch-to-view rows), jlcloseall.png (the Close ALL task). The AUMID/grouping/icon-style screenshots are untouched
Reduce the jump-list first-right-click blip: stop forcing a redundant CommitList ~1.6s after every stamp (jump lists live on the AUMID and were already committed at stamp time; the re-commit only gave the shell another chance to dismiss a just-opened flyout). Dedup-respecting now. Residual ~200-300ms blip is a shell/AD race (documented in dev-skills/pup-jumplist)
Dashboard shows wiki login state per wiki window (John: 'why doesn't the dashboard say if i'm logged in to the wiki'): each pup window on an Adom wiki URL now gets a 'wiki: signed in' (green) or 'wiki: public' (warn) badge, from the _wikiAuthed state pup already tracks
Wiki pages open LOGGED IN by default (John's request): for an Adom wiki URL with no wikiView, default to authed (auto-signs from the desktop token, no prompt); pass noAutoLogin:true (or wikiView:public) for the anonymous/public view. Hint tells the AI it was logged in by default and how to opt out
Fix jump lists never committing: the registration guard required the appId in _registeredPupAumids, which is only filled by desktop_register_app_identity (a silent no-op on this AD build), so updateWikiJumplist returned before every commit and then dedup-skipped forever. Register best-effort, never block the commit; the window stamp already binds the AUMID and the commit works with hwnd
diag: log jump-list gate conditions to find why updateWikiJumplist returns before committing
Fix jump lists not working: updateWikiJumplist resolved its hwnd by title (desktop_find_window titleContains) which is null when the title tag is off, so payload.hwnd was never set and the jump list never committed to the window. Use the reliable birth-time/persisted handle instead. The 'known Windows 11 bug' was this title lookup
Stop the dashboard refresh blip: badge image URL was cache-busted with SNAP.ts (new every SSE tick) and served no-store, so every icon refetched a couple times a second. Version the badge URL by its actual paint time and make badge + tab-favicon endpoints cacheable, so icons only reload when they truly change
Recovered windows restore their persisted OS handle on the rescan adoption path too (not just recoverSessions), so a multi-window-profile window that lost its handle to a respawn goes green from the saved handle instead of red now that the wiggle is gone
PERMANENT fix for title-based window lookup (John: stop duct-taping it): add windowTarget() helper that returns the validated HWND, and route every AD window OPERATION (park z-bottom, taskbar overlay/progress/badge, thumbnail, screenshot, focus) through it so hwnd is primary everywhere; titleContains survives only as a cold fallback. Also delete the destructive width-wiggle
Delete the destructive width-wiggle: it shrank windows to a marker width to identify them and left one stuck narrow when the restore failed (deformed John's window). Handle resolution now uses only read-only signals (birth-time capture, persisted handle, sole-window-of-profile); a window none resolve is left bare rather than resized
Fix AUMID stamp failing on windows without a title tag: stamp by resolved HWND (same handle the overlay paint + flash use) instead of only titleContains, which could not find the dashboard window (no ai-thread tag) so it never stamped when AUMID was turned on
Fix dashboard-vs-taskbar mismatch (revert the wrong 1.9.298 assumption): with aumidIcons off, live pup windows wear the Chrome-for-Testing exe icon + pup overlay, NOT a teal tile (proven by flashing the live windows). The teal tiles on the taskbar are GHOST buttons from dead AUMID-stamped windows. Dashboard now draws the real Chrome-for-Testing base icon for un-stamped windows, teal only when actually stamped, so it matches the glass
Fix sleep/wake window loss: the 8s reaper was racing sleep-recovery and killing recovered windows. On wake, rescan reattaches a page then prunes it as the dead pre-sleep tab, leaving the session at 0 tabs with _lostBrowser already cleared, so the reaper deleted it before the healer relaunched. Now: re-mark any post-prune empty session as lost + refresh its heal window; the reaper never reaps a session the healer is still trying to recover (until it explicitly gives up)