ZeasyAlexandClaude Opus 5 70928235b6 Stream-Erkennung: eine geprüfte Funktion statt zweimal ausgeschrieben
Wann ist ein Stream ein *neuer* Stream? Die Entscheidung stand doppelt in Hub
und Ingest und war ungetestet - dabei haengt genau an ihr, ob der Go-Live-Ping
zum richtigen Zeitpunkt und nur einmal rausgeht.

Jetzt rein in stream-state.ts, mit zehn Tests. Darunter die Faelle, die im
Betrieb selten sind und dann mitten im Stream zuschlagen:

- Neue Twitch-ID nach kurzem Aussetzer ist eine Fortsetzung, kein zweiter
  Ping. Twitch vergibt bei einem Verbindungsabbruch eine neue ID.
- Eine einzelne leere Antwort beendet den Stream nicht. Wer daraufhin die
  Sitzung schliesst, hat beim naechsten Abruf einen "neuen" Stream.
- Ein Durchlauf ueber 90 Minuten mit zwei Aussetzern, im Minutentakt
  abgefragt, ergibt genau einen Start und genau ein Ende.

Dazu App-Token fuer Helix: `GET /users` und `GET /streams` kommen ohne
Nutzer-Token aus. Das ist der Unterschied zwischen "laeuft" und "wartet auf
einen Klick" - ohne diese Unterscheidung stand der ganze Dienst still, bis
der Broadcaster sein Konto verbindet. Endpunkte, die etwas tun oder Privates
lesen, verlangen weiterhin ein Nutzer-Token, und `appOk` sagt je Aufruf, was
gilt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 00:13:28 +02:00
2026-09-09 20:12:26 +02:00

abdulive-toolkit

Werkzeugkasten für den Twitch-Kanal abdulive_. Ein Monorepo mit mehreren kleinen Diensten, die sich einen gemeinsamen Kern teilen: Twitch-Auth, Helix-Client, EventSub/IRC-Ingest und eine SQLite-Datenbank.

TypeScript auf Node 24, ohne Laufzeitabhängigkeiten und ohne Build-Schritt — Node führt die .ts-Dateien direkt aus, SQLite und WebSocket sind eingebaut. Betrieb über Docker Compose.

Zielgröße des Kanals: ~5–30 gleichzeitige Zuschauer. Alles hier ist auf diese Phase optimiert — nicht auf Skalierung, sondern auf Wachstum und Bindung.

Die neun Tools

# Tool Ordner Zweck Status
1 Clip-to-Shorts apps/clipper Clips → 9:16 mit Untertiteln, Upload-fertig geplant
2 Go-Live-Broadcaster apps/broadcaster Stream-Start → Discord/Bluesky/Instagram geplant
3 Raid- & Netzwerk-Tool apps/raid-scout Raid-Ziele finden, Raid-Historie führen geplant
4 Analytics-Dashboard apps/dashboard Viewer vs. Chat, Titel-Performance, Retention geplant
5 VOD-Kapitel apps/vod-chapters Szenen-/Kategoriewechsel → Timestamps geplant
6 Community-Gedächtnis apps/community Chatter-Profile, Begrüßungen, Overlay-Hinweise geplant
7 Chat steuert Dinge apps/overlay-server + apps/overlay-web Overlay, Soundboard, Minigames, Umfragen geplant
8 Punktesystem + Shop apps/loyalty Punkte mit echten Konsequenzen geplant
9 Stream-Recap apps/recap Zusammenfassung nach Streamende in Discord geplant

Dazu der Dienst, der unter allen anderen liegt:

| — | Ingest-Daemon | apps/ingest | IRC + Helix → DB, Einrichtungsseite | läuft |

Doku

Auf dem Stream-PC installieren

Eine native Windows-Anwendung. Node, ffmpeg, whisper.cpp und die Schriften sind mitgeliefert — vorausgesetzt wird nur OBS. Kein Docker, kein WSL2, nichts zu übersetzen (ADR-0007).

Ein Befehl, ohne Administratorrechte. Programm und Daten landen im Benutzerprofil.

irm https://git.zeasy.dev/ZeasyAlex/abdulive/raw/branch/main/scripts/install.ps1 | iex

Kein Netz auf dem Stream-PC? Dann das Paket von der Releases-Seite laden, entpacken und darin install.ps1 ausführen.

Der Installer lädt danach das Sprachmodell, läuft den Selbsttest, startet den Daemon und öffnet die Einrichtungsseite. Ein Befehl, und du bist da.

Dort die Twitch-Zugangsdaten eintragen. Sie werden verschlüsselt abgelegt, nicht in einer Datei im Projekt (ADR-0005).

Ausführlich: docs/05-setup.md.

Paket bauen und ausliefern

node scripts/build-package.ts --version 0.5.0

Lädt Node, ffmpeg und whisper.cpp bei ihren Herausgebern, packt alles nach dist/ und schreibt abdulive.json — das Manifest, das der Updater auf Abdus Rechner abfragt. Läuft auch in der CI unter Linux.

Auf dem Stream-PC sieht abdulive update täglich nach und legt eine neue Fassung bereit; eingespielt wird sie beim nächsten Start, nie mitten im Stream.

Aktueller Stand

Vier von sieben Scheiben des MVP „Clip-Knopf" sind gebaut: Toolchain, Einrichtung im Browser, Twitch-Auth, Datenbank, Chat-Aufnahme, OBS-Anbindung mit !clip, 9:16-Render und Untertitel. Dazu die native Auslieferung mit Installer und Updater. 79 Tests grün.

Offen: die Abnahme der OBS-Anbindung an einem laufenden OBS, dann S5 — Onboarding-Assistent und Sichtungsseite.

Details: docs/handoff.md

Tests

node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
S
Description
No description provided
Readme
2.3 MiB
0 Stars 1 Watchers 0 Forks
2026-10-26 12:04:25 +00:00
Languages
TypeScript 73.9%
JavaScript 11%
HTML 8.3%
CSS 3.3%
PowerShell 2.4%
Other 1.1%