← Commit history

Dev skill: placement dead ends — CDP maximize raises, AD set_window_bounds raises, first-nav re-raise after park; z-order via list_windows is the only honest verify

John Lauer ·1ec24b1377 · ·parent 4c1155f
1 file changed +16
dev-skills/pup-bridge-dev/SKILL.md+16
@@ -345,6 +345,22 @@ Chrome in pup. must clear it first.  **Dead ends — DO NOT reintroduce these (each was tried and is worse):**+- **CDP `windowState:'maximized'` for background placement (1.8.55-1.8.64)** → Chromium implements+  it as ShowWindow(SW_MAXIMIZE), which RAISES the window to the top of the z-order. No focus steal,+  so every focus-based check passed while five "backgrounded" windows sat stacked on top of John's+  editor. The earlier "small-then-grow" sighting was the same raise making the staging visible.+- **AD `desktop_set_window_bounds` for background placement (1.8.65)** → ALSO raises the window+  (despite `restore:false`), AND `desktop_list_monitors` reports logical px while set_window_bounds+  takes physical px → on-top AND undersized. Geometry for a parked window = CDP plain bounds+  (left/top/width/height, normal state) sized from the page's own `screen.availWidth/Height`, ONLY.+- **Trusting that a confirmed park stays parked** → the open's FIRST cross-origin nav (welcome+  file:// → https) swaps renderer processes and re-shows the window at first paint — RAISING it+  after the z-confirm passed (heavy sites paint late; the goto runs concurrently with the park).+  A later same-window navigate does NOT raise (tested), nor does the badge (tested). The fix is+  event-driven re-asserts: after the open's goto, at the page 'load' event, and after open_tab —+  all `force:false` so a user-held window is never yanked. And the ONLY honest verify is the+  Z-ORDER via `desktop_list_windows` (pup window below at least one non-pup window); if z cannot+  be confirmed, the window goes BACK OFF-SCREEN — never leave a window that might be covering. - **`--start-maximized` + send-to-back after connect** → the window is foreground/maximized for 1–3s   before you lower it = the visible pop. This is the naive version; off-screen launch replaces it. - **`SetForegroundWindow(usersWindow)` alone** → silently no-ops (foreground lock). You MUST use the