Files
abdulive/scripts
ZeasyAlexandClaude Opus 5 bc2c8f6cbe Overlay: fuenf Browser-Sources fuer OBS
Einblendungen, Chat, Statusleiste, Effekte, Pausenbild. Kein Build, kein
Framework - OBS laedt die Dateien direkt, und jede Zwischenstufe waere ein
Ding, das mitten im Stream kaputtgehen kann.

Server-Sent Events statt WebSocket, entgegen der Skizze in chat-control.md:
Node bringt einen WebSocket-*Client* mit, aber keinen Server, `EventSource`
verbindet sich von allein neu, und die Richtung stimmt - das Overlay hoert
nur zu. Gegen die tote Browser-Source nach einem Neustart stehen drei Dinge:
der eingebaute Reconnect, ein Herzschlag als echtes Ereignis (ein
SSE-Kommentar haelt die Verbindung offen, ist im Browser aber unsichtbar),
und ein Zustands-Schnappschuss beim Verbinden.

Abos, Raids, Bits und Loeschungen kommen ueber IRC-USERNOTICE und CLEARCHAT
herein; das wurde bisher weggeworfen. Follows fehlen weiter, die gibt es nur
ueber EventSub.

GIFs im Chat: Twitch schickt dafuer einen Tag `gifs`, den wir nicht kannten.

  gifs=0-22|Pnd7qLFuGCOntZcNKB|https://media0.giphy.com/media/.../giphy.gif
  PRIVMSG #abdulive_ :[Idk GIF by Respective]

Der Nachrichtentext ist nur ein Platzhalter, der Bereich markiert ihn.
Ausgewertet wird er jetzt; ohne das stand woertlich "[Idk GIF by Respective]"
im Bild. Gefunden wurde der Tag durch einen Rohmitschnitt - in 3094
Nachrichten aus acht grossen Kanaelen war kein einziges GIF, weil die Adresse
eben nicht im Text steht.

Zwei Fehler, die beim Durchklicken im Browser aufgefallen sind:

- Die Aufraeumfunktion im Chat zaehlte Zeilen, die erst nach der
  Ausblend-Animation aus dem DOM verschwinden, und lief in eine
  Endlosschleife. In OBS waere die Quelle beim vierzehnten Chatbeitrag
  eingefroren.
- Der Bereichsparser der GIFs war zu nachsichtig: `-1-4` zerfaellt beim
  Trennen in ['', '1', '4'], und `Number('')` ist 0 - der Bereich saehe
  gueltig aus und wuerde den falschen Textteil ersetzen.

Auf der Uebersichtsseite steht fuer jede Einblendung, jede Chat-Variante und
jeden Effekt ein Knopf. Ohne den liesse sich eine Raid-Einblendung nur
pruefen, indem man auf einen echten Raid wartet. Was einen Zustand setzt, ist
waehrend eines Streams gesperrt; "Stand zuruecksetzen" ausdruecklich nicht,
sonst kaeme man aus einem erfundenen Zustand nicht mehr heraus.

build-package.ts nimmt jetzt auch html/css/js mit - sonst liefert das Paket
404 statt Overlay.

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

scripts

Befehle der Anwendung ruft man ueber abdulive.cmd <name> auf (im Repo: node apps/cli/main.ts <name>). Daneben stehen hier die Skripte fuer Paketbau, Installation und Start.

Skript Wo Zweck
build-package.ts Entwicklungsrechner / CI Baut dist/abdulive-<version>-win-x64.zip samt Updater-Manifest
install.ps1 Stream-PC Installiert Programm, Daten und Autostart. Ohne Administratorrechte
uninstall.ps1 Stream-PC Entfernt Programm und Autostart. -AuchDaten loescht auch Datenbank, Clips und Modell
uninstall.ps1 Stream-PC Entfernt Programm und Autostart. -AuchDaten loescht auch Datenbank, Clips und Modell
launcher.ps1 Stream-PC Vom Aufgabenplaner gestartet: Update anwenden, dann Daemon starten
check-env Stream-PC Prueft ffmpeg, whisper-cli, Schriften, Sprachmodell, Verzeichnisse, OBS
auth Stream-PC OAuth-Flow fuer Broadcaster- und Bot-Token
db:migrate Stream-PC Migrationen anwenden
calibrate Stream-PC Facecam-Crop einmessen, schreibt config/layout.yaml
sources Stream-PC Listet die OBS-Quellen der laufenden Szene und sagt, welche im 9:16-Ausschnitt landen
backup.ps1 Stream-PC VACUUM INTO aus %LOCALAPPDATA%\abdulive\db, 30 Generationen
update Stream-PC Neue Fassung pruefen und bereitlegen; eingespielt wird beim naechsten Start