- Backend: Voice-Stats (Ping, Gateway, Status, Uptime) via SSE alle 5s
- Frontend: Klick auf Verbunden oeffnet Modal mit allen Verbindungsdetails
- Ping-Anzeige direkt im Header neben Verbunden
- Farbcodierte Ping-Dots (gruen <80ms, gelb <150ms, rot >=150ms)
- Uptime-Zaehler seit letztem VoiceConnection Ready
- connectedSince Tracking pro Guild
- PCM-Dateien werden beim ersten Abspielen in den RAM geladen (Map<string, Buffer>)
- Nachfolgende Plays lesen aus RAM statt Disk -> eliminiert I/O-Latenz
- InlineVolume Transform wird bei Volume 1.0 uebersprungen (unnoetige Sample-Verarbeitung)
- Fallback createReadStream mit 256KB highWaterMark fuer schnelleres Buffering
- Memory-Cache-Limit konfigurierbar via PCM_CACHE_MAX_MB env (default 512MB)
- Cache-Invalidierung bei Quelldatei-Aenderungen
Standard von 4 auf 2 gesenkt – passend für i5-13400 (10-Kern Target).
Lässt mehr Headroom für Discord-Wiedergabe und Node.js-Event-Loop.
Per NORM_CONCURRENCY env var weiterhin anpassbar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sequentieller Sync ersetzt durch parallele Worker:
- Standard: 4 gleichzeitige ffmpeg-Prozesse (NORM_CONCURRENCY=4)
- Konfigurierbar per NORM_CONCURRENCY env var
- Sync-Zeit bei vielen Sounds 4x schneller (linear mit Parallelität)
- Logging gibt Parallelität und Dauer aus
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- syncNormCache() beim Serverstart: normalisiert ALLE Sounds (nicht nur Top 50)
und räumt verwaiste Cache-Dateien automatisch auf
- DM-Upload: neue Datei wird sofort im Hintergrund normalisiert
- URL-Import: Datei wird vor dem Abspielen normalisiert → direkt aus Cache
- Detailliertes Logging: neu/vorhanden/fehlgeschlagen/verwaist + Dauer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Zwei Fehler behoben:
1. Gecachte PCM-Datei wurde als Pfad-String an createAudioResource übergeben
→ discord.js versuchte die headerlose PCM als Container zu proben → Rauschen/Stille
Fix: fs.createReadStream() + StreamType.Raw
2. Erster Play wartete auf komplette ffmpeg-Verarbeitung bevor Wiedergabe startete
Fix: Tee-Stream — ffmpeg-Output wird gleichzeitig an Player UND Cache-Datei geschrieben
→ Sofortige Wiedergabe auch beim ersten Mal, Cache wird nebenbei gefüllt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ffmpeg loudnorm läuft jetzt nur noch beim allerersten Play eines Sounds.
Das Ergebnis wird als PCM in .norm-cache/ gespeichert und danach direkt
abgespielt (kein ffmpeg-Spawn mehr → praktisch null Overhead).
- .norm-cache/ Verzeichnis mit automatischer Invalidierung (Quell-mtime)
- Cache-Cleanup bei Admin delete/rename
- Hintergrund-Warmup beim Serverstart: Top-50 Sounds vorab normalisieren
- Fallback auf direktes Abspielen wenn ffmpeg fehlschlägt
- .norm-cache wird aus Soundliste gefiltert
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- nowPlaying Map trackt aktuell gespielten Sound pro Guild
- SSE broadcast { type: 'nowplaying' } bei play und stop
- nowplaying im SSE-Snapshot für neue Clients
- playFilePath Helper broadcastet ebenfalls (Party Mode)
Frontend:
- SSE-Handler für nowplaying Events (sync über alle Clients)
- Now-Playing als Pill-Badge in der Topbar (rechts, neben Channel)
- Bottombar komplett entfernt
- Fade-in Animation und accent-farbige Pill
- --accent-rgb CSS Variable für alle Themes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>