Files
ytrecap/public/index.html
T
Frank Schwenk 5b8042b173 feat: hide recap creation behind five goldfish logo taps
Replace the visible create button with a secret tap gesture that still
opens the PIN-protected recap flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 16:05:13 +02:00

85 lines
3.4 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="theme-color" content="#0B3D5C">
<meta name="description" content="Goldfish Recap — YouTube-Zusammenfassungen für Second-Screen-Survivors">
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/icon-192.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/styles.css">
<title>Goldfish Recap</title>
</head>
<body>
<div id="app">
<header class="hero">
<div class="heroInner">
<div class="logoRow">
<img src="/icon.svg" alt="" class="logo" id="goldfishLogo" width="56" height="56" title="Goldfish Recap">
<div>
<h1>Goldfish Recap</h1>
<p class="tagline">Second Screen? Kein Problem. Dein Gehirn hat abgespeichert: nein. Wir: ja.</p>
</div>
</div>
</div>
</header>
<main class="main">
<section id="recapListSection">
<h2 class="sectionTitle">Zuletzt gerettet</h2>
<div id="recapList" class="recapGrid"></div>
<p id="emptyState" class="emptyState" hidden>
Noch keine Recaps. Paste eine YouTube-URL — der Goldfisch erinnert sich für dich.
</p>
<p id="listError" class="errorText" hidden></p>
</section>
</main>
<footer class="footer">
<span>🐟 3-Sekunden-Gedächtnis? Nicht mehr.</span>
</footer>
</div>
<!-- Create modal -->
<dialog id="createModal" class="modal">
<form method="dialog" id="createForm" class="modalBody">
<h2>Neues Recap</h2>
<p class="modalHint">YouTube-URL rein, Goldfisch macht den Rest.</p>
<input type="url" id="urlInput" class="textInput" placeholder="https://youtube.com/watch?v=…" required>
<label class="checkboxRow">
<input type="checkbox" id="forceCheckbox">
<span>Neu generieren, falls schon vorhanden</span>
</label>
<p id="createError" class="errorText" hidden></p>
<div class="modalActions">
<button type="button" class="btn btn-ghost" id="createCancel">Abbrechen</button>
<button type="submit" class="btn btn-primary" id="createSubmit">Recap starten</button>
</div>
<div id="createProgress" class="progressBox" hidden>
<div class="spinner"></div>
<p>Untertitel fischen… KI denkt nach… Goldfisch schwimmt im Kreis…</p>
</div>
</form>
</dialog>
<!-- PIN modal -->
<dialog id="pinModal" class="modal">
<form method="dialog" id="pinForm" class="modalBody">
<h2>PIN bitte</h2>
<p class="modalHint">Recaps erstellen ist nur für eingeweihte Goldfische.</p>
<input type="password" id="pinInput" class="textInput pinInput" inputmode="numeric" autocomplete="off" placeholder="PIN" required>
<p id="pinError" class="errorText" hidden></p>
<div class="modalActions">
<button type="button" class="btn btn-ghost" id="pinCancel">Abbrechen</button>
<button type="submit" class="btn btn-primary">Anmelden</button>
</div>
</form>
</dialog>
<script type="module" src="/app.js"></script>
</body>
</html>