Snapshot des original Soundboard-Designs (Discord Blurple, Pills, Glows)
als Styleguide-Dokument fuer spaetere Referenz.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dokumentiert alle Design-Tokens, Component-Patterns, Naming-Conventions,
Layout-Regeln und Do/Dont-Regeln basierend auf dem CI Redesign v3.
Enthaelt ein Plugin-Template als Starter-CSS fuer neue Plugins.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace escaped unicode sequences (\uD83D\uDD0A, \u00e4) with actual
UTF-8 characters so the picker displays 🔊 and ä correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Calling callback({}) with an empty object caused Electron to throw
"Video was requested, but no video stream was provided". The correct
way to cancel/deny the request is callback() with no arguments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The stream screen picker now shows a toggle switch to enable/disable
system audio capture (loopback). Defaults to on. Previously audio was
always included with no way to disable it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After building and pushing to adriahub, the CI pipeline now also
tags and pushes images to forgejo.daddelolymp.de as a backup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Steam OpenID 2.0 authentication routes (login + callback)
- Enable Steam button in LoginModal (was placeholder)
- Unified user ID system: getUserId() supports Discord, Steam, Admin
- Update soundboard user-sound endpoints for Steam users
- UserSettings now works for both Discord and Steam providers
- Steam hover uses brand color #66c0f4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pass DISCORD_CLIENT_ID and DISCORD_CLIENT_SECRET secrets
to the container for Discord OAuth2 login support.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Server: writeState() → writeStateDebounced() im Volume-Endpoint
(kein synchroner Disk-Write bei jedem Slider-Tick mehr)
- Frontend: Debounce von 120ms auf 50ms reduziert
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bei PCM-Memory-Cache wurde inlineVolume nur aktiviert wenn vol != 1,
dadurch fehlte das Volume-Objekt auf der AudioResource und
apiSetVolumeLive konnte die Lautstärke nicht live ändern.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Neues AdminPanel.tsx mit Sidebar-Navigation (Soundboard/Streaming/Game Library)
- Lazy-Loading: Daten werden erst beim Tab-Wechsel geladen
- Admin-Button im Header öffnet jetzt das zentrale Panel (Rechtsklick = Logout)
- Admin-Code aus SoundboardTab, StreamingTab und GameLibraryTab entfernt
- ~500 Zeilen Plugin-Code entfernt, durch ~620 Zeilen zentrales Panel ersetzt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Admin-Login aus 3 Plugins (Soundboard, Streaming, Game Library) entfernt
- Zentraler 🔒/🔓 Button im Header mit Login-Modal
- isAdmin wird als Prop an alle Plugins weitergegeben
- Settings-Buttons (Gear-Icons) nur sichtbar wenn eingeloggt
- Alle Plugins nutzen weiterhin den shared admin-Cookie für Operationen
- Login/Logout-Formulare und Buttons aus Plugin-Panels entfernt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-Pick von 041557c8 hatte versehentlich Admin-Button JSX mit übernommen,
aber adminLoggedIn/setShowAdminModal existieren nur auf nightly (nach b3080fb7).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DK-Avatar aus Header entfernt (kein Zweck)
- Streaming-Felder haben jetzt Ueberschriften: Name, Titel, Passwort, Qualitaet
- Passwort-Feld von 140px auf 180px verbreitert
- Topbar aligned an Feldunterkante (flex-end)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Aufloesung ist immer nativ (Monitor des Broadcasters), die Presets
steuern nur Bitrate und FPS. Labels entsprechend angepasst:
Niedrig (4 Mbit) bis Max (50 Mbit/165Hz). Dropdown auf 200px.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Qualitaetsstufen: 720p60, 1080p60, 2K60, 4K60, 4K165 Ultra.
Dropdown von 120px auf 160px verbreitert damit Text nicht abgeschnitten wird.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Entfernt dangling/orphan Images automatisch nach docker pull + deploy.
Verhindert dass sich alte untagged Images ansammeln (~533MB pro Build).
[skip ci]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Das Multi-Platform Profile System hatte den Common-Games-Endpoint
kaputt gemacht: Client sendete profileIds (UUIDs), Server erwartete
steamIds. Endpoint loest jetzt profileIds korrekt auf.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>