Both run on pinix, published only through the pinix Tailnet namespace and Traefik's web-internal entrypoint (unbound local-data + Headscale split DNS for intent./ereader.domain2). Live Intent reads its OpenAI key from the new pinix-only agenix secret. ereaderViewer is a path: flake input for now; the repo split plan moves it into its own repository on cgit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.8 KiB
HTML
40 lines
1.8 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Live Transkript</title>
|
|
<link rel="stylesheet" href="/styles.css" />
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header>
|
|
<p class="eyebrow">Planungsgespräch · Tailnet</p>
|
|
<h1>Live Transkript</h1>
|
|
<p>Ein Sprachgespräch wird als lokales Transkript gespeichert. Es wird kein Intent erzeugt und nichts ausgeführt.</p>
|
|
</header>
|
|
|
|
<section class="card" aria-labelledby="conversation-heading">
|
|
<h2 id="conversation-heading">Gespräch</h2>
|
|
<p id="status" role="status">Bereit. Mikrofonzugriff wird erst nach „Starten“ angefragt.</p>
|
|
<p id="usage" class="muted">Kosten: GPT-Live wird nach Dauer abgerechnet; Responses-Delegation während des Gesprächs ist separat kostenpflichtig.</p>
|
|
<div class="actions">
|
|
<button id="start" type="button">Starten</button>
|
|
<button id="mute" type="button" disabled>Stummschalten</button>
|
|
<button id="end" type="button" disabled>Beenden & Transkript speichern</button>
|
|
</div>
|
|
<div id="captions" class="captions" aria-live="polite"></div>
|
|
</section>
|
|
|
|
<section class="card" aria-labelledby="storage-heading">
|
|
<h2 id="storage-heading">Lokale Speicherung</h2>
|
|
<p class="muted">Beim normalen Auflegen wird das empfangene Transkript automatisch auf pinix gespeichert. Bei einem unbestätigten Sessionende wird der Status in der Datei kenntlich gemacht.</p>
|
|
<div class="actions">
|
|
<button id="retry" type="button" hidden>Speichern wiederholen</button>
|
|
<a id="download" hidden>Gespeichertes transcript.md herunterladen</a>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
<script type="module" src="/app.js"></script>
|
|
</body>
|
|
</html>
|