Das bisherige client_secret war fehlerhaft (falsche Endbytes).
Korrigiert anhand der offiziellen GOG API-Dokumentation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- State-Tracking im Main-Prozess (idle/checking/downloading/ready)
- Manueller Check gibt aktuellen Status zurück statt Squirrel-Doppelstart
- Auto-Check nur wenn idle (kein Konflikt mit laufendem Download)
- Frontend synchronisiert Status beim Mount und Modal-Öffnen
- getUpdateStatus IPC für synchrone Status-Abfrage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
/downloads ist per Pangolin Path-Rule ohne Auth erreichbar,
daher braucht der Auto-Updater keine eigene Subdomain mehr.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Electron: Fängt GOG Redirect automatisch ab (will-redirect Interceptor)
- Code-Exchange passiert im Hintergrund, User sieht nur Erfolgs-Popup
- GOG Auth-URLs (auth.gog.com, login.gog.com, embed.gog.com) in Popup erlaubt
- Server: GET /gog/login Redirect + POST /gog/exchange Endpoint
- Browser-Fallback: Code-Paste Dialog falls nicht in Electron
- gog.ts: Feste redirect_uri (embed.gog.com/on_login_success)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Genre-Chips als Filter-Bar in User- und Common-Games-Ansicht
- Sortierung umschaltbar: Spielzeit, Bewertung, Name
- Multi-Genre-Auswahl mit "Alle"-Reset
- Common Games zeigen jetzt auch Genres und Ratings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Server enriched bestehende User beim Plugin-Start automatisch (fire-and-forget)
- Frontend triggert IGDB-Enrichment automatisch beim Öffnen einer User-Bibliothek
- Reduzierte Log-Ausgabe (kein Spam pro Cache-Hit mehr)
- IGDB-Button zeigt Lade-Animation während Enrichment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- data:text/html URLs werden in Electron BrowserWindows blockiert
- Picker-HTML wird jetzt als temp-Datei geschrieben und via loadFile geladen
- IPC-Kommunikation statt page-title-updated für die Source-Auswahl
- nodeIntegration nur im Picker-Fenster aktiviert (nicht im Hauptfenster)
- Temp-Datei wird nach Auswahl/Abbruch automatisch gelöscht
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Electron: setDisplayMediaRequestHandler zeigt jetzt immer einen modalen Picker
mit Thumbnails statt automatisch die letzte Quelle zu verwenden
- Passwort bei Streams ist jetzt optional (Server + Frontend)
- Streams ohne Passwort: direkter Beitritt ohne Modal
- hasPassword wird korrekt im stream_available Event übertragen
- Windows Toast-Notifications via Electron Notification API für
"Stream gestartet" und "Neuer Stream" Events
- Browser-Variante nutzt weiterhin Web Notification API
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Server: report_time ignoriert Host-Updates für 2s nach einem Seek
- Frontend: seekingRef Guard auf 3s erhöht um Sync-Pulse-Rücksetzung zu verhindern
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Host-Only-Beschränkung für play/pause/resume/seek/skip entfernt — alle Raum-Mitglieder können jetzt die Wiedergabe steuern
- Dailymotion-Videos können jetzt abgespielt werden (postMessage API, iframe-basiert)
- YouTube-Videoqualität einstellbar (Standard: 1080p, wird in localStorage gespeichert)
- Queue-Items sind für alle User klickbar
- "Gesehene entfernen"-Button für alle sichtbar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Neues Plugin: game-library mit Steam OpenID 2.0 Login
- Steam GetOwnedGames API zum Abrufen der Spielebibliothek
- Gemeinsame Spiele finden (Schnittmenge mehrerer Bibliotheken)
- Spielesuche ueber alle verbundenen User
- User-Profil mit Spielzeit-Sortierung
- JSON-basierte Persistenz in /data/game-library.json
- Steam API Key als CI/CD Variable konfiguriert
- Frontend: User Cards, Common Games Finder, Suchfunktion
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Desktop App ist nur ein Wrapper - Web-Inhalte updaten sich automatisch.
Separate Version verwirrt User wenn sie nicht übereinstimmt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Raumliste zeigt jetzt Teilnehmernamen
- Join per Link (?wt=roomId) für einfaches Teilen
- Sync-Indikator (grün/gelb/rot) zeigt Synchronstatus
- Pause/Skip-Voting für Nicht-Host-Teilnehmer
- In-Room Chat mit Nachrichtenverlauf
- "Gesehene entfernen" Button für Host in der Queue
- REST endpoint GET /api/watch-together/room/:id
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Statt Videos nach dem Abspielen aus der Warteschlange zu entfernen,
bleiben sie drin und werden mit einem gruenen Haken markiert.
Separate History-Section entfernt — die Queue IST die History.
Videos bleiben klickbar zum erneuten Abspielen.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Electron is a wrapper — web content auto-updates from server.
Shell only needs rebuild when electron/ code changes.
Removed VERSION from electron-build triggers and version sync
from bump-version (no more jq dependency).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Build + deploy in one step via Docker socket (docker cp).
Fixes 413 Request Entity Too Large on artifact upload.
Installs Docker CLI + mono-devel in before_script.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Squirrel maker needs Mono + Wine to create Windows installer on Linux.
Added diagnostic output for Wine/Mono versions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix CI: zip binary not available in builder image, and we only
distribute via Squirrel installer anyway.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>