mirror of
https://github.com/Andre-Bzk/twitch4steamdeck.git
synced 2026-11-15 09:33:09 +01:00
- Durchsuchen Menu - Top Live Streams - Top Kategorie - Anzeige Zuschaueranzahl getTopGames(), technisch bedingt mit einer gewissen unschärfe zu den tatsächliche Zuschauer der Kategorie
4.8 KiB
4.8 KiB
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. Phase 5.5 (Browse) implementiert, wartet auf User-Verifikation. Danach: 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-headerwird 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-adsist 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-urlliefert 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, Migrationsrc/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"-Reihewurde 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.
⏳ Phase 5.5 — Browse-Menü (implementiert, Verifikation ausstehend)
Neue/geänderte Dateien:
src/main/twitch/types.ts—HelixGame,GameInfosrc/main/twitch/helixClient.ts—getTopGames(),getTopStreams(gameId?)src/main/ipc/handlers.ts—twitch:get-top-games,twitch:get-top-streamssrc/preload/index.ts—GameInfo-Typ + neue API-Methodensrc/renderer/src/types/t4sd.d.ts—GameInfo, T4sdApi erweitertsrc/renderer/src/input/gamepad.ts— Button 2 (X) →'x', Button 3 (Y) →'y'src/renderer/src/screens/BrowseScreen.tsx— Shelf + Grid (komplett neu)src/renderer/src/screens/CategoryScreen.tsx— neusrc/renderer/src/screens/AppShell.tsx—selectedCategory-Routingsrc/renderer/src/styles/global.css— Browse/Game-Card-Styles
Key-Mapping Browse + Category:
- Enter / A: Stream → direkt Live starten · Kategorie → Drilldown
- X: Stream-Karte → ChannelScreen öffnen (VOD-Shelf + Live-Button)
- Y: Refresh
- Escape / B: Category → zurück zu Browse · Browse → Sidebar
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=vaapifür Linux (Steam Deck) stattauto(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.mdupdaten. - Nach jeder Subaufgabe Checkbox in
todo.mdsetzen und Update hier. - Dev-Host: Windows. Target: Steam Deck (Linux / Flatpak).
- Nicht mit Speculative Abstractions aufblähen.