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:
1 parent
71dd660d01
commit
5f6301268a
41 files changed
+2254
-312
No files matched your search
@@ -45,29 +45,60 @@ Dazu der Dienst, der unter allen anderen liegt:
|
||||
- [`docs/projects/`](docs/projects/) — je ein Spec-Dokument pro Tool
|
||||
- [`docs/decisions/`](docs/decisions/) — Architekturentscheidungen (ADRs)
|
||||
|
||||
## Schnellstart
|
||||
## Auf dem Stream-PC installieren
|
||||
|
||||
Alles läuft in Docker — auf dem Rechner werden nur Docker Desktop und OBS
|
||||
gebraucht, ffmpeg und whisper.cpp stecken im Image.
|
||||
Siehe [`docs/05-setup.md`](docs/05-setup.md).
|
||||
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](docs/decisions/ADR-0007-native-windows.md)).
|
||||
|
||||
Das Paket herunterladen, entpacken, darin `install.ps1` ausführen. Ohne
|
||||
Administratorrechte; Programm und Daten landen im Benutzerprofil.
|
||||
|
||||
```powershell
|
||||
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
|
||||
docker compose up -d
|
||||
Expand-Archive .\abdulive-0.5.0-win-x64.zip -DestinationPath .\abdulive
|
||||
.\abdulive\install.ps1
|
||||
```
|
||||
|
||||
> Einen `irm … | iex`-Einzeiler gibt es nicht: `git.zeasy.dev` verlangt
|
||||
> instanzweit eine Anmeldung und antwortet auf **jede** Adresse mit einer
|
||||
> Umleitung auf `/user/login`. `iex` führt die Anmeldeseite dann als
|
||||
> PowerShell aus. Wo die Pakete künftig liegen sollen, ist noch offen —
|
||||
> siehe [`offene-punkte.md`](docs/offene-punkte.md).
|
||||
|
||||
Danach einmalig:
|
||||
|
||||
```powershell
|
||||
abdulive fetch-model # Sprachmodell, ca. 465 MB
|
||||
abdulive check-env # Selbsttest
|
||||
Start-ScheduledTask -TaskName abdulive
|
||||
```
|
||||
|
||||
Dann **http://localhost:4792/setup** öffnen und die Twitch-Zugangsdaten
|
||||
eintragen. Sie werden verschlüsselt im Docker-Volume abgelegt, nicht in einer
|
||||
Datei im Projekt ([ADR-0005](docs/decisions/ADR-0005-zugangsdaten.md)).
|
||||
eintragen. Sie werden verschlüsselt abgelegt, nicht in einer Datei im Projekt
|
||||
([ADR-0005](docs/decisions/ADR-0005-zugangsdaten.md)).
|
||||
|
||||
Ausführlich: [`docs/05-setup.md`](docs/05-setup.md).
|
||||
|
||||
## Paket bauen und ausliefern
|
||||
|
||||
```powershell
|
||||
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: Container-Toolchain,
|
||||
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. 53 Tests grün.
|
||||
`!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.
|
||||
@@ -77,5 +108,5 @@ Details: [`docs/handoff.md`](docs/handoff.md)
|
||||
## Tests
|
||||
|
||||
```powershell
|
||||
docker run --rm -v "${PWD}:/app" -w /app node:24-bookworm-slim node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
|
||||
node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
|
||||
```
|
||||
Reference in new issue
Block a user