feat(design): Phase 6 — favicon and PWA icon assets (#201)

Generate favicon, Apple touch, Android Chrome, manifest, and Safari pinned-tab assets from the SquadScope robot-with-binoculars icon. Closes #175. Depends on #189. References #178. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Juan Manuel Servera committed May 25, 2026 at 22:54 UTC b34a35925bf23ee87800db4b26ebdf9e53905281
10 files changed +51 -7
layouts/partials/head.html
+9 -7
@@ -91,13 +91,15 @@
91 {{- end -}}
92
93 {{- /* Favicons */}}
94 -<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
95 -<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
96 -<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
97 -<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
98 -<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
99 -<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
100 -<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
94 +<link rel="icon" href="/favicon.ico" sizes="any">
95 +<link rel="icon" type="image/svg+xml" href="/images/squadscope-icon.svg">
96 +<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
97 +<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
98 +<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
99 +<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#0066CC">
100 +<link rel="manifest" href="/site.webmanifest">
101 +<meta name="theme-color" content="#0066CC">
102 +<meta name="msapplication-TileColor" content="#0066CC">
103
104 {{- /* RSS */}}
105 {{ range .AlternativeOutputFormats -}}
static/android-chrome-192x192.png
Binary files /dev/null and b/static/android-chrome-192x192.png differ
static/android-chrome-512x512.png
Binary files /dev/null and b/static/android-chrome-512x512.png differ
static/apple-touch-icon.png
Binary files /dev/null and b/static/apple-touch-icon.png differ
static/favicon-16x16.png
Binary files /dev/null and b/static/favicon-16x16.png differ
static/favicon-32x32.png
Binary files /dev/null and b/static/favicon-32x32.png differ
static/favicon.ico
Binary files /dev/null and b/static/favicon.ico differ
static/images/squadscope-icon.svg new
+13
@@ -0,0 +1,13 @@
1 +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
2 + <line x1="32" y1="4" x2="32" y2="14"/>
3 + <circle cx="32" cy="4" r="3" fill="currentColor" stroke="none"/>
4 + <rect x="10" y="14" width="44" height="36" rx="8" ry="8"/>
5 + <circle cx="22" cy="30" r="9"/>
6 + <circle cx="22" cy="30" r="4" fill="currentColor" stroke="none"/>
7 + <circle cx="42" cy="30" r="9"/>
8 + <circle cx="42" cy="30" r="4" fill="currentColor" stroke="none"/>
9 + <line x1="31" y1="30" x2="33" y2="30" stroke-width="4"/>
10 + <line x1="26" y1="42" x2="38" y2="42"/>
11 + <line x1="28" y1="45" x2="36" y2="45"/>
12 + <path d="M14 54 L14 58 Q14 62 18 62 L46 62 Q50 62 50 58 L50 54" stroke-width="2"/>
13 +</svg>
static/safari-pinned-tab.svg new
+10
@@ -0,0 +1,10 @@
1 +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2 + <g fill="black">
3 + <rect x="30.75" y="4" width="2.5" height="10" rx="1.25"/>
4 + <circle cx="32" cy="4" r="3"/>
5 + <path d="M18 14h28a8 8 0 0 1 8 8v20a8 8 0 0 1-8 8H18a8 8 0 0 1-8-8V22a8 8 0 0 1 8-8Zm4 7a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm20 0a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm-10 7a2 2 0 0 0 0 4 2 2 0 0 0 0-4ZM26 40.75a1.25 1.25 0 1 0 0 2.5h12a1.25 1.25 0 1 0 0-2.5H26Zm2 3a1.25 1.25 0 1 0 0 2.5h8a1.25 1.25 0 1 0 0-2.5h-8Z" fill-rule="evenodd"/>
6 + <circle cx="22" cy="30" r="4"/>
7 + <circle cx="42" cy="30" r="4"/>
8 + <path d="M14 54h2v4a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2v-4h2v4a4 4 0 0 1-4 4H18a4 4 0 0 1-4-4v-4Z"/>
9 + </g>
10 +</svg>
static/site.webmanifest new
+19
@@ -0,0 +1,19 @@
1 +{
2 + "name": "SquadScope",
3 + "short_name": "SquadScope",
4 + "icons": [
5 + {
6 + "src": "/android-chrome-192x192.png",
7 + "sizes": "192x192",
8 + "type": "image/png"
9 + },
10 + {
11 + "src": "/android-chrome-512x512.png",
12 + "sizes": "512x512",
13 + "type": "image/png"
14 + }
15 + ],
16 + "theme_color": "#0066CC",
17 + "background_color": "#FAFAFA",
18 + "display": "standalone"
19 +}