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
pup-bridge-dev: --no-startup-window was never the whole focus fix; the off-screen birth was doing half the work. Measured, and the v1.9.253 handback restored.
1 file changed
+11−1
dev-skills/pup-bridge-dev/SKILL.md+11−1@@ -388,7 +388,17 @@ code followed the older one, and either could be cited to justify whatever the c this section is now the single source for placement and the others defer to it. **Still true, still load-bearing (do not re-derive):**-- `--no-startup-window` is the focus fix, at the source. Keep it.+- `--no-startup-window` is load-bearing, but **it was never the whole focus fix** — MEASURED on+ ConfRoomROG the moment R1 landed (2026-08-20). The off-screen birth was doing half the work,+ because Chrome does not bother activating a window that is nowhere. Born at a real rect, Chrome+ activates it, and every open logged `[focus] createTarget took the foreground`. The old playbook+ asserted this could "never show a steal" and told you to investigate if it ever did; here is that+ investigation. Keep the flag (it still stops the LAUNCH-time grab), and keep the handback below.+- **The focus handback is required, and it is NOT a re-park loop.** R2 says accept a foreground+ WINDOW; the user's KEYBOARD focus is a separate thing, and letting their typing land in a browser+ that just appeared is not a flaw worth accepting when handing focus back costs one call. One shot,+ at birth (the restored v1.9.253 handback), never on a timer, and it reports when it fails. The+ window itself is never moved as a result — that distinction is the whole reason this is allowed. - Geometry via **CDP bounds only**, addressed by windowId. NEVER `windowState:'maximized'`, NEVER ab `desktop_set_window_bounds` — both RAISE the window. - **Nothing re-parks a window the user has raised.** `userIsUsingWindow()` gates every demotion.