refactor(branding): switch to /icons/ paths and remove committed binaries

PWA icons now ship from public/icons/ (generated by
@vite-pwa/assets-generator, gitignored). The seven hand-crafted
binaries at public/ root come out of the tree.

Changes:
- 7 deleted: public/{favicon.ico, apple-touch-icon.png, mask-icon.svg,
  icon-{192,512}.png, icon-maskable-{192,512}.png}
- 9 HTML: <link rel="icon"|"apple-touch-icon"> hrefs prefixed with
  /icons/. mask-icon link dropped (PNG source → no sharp SVG; modern
  browsers prefer favicon.svg anyway, which we can revisit when an
  SVG brand source lands).
- 8 vite configs: includeAssets[] + manifest.icons[].src prefixed
  with icons/. Vite rewrites /icons/foo → <base>/icons/foo when base
  is set (so /events/icons/favicon.ico under /events/ deploys).

Build is now dependent on `pnpm generate-pwa-assets` running first
(or whatever invokes the generator — Phase 2 NixOS builds wire this
into buildNpmPackage). Standalone dev runs the generator on first
boot or whenever BRAND_DIR changes.

Part of aiolabs/webapp#95.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-06-09 23:37:55 +02:00
commit faf41cd1c0
24 changed files with 98 additions and 118 deletions

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Chat — Encrypted</title> <title>Chat — Encrypted</title>
<meta name="apple-mobile-web-app-title" content="Chat"> <meta name="apple-mobile-web-app-title" content="Chat">
<meta name="description" content="End-to-end encrypted Nostr chat"> <meta name="description" content="End-to-end encrypted Nostr chat">

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>%VITE_APP_NAME%</title> <title>%VITE_APP_NAME%</title>
<meta name="apple-mobile-web-app-title" content="%VITE_APP_NAME%"> <meta name="apple-mobile-web-app-title" content="%VITE_APP_NAME%">
<meta name="description" content="Discover events near you"> <meta name="description" content="Discover events near you">

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Forum — Discussions</title> <title>Forum — Discussions</title>
<meta name="apple-mobile-web-app-title" content="Forum"> <meta name="apple-mobile-web-app-title" content="Forum">
<meta name="description" content="Decentralized link aggregator and discussion forum on Nostr"> <meta name="description" content="Decentralized link aggregator and discussion forum on Nostr">

View file

@ -7,9 +7,8 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- <meta name="theme-color" content="#ffffff"> --> <!-- <meta name="theme-color" content="#ffffff"> -->
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>%VITE_APP_NAME% Hub</title> <title>%VITE_APP_NAME% Hub</title>
<meta name="apple-mobile-web-app-title" content="%VITE_APP_NAME%"> <meta name="apple-mobile-web-app-title" content="%VITE_APP_NAME%">
</head> </head>

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Libra — Accounting</title> <title>Libra — Accounting</title>
<meta name="apple-mobile-web-app-title" content="Libra"> <meta name="apple-mobile-web-app-title" content="Libra">
<meta name="description" content="Team accounting and expense management"> <meta name="description" content="Team accounting and expense management">

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Market — Nostr</title> <title>Market — Nostr</title>
<meta name="apple-mobile-web-app-title" content="Market"> <meta name="apple-mobile-web-app-title" content="Market">
<meta name="description" content="Decentralized marketplace on Nostr with Lightning payments"> <meta name="description" content="Decentralized marketplace on Nostr with Lightning payments">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

View file

@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13 3L4 14h7l-2 7 9-11h-7l2-7z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 227 B

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Restaurant — Order</title> <title>Restaurant — Order</title>
<meta name="apple-mobile-web-app-title" content="Restaurant"> <meta name="apple-mobile-web-app-title" content="Restaurant">
<meta name="description" content="Order from your local Nostr-native restaurant with Lightning payments"> <meta name="description" content="Order from your local Nostr-native restaurant with Lightning payments">

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Tasks — Work Orders</title> <title>Tasks — Work Orders</title>
<meta name="apple-mobile-web-app-title" content="Tasks"> <meta name="apple-mobile-web-app-title" content="Tasks">
<meta name="description" content="Decentralized task management on Nostr"> <meta name="description" content="Decentralized task management on Nostr">

View file

@ -60,13 +60,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Chat — Encrypted', name: 'Chat — Encrypted',
@ -82,10 +81,10 @@ export default defineConfig(({ mode }) => ({
categories: ['social', 'communication'], categories: ['social', 'communication'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -75,13 +75,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: APP_NAME, name: APP_NAME,
@ -96,10 +95,10 @@ export default defineConfig(({ mode }) => ({
id: 'aiolabs-events', id: 'aiolabs-events',
categories: ['social', 'entertainment', 'lifestyle'], categories: ['social', 'entertainment', 'lifestyle'],
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -60,13 +60,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Forum — Discussions', name: 'Forum — Discussions',
@ -82,10 +81,10 @@ export default defineConfig(({ mode }) => ({
categories: ['social', 'news'], categories: ['social', 'news'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -67,13 +67,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Libra — Team Accounting', name: 'Libra — Team Accounting',
@ -89,10 +88,10 @@ export default defineConfig(({ mode }) => ({
categories: ['finance', 'business', 'productivity'], categories: ['finance', 'business', 'productivity'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -60,13 +60,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Market — Nostr', name: 'Market — Nostr',
@ -82,10 +81,10 @@ export default defineConfig(({ mode }) => ({
categories: ['shopping', 'business'], categories: ['shopping', 'business'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -65,13 +65,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Restaurant — Order', name: 'Restaurant — Order',
@ -89,10 +88,10 @@ export default defineConfig(({ mode }) => ({
categories: ['food', 'shopping'], categories: ['food', 'shopping'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -60,13 +60,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Tasks — Work Orders', name: 'Tasks — Work Orders',
@ -82,10 +81,10 @@ export default defineConfig(({ mode }) => ({
categories: ['productivity', 'business'], categories: ['productivity', 'business'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -66,13 +66,12 @@ export default defineConfig(({ mode }) => ({
], ],
}, },
includeAssets: [ includeAssets: [
'favicon.ico', 'icons/favicon.ico',
'apple-touch-icon.png', 'icons/apple-touch-icon.png',
'mask-icon.svg', 'icons/icon-192.png',
'icon-192.png', 'icons/icon-512.png',
'icon-512.png', 'icons/icon-maskable-192.png',
'icon-maskable-192.png', 'icons/icon-maskable-512.png',
'icon-maskable-512.png',
], ],
manifest: { manifest: {
name: 'Wallet — Lightning', name: 'Wallet — Lightning',
@ -88,10 +87,10 @@ export default defineConfig(({ mode }) => ({
categories: ['finance'], categories: ['finance'],
lang: 'en', lang: 'en',
icons: [ icons: [
{ src: 'icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any' },
{ src: 'icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' }, { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
{ src: 'icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: 'icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, { src: 'icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
], ],
}, },
}), }),

View file

@ -6,9 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/icons/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"> <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF">
<title>Wallet — Lightning</title> <title>Wallet — Lightning</title>
<meta name="apple-mobile-web-app-title" content="Wallet"> <meta name="apple-mobile-web-app-title" content="Wallet">
<meta name="description" content="Lightning Network wallet — send, receive, and manage sats"> <meta name="description" content="Lightning Network wallet — send, receive, and manage sats">