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 default-icon-on-disconnected-window root cause and the close-all jump-list task with its verification method
1 file changed
+33
dev-skills/pup-bridge-debug/SKILL.md+33@@ -335,3 +335,36 @@ distinguish "nothing is wrong" from "nothing was measured" is worse than none. A `bridge_install` + `restart_bridge` kills pup's detached Chromes (recovery then reports every PID dead and drops all sessions). Re-open test windows after any bridge upgrade, and do not read a post-restart empty taskbar as an icon bug.++## Symptom: a pup window shows the OLD DEFAULT icon (teal "P" + card), category makes no sense++The taskbar oracle traced this to a session in the `_lostBrowser` state: its CDP link dropped+(`[disconnect] profile "<p>" disconnected — awaiting reconnect`), which clears the session's tab list+to ZERO. With no tabs, `pupCategory` returns null and `pupIconPath` falls back to+`adom-pup-browser3.ico` (the default), and the window gets stamped `.plain`. But the Chrome WINDOW is+still alive on the desktop, so the user sees a live pup button wearing the generic default icon while+every sibling shows its category. John flagged exactly this on the `shotlog` window.++Two-alive/dead cases, both handled in `reclaimUnmanagedWindows` (v1.9.51):+- **Chrome still alive**: reconnect to the profile's CDP port, then `rescanProfile(..., {adoptOrphans:true})`.+ rescanProfile reattaches by the `(session: <id>)` TITLE TAG, so it reuses the EXISTING session+ (un-zombies it) instead of minting a `<profile>-winXXXX` duplicate and leaving the tagged one dead.+ Then force `_lastCat = undefined` + `refreshWindowChrome` so the real category icon paints.+- **Chrome dead**: drop the session AND `unregisterPupAumid(session._curAppId)` so no stale taskbar+ identity is left pointing at the default icon.++Do NOT "fix" this by changing the default icon — the default is correct for a genuinely category-less+window. The bug is a live window being category-less at all; fix the session state, not the fallback.++## Jump list: a "Close ALL Adom Pup windows" task on every window (v1.9.51)++`updateWikiJumplist` now always appends a close-all task (`browser_close "{}"`), so every pup window's+taskbar right-click menu can close the whole fleet; wiki windows still get their view-toggle task+above it. `browser_close` with no sessionId kills every pup Chrome, clears sessions, AND now+unregisters each per-session AUMID + runs `pruneStaleAumids`, so closing all leaves zero stale+taskbar identities.++Verifying a jump list is committed: read `%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\*.customDestinations-ms`+(binary). The task's DESCRIPTION and its `... adom-desktop-cli.exe <verb> "{}"` args are stored as+plaintext UTF-16 and greppable; the TITLE is a PKEY_Title property-store blob, so a plain string+search for the title MISSES it — search the description or the args instead.