stream: make the web player installable as a PWA
Wire up a web manifest, service worker and icon routes so the player can be installed on mobile. The static manifest stays generic; the page regenerates it at runtime from STATION_NAME so an instance keeps its name. The service worker only caches the app shell, never the live stream or the playback APIs. Icons (192/512, maskable and apple-touch) are rasterized from the favicon. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
976f009297
commit
c73b71d32f
10 changed files with 239 additions and 0 deletions
49
stream/icon-maskable.svg
Normal file
49
stream/icon-maskable.svg
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<!-- Variante « full-bleed » du favicon, destinée aux icônes d'application
|
||||
(PWA maskable + apple-touch-icon). Le fond couvre tout le carré (pas de
|
||||
coins arrondis : Android/iOS appliquent leur propre masque) et le motif
|
||||
est ramené dans la zone de sécurité centrale (~80%) pour ne pas être
|
||||
rogné par un masque circulaire. -->
|
||||
<defs>
|
||||
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#1a1030"/>
|
||||
<stop offset="1" stop-color="#3a1145"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="sun" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#ffe15a"/>
|
||||
<stop offset="0.5" stop-color="#ff5c8a"/>
|
||||
<stop offset="1" stop-color="#9b4dff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="grid" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#9b8cff" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#ff4fd8" stop-opacity="0.9"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect width="64" height="64" fill="url(#sky)"/>
|
||||
|
||||
<!-- Motif ramené dans la zone de sécurité : translation + échelle 0.72. -->
|
||||
<g transform="translate(9 9) scale(0.72)" clip-path="none">
|
||||
<g>
|
||||
<circle cx="32" cy="27" r="16" fill="url(#sun)"/>
|
||||
<g fill="#1a1030">
|
||||
<rect x="14" y="30" width="36" height="1.6"/>
|
||||
<rect x="14" y="33.5" width="36" height="2.2"/>
|
||||
<rect x="14" y="37.5" width="36" height="3"/>
|
||||
<rect x="14" y="42" width="36" height="4"/>
|
||||
</g>
|
||||
</g>
|
||||
<rect x="0" y="45" width="64" height="1.4" fill="#ff4fd8"/>
|
||||
<g stroke="url(#grid)" stroke-width="1">
|
||||
<line x1="32" y1="46" x2="-8" y2="66"/>
|
||||
<line x1="32" y1="46" x2="8" y2="66"/>
|
||||
<line x1="32" y1="46" x2="24" y2="66"/>
|
||||
<line x1="32" y1="46" x2="40" y2="66"/>
|
||||
<line x1="32" y1="46" x2="56" y2="66"/>
|
||||
<line x1="32" y1="46" x2="72" y2="66"/>
|
||||
<line x1="0" y1="50" x2="64" y2="50"/>
|
||||
<line x1="0" y1="55" x2="64" y2="55"/>
|
||||
<line x1="0" y1="61" x2="64" y2="61"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
Loading…
Add table
Add a link
Reference in a new issue