- 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>
CI Pipeline:
- New electron-build stage (electronuserland/builder:wine) builds Windows installer
- New electron-deploy stage copies artifacts to container /data/downloads/
- Triggers on electron/ or VERSION changes + manual trigger
- bump-version now syncs electron/package.json via jq
Version Modal:
- Click version badge to open info modal
- Shows Hub Version, Desktop App Version, Server status
- Hint when versions differ (update available)
- Download link when not using Electron app
- Escape + overlay click to close
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix: Squirrel.Windows feed URL /updates → /downloads (Squirrel appends /RELEASES)
- Show Desktop App + Server version in update modal
- Display actual error message in failed state
- Dynamic Electron version via app.getVersion() instead of hardcoded
- Sync electron/package.json version with VERSION file (1.5.8)
- Add "Später" button on update-ready, timeout error message
- Style: version info, error detail box, secondary button
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Server:
- Video-History Tracking (max 50 Einträge pro Raum)
- History wird bei Skip und Play-Video gespeichert
- Server-seitiger Titel-Fetch via noembed.com als Fallback
Client:
- Aufklappbare History-Sektion im Queue-Panel
- "Weiter" Button mit Text-Label statt nur Icon
- YouTube-Thumbnails in der Warteschlange
- History in RoomState integriert
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- stream_available/stream_ended WS-Events verarbeiten
- WS sofort beim Mount verbinden (nicht nur beim Broadcasting)
- WS reconnect immer aktiv (nicht nur bei aktivem Stream)
- Toast Notifications: neuer Stream, Update verfügbar/bereit
- Notification Permission beim App-Start anfragen
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Stream-Tile Klick öffnet Join-Modal statt neues Fenster
- checkForUpdates optional chaining für alte Electron App
- Abbrechen-Button im Update-Check Dialog
- 15s Timeout falls Electron nicht antwortet
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>