Files
abdulive/docs/handoff.md
T

4.8 KiB

Übergabe

Stand 2026-09-09. Wer hier weitermacht, sollte diese Seite zuerst lesen und danach 07-mvp-plan.md.

Wo das Projekt steht

Vier von sieben Scheiben des MVP „Clip-Knopf" sind gebaut. Die Kette vom Auslöser bis zum fertigen Short steht im Code vollständig — geprüft ist sie überall dort, wo es ohne Abdus Stream-PC ging.

Scheibe Stand Nachweis
S0 Container + Toolchain fertig check-env ohne harte Fehler
S1 Einrichtung, Auth, DB, Chat fertig Daemon läuft, Chat verbunden, Secrets verschlüsselt
S2 OBS + !clip Code fertig, nicht abgenommen braucht laufendes OBS
S3 9:16-Render fertig Durchlauf mit künstlicher Aufnahme
S4 Untertitel fertig Durchlauf mit echtem deutschen Clip
S5 Onboarding + Sichtung offen —
S6 Erstchatter-Begrüßung offen —

53 Tests, alle grün. Vollständige Liste dessen, was noch fehlt: offene-punkte.md.

Was jemand wissen muss, bevor er etwas anfasst

Es gibt keine Abhängigkeiten und keinen Build. Node 24 bringt SQLite, WebSocket, fetch und die Ausführung von TypeScript mit. node docker/entrypoint.ts läuft direkt. Deshalb gilt: nur löschbare TypeScript-Syntax — keine enum, keine Parameter-Properties im Konstruktor, keine namespace. erasableSyntaxOnly in der tsconfig.json erzwingt das und hat schon einen echten Fehler gefangen.

Alles läuft unter einem Dach, einem Prozess in einem Container. Schwere Arbeit (ffmpeg, whisper) läuft als Kindprozess und darf abstürzen. Der Ingest darf nie sterben — was er nicht mitschreibt, ist für immer weg.

Zugangsdaten kommen aus der Weboberfläche, nicht aus einer Datei. Sie liegen verschlüsselt in einem Docker-Volume, bewusst außerhalb der Datenbank, weil die gesichert und dabei auf die Windows-Seite kopiert wird.

Rohdateien gehören ins Arbeits-Volume, nicht in den Windows-Bind-Mount. Über die WSL2-Brücke zu encodieren kostet ein Vielfaches. Dagegen habe ich einmal selbst verstoßen — der Fehler fiel erst in S3 auf.

Die Begründungen stehen in decisions/, sechs ADRs. Wer eine davon umwerfen will, sollte sie vorher lesen; jede hat einen Grund, der beim Bauen aufgetaucht ist.

Loslegen

git clone https://git.zeasy.dev/ZeasyAlex/abdulive.git
cd abdulive
Copy-Item config\config.example.yaml config\config.yaml

docker compose build
docker compose run --rm toolkit check-env
docker compose run --rm toolkit fetch-model     # ca. 465 MB
docker compose up -d

Dann http://localhost:4792/setup öffnen. Ausführlich in 05-setup.md.

Tests:

docker run --rm -v "${PWD}:/app" -w /app node:24-bookworm-slim `
  node --test "packages/**/*.test.ts" "apps/**/*.test.ts"

Typprüfung (das Einzige, wofür npm gebraucht wird):

docker run --rm -v "${PWD}:/app" -w /tmp node:24-bookworm-slim sh -c `
  "npm i -s typescript@5.9 @types/node && cd /app && /tmp/node_modules/.bin/tsc --noEmit --typeRoots /tmp/node_modules/@types"

Die drei Dinge, die Abdu tun muss

  1. Zwei Twitch-Apps anlegen (dev.twitch.tv/console/apps), Redirect-URI http://localhost:4792/callback. Client-ID und Secret danach auf der Einrichtungsseite eintragen — nicht in eine Datei.
  2. OBS einrichten: obs-websocket an (Port 4455), Wiedergabepuffer 90 s, Hotkey auf „Wiedergabepuffer speichern", getrennte Audiospuren.
  3. Layout umstellen nach obs-layout.md. Die Ausrichtungsvorlage in OBS über die Szene legen, Quellen einpassen, wieder ausblenden. Danach calibrate zur Kontrolle.

Ohne Punkt 1 liest das Toolkit den Chat anonym mit und kann nichts senden. Ohne Punkt 2 gibt es keine Clips. Ohne Punkt 3 sitzt der Ausschnitt schief.

Wo ich weitermachen würde

S5. Nicht wegen des Codes, sondern weil das Werkzeug ohne Einrichtungs- Assistenten und Sichtungsseite für Abdu nicht bedienbar ist. Die Kette funktioniert, aber sie hat noch keine Oberfläche, die jemand ohne Erklärung benutzt. Abnahmekriterium steht im Plan: Ein Fremder kommt von „nichts eingerichtet" bis zum ersten eigenen Clip, ohne die Dokumentation zu lesen.

Davor, wenn Gelegenheit ist: S2 an einem laufenden OBS abnehmen. Das ist die einzige ungeprüfte Stelle in der ganzen Kette, und alles Weitere hängt daran.

Womit ich nicht zufrieden bin

Die Untertitel sind brauchbar, nicht gut. ggml-small verhört sich hörbar („Danke" wurde „Dank es"), die Schrift ist unauffällig, und das fortlaufende Einfärben ist nicht der Stil, der auf Shorts trägt. Sechs konkrete Verbesserungen stehen in offene-punkte.md.

Und: Das Aufräumen im Arbeits-Volume fehlt komplett. Rohdateien sammeln sich unbegrenzt an. Das ist die Lücke, die als Erstes weh tun wird.