Native Windows-Auslieferung statt Container

Docker faellt weg. Das Projekt hat keine npm-Abhaengigkeiten und Node fuehrt
TypeScript direkt aus - der Container schrieb nur noch drei Programme fest,
und dafuer braucht es keine Virtualisierung, sondern einen Ordner.

Der Anlass war, dass ADR-0004 zwar `docker compose pull` versprach, es aber
nie ein veroeffentlichtes Image gab. Wer installieren wollte, musste
whisper.cpp aus dem Quelltext uebersetzen.

Plattformschicht (packages/core/src/platform.ts):
- Programme werden neben der Anwendung gesucht, nicht im PATH
- Daten unter %LOCALAPPDATA%, damit Installation und Update ohne
  Administratorrechte auskommen
- Schriften mitgeliefert: ohne fontsdir setzt libass wortlos eine
  Ersatzschrift ein - gemessen 720 statt 826 Pixel Zeilenbreite

Windows-Eigenheiten, an echtem ffmpeg 8.1 durchprobiert:
- Pfade im Filtergraphen brauchen alle drei Schritte (Vorwaertsschraegstriche,
  escapter Doppelpunkt, Anfuehrungszeichen); je zwei davon reichen nicht
- `nice` gibt es nicht, ersetzt durch os.setPriority

Auslieferung:
- scripts/build-package.ts baut das Paket, laeuft auch unter Linux
- install.ps1 ohne Administratorrechte, Autostart ueber den Aufgabenplaner
- update legt neue Fassungen bereit; eingespielt wird beim naechsten Start,
  nie mitten im Stream
- ZIP lesen und schreiben ohne Abhaengigkeiten (packages/core/src/zip.ts)

Kein `irm ... | iex`-Einzeiler: git.zeasy.dev antwortete instanzweit mit einer
Umleitung auf /user/login, und `iex` fuehrte die Anmeldeseite als PowerShell
aus. Der Updater verfolgt Umleitungen jetzt nicht und hat keine erfundene
Vorgabeadresse mehr.

Ausserdem: backup.ps1 war an zwei Stellen dokumentiert, aber nie geschrieben.

ADR-0007 ersetzt ADR-0004. 84 Tests, Typpruefung sauber.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 17:39:26 +02:00
1 parent 71dd660d01
commit 5f6301268a
41 files changed
+2254 -312

No files matched your search

+20 -4
View File
@@ -52,16 +52,32 @@ schiebt dann nicht sofort einen Streifen Gesicht in das Gameplay-Bild.
## Prüfen
```powershell
docker compose run --rm toolkit calibrate
abdulive calibrate
```
Nimmt das neueste Video aus dem Wiedergabepuffer-Ordner und legt drei Bilder in
`data/clips/_calibration/` ab: das Einzelbild, dasselbe mit eingezeichneten
Nimmt das neueste Video aus dem Wiedergabepuffer-Ordner und legt drei Bilder
unter `%LOCALAPPDATA%\abdulive\clips\_calibration` ab: das Einzelbild, dasselbe mit eingezeichneten
Ausschnitten, und die fertige 9:16-Vorschau. Sitzt in der Vorschau der Kopf
mittig und ist im Gameplay-Teil kein Chat zu sehen, stimmt das Layout.
## Text im Bild — hier wird es eng
**Wer malt den Text?** Das ist nicht zu erraten — die Overlays sind ins
Streambild eingebrannt, man muss nachsehen, welche OBS-Quelle sie zeichnet:
```powershell
abdulive sources
```
Der Befehl fragt das laufende OBS und listet jede Quelle der aktuellen Szene
mit Position, Größe und dem Urteil, ob sie im 9:16-Ausschnitt landet. Bei
Browser-Quellen steht die Adresse dabei — daran erkennt man den Dienst
dahinter. Was nach Untertiteln aussieht, wird am Ende noch einmal
zusammengefasst.
Dafür muss in OBS **Werkzeuge → WebSocket-Server-Einstellungen → Server
aktivieren** gesetzt sein (Port 4455) und das Passwort unter `/setup` liegen.
Bei der Prüfung eines echten Clips lagen **drei Textebenen übereinander**:
1. die Untertitel des Spiels („Genau, ich mach da … sag zu dem Typen")
@@ -115,5 +131,5 @@ fest, wie es vor der Vorgabe aussah — damit lassen sich alte Aufnahmen noch
korrekt rendern:
```powershell
docker compose run --rm toolkit render <datei> bestand-2026-09
abdulive render <datei> bestand-2026-09
```