Closed general

Proof run: AdomLapper windows recreated on 2.0.438 (owners, tiles, badges, foreground)

John Lauer · 2mo ago ·closed by John Lauer

Proof run: every pup window on AdomLapper recreated on 2.0.438 (2026-09-06, 10:10 to 10:19)

John: "prove all this to me with my pup on adomlapper by recreating all my pup windows with your latest codebase."

All five windows closed and reborn with their original owner, URL and profile. Foreground measured before and after each birth (ab desktop_get_foreground).

window owner (ownerSource) badge foreground before -> after
adom-insiders adom/insiders (declared) generic globe: the adom-fleet page serves no favicon (404, no link tag) editor 197310 -> 395150 (a window switch on John's side during the first birth; not the pup window, hwnd 6097006)
Fusion-trace-routing Fusion trace routing (declared) real page favicon unchanged
KiCad-per-net-routing KiCad per-net routing (declared) real page favicon unchanged
pup-wiki pup-bridge (declared) real page favicon unchanged
pup-dashboard pup-bridge real page favicon unchanged

Tiles: the t8 generation re-rendered all four thread tiles natively at 16, 20, 24, 32, 40, 48, 64 and 256 px (8 ICO entries each).

Attention tint after the run: adom-insiders and both pup-bridge buttons carry the Windows attention tint, Fusion and KiCad do not. The tint is Windows marking Chrome's denied activation of its own new window; which births get it depends on who owned the foreground at that instant.

Top row: before. Bottom row: after.

al-proof

3 Replies

John Lauer · 2mo ago

Node build versus Rust build, measured side by side (arav-rog, 2026-09-06)

The public Node build (2.0.396) was installed on arav-rog and the same four thread names opened with KiCad in front.

  • Tiles: Node's ICO entries (16, 32, 48, 256, lanczos-downscaled) next to the Rust 2.0.438 entries (natively rendered 16 to 64 plus 256). Same wrap, same font, same plate: "Fusi / on tr", "KiCa / d per-". The mid-word break is Node's v2.0.172 font-floor rule (issue #89), not a port difference.
  • Attention tint: Node's four newborn buttons are all tinted (second image), the same as the Rust build's. The taskbarActivity setting removed pup's own FlashWindowEx orange flashes; the tint is Windows marking Chrome's denied activation of its own new window and no pup build ever cleared it at birth.

First image: tiles, Node top row, Rust bottom row (256 px entry scaled, and the 48 px entry at 4x). Second image: Node 2.0.396 taskbar right after the four births.

tiles-compare

node-tb

John Lauer · 2mo ago

2.0.447: born wearing the tile (the CfT icon no longer shows first)

The shell creates a window's taskbar button at its first show and bakes the icon then, so the identity has to be ON the window before that show. Chrome shows the window inside Target.createTarget (and this Chrome 148 has no way to create a never-shown window: Target.createTarget hidden cannot combine with newWindow). So pup now renders the tile and registers the AUMID before the create call, starts a watcher thread that polls every top-level frame window (visible or not) every millisecond, and stamps the newborn natively (IPropertyStore AppUserModel ID, relaunch command, display name, icon resource; in-process, no ab round-trip) the instant the handle exists. The button is created once, wearing the tile.

Measured (pup log, times from the create call):

box birth handle caught (invisible) stamped Chrome's first show
arav-rog cold Chrome launch +58 ms +62 ms +121 ms
arav-rog warm (Chrome running) +27 ms +29 ms +82 ms
AdomLapper warm +36 ms +51 ms +158 ms

Taskbar frames on arav-rog at 20 ms cadence (209 and 196 frames per birth, right half of the taskbar band, classified by teal-tile vs CfT-roundel colour totals against the pre-birth frame): the first frame that carries an icon in the new slot already shows the thread tile; no frame shows the roundel.

Also in this round: the jump list that "showed and hid" (2.0.445) was traced with the same probe technique to an AUMID change (the shell drops the old button, and the flyout with it); the tile token now hashes the tile's content (Node v2.0.271 parity), so a regenerated tile keeps its AUMID. And pup now keeps a rolling log at ~/.adom/pup-logs/pup.log.

John Lauer · 2mo ago

Closing this proof thread with the final state (2.0.450 on insiders, all four boxes):

  • Born wearing the tile (2.0.447): the newborn is stamped natively before Chrome's first show; the CfT icon never appears (200 taskbar frames at 20 ms per birth, none with the roundel).
  • Tiles drawn per size (2.0.448): every ICO entry rendered at its own pixel size; verified at 36 px on AdomLapper.
  • The attention tint is gone at the source (2.0.449): new windows are created with the DevTools focus:false option, so Chrome never asks Windows for the foreground and Windows has nothing to refuse. 2.0.450 adds the Settings switch winAttentionFlash (default off).
  • Jump list closing under the cursor (2.0.445): traced to an AUMID change (the tile token hashed the file's mtime); now a content hash.
  • Annotate from the jump list (2.0.444): raises the window again for a human caller.

Recreated all of John's windows on 2.0.447 with declared owners; five sessions, five windows, zero orphans, foreground untouched.

John Lauer closed this · 2mo ago

Log in to reply.