aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
* docker: pin and verify a week-old yt-dlp releasesalmonik5 days2-6/+13
* leaderboard: use competition ranks consistentlysalmonik5 days1-1/+8
* web: percent-encode UTF-8 query bytessalmonik5 days1-7/+22
* autocomplete: key results by extension filter and reject the placeholdersalmonik5 days3-7/+27
* cron: validate expressions and allocate ids atomicallysalmonik5 days4-19/+19
* music: reject live streams on the yt-dlp pathsalmonik5 days2-0/+9
* music: decode compressed playback without a temp filesalmonik5 days2-12/+34
* tts: attach the generated WAV without a temp filesalmonik5 days1-11/+3
* qr: cap image dimensions and allocationsalmonik5 days1-2/+12
* downloads: cap yt-dlp media sizesalmonik5 days2-0/+27
* net: drop unused importsalmonik5 days1-1/+1
* config: make voice recording opt-insalmonik5 days1-4/+4
* net: block private and link-local URLssalmonik5 days8-1/+151
* docker: install ImageMagick for image compress/convertsalmonik5 days2-0/+2
* music: announce a directly started track oncesalmonik5 days1-8/+10
* cron: simplify the first-fire lookupsalmonik5 days1-8/+1
* recording: reject a zero-length windowsalmonik5 days2-2/+16
* cron/triggers: keep pre-scoping rows manageablesalmonik5 days2-8/+15
* tts: run piper loading and synthesis on blocking threadssalmonik5 days1-16/+28
* processes: add timeouts and keep decoding off the runtimesalmonik5 days4-29/+53
* http: add connect and request timeoutssalmonik5 days5-3/+21
* tts: bound the audio cache and request lengthsalmonik5 days1-5/+86
* autocomplete: bound the in-memory cachessalmonik5 days1-6/+24
* events: never join or move voice just to play TTSsalmonik5 days1-8/+16
* recording: keep one buffer per guildsalmonik5 days3-34/+41
* triggers: scope groups to the guild that created themsalmonik5 days4-24/+64
* cron: scope jobs to the guild that created themsalmonik5 days2-19/+47
* commands: gate admin, trigger, cron and recording behind permissionssalmonik5 days4-14/+18
* utilities: sanitize filenames and isolate temp operationssalmonik5 days1-48/+105
* yt-dlp: ignore configs and stop option injectionsalmonik5 days2-3/+16
* copyparty: never send the password to foreign hostssalmonik5 days4-28/+165
* say: do not abort if the ephemeral ack is already gonesalmonik6 days1-1/+3
* cron: keep scheduled audio silentsalmonik6 days3-3/+12
* say: post text as a normal message after an invisible acksalmonik6 days1-7/+15
* docker: bake espeak-ng data for Piper TTSsalmonik11 days5-9/+47
* contextual play should add to the last in the queuesalmonik12 days1-8/+6
* docker: build and run on Debian trixiesalmonik12 days4-0/+156
* music: group playback commands under /musicsalmonik12 days5-31/+66
* music: add per-guild queue with now/next/last, skip and queuesalmonik12 days6-269/+790
* silence songbird udp_rx decode noisesalmonik2026-09-091-1/+6
* record: 2x gain on mp3 encodesalmonik2026-09-091-0/+5
* test recorder ring semantics; extract mix_ticksalmonik2026-09-091-50/+187
* wire recording into voice manager, config, events, /record commandsalmonik2026-09-098-5/+158
* first draftsalmonik2026-09-092-0/+410
* /grajcuj plays video-like extensions toosalmonik2026-09-092-9/+9
* message-contextual /grajcujsalmonik2026-09-093-13/+58
* assistant replies to the messagesalmonik2026-09-093-4/+4
* make /grajcuj w\ compress finally work as compressing a file and thensalmonik2026-09-094-48/+132
* feat: piper now not a subprocess, cache system for TTSsalmonik2026-09-0512-175/+762
* remove ` from TTS and make events use lang.rssalmonik2026-09-032-31/+108