aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Expand)AuthorAgeFilesLines
* revert required permissionsmainsalmonik27 hours4-39/+58
* events: track voice channel movessalmonik4 days1-0/+16
* tts: initialize piper exactly oncesalmonik4 days1-42/+39
* music: keep preparation out of the guild lock and requeue failed connectssalmonik4 days1-99/+119
* docs: sync with current behaviorsalmonik4 days1-4/+4
* config: harden the shared temp directorysalmonik4 days3-8/+65
* leaderboard: use competition ranks consistentlysalmonik4 days1-1/+8
* web: percent-encode UTF-8 query bytessalmonik4 days1-7/+22
* autocomplete: key results by extension filter and reject the placeholdersalmonik4 days3-7/+27
* cron: validate expressions and allocate ids atomicallysalmonik4 days4-19/+19
* music: reject live streams on the yt-dlp pathsalmonik4 days2-0/+9
* music: decode compressed playback without a temp filesalmonik4 days2-12/+34
* tts: attach the generated WAV without a temp filesalmonik4 days1-11/+3
* qr: cap image dimensions and allocationsalmonik4 days1-2/+12
* downloads: cap yt-dlp media sizesalmonik4 days2-0/+27
* net: drop unused importsalmonik4 days1-1/+1
* config: make voice recording opt-insalmonik4 days1-4/+4
* net: block private and link-local URLssalmonik4 days7-1/+150
* music: announce a directly started track oncesalmonik4 days1-8/+10
* cron: simplify the first-fire lookupsalmonik4 days1-8/+1
* recording: reject a zero-length windowsalmonik4 days2-2/+16
* cron/triggers: keep pre-scoping rows manageablesalmonik4 days2-8/+15
* tts: run piper loading and synthesis on blocking threadssalmonik4 days1-16/+28
* processes: add timeouts and keep decoding off the runtimesalmonik4 days4-29/+53
* http: add connect and request timeoutssalmonik4 days5-3/+21
* tts: bound the audio cache and request lengthsalmonik4 days1-5/+86
* autocomplete: bound the in-memory cachessalmonik4 days1-6/+24
* events: never join or move voice just to play TTSsalmonik4 days1-8/+16
* recording: keep one buffer per guildsalmonik4 days3-34/+41
* triggers: scope groups to the guild that created themsalmonik4 days4-24/+64
* cron: scope jobs to the guild that created themsalmonik4 days2-19/+47
* commands: gate admin, trigger, cron and recording behind permissionssalmonik4 days4-14/+18
* utilities: sanitize filenames and isolate temp operationssalmonik4 days1-48/+105
* yt-dlp: ignore configs and stop option injectionsalmonik4 days2-3/+16
* copyparty: never send the password to foreign hostssalmonik4 days4-28/+165
* say: do not abort if the ephemeral ack is already gonesalmonik5 days1-1/+3
* cron: keep scheduled audio silentsalmonik5 days3-3/+12
* say: post text as a normal message after an invisible acksalmonik5 days1-7/+15
* docker: bake espeak-ng data for Piper TTSsalmonik11 days1-2/+3
* contextual play should add to the last in the queuesalmonik11 days1-8/+6
* music: group playback commands under /musicsalmonik11 days2-22/+45
* music: add per-guild queue with now/next/last, skip and queuesalmonik11 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-096-4/+155
* 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