☰
v2.0.284: Render lease production value (5 min). Also documents the DWM-cache finding: a window renders while loading (…
v2.0.283: Render LEASE (John's pick): a window keeps its render surface (thumbnail/reveal show content) for a lease aft…
v2.0.282: Blank-window fix v2: keep focus-emulation ON (retained), not a one-shot. Measured via DWM thumbnail that the…
v2.0.281: Blank-window fix is now a ONE-SHOT pulse, not continuous render (John: 'one rAF to get a rendering to occur')…
v2.0.280: Blank-window fix (John's theory, measured): a window born off-screen then parked occluded had visibilityState…
v2.0.279: Deterministic identity: tag confirmed handles via _ensureWindowTagged at every resolution chokepoint (bestSes…
v2.0.278: Deterministic window identity, wiggle DELETED (dev-skills/pup-no-wiggle): every window is tagged with a Win32…
v2.0.277: Tiles mode: every window wears a NAME TILE, never a category glyph - an owner-less/recovered window (issue #7…
v2.0.276: Off-screen birth restored, moved on-screen within 50ms, handback deleted (John). Root cause of tonight's regr…
v2.0.275: Close the AUMID registration race introduced with 2.0.271. Making the thread AUMID content-derived was right,…
v2.0.274: Fix the second half of adom/pup-bridge#69: pup_evaluate ran nothing and reported ok. The eval is new Function…
v2.0.272: Fix adom/pup-bridge#69: pup_switch_tab reported ok while never switching the tab on any background window. pa…
v2.0.271: THE AUMID IS THE ICON CACHE KEY. John's Bills window showed category art while every link in pup's chain was…
v2.0.270: Wrong taskbar ART that pup swore was correct (John's Bills window). Established by measurement: the AUMID was…
v2.0.269: Move Favicon overlay badges and Badge size directly under Taskbar identity (John: 'this should be near the Ta…
v2.0.268: Settings dialog: the sticky header was being painted over by the scrolling content. position:sticky with z-in…
v2.0.267: Finish the settings overflow: the plain-mode preview strip is six 44px flex:none cards in a non-wrapping row,…
v2.0.266: Settings dialog layout pass (John: 'why does your settings panel look so awful?'). Three real defects, all me…
v2.0.265: Tighten the Badge size row copy. Seen in the live pixels: the long description wrapped into a narrow six-line…
v2.0.264: Add 75% as an overlay badge size and make it the default (John, after comparing 100/66/50 on real tiles). Bec…
v2.0.263: Overlay badge size becomes a real PERCENT and gains 66, now the default (John tried 50 and asked to try 66).…
v2.0.262: New setting: overlay badge size, defaulting to HALF (John). At full size the favicon badge covers the thread…
v2.0.261: A newborn window's self-activation is Chrome, never the user. John opened ti.com, it landed on top of his wor…
v2.0.260: Hand the keyboard focus back when an on-screen birth takes the foreground. Measured live the moment R1 landed…
v2.0.259: Implement John's new placement rules (2026-08-20). R1: a window is BORN at its final on-screen rect via Targe…
v2.0.258: Never rest a pup window off-screen. John could not open a freshly opened 'ab ralph' window: it sat at -21845,…
v2.0.257: Never kill a profile's Chrome to free its lock while pup has live sessions on that profile. This is what actu…
v2.0.256: Never let a refcount authorize killing a shared Chrome. #434 established the rule (decide from ground truth,…
v2.0.255: Fix adom/pup-bridge#65: pup_evaluate ran the HOVER handler. Its alias label was written as a switch fallthrou…
v2.0.254: Stop re-fetching a favicon that does not exist. 2.0.229 bounded the SUMMARY log line but not the work or the…
v2.0.253: Visibility invariant, third cut: assert it over the POPULATION by owning process instead of per session. Veri…
v2.0.252: Make the 2.0.251 visibility invariant actually fire. Verified live that it repaired nothing: the sweep resolv…
v2.0.251: Fix a pup window that a human click could not open (John's report). The taskbar button nudge HIDES the window…
v2.0.250: Taskbar identity survives a bridge restart intact: the registry prune now seeds its live set from the session…
v2.0.249: Three of the four flagged dependency advisories are closed: sharp moves to the patched line directly since it…
v2.0.248: The page-health probe waits briefly for the document to finish loading before judging images, so the check bo…
v2.0.247: The page-health check judges images only once the document has finished loading, so it stops calling placehol…
v2.0.246: The page-health probe waits a bounded moment for in-flight images before judging them, so a genuine broken im…
v2.0.245: The page-health check counts an image as broken only when it has a real non-empty source that failed to load,…
v2.0.244: The progress-bar verb paints even in minimal-touch mode, because a caller asking for a progress bar is an exp…
v2.0.243: An explicitly requested taskbar alert is no longer swallowed by minimal-touch mode, which is meant to suppres…
v2.0.242: Window flashing resolves by the handle pup captured when it created the window instead of falling through to…
v2.0.241: An unrecognised wiki view value is rejected with the accepted list instead of being silently treated as the p…
v2.0.240: More duplication retired: the Chrome-style generic globe and PDF glyphs are built by one function instead of…
v2.0.239: The three status surfaces now share one core payload builder instead of each pasting the same version, enum a…
v2.0.238: Parking a window no longer fails when its shell handle is unknown: the CDP placement that already positioned…
v2.0.237: Window targeting gets a real second chance before its last-ditch title guess: when the cached handle is missi…
v2.0.236: A second cleanup pass removes about three hundred and sixty more lines of duplication: the eight legacy curl…
v2.0.235: The overlay-badge apply loop lived in two copies and a progress-tracker edit only declared its variable in on…
v2.0.234: A port blocked by a Windows reservation no longer kills the bridge: instead of exiting into a respawn loop th…