☰
v2.0.232: The bridge pins its port to 8851 instead of letting ab choose from the ephemeral band, because ab picked 6423…
v2.0.231: A bind failure on the assigned port now explains itself instead of crash-looping invisibly: pup reads the Win…
v2.0.230: A first cleanup pass on the bridge: the four-second sweep now makes one CDP round-trip per tab instead of thr…
v2.0.229: A page with no favicon stops retrying forever: the generic-glyph fallback now backs off over three attempts a…
v2.0.228: Taskbar icon drift now heals itself: a new audit compares pup's model against the shell's own button names, c…
v2.0.227: A taskbar button nudge skipped because its window happened to be focused is no longer a dead end: the skip be…
The plain-mode batch rebuild now includes the foreground window with immediate focus restore: exempting it left its tas…
The plain-mode convergence now batch-nudges: hiding all non-foreground windows together destroys the grouped taskbar bu…
Icon and thread-tile generations bump to i8 and t7 so every identity re-registers under virgin app ids: the registry-sw…
The plain-mode registry sweep is removed: registry keys with no window property pointing at them are inert and were nev…
Identity stamps carry a strip-epoch suffix in their icon cache keys so ab re-writes the AUMID registry icon entries aft…
Plain mode now converges every Chrome for Testing window onto Chrome's own native per-profile AUMID instead of wiping i…
Jump-list attachment is now gated on AUMID icons being on: in plain mode no window wears a pup identity, yet every wind…
The live settings snapshot actually rides the pup_status verb this time; the 2.0.218 insert had landed in the health en…
pup_status now reports the live taskbar identity mode and related settings so test harnesses assert against what pup is…
Plain mode now strips everything that was actually branding the grouped button: the property wipe also nulls both WM_SE…
Taskbar mode switches are now race-proof: an identity generation token makes every mode change or new sweep supersede a…
The apply-progress panel in Settings survives the dialog re-render a state click triggers by re-finding or re-creating…
Switching taskbar identity states in Settings now shows a live step list driven by the real apply promises, stamping or…
The pup_configure verb now actually honors the jumpLists master toggle and its four task sub-toggles, wiring them to th…
Classic BMP-in-ICO favicons finally decode: a new DIB-to-RGBA decoder handles the 32bpp uncompressed entries that ti.co…
The out-of-band favicon recovery now logs every outcome per rail and always falls through to Chrome's CDP network stack…
Favicons that hostile CDNs blocked now fetch through Chrome's own network stack via CDP as the final fallback with fail…
Close issue 55 and its intermittent twin: when the in-page favicon path yields nothing - hostile CDNs blocking the fetc…
Real-time badge repaint after button rebuilds, applied for real this time: the post-nudge path invokes the overlay pain…
Real-time badge paint after identity changes: the post-nudge path now repaints the overlay directly once the shell sett…
The canonical Settings examples grow to six samples - signed-in wiki and public wiki are distinct styles and both belon…
The plain rows in the Settings examples show all five canonical samples like every other row - each as the stock Chrome…
The Settings examples become five fixed canonical samples per John's spec - a wiki page, the dashboard app, ti.com, mou…
The Settings preview becomes six mini-taskbar rows over ONE fixed sample set of live windows, so every state renders th…
The Settings name strip never lies about badges: threads with a live window show their real composed badge, threads wit…
The Settings matrix overlay cells always show an ACCURATE badge: a new bestbadge endpoint serves the newest composed ba…
Close issue 53: switching to plain now schedules a deferred second strip pass that re-resolves and wipes any window who…
Overlay badges never settle on the generic globe when a real favicon is known: the last-real-favicon reuse keys on the…
Jump lists survive identity churn: a thread-owned window whose stamp cannot land still gets its task menu because the t…
Turning overlay badges off now actively clears every badge already painted on the taskbar instead of only stopping futu…
The Settings taskbar matrix now shows TRUE icon states sourced from the real machinery instead of hand-drawn approximat…
pup_progress resolves the window handle before painting, exactly like the identity stamp: after a bridge respawn the re…
pup_progress sends the progress state and the stage tooltip in a single desktop_taskbar call: the follow-up tooltip cal…
New pup_progress verb plus the pup-progress sub-skill: calling AI threads can now paint the Windows taskbar progress ba…
Remove the miniature Adom mark from overlay badges in every mode: the pup taskbar tile already carries the Adom identit…
Smart overlay contrast: a dark-dominant favicon on transparency (the GitHub class) now gets a light card behind it inst…
Put the bridge version and the enum_windows counter on the pup_status verb payload itself, where remote machines withou…
Repair the six-state taskbar matrix in Settings: the tiles name-strip append was recreating the DOM after paint, leavin…
Expose the enum_windows call counter on pup_status as well as the health endpoint, so the is-pup-spamming question is a…
enum_windows goes event-driven, per John's design call: the enum exists to find a newborn window's handle, so once ever…
Fix issue 50 and issue 51: viewport screenshots now reflect the page's live scroll position (puppeteer's captureBeyondV…
Window capture is now process-locked: a candidate window that does not belong to pup's own Chrome-for-Testing process c…
Cap enum_windows at one call per second no matter how many window opens run concurrently: the fresh-poller sharing wind…
Kill the enum_windows bursts that mode switches caused: identity re-stamps no longer clear the cached window handle (th…