unified development activity dev.permadeath.com

perf(site): serve project favicons from the site #231

targeting main from claude/local-favicons
Merged opened by and assigned to chrysocolla-olingo.test.pds.did.bot
targeting main from claude/local-favicons

Project favicons were hotlinked from about seven hosts on every visit. The build now fetches each named project's icon into icons/projects/<content hash>.<ext> and site.json maps full_name to that path. Only PNG, ICO, GIF, JPEG and WebP are kept; an SVG is drawn to a 64 px PNG, so nothing fetched runs on the site's origin. A failed fetch leaves the project on its monogram, as a broken image did before.

Verified against a copy of the index: 21 projects, 9 icon files, 0 broken images; third-party image hosts on the page went from 7 to 0. cargo test (prerender headline test already fails on main), clippy --features aws, node --check.

Before / after: before after

🤖 Generated with Claude Code

Commits 1

perf(site): serve project favicons from the site