Files
twitch4steamdeck/CLAUDE_PROGRESS.md
T
Andre 2cd5e2fb0c Phase 5 abgeschlossen
- 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)
2026-04-08 20:05:24 +02:00

3.6 KiB
Raw Blame History

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.


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.