# Offene Punkte Stand 2026-09-09. Sortiert nach Dringlichkeit, nicht nach Aufwand. Erledigtes wandert raus, nicht ins Archiv — die Historie steht in Git. ## Blockiert, bis jemand am Stream-PC sitzt - [ ] **S2 abnehmen.** Der obs-websocket-Client ist gebaut und getestet, soweit es ohne OBS geht: Anmeldeverfahren, Pfadübersetzung, Warten auf die fertige Datei. Ungeprüft ist das tatsächliche Gespräch mit einem laufenden OBS. Bis dahin ist `!clip` nicht bewiesen. - [ ] **Strecke IRC → Datenbank im Livebetrieb.** Die Teile sind einzeln getestet, die Verdrahtung wird erst beim ersten echten Stream sichtbar. - [ ] **Layout umstellen** nach [`obs-layout.md`](obs-layout.md) und danach `calibrate` laufen lassen. ## Bekannte Lücke im Betrieb - [ ] **Aufräumen im Arbeitsordner.** Jede Rohdatei landet unter `work//` und bleibt dort liegen. Bei fünf Clips pro Stream und mehreren hundert MB je Datei läuft das Volume in wenigen Wochen voll. Gebraucht wird eine Aufbewahrungsregel — Vorschlag: Rohdateien der letzten 30 Clips behalten, ältere löschen, sobald `status = 'rendered'`. **Das ist der Punkt, der als Erstes weh tun wird.** - [ ] Was passiert, wenn der Rechner mitten im Rendern ausgeht? Clips bleiben auf `status = 'raw'` stehen und werden nach Neustart nicht wieder eingereiht. ## Untertitel verbessern Der Durchlauf am echten Clip war brauchbar, aber nicht gut. Was auffiel: - [ ] **Größeres Modell testen.** `ggml-small` machte aus „Danke" ein „Dank es" und aus „Sabrina" ein „Savina". `medium` ist etwa dreimal so langsam — bei 30-Sekunden-Clips nach dem Stream ist das egal. Vergleich an demselben Clip fahren und entscheiden. - [ ] **Wörter mit niedriger Wahrscheinlichkeit prüfen.** Whisper liefert je Token ein `p`. Bei den Fehlgriffen lag es unter 0,15, bei korrekten Wörtern über 0,9. Entweder weglassen oder gedimmt anzeigen. - [ ] **Schrift.** DejaVu Sans ist im Image vorhanden, aber unauffällig. Auf Shorts trägt eine fettere, rundere Schrift (Montserrat ExtraBold, Inter Black). Braucht eine Schriftdatei im Image und eine Lizenzprüfung. - [ ] **Nur das aktuelle Wort hervorheben** statt fortlaufend einzufärben. Der heutige Karaoke-Effekt lässt gesprochene Wörter gefärbt stehen; der Stil, der auf TikTok funktioniert, hebt genau ein Wort hervor. Braucht mehrere Dialogzeilen je Zeile statt einer. - [ ] **Position prüfen.** 340 px Abstand nach unten ist geschätzt, nicht gemessen. An einem echten Handy gegen die TikTok-, Reels- und Shorts-Oberfläche halten. - [ ] **Seitliche Ränder gegengeprüft**, aber nur rechnerisch gegen eine gemessene mittlere Zeichenbreite. Bei einer anderen Schrift (siehe Punkt oben) muss `CHAR_WIDTH_RATIO` in `subtitles.ts` neu eingemessen werden — sonst bricht die Zeile wieder an der falschen Stelle. - [ ] **Nur transkribieren, wenn Abdu spricht.** Bei getrennten Tonspuren reicht ein Pegelfilter auf der Mikrofonspur, damit aus Stille kein erfundener Text wird. ## Streamsetup - [ ] **Live-Captions verschieben.** Sie liegen im Gameplay-Band und sind fest eingebrannt. Zwei Vorschläge stehen in [`obs-layout.md`](obs-layout.md). Welche OBS-Quelle sie überhaupt zeichnet, sagt `abdulive sources` — das war vorher unbekannt. - [ ] **Spieluntertitel abschalten.** - [ ] **Bessere Bildquelle für die Facecam** — Plugin `Source Record` oder `Aitum Vertical`. Damit entfällt die 2,25-fache Vergrößerung. Lohnt sich erst, wenn regelmäßig Shorts entstehen. ## Auslieferung - [ ] **Code-Signing.** Das Paket ist nicht signiert, SmartScreen warnt bei jeder Installation vor einem unbekannten Herausgeber. Ein OV-Zertifikat kostet rund 200 EUR im Jahr, ein EV-Zertifikat mehr und braucht Hardware. Solange nur Abdu installiert, reicht ein Klick auf "Trotzdem ausfuehren" - sobald jemand Drittes das Paket bekommt, nicht mehr. - [ ] **CI einmal wirklich laufen lassen.** `.gitea/workflows/release.yml` ist geschrieben, der Runner (`ubuntu-latest`) steht — ausgefuehrt wurde sie aber noch nie. Beim ersten Tag zusehen, ob sie durchlaeuft. - [ ] **Hardware-Encoding.** Der mitgelieferte ffmpeg kann QSV, AMF und NVENC (`--enable-libvpl`, `--enable-amf`, `--enable-ffnvcodec`) - aus WSL2 heraus ging das nicht. `clipper.ffmpeg.encoder` steht weiter auf `libx264`. Auf Abdus Rechner messen, ob `h264_qsv` etwas bringt. ## Discord - [ ] **Den Bot unter Last sehen.** Gleichzeitige Klicks auf den Rollen-Knopf sind nie vorgekommen, ebenso wenig eine Laufzeit über Tage. Die Gateway-Verbindung kann fortsetzen und wiederverbinden, aber beides ist nur gegen einen nachgebauten Server geprüft. - [ ] **Onboarding einschalten, sobald der Server groß genug ist.** Discord verlangt sieben Vorgabekanäle mit fünf beschreibbaren, wir haben fünf und drei. Die Frage liegt fertig auf dem Server, nur ausgeschaltet. Dann könnte der Knopf entfallen und mit ihm die Gateway-Verbindung. - [ ] **Twitch-Konto unter Integrationen verbinden**, damit Subs automatisch eine Rolle bekommen. - [ ] **Stammgast automatisch vergeben.** Bisher von Hand. Die Daten dafür liegen längst in der Datenbank, es fehlt die Brücke zwischen Twitch-Konto und Discord-Konto. ## Nach dem MVP - [ ] **Spitzen-Erkennung scharf schalten.** Sie läuft mit und schreibt jeden Kandidaten samt Punktzahl in `events`. Sobald ein paar Streams protokolliert sind: an echten Daten kalibrieren, dann `armed: true`. - [ ] Automatischer Upload zu TikTok und YouTube. - [ ] EventSub für Follows, Subs, Raids — bisher reicht IRC plus Polling. - [ ] Follower-Prüfung bei `!clip`, falls die Abklingzeiten nicht reichen. - [ ] Die übrigen acht Werkzeuge, siehe [`04-roadmap.md`](04-roadmap.md). ## Kleinigkeiten - [ ] Die Fortschrittsanzeige schreibt `\r`-Zeilen; im Protokoll der Aufgabe sieht das unschoen aus. Beim Umleiten in eine Datei besser unterdruecken.