Files
gacha-event-tracker/index.html
T
Lucas WintherandClaude Opus 5 c633d0510d feat: work offline
The reader's question is answered entirely by data already on the device and
countdowns run off the local clock, so losing signal should not lose the app.

The shell is cache-first; the feed is network-first falling back to the last
copy seen, because stale events beat a blank screen. Webfonts are cached too
— without them an offline load silently drops to system faces and the whole
thing changes character.

Offline is surfaced in the header and above the footer rather than hidden:
stale data must never be presented as current.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-08-15 00:52:41 +02:00

28 lines
1.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Event Clock — gacha events by what expires next</title>
<meta
name="description"
content="Live and upcoming events across your gacha games, sorted by what ends soonest."
/>
<meta name="theme-color" content="#12141c" />
<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=Chakra+Petch:wght@500;600;700&family=Public+Sans:ital,wght@0,400;0,500;0,600;1,400&display=swap"
rel="stylesheet"
/>
<link rel="manifest" href="/manifest.webmanifest" />
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/icon.svg" />
<link rel="stylesheet" href="/styles.css" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/main.js"></script>
</body>
</html>