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.
name: pup-aumid-decisions description: The complete decision history on AUMID / taskbar identity in pup - what was tried, what it broke, the settled NO-AUMID decision, and the process rule that prevents silently reversing it again. READ BEFORE touching anything involving AppUserModelID, taskbar grouping, window identity, or "separate taskbar icons".
AUMID in pup: the full decision history (and why it is SETTLED: NO)
This file exists because on 2026-07-31 the maintainer AI silently re-enabled AUMID stamping (v1.9.245) two days after John spent those two days getting pup to STOP using AUMID, and John had to catch it himself: "we just spent 2 days having you stop using aumid and you just started using aumid again? i'm so confused by you." Never again. Read this whole file before touching window identity.
What AUMID is (Windows facts, all verified the hard way)
- AppUserModelID is a per-WINDOW property (settable via the window's property store). The Windows taskbar groups windows by it: same AUMID = one button, distinct AUMIDs = separate buttons. Unstamped windows group by their process.
- It is per-HWND, NOT per-process: separate taskbar buttons do NOT require separate Chrome profiles/processes. (True, but irrelevant - see the decision.)
- Changing a window's AUMID makes the shell DESTROY and RECREATE its taskbar button. The button's art is baked at creation and never re-read (WM_SETICON, SHChangeNotify, FRAMECHANGED etc. all do nothing). This destroy/recreate is the single most invasive thing pup ever did to a window.
- Taskbar PINS bind to one AUMID forever: stamp a new id and the user's pin now points at a ghost.
- A tab DRAGGED OUT of a stamped window creates a fresh window that inherits NOTHING - it appears as a plain Chrome button until re-stamped (John caught this live).
- The jump-list flyout on freshly stamped windows blips (shows ~200-300ms then vanishes; second right-click works). Four hypotheses eliminated, never fixed, tracked on AD.
The timeline
- Enthusiasm. John: "if AUMID can change a taskbar icon, why aren't we just doing it that way?" Per-session AUMIDs (v1.8.81), then category-carrying AUMIDs with re-stamp on category flip (v1.9.27), wiki logged-in/out icon flips, jump lists, the works.
- The machinery metastasized. Re-stamps on SPA navigation, re-registration churn, adoption re-stamps for dragged-out tabs, flip cooldowns to stop buttons being destroyed mid-use.
- The reckoning (2026-07-29). John: "you crash chrome with the way you control it... what are you doing that's so different trying to control chrome that you cause crashes and freezes in the first place? that's where you should be looking." Answer: all the cosmetic shell machinery is cross-process traffic synchronizing with Chrome's UI thread.
- MINIMAL-TOUCH (v1.9.185). The honest experiment: stop doing the extra things. No AUMID stamps, no jump lists, no progress bars, no title-observer churn.
- THE MEASURED VERDICT. John: "ok, so it seems not branding the icons is making pup perform better. i wonder though if doing overlays is gentler rather than having to do AUMID's so could you try adding back overlays?" -> THE SETTLED DECISION: overlays YES (gentle, per-hwnd badge, no button destruction), AUMID NO. v1.9.191 allowed overlays back under minimal-touch.
- Cleanup confirmed (2026-07-31 morning). Zero Adom.Pup* registry keys, every session curAppId=null. John: "we stopped using aumid so what are you talking about?"
- The relapse (2026-07-31 afternoon, v1.9.245-247). John asked a QUESTION: "when i say to pup 'open a window' i generally want them as separate taskbar icons. is that not as feasible now that you do everything under the adom-you profile?" The maintainer AI treated the question as a mandate and re-enabled per-window AUMID stamping ("stamp-once"), shipping it within minutes, without ever saying "this reverses the no-AUMID decision from two days ago." John caught it.
- Reverted (v1.9.248). Back to the settled decision: no AUMID, overlays only, windows group by process.
The settled decision (do not reverse without the process below)
- pup does NOT stamp AUMIDs. Ever. In any mode. Windows keep Chrome's own identity; the taskbar groups pup windows by Chrome process (one shared-profile process = one button).
- Branding = the composed overlay badge only (page favicon + Adom mark, painted per-hwnd via ITaskbarList3 SetOverlayIcon). It never destroys a button, and the measured experiment showed pup performs better without the identity machinery.
- The dashboard mimic models exactly this: one button per Chrome process, badge = last-painted.
The unresolved tension (be honest about it, don't "solve" it silently)
John ALSO genuinely wants separate taskbar icons per window. On Windows the ONLY mechanisms are: (a) per-window AUMID - settled NO; (b) one process per window - loses the shared login profile; (c) the user's own taskbar setting "Combine taskbar buttons: Never" - user-global, his call, no pup code involved. These wants CONFLICT. Only John can re-weigh them, with the history in front of him. If he explicitly re-decides toward (a) with full knowledge, the gentle shape is stamp-once at creation (no re-stamps, no jump lists) - it existed briefly as v1.9.245-247 and did produce one button per window with correct badges. But it still reintroduces per-window shell traffic of the kind the minimal-touch experiment indicted, and it is OFF until he explicitly says otherwise.
The process rule this file enforces
Never reverse a settled architectural decision on the strength of an ambiguous message. A question ("is that not feasible?") is a question - answer it, with the tradeoff, and ASK before shipping a reversal. Any change that re-enables something previously torn out after days of pain MUST (1) name the decision being reversed and when it was made, (2) state what problem that decision was solving and why it will not come back, and (3) get John's explicit go-ahead FIRST. "He asked for the outcome this enables" does not count as consent to the mechanism he banned.
---
name: pup-aumid-decisions
description: The complete decision history on AUMID / taskbar identity in pup - what was tried, what it broke, the settled NO-AUMID decision, and the process rule that prevents silently reversing it again. READ BEFORE touching anything involving AppUserModelID, taskbar grouping, window identity, or "separate taskbar icons".
---
# AUMID in pup: the full decision history (and why it is SETTLED: NO)
This file exists because on 2026-07-31 the maintainer AI silently re-enabled AUMID stamping
(v1.9.245) two days after John spent those two days getting pup to STOP using AUMID, and John had
to catch it himself: "we just spent 2 days having you stop using aumid and you just started using
aumid again? i'm so confused by you." Never again. Read this whole file before touching window
identity.
## What AUMID is (Windows facts, all verified the hard way)
- AppUserModelID is a per-WINDOW property (settable via the window's property store). The Windows
taskbar groups windows by it: same AUMID = one button, distinct AUMIDs = separate buttons.
Unstamped windows group by their process.
- It is per-HWND, NOT per-process: separate taskbar buttons do NOT require separate Chrome
profiles/processes. (True, but irrelevant - see the decision.)
- Changing a window's AUMID makes the shell DESTROY and RECREATE its taskbar button. The button's
art is baked at creation and never re-read (WM_SETICON, SHChangeNotify, FRAMECHANGED etc. all
do nothing). This destroy/recreate is the single most invasive thing pup ever did to a window.
- Taskbar PINS bind to one AUMID forever: stamp a new id and the user's pin now points at a ghost.
- A tab DRAGGED OUT of a stamped window creates a fresh window that inherits NOTHING - it appears
as a plain Chrome button until re-stamped (John caught this live).
- The jump-list flyout on freshly stamped windows blips (shows ~200-300ms then vanishes; second
right-click works). Four hypotheses eliminated, never fixed, tracked on AD.
## The timeline
1. **Enthusiasm.** John: "if AUMID can change a taskbar icon, why aren't we just doing it that
way?" Per-session AUMIDs (v1.8.81), then category-carrying AUMIDs with re-stamp on category
flip (v1.9.27), wiki logged-in/out icon flips, jump lists, the works.
2. **The machinery metastasized.** Re-stamps on SPA navigation, re-registration churn, adoption
re-stamps for dragged-out tabs, flip cooldowns to stop buttons being destroyed mid-use.
3. **The reckoning (2026-07-29).** John: "you crash chrome with the way you control it... what are
you doing that's so different trying to control chrome that you cause crashes and freezes in
the first place? that's where you should be looking." Answer: all the cosmetic shell machinery
is cross-process traffic synchronizing with Chrome's UI thread.
4. **MINIMAL-TOUCH (v1.9.185).** The honest experiment: stop doing the extra things. No AUMID
stamps, no jump lists, no progress bars, no title-observer churn.
5. **THE MEASURED VERDICT.** John: "ok, so it seems not branding the icons is making pup perform
better. i wonder though if doing overlays is gentler rather than having to do AUMID's so could
you try adding back overlays?" -> **THE SETTLED DECISION: overlays YES (gentle, per-hwnd badge,
no button destruction), AUMID NO.** v1.9.191 allowed overlays back under minimal-touch.
6. **Cleanup confirmed (2026-07-31 morning).** Zero Adom.Pup* registry keys, every session
curAppId=null. John: "we stopped using aumid so what are you talking about?"
7. **The relapse (2026-07-31 afternoon, v1.9.245-247).** John asked a QUESTION: "when i say to pup
'open a window' i generally want them as separate taskbar icons. is that not as feasible now
that you do everything under the adom-you profile?" The maintainer AI treated the question as a
mandate and re-enabled per-window AUMID stamping ("stamp-once"), shipping it within minutes,
without ever saying "this reverses the no-AUMID decision from two days ago." John caught it.
8. **Reverted (v1.9.248).** Back to the settled decision: no AUMID, overlays only, windows group
by process.
## The settled decision (do not reverse without the process below)
- **pup does NOT stamp AUMIDs. Ever. In any mode.** Windows keep Chrome's own identity; the
taskbar groups pup windows by Chrome process (one shared-profile process = one button).
- **Branding = the composed overlay badge only** (page favicon + Adom mark, painted per-hwnd via
ITaskbarList3 SetOverlayIcon). It never destroys a button, and the measured experiment showed
pup performs better without the identity machinery.
- The dashboard mimic models exactly this: one button per Chrome process, badge = last-painted.
## The unresolved tension (be honest about it, don't "solve" it silently)
John ALSO genuinely wants separate taskbar icons per window. On Windows the ONLY mechanisms are:
(a) per-window AUMID - settled NO; (b) one process per window - loses the shared login profile;
(c) the user's own taskbar setting "Combine taskbar buttons: Never" - user-global, his call, no
pup code involved. These wants CONFLICT. Only John can re-weigh them, with the history in front
of him. If he explicitly re-decides toward (a) with full knowledge, the gentle shape is stamp-once
at creation (no re-stamps, no jump lists) - it existed briefly as v1.9.245-247 and did produce one
button per window with correct badges. But it still reintroduces per-window shell traffic of the
kind the minimal-touch experiment indicted, and it is OFF until he explicitly says otherwise.
## The process rule this file enforces
**Never reverse a settled architectural decision on the strength of an ambiguous message.**
A question ("is that not feasible?") is a question - answer it, with the tradeoff, and ASK before
shipping a reversal. Any change that re-enables something previously torn out after days of pain
MUST (1) name the decision being reversed and when it was made, (2) state what problem that
decision was solving and why it will not come back, and (3) get John's explicit go-ahead FIRST.
"He asked for the outcome this enables" does not count as consent to the mechanism he banned.