Files
Joe MattielloandClaude Opus 5.5 3d9401f035 feat(site): per-page share cards and a favicon set from the app icon (#985)
* feat(site): per-page share cards and a favicon set from the app icon

Every page shared one og:image, the Cybermorph true-color comparison,
which reads as a small low-contrast strip in a link preview; the site had
no favicon at all.

- scripts/make_share_cards.py (Pillow + rsvg-convert) composes two
  1200x630 cards: home.png, eight game captures from site/assets/home/
  over the icon and wordmark, and app.png, zoomed crops of the desktop app
  captures (library, Rayman under the Lottes CRT shader, palette debugger,
  light theme). It refuses to write a card that is not exactly 1200x630 or
  is 1 MB or more. It also renders favicon.svg/.ico, icon-192/512.png and
  an opaque full-bleed apple-touch-icon from
  app/packaging/icons/virtualjaguar.svg. Outputs are committed; the
  stdlib-only site build only copies them.
- build_site.py: SHARE_DEFAULT plus a per-page SHARE_IMAGES map replace
  the global SHARE_IMAGE; each page gets its own og:image, twitter:image,
  alt, type, width and height (read from the PNG), and the home JSON-LD
  image follows. Every page head links the favicon set; favicon.ico is
  also copied to the output root.
- check_site.py: twitter:image must equal og:image, the width/height tags
  must match the PNG, the card must be under 1 MB, and every page must
  carry rel=icon and rel=apple-touch-icon links.

Closes #984

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* fix(site): opaque touch icon without the outline ring; list the new checks in check_site's docstring

Refs #984

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-15 18:41:09 -04:00
..