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
Document the reboot foreground bug (recovery and reclaim never parked) and the new per-verb audit log
1 file changed
+33
dev-skills/pup-bridge-debug/SKILL.md+33@@ -655,3 +655,36 @@ Two fixes, both needed: resolves still legitimately commits twice, public then authed, because its view really changed). Watch it with: `[jumplist] "<sid>" set N task(s) on <appId> (view=...) headerBranded=<bool>`.++## Symptom: after a REBOOT, pup windows come up in the FOREGROUND (v1.9.70)++Background-by-default was only ever enforced on the LAUNCH path. Two other paths create/adopt windows+and NEITHER parked them:++- **`recoverSessions`** re-attaches to windows that already exist. After a reboot the OS restores those+ Chrome/Edge windows in the FOREGROUND, the bridge reconnects, and nothing ever pushes them back down.+ This is the reboot symptom.+- **`reclaimUnmanagedWindows`** adopts windows pup did not launch (openerless popups, orphans whose+ session died). They arrive wherever the shell put them, usually on top.++Both now call `parkSessionWindowDirect` and log `[park] "<sid>" (recovered|reclaimed): <result>`.+Recovery skips the park when `session._foreground` is set, so a window the user deliberately raised is+not yanked back down.++**Do NOT park a drag-out adoption.** `adoptDraggedOutTabs` fires because the USER just dragged that tab+into its own window — it is legitimately in the foreground and burying it would be hostile.++Verified after the fix on BOTH a Chrome box and an Edge box (park is a Win32 z-order op, so Edge was+the suspect): open a window, diff a before/after full-screen capture. Mean pixel delta 1.05 and 0.58+respectively, i.e. the screen did not change. A foregrounded window moves that number well past 12.++## Log every incoming verb (v1.9.70)++John: "do you even log all the actions against you?" — fair hit. The log recorded what the bridge DID+(park / identity / overlay / jumplist) but never WHAT WAS ASKED of it, so "what foregrounded this+window?" was unanswerable after the fact. There is now one compact line per verb:++ [verb] browser_open_window session=parkedge url=https://example.com owner=parktest++It includes only the args that change behaviour (sessionId, url, foreground, foregroundReason, view,+tabId, owner) and skips `bridge_log_read` so reading the log does not pollute it.