Das Repo ist jetzt oeffentlich, die Pakete haengen an der Veroeffentlichung `latest`. Damit funktioniert `abdulive update` ohne Token. - config.example.yaml traegt die gepruefte Update-Adresse - .gitea/workflows/release.yml baut beim Tag und ersetzt `latest` - Byte Order Mark: Notepad und `Set-Content -Encoding utf8` schreiben eines, und ohne Behandlung hiess der erste Schluessel in der config.yaml "\ufeffchannel" - die Einstellung waere stillschweigend ignoriert worden - Der YAML-Leser hatte gar keine Tests; er liest die Konfiguration, an der alles haengt. Jetzt acht. Der Updater ist einmal komplett durchgelaufen: 0.4.0 erkannt, 119 MB geladen, Pruefsumme geprueft, bereitgelegt, von launcher.ps1 getauscht. 93 Tests, Typpruefung sauber. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
127 lines
5.6 KiB
Markdown
127 lines
5.6 KiB
Markdown
# Übergabe
|
|
|
|
Stand **2026-09-09**. Wer hier weitermacht, sollte diese Seite zuerst lesen und
|
|
danach [`07-mvp-plan.md`](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 Toolchain + Auslieferung | fertig | `check-env` nativ ohne harte Fehler, Paket gebaut und installiert |
|
|
| 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 | — |
|
|
|
|
79 Tests, alle grün. Vollständige Liste dessen, was noch fehlt:
|
|
[`offene-punkte.md`](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 apps/cli/main.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**, in einem Prozess. 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 neben der Datenbank, aber bewusst nicht *in* ihr — die Datenbank
|
|
wird gesichert und weitergereicht, die Geheimnisse nicht.
|
|
|
|
**Rohdateien gehören in den Arbeitsordner**, nicht neben den OBS-Puffer. Das
|
|
war unter Docker ein Zeitproblem (Encodieren über die WSL2-Brücke kostete ein
|
|
Vielfaches) und ist nativ nur noch Ordnung — der Wiedergabepuffer-Ordner
|
|
gehört OBS.
|
|
|
|
Die Begründungen stehen in [`decisions/`](decisions/), sieben ADRs. Wer eine
|
|
davon umwerfen will, sollte sie vorher lesen; jede hat einen Grund, der beim
|
|
Bauen aufgetaucht ist. ADR-0004 (Docker) ist durch ADR-0007 ersetzt — die
|
|
Analyse darin bleibt trotzdem lesenswert.
|
|
|
|
## Loslegen
|
|
|
|
**Auf Abdus Rechner** läuft eine native Windows-Anwendung — kein Docker, kein
|
|
WSL2, nichts zu übersetzen ([ADR-0007](decisions/ADR-0007-native-windows.md)):
|
|
|
|
```powershell
|
|
Expand-Archive .\abdulive-0.5.0-win-x64.zip -DestinationPath .\abdulive
|
|
.\abdulive\install.ps1
|
|
abdulive fetch-model
|
|
abdulive check-env
|
|
```
|
|
|
|
Das Repo ist seit 2026-09-09 oeffentlich, die Pakete haengen an der
|
|
Veroeffentlichung `latest`. Einen `irm … | iex`-Einzeiler gibt es trotzdem
|
|
nicht — Rohdateien liefert Gitea als `text/plain`, und ein Fehlschlag saehe
|
|
aus wie ein PowerShell-Syntaxfehler statt wie ein Fehlschlag.
|
|
|
|
Ausführlich in [`05-setup.md`](05-setup.md).
|
|
|
|
**Zum Entwickeln** reicht ein Checkout und Node 24 oder neuer:
|
|
|
|
```powershell
|
|
node apps/cli/main.ts check-env
|
|
node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
|
|
node scripts/build-package.ts --version 0.5.0 # baut dist/*.zip
|
|
```
|
|
|
|
Typprüfung (das Einzige, wofür npm gebraucht wird):
|
|
|
|
```powershell
|
|
npm i typescript@5.9 @types/node
|
|
npx tsc --noEmit
|
|
```
|
|
|
|
## Die drei Dinge, die Abdu tun muss
|
|
|
|
1. **Broadcaster-Konto verbinden.** Die beiden Twitch-Apps
|
|
(dev.twitch.tv/console/apps, Redirect-URI `http://localhost:4792/callback`)
|
|
kann auch jemand anders anlegen — sie hängen nicht am Kanal. Was **nur Abdu**
|
|
kann: auf der Einrichtungsseite eingeloggt als er selbst auf „Mit Twitch
|
|
verbinden" klicken. Dafür muss die Anwendung auf seinem Rechner schon
|
|
laufen; die Seite hört nur auf `127.0.0.1`.
|
|
2. **OBS einrichten**: obs-websocket an (Port 4455), Wiedergabepuffer 90 s,
|
|
Hotkey auf „Wiedergabepuffer speichern", getrennte Audiospuren.
|
|
3. **Layout umstellen** nach [`obs-layout.md`](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`](offene-punkte.md).
|
|
|
|
Und: Das Aufräumen im Arbeitsordner fehlt komplett. Rohdateien sammeln sich
|
|
unbegrenzt an. Das ist die Lücke, die als Erstes weh tun wird.
|
|
|
|
Der Updater ist einmal komplett durchgelaufen: 0.4.0 erkannt, 119 MB von
|
|
`git.zeasy.dev` geladen, Prüfsumme geprüft, bereitgelegt, von `launcher.ps1`
|
|
getauscht, `pending` aufgeräumt. Was noch nie lief, ist die CI-Pipeline.
|