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
AD 1.9.149 branded the jump-list header via the Relaunch trio; document how to verify RelaunchIconResource off the HWND and the P/Invoke gotchas
1 file changed
+30
dev-skills/pup-bridge-debug/SKILL.md+30@@ -448,3 +448,33 @@ how each row actually renders) is drawn by Explorer on right-click and is NOT in bridge can read. The taskbar button, the registry AUMID, and the CustomDestinations task definitions ARE inspectable; the rendered menu is NOT. Do not claim the menu "looks right" — verify what's inspectable, and say plainly that the rendered menu needs the user's eyes.++## Jump-list HEADER icon: FIXED by AD (v1.9.149) via the Relaunch trio — and how to VERIFY it++AD branded the header row (previously the generic white document — see the WAI note above). The+mechanism is the window's **Relaunch* property trio**, NOT the registry IconResource:+- `RelaunchIconResource` = the icon the header row shows (AD now derives it from the `iconPath` passed+ to `desktop_set_window_identity`).+- `RelaunchCommand` MUST also be set or the shell IGNORES the relaunch icon for the header (keeps the+ exe's icon, e.g. Chrome). The bridge already passes `relaunchCommand` (browser_focus_window).+- `RelaunchDisplayNameResource` = the header label ("Adom Pup").++The bridge needed NO change — it already passed `iconPath` (category icon) + `relaunchCommand` ++`displayName`. AD ≥1.9.149 now wires those into the trio so the header paints the category icon.++**Verify the header WITHOUT a right-click** (the rendered menu is not screenshottable from the cloud,+but its SOURCE property is readable). Read the window's Relaunch trio off the HWND:+1. Get the HWND: `desktop_find_window {titleContains:"session: <sid>"}` → best.hwnd (works even when+ the window is backgrounded, unlike UIA child enumeration).+2. Read `PKEY_AppUserModel_RelaunchIconResource` (fmtid {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3} pid 3)+ via `SHGetPropertyStoreForWindow`. Expect `...pup-cat-<cat>9.ico,0`.++Verified 2026-07-21: hdr-wiki→pup-cat-wiki9.ico, hdr-web→pup-cat-web9.ico, hdr-app→pup-cat-app9.ico.++**P/Invoke gotchas that cost time here** (use the compiled-C# path, it's reliable):+- PowerShell aliases `Rd` to `Remove-Item` — never name a PS function `Rd`, it silently never runs.+- `PropVariantToStringAlloc` is exported from **propsys.dll**, not shlwapi.dll.+- PowerShell (5.1) CANNOT bind a COM object from a P/Invoke `out` param to an `Add-Type` custom+ interface (`__ComObject does not contain a method named 'GetValue'`, and `[IPropertyStore]$x`+ throws). Compile a tiny C# reader with `Framework64\v4.0.30319\csc.exe` and run the exe instead —+ the interop binds correctly there. (PropRead.cs pattern in the repo history.)