← Commit history

v2.0.583 (insiders): overlay badges: SVG favicons rasterize (resvg, pure Rust); the wiki serves only an SVG icon and every wiki window wore the generic globe since the compositor moved into the binary in 2.0.568. The favicon guard now rejects HTML only. Lane status counts live windows correctly when no lane pids are known.

John Lauer ·d18a7267a4 ·1mo ago ·parent 4aa16d7
1 file changed +13
dev-skills/pup-icon-consistency/SKILL.md+13
@@ -64,6 +64,19 @@ handed Windows — and look. If the composed PNG is bare/wrong, it's the composi is right but the taskbar is wrong, it's delivery/targeting (`pup-window-targeting`). Do NOT diagnose this from a downscaled taskbar screenshot; crop the native-res `Shell_TrayWnd` capture per-tile. +## SVG favicons (2.0.583): the compositor in the binary could not decode them++When the badge compositor moved from a page canvas into the Rust binary (2.0.568), it lost SVG for free:+a canvas draws an SVG favicon like any image, the `image` crate cannot, and the favicon guard rejected+anything whose first byte was `<` (meant for HTML error pages). The wiki serves ONLY `/static/favicon.svg`+(`/favicon.ico` is a 404), so every wiki window wore the generic globe with an honest amber LED, and I+reported that as a pass in my own test table for hours (John, 2026-09-14: "what do the dev skills say you+are supposed to do with the overlay icon and what have you been doing"). Fix: `badge::is_svg` (SVG passes+the guard, HTML still does not) and `resvg` rasterizes to 64 px with straight alpha. Test:+`rust/identity/tests/svg_favicon.rs` renders the wiki's real icon and asserts painted pixels.+Rule restated: a generic badge on a page that serves ANY icon, SVG included, is a regression to chase,+never a row to move past.+ ## The overlay GUARANTEE — why a window ends up BARE, and the three layers that fix it  John, repeatedly: "ensure you ALWAYS have an overlay icon working consistently... every verb that