- Shipped
- September 10, 2026 at 8:56 PM UTC
- Author
- Kamo
- Commit
- 6fac780
A new organization's folder is seeded from the base theme, so it starts out with KamoCRM's art under img/logo-full.svg and favicon/favicon.svg. An organization whose full logo or tab icon is a raster never replaced either: - the logo upload wrote img/logo-full.png beside the seeded logo-full.svg; - ConversionService returns a favicon.svg only for an SVG source, so a raster tab icon left the seeded chameleon in place. Nearly every surface asks for the .svg whatever was uploaded (kamo-login's and kamo-internal's tab icons, most ThemeLogos, email templates, the signer), so 17 live organizations were shown KamoCRM's logo or icon on their own pages. Make It Pop's login tab was one of them. Both paths now also write an SVG that wraps the raster: the logo upload for full logos, and favicon generation when the set comes back with no favicon.svg. The raster is embedded as a data URI and the SVG takes its size from the raster's own header (ImageProbe), so it renders as an <img>, as a CSS mask and as a tab icon exactly as the raster does. A startup backfill beside the alias migration repairs existing folders. It replaces only an .svg that is byte-identical to the seeded one, or missing, never one the organization uploaded itself, and a repaired file no longer matches the seed, so later boots find nothing to do.