Skip to content

fix(brand): serve the R/ favicon reliably and fix the manifest link - #60

Merged
raferdev merged 1 commit into
mainfrom
fix/favicon
Sep 24, 2026
Merged

raferdev merged 1 commit into
mainfrom
fix/favicon

Conversation

@raferdev

Copy link
Copy Markdown
Owner

Summary

  • Why the old favicon still showed: production already served the new R/ files, but at the same URLs as before. Browsers cache favicons aggressively, and nginx allows icons to be cached for a day, so returning visitors kept the old one.
  • New icon.svg: the R/ drawn from the Caveat glyph outlines (3 KB). It is sharp at any size and switches to a dark tile when the OS is in dark mode. Being a new URL, it also forces browsers to fetch the icon again. favicon.ico is rebuilt from the same artwork as the legacy fallback. The upscaled 16px "shortcut" icon is removed.
  • Manifest was a 404: the site linked site.webmanifest, which doesn't exist, so Android and PWA home-screen icons never loaded. It now links manifest.webmanifest, and nginx serves it as application/manifest+json.
  • Soft 404s: nginx answered missing .css/.js/.jpg/.svg/.json files on the main site with index.html and a 200 status. That is why a missing /icon.svg looked fine on production. Those files now return 404; Storybook keeps its fallback. This changes nginx/, so the deploy will rebuild the nginx image.

Verification

  • New tests/icons.spec.ts: every icon, the apple-touch icon, the manifest and the icons it lists load with an image or manifest content type; missing assets return 404; the SVG carries its dark-mode styles.
  • Run against production today, it fails on exactly these bugs (manifest 404, /icon.svg served as HTML).
  • The full suite (194 tests) passes against the real nginx test container.

🤖 Generated with Claude Code

- add icon.svg built from the Caveat R/ glyphs: sharp at every size and
  switches to a dark tile with the system color scheme; the new URL also
  makes browsers drop the cached old favicon
- rebuild favicon.ico from the same artwork and declare the modern set
  (ico 32x32, svg, apple-touch-icon); drop the upscaled 16px shortcut
- the manifest link pointed at a nonexistent site.webmanifest (404), so
  home-screen icons never loaded; link the real manifest.webmanifest and
  serve it as application/manifest+json
- nginx no longer answers missing .css/.js/.jpg/.svg/.json files on the
  main site with index.html (soft 404); Storybook keeps its fallback
- icons spec checks every icon and manifest link loads as an image or
  manifest, and that missing assets return 404

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Sep 24, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0786511

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@raferdev
raferdev merged commit 4b7cef5 into main Sep 24, 2026
8 checks passed
@raferdev
raferdev deleted the fix/favicon branch September 24, 2026 19:25
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