Bot
a61663166f
Config: NORM_CONCURRENCY Default auf 2 (i5/i7 Zielplattform)
...
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>
2026-03-01 21:30:37 +01:00
Bot
7a7056d72b
Perf: Paralleler Norm-Cache-Sync mit Worker-Pool
...
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>
2026-03-01 21:29:53 +01:00
Bot
68414ac257
Perf: Vollständiger Norm-Cache-Sync beim Start + Auto-Cache bei Upload/Import
...
- 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>
2026-03-01 21:27:33 +01:00
Bot
83b8f1acac
Fix: Loudnorm-Cache korrekt als Stream lesen + Tee-Caching
...
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>
2026-03-01 21:24:47 +01:00
Bot
4b4a61b2bd
Perf: Loudnorm-Cache für minimale Play-Latenz
...
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>
2026-03-01 21:16:56 +01:00
Bot
9130a205f0
Refactor: Backend-Optimierungen + Volume-Debounce
...
- /api/play delegiert an playFilePath() statt ~120 Zeilen Duplikat-Code (inkl. fehlende Loudnorm)
- safeSoundsPath() Helfer gegen Path-Traversal bei Admin delete/rename
- writePersistedStateDebounced() reduziert Disk-I/O bei Play-Countern (2s Debounce)
- /api/sounds nutzt listAllSounds() statt duplizierte Dateisystem-Scans
- /api/play-url vor catch-all Route verschoben (war unreachable in Produktion)
- Frontend Volume-Slider mit 120ms Debounce (weniger API-Calls beim Ziehen)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:08:38 +01:00
Bot
5a41b6a622
Add MP3 URL import and analytics widgets
2026-03-01 18:56:37 +01:00
Bot
f90401a009
Feat: Now-Playing serverseitig syncen + in Topbar verschieben
...
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>
2026-03-01 16:00:22 +01:00
Bot
a5f74d3508
fix(deps): update libsodium for node 20 esm resolution
2026-02-26 14:32:41 +01:00
vibe-bot
c727b445a4
fix(exit-logic): Exit nur bei Disconnect (after is null), bei Kanalwechsel unterdrücken; Lifecycle-Listener nur einmal registrieren und MaxListeners erhöhen
2025-08-11 00:14:07 +02:00
vibe-bot
0ae0817598
feat(entrance-exit): Support ?entrance remove / ?exit remove (clear mapping); Help-Text aktualisiert
2025-08-11 00:00:08 +02:00
vibe-bot
9f7aa5fc94
fix(entrance-exit): Trigger auch bei Channel-Wechsel; zusätzliche Logs; robustes Join falls keine aktive Verbindung
2025-08-10 23:50:51 +02:00
vibe-bot
64d2e91efa
chore(logging): Logge gesetzte ?entrance/?exit Zuordnungen (user tag + file)
2025-08-10 23:43:40 +02:00
vibe-bot
6206087362
fix(entrance-exit): Log-Ausgaben + robustes Rejoin auf Ziel-Channel vor Playback; ignore self-events
2025-08-10 23:35:58 +02:00
vibe-bot
0fc533bbd5
fix(entrance-exit): Stelle sicher, dass VoiceStateUpdate/DM-Commands via expliziten Intents (Guilds, GuildVoiceStates, DirectMessages, MessageContent) aktiv sind
2025-08-10 23:26:00 +02:00
vibe-bot
8604e5591d
feat(entrance-exit): Bot joint dem Nutzer nach (Entrance) und spielt Sound; Exit-Sound beim Verlassen; ?entrance/?exit nutzen Discord-User statt Namen
2025-08-10 23:18:43 +02:00
vibe-bot
62a4a6a55c
feat(entrance-exit): Entrance/Exit-Sounds pro Nutzer via DM (?entrance/?exit); Playback bei Join/Leave wenn Bot im Channel; ?help aktualisiert; ?restart entfernt
2025-08-10 23:10:51 +02:00
vibe-bot
914693df1b
docs(changelog): add CHANGELOG 1.1.1; chore(version): bump to 1.1.1 and update badges/env; docs(feature): FEATURE_BRANCH.md Hinweise ergänzt
2025-08-10 21:23:13 +02:00
vibe-bot
032c269798
feat(volume): Live-Sync der Lautstärke über SSE (Broadcast bei Änderung + Snapshot); Frontend reagiert auf Updates
2025-08-10 21:15:39 +02:00
vibe-bot
dda30d48fa
chore(version): Entfernt serverseitige Versions-/Build-Logik; Nightly-Badge bleibt im Header
2025-08-10 19:49:35 +02:00
vibe-bot
7a067aa95f
feat(version): API /api/health liefert build/version; UI zeigt Server-Version im Nightly-Badge
2025-08-10 19:43:09 +02:00
vibe-bot
e83954624c
feat(channel): Serverweite Channel-Auswahl mit Persistenz und SSE-Broadcast; Frontend passt Auswahl global an
2025-08-10 18:47:33 +02:00
vibe-bot
62890e0e85
Feat: Toggle für Fuzzy-Suche (default OFF), Server respektiert ?fuzzy=1/0
2025-08-10 17:51:07 +02:00
vibe-bot
d975114768
Feat: Serverseitige Fuzzy-Suche für /api/sounds und Client-Filter vereinfacht
2025-08-10 02:59:25 +02:00
vibe-bot
6f51c493ed
Nightly: Revert Drag & Drop Upload (server endpoint + header handlers removed)
2025-08-10 02:16:09 +02:00
vibe-bot
9e7b572feb
Nightly: Drag & Drop Upload im Header (Admin) + Server-Upload-Endpoint (/api/upload, MP3/WAV)
2025-08-10 01:47:17 +02:00
vibe-bot
c1f4d0f3a0
Nightly: SSE-Client-Handling verbessert (separater Hook, Snapshot/Party-Set + Ping); UI synchronisiert State pro Guild
2025-08-10 00:11:38 +02:00
vibe-bot
21b4e9bd0c
Nightly: Partymode-Status global per SSE /api/events Broadcast; Panic/Stop/Start senden Status an alle Clients
2025-08-09 23:20:13 +02:00
vibe-bot
9bb402edd3
Nightly: Partymode serverseitig Start/Stop Endpunkte + Panic stoppt global; Frontend triggert Party-Start/Stop
2025-08-09 22:43:13 +02:00
vibe-bot
85a148d45f
Nightly: Badge-Entfernen ohne Modal neuer Endpoint /badges/clear und UI-Button 'Badges entfernen'
2025-08-09 21:12:02 +02:00
vibe-bot
8795657f69
Nightly: Badges für Sounds (auto /, plus Custom via Admin), Kategorien-UI erweitertet (anlegen/zuweisen)
2025-08-09 17:27:17 +02:00
vibe-bot
3d1a6ca60b
Nightly: Kategorien eingeführt Persistenz (state.json), API (CRUD + Bulk-Assign), Sounds-Filter unterstützt categoryId
2025-08-09 17:16:37 +02:00
vibe-bot
774bfb5adf
chore: sync working tree before switching branches
2025-08-09 16:15:42 +02:00
vibe-bot
8662a5fbc0
Fix: Build-Info über API statt Build-Zeit - korrekte Version/Channel-Anzeige zur Runtime
2025-08-09 16:07:52 +02:00
vibe-bot
c44d9b7f87
Fix: UTF-8 Support für Datei-Umbenennung - Leerzeichen und Umlaute (äöü) jetzt erlaubt
2025-08-09 15:57:18 +02:00
vibe-bot
bf9d6d60e3
Persistenz: state.json ins Sounds-Volume verschoben (Migration vom alten Pfad). totalPlays bleibt über Deployments erhalten
2025-08-09 00:31:46 +02:00
vibe-bot
a0a45c97f9
Backend: WAV-Unterstützung hinzugefügt (Listing, DM-Upload, Play-Resolver, play-url Download) und Helptext aktualisiert
2025-08-09 00:00:55 +02:00
vibe-bot
0a95746d04
feat(stats): totalPlays Zähler persistent; Health-Endpoint liefert totalPlays; UI zeigt Gesamtzahl
2025-08-08 20:50:11 +02:00
vibe-bot
7f4b60c0bd
feat(audio): ffmpeg loudnorm Laufzeit-Normalisierung; Nerdinfos: Top 3 Most Played als Tab; Playszählung
2025-08-08 20:05:03 +02:00
vibe-bot
73ec23b585
chore(deps): entferne ytdl-core/youtube-dl-exec (nicht mehr genutzt); reduziert transitive Altlasten inkl. inflight
2025-08-08 19:42:32 +02:00
vibe-bot
adef12a1cb
chore(deps): bump @discordjs/voice to ^0.18 and multer to ^2 to address deprecations
2025-08-08 19:39:31 +02:00
vibe-bot
916f0ea846
fix(commands): '?restart' ohne createMessageCollector Bestätigung per '?restart y'
2025-08-08 19:35:04 +02:00
vibe-bot
250154bfab
feat(commands): Bot-Commands ?help/?list/?restart; DM-Uploads weiter möglich; Frontend: RANDOM-Button neben PANIK
2025-08-08 19:31:02 +02:00
vibe-bot
b70703d51b
feat(mp3): Erfolg-/Fehlerstatus beim Download; Panik-Button (Stop-Endpoint) und UI-Badge; interne playFilePath-Hilfe
2025-08-08 18:40:40 +02:00
vibe-bot
c2bd7b4503
feat(url-play): YouTube/Instagram entfernt nur MP3-Links; UI: Checkbox entfernt, Button heißt jetzt 'Download'
2025-08-08 18:31:15 +02:00
vibe-bot
0b70e0f002
fix(yt-dlp): Host-spezifische Referer/Args; optionales Cookies-File greift auch für Instagram (Rate-Limit/Login)
2025-08-08 18:07:17 +02:00
vibe-bot
51510dfad8
fix(youtube): yt-dlp mit optionalem Cookie-File (env YTDLP_COOKIES_FILE) + mobile UA/Referer/Extractor-Args; stabilere Streams/Downloads
2025-08-08 17:17:50 +02:00
vibe-bot
f9e9dc8d0b
feat(media): Download-Option für URL-Player; yt-dlp/ffmpeg Args für YouTube stabilisiert; UI: Checkbox 'Download speichern' + Dropdown layering fix
2025-08-08 17:04:38 +02:00
vibe-bot
e401124001
fix(media): Umstieg auf yt-dlp -> ffmpeg Transcoding (s16le/48kHz) statt ytdl-core; stabil gegen 410
2025-08-08 16:42:27 +02:00
vibe-bot
598ebaeda6
chore(ui): Tab-Bezeichnung 'Neu' ohne doppelten (10) Hinweis
2025-08-08 16:37:41 +02:00