fix(pwa): serve apple-touch-icon + favicons from root, add sizes hint
CI / test (push) Has been cancelled

iOS Safari's Add-to-Home-Screen flow probes /apple-touch-icon.png at the
site root in addition to the <link rel> on the page. Those root paths
currently 302 through Symfony's auth firewall to /login, so iOS gets HTML
where it expects a PNG and falls back to whatever it cached from earlier
installs (the 1 KB placeholder icon). Dropping the real PNG (and the
-precomposed alias) directly in public/ makes nginx serve them as static
files, ahead of the firewall.

Also adds favicon.svg and a multi-size favicon.ico at the root for
browsers/bots that probe / paths instead of reading <link>, and adds
sizes="180x180" to every apple-touch-icon link so iOS doesn't have to
guess.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-15 00:48:01 -04:00
parent 40581cb98b
commit 6c9959c00d
17 changed files with 25 additions and 13 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/build/icons/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/build/icons/favicon-16.png">
<link rel="apple-touch-icon" href="/build/icons/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/build/icons/apple-touch-icon.png">
<title>Add photo to your frame — WeVisto</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
+1 -1
View File
@@ -6,7 +6,7 @@
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/build/icons/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/build/icons/favicon-16.png">
<link rel="apple-touch-icon" href="/build/icons/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/build/icons/apple-touch-icon.png">
<title>Photo added — WeVisto</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
+1 -1
View File
@@ -6,7 +6,7 @@
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/build/icons/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/build/icons/favicon-16.png">
<link rel="apple-touch-icon" href="/build/icons/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/build/icons/apple-touch-icon.png">
<title>Decline photo — WeVisto</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
+1 -1
View File
@@ -6,7 +6,7 @@
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/build/icons/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/build/icons/favicon-16.png">
<link rel="apple-touch-icon" href="/build/icons/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/build/icons/apple-touch-icon.png">
<title>Photo declined — WeVisto</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
+1 -1
View File
@@ -6,7 +6,7 @@
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/build/icons/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/build/icons/favicon-16.png">
<link rel="apple-touch-icon" href="/build/icons/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/build/icons/apple-touch-icon.png">
<title>Link invalid — WeVisto</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}