mirror of
https://github.com/Andre-Bzk/twitch4steamdeck.git
synced 2026-11-15 09:33:09 +01:00
- SQLite-Setup: `src/main/store/db.ts` (better-sqlite3, Migration) - Lokaler VOD-Verlauf (Resume) - mpv `time-pos`-Observer schreibt alle ~5s in DB - Auto-Resume: beim VOD-Start Position aus DB lesen → `--start=<s>` -Resume-Indikator auf VOD-Karte - Completed-Indikator (dunkles Overlay + Checkmark)
94 lines
3.6 KiB
Markdown
94 lines
3.6 KiB
Markdown
# Twitch4SteamDeck — Fortschritts-Snapshot
|
||
|
||
> Stand: **2026-04-08 (Session 3)**. Diese Datei dient als Übergabe zwischen Sessions.
|
||
> **Lies zuerst:** diese Datei + `todo.md` + `plan.md`.
|
||
|
||
**Aktueller Stand:** Phase 0–5 abgeschlossen & verifiziert. Als nächstes: Phase 6 (Flatpak-Packaging).
|
||
|
||
---
|
||
|
||
## Bereits abgeschlossen
|
||
|
||
### ✅ Phase 0 — Projekt-Skelett
|
||
### ✅ Phase 1 — Twitch OAuth Device Code Flow
|
||
### ✅ Phase 2 — Twitch Helix-Client + Sidebar-Layout
|
||
Alle drei End-to-End verifiziert 2026-04-07.
|
||
|
||
---
|
||
|
||
### ✅ Phase 3 — Streamlink + mpv (Live-Wiedergabe)
|
||
|
||
Verifiziert 2026-04-08.
|
||
|
||
#### Architektur-Entscheidungen:
|
||
- `--twitch-api-header` wird **nicht** übergeben — Twitch lehnt den Device-Code-Token für
|
||
streamlinks interne GQL-API ab. Öffentliche Streams funktionieren ohne Auth-Header.
|
||
- `resolveMpvBin()` löst den mpv-Pfad explizit auf (`C:\Program Files\MPV Player\mpv.exe`),
|
||
da Electron den User-PATH nicht vollständig erbt.
|
||
- `--twitch-disable-ads` ist von streamlink deaktiviert worden (deprecated) — kein Ad-Bypass
|
||
im Moment. Post-MVP-Problem.
|
||
|
||
---
|
||
|
||
### ✅ Phase 4 — VOD-Browsing + -Wiedergabe
|
||
|
||
Verifiziert 2026-04-08.
|
||
|
||
#### Architektur-Entscheidungen:
|
||
- **VODs:** streamlink `--stream-url` liefert HLS-URL → mpv wird **direkt** mit der URL
|
||
gespawnt (nicht via `--player`-Flag). Grund: Piped-Streams sind nicht seekable.
|
||
Direktes mpv-Spawnen ermöglicht Seeking + funktionierendes IPC.
|
||
- **Live-Streams:** weiterhin via `--player mpv --player-args "--fullscreen"`. Kein IPC
|
||
nötig (kein Seeking, kein Position-Tracking bei Live).
|
||
- VOD-Shelf im `ChannelScreen` (untere Hälfte, horizontal, oberer Hero-Bereich fix).
|
||
Navigation: ↓ → Shelf, ←/→ zwischen VODs, ↑ → zurück, Enter → abspielen.
|
||
|
||
---
|
||
|
||
### ✅ Phase 5 — Lokaler VOD-Verlauf (Resume)
|
||
|
||
Verifiziert 2026-04-08.
|
||
|
||
#### Neue Dateien:
|
||
- `src/main/store/db.ts` — SQLite via better-sqlite3, WAL-Modus, Migration
|
||
- `src/main/store/historyRepo.ts` — `upsertVod`, `updatePosition`, `markCompleted`,
|
||
`getPosition`, `getProgressMap`
|
||
|
||
#### Architektur-Entscheidungen:
|
||
- mpv IPC funktioniert jetzt zuverlässig (da mpv direkt gespawnt wird).
|
||
`MpvController.observeTimePos()` parst eingehende JSON-Lines, Throttling auf 5s.
|
||
- Resume-Position wird beim `startVod()`-Aufruf automatisch aus DB gelesen.
|
||
- Auto-Complete bei >95% Fortschritt.
|
||
- `„Continue Watching"-Reihe` wurde bewusst weggelassen (vom User nicht gewünscht).
|
||
- VOD-Karte zeigt: Fortschrittsbalken (lila), `0:16 von 6:22`, `Vor X Min.`,
|
||
Completed-Overlay mit Kreis-Checkmark.
|
||
|
||
---
|
||
|
||
## Nächster Schritt: Phase 6 — Flatpak-Packaging
|
||
|
||
Ziel: App läuft auf dem Steam Deck als Flatpak.
|
||
|
||
Wichtige offene Punkte:
|
||
- mpv + streamlink müssen als Flatpak-Module gebündelt werden
|
||
- `--hwdec=vaapi` für Linux (Steam Deck) statt `auto` (Windows)
|
||
- IPC-Pfad: Unix Socket `/tmp/twitch4sd-mpv.sock` (bereits implementiert für non-win32)
|
||
- better-sqlite3 muss für Linux/ARM64 (Steam Deck) cross-compiliert werden
|
||
- Flatpak-Manifest: `flatpak/tv.twitch4steamdeck.App.yml`
|
||
|
||
---
|
||
|
||
## Technische Baseline
|
||
|
||
- Electron 33, electron-vite, TypeScript 5.5, React 18
|
||
- better-sqlite3 12.x (native, rebuilt für Electron via `@electron/rebuild`)
|
||
- streamlink 8.x unter `%LOCALAPPDATA%\Programs\Streamlink\bin\streamlink.exe`
|
||
- mpv v0.41.0 unter `C:\Program Files\MPV Player\mpv.exe`
|
||
- Dev-Host: **Windows**. Target: **Steam Deck (Linux / Flatpak)**
|
||
|
||
### Wichtiges Projekt-Memo
|
||
- Bei **allen Architekturänderungen** `plan.md` updaten.
|
||
- Nach **jeder Subaufgabe** Checkbox in `todo.md` setzen und Update hier.
|
||
- Dev-Host: **Windows**. Target: **Steam Deck (Linux / Flatpak)**.
|
||
- **Nicht** mit Speculative Abstractions aufblähen.
|