forked from unom/punktfunk
Baking PNGs was the wrong call and it showed twice over. Reactor's `.icon()` builds a BitmapIcon with `ShowAsMonochrome(false)` and no size, so a baked mark is stuck at ONE colour on every theme and renders at its source pixel count read as DIPs — a colour that never matches the theme, and a size each control template clamps or does not. Draw Lucide's own icon font instead. A FontIcon is sized by the control and tinted from the foreground brush, exactly as the SymbolIcon it replaced was: white on an accent button, the theme's colour in the sidebar, and a vector at any DPI. The ring's discs take the same glyph through a TextBlock, where the size is the ring's geometry and the ink is white because a disc is dark on both themes. Three PNG bakes, the two-colour split, the LOCALAPPDATA materializer and its cache all go. What replaces them is a codepoint per icon in the shared table and one 664 kB font. The font reaches the exe by two routes, because ms-appx:/// resolves to the install folder either way: build.rs stages it for a dev build, and it is checked in under packaging/assets for a shipped one, which pack-msix.ps1 copies into the layout the MSIX, the installer and the portable zip are all packed from. That script now fails loudly if it is missing — every icon would otherwise ship as a private-use box.