Skip to content

CE: Site favicon matches desktop app icon#314

Merged
ericflo merged 1 commit intomainfrom
ce/site-favicon-real-icon
Apr 16, 2026
Merged

CE: Site favicon matches desktop app icon#314
ericflo merged 1 commit intomainfrom
ce/site-favicon-real-icon

Conversation

@ericflo
Copy link
Copy Markdown
Owner

@ericflo ericflo commented Apr 16, 2026

What

  • Replaces hardcoded purple 'M' SVG favicon with the real designed icon shipped in PR Real designed app icon for desktop #312
  • Adds /favicon-32.png, /apple-touch-icon.png, /icon-512.png routes (all baked via include_bytes! from crates/modelrelay-desktop/icons/)
  • /favicon.ico now serves the real Windows .ico from the desktop crate (16x16 + 32x32 PNG sub-images) with Content-Type: image/x-icon
  • All four icon routes set Cache-Control: public, max-age=86400, immutable
  • Adds new paths to SESSION_EXEMPT_ROUTES
  • Updates page_shell_custom in modelrelay-web plus the landing and pricing templates in modelrelay-cloud to link the real icons via a standard favicon/apple-touch-icon block
  • Updates favicon_returns_success to assert real .ico magic bytes and adds apple_touch_icon_returns_png

Why

The desktop app and the website should share branding. Today modelrelay.io still shows a placeholder 'M' tab icon and /apple-touch-icon.png 404s on iOS bookmarks. With the designed desktop icon shipping in PR #312, the site should use the same artwork everywhere a browser expects a favicon or an apple-touch-icon.

Verify

After deploy:

  • curl -sI https://modelrelay.io/apple-touch-icon.png200 image/png
  • file <(curl -s https://modelrelay.io/favicon.ico)MS Windows icon resource
  • curl -sI https://modelrelay.io/favicon-32.png200 image/png
  • curl -sI https://modelrelay.io/icon-512.png200 image/png
  • View any page in a browser and confirm the tab icon matches the desktop app icon

- /favicon.ico now serves the real Windows .ico (16x16 + 32x32 PNGs)
  from the desktop crate instead of a hardcoded purple 'M' SVG
- Add /favicon-32.png, /apple-touch-icon.png, /icon-512.png routes,
  baked in via include_bytes! from crates/modelrelay-desktop/icons/
- All four routes set Cache-Control: public, max-age=86400, immutable
- Register new paths in SESSION_EXEMPT_ROUTES
- Update page_shell_custom, landing, and pricing templates to link
  the real icons via a standard favicon/apple-touch-icon block
- Update favicon_returns_success test to assert real .ico magic bytes
  and add apple_touch_icon_returns_png test
@ericflo ericflo merged commit 2e51fb8 into main Apr 16, 2026
12 checks passed
@ericflo ericflo deleted the ce/site-favicon-real-icon branch April 16, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant