Files
gerbeur/index.html
khannurien 2606ef4ccc
All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 43s
v3: native bandcamp playback and a queue in the global player
The player now holds a queue instead of a single item, so albums play
through and single tracks share the same code path. Adds a "stream" item
kind for expiring, remotely-hosted sources: Bandcamp signs its mp3 URLs
for ~24h, so an item carries the page it came from and re-resolves itself
on error or on a stale restored session, falling back to the iframe embed
if that fails too.

Gated behind GERBEUR_BANDCAMP_PLAYER (default "embed"), injected into a
meta tag the same way as site-name/site-emoji.

Also: player header gains artwork and a subtitle, volume persists across
queue advances and reloads, and cross-origin streams get a plain seek bar
rather than a waveform that can never decode.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SbtjNsT5wvuABnfqhegZEJ
2026-08-22 12:14:28 +00:00

30 lines
1.9 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=__ICON_VERSION__" />
<link rel="icon" href="/favicon.ico?v=__ICON_VERSION__" sizes="any" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=__ICON_VERSION__" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=__ICON_VERSION__" />
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png?v=__ICON_VERSION__" />
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192.png?v=__ICON_VERSION__" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Saira:ital,wght@0,100..900;1,100..900&family=Space+Grotesk:wght@400;700;900&display=swap" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#111827" />
<meta name="site-name" content="__SITE_NAME__" />
<meta name="site-emoji" content="__SITE_EMOJI__" />
<meta name="bandcamp-player" content="__BANDCAMP_PLAYER__" />
<link rel="manifest" href="/manifest.webmanifest?v=__ICON_VERSION__" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png?v=__ICON_VERSION__" />
<title>__SITE_NAME__</title>
</head>
<body>
<div id="root"></div>
<script>(function(){var s=localStorage.getItem("style"),c=localStorage.getItem("color-scheme");if(s&&s!=="smooth"&&s!=="default")document.documentElement.setAttribute("data-style",s);if(c&&c!=="auto")document.documentElement.setAttribute("data-color-scheme",c);})();</script>
<script>if ('serviceWorker' in navigator) navigator.serviceWorker.register('/sw.js');</script>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>