<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/src/main.rs, branch main</title>
<subtitle>Very big discord bot.
</subtitle>
<id>https://git.2137697.xyz/senator-sperma/atom?h=main</id>
<link rel='self' href='https://git.2137697.xyz/senator-sperma/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/'/>
<updated>2026-11-04T00:33:11Z</updated>
<entry>
<title>config: harden the shared temp directory</title>
<updated>2026-11-04T00:33:11Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:33:11Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=91e167940ca299c228c9de973487b1978d2e550d'/>
<id>urn:sha1:91e167940ca299c228c9de973487b1978d2e550d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>net: block private and link-local URLs</title>
<updated>2026-11-04T00:29:57Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:29:57Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=4b2b4af606237def78273a42e881ae9f971cb505'/>
<id>urn:sha1:4b2b4af606237def78273a42e881ae9f971cb505</id>
<content type='text'>
</content>
</entry>
<entry>
<title>http: add connect and request timeouts</title>
<updated>2026-11-04T00:11:29Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:11:29Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=81c19a8a4f1c99f721d4c65fbcddcec6474b752b'/>
<id>urn:sha1:81c19a8a4f1c99f721d4c65fbcddcec6474b752b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>autocomplete: bound the in-memory caches</title>
<updated>2026-11-04T00:10:40Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:10:40Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=0c5d2791ab8d310bc201a3b0212c1004343abf82'/>
<id>urn:sha1:0c5d2791ab8d310bc201a3b0212c1004343abf82</id>
<content type='text'>
</content>
</entry>
<entry>
<title>music: group playback commands under /music</title>
<updated>2026-10-27T17:18:07Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-27T17:18:07Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=bab3f614f8b42545fdb0101c4e353c87e0966d47'/>
<id>urn:sha1:bab3f614f8b42545fdb0101c4e353c87e0966d47</id>
<content type='text'>
Graduate grajcuj/skip/queue/stop/join into the /music parent and drop the
top-level names. On startup, reconcile global slash commands and delete
any that are no longer registered, since Discord otherwise keeps stale
commands after a rename or move.

Docs updated for the new command layout and queue semantics.
</content>
</entry>
<entry>
<title>music: add per-guild queue with now/next/last, skip and queue</title>
<updated>2026-10-27T17:14:07Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-27T17:14:07Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=fc5e0f48477366641b97efb0541053cc1e061be5'/>
<id>urn:sha1:fc5e0f48477366641b97efb0541053cc1e061be5</id>
<content type='text'>
Tracks are queued in memory per guild, defaulting to append (last).
Playback auto-advances on TrackEvent::End/Error with a per-track token
so manual stops and skips cannot double-advance. /music queue shows the
current track followed by pending items. /stop clears the queue.

Cron audio now goes through the same MusicState instead of poking the
track-handle map directly.
</content>
</entry>
<entry>
<title>silence songbird udp_rx decode noise</title>
<updated>2026-09-09T13:01:15Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-09-09T13:01:15Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=f94e6f14bf31eaecf1e2c324067b192bfa603e65'/>
<id>urn:sha1:f94e6f14bf31eaecf1e2c324067b192bfa603e65</id>
<content type='text'>
Signed-off-by: salmonik &lt;salmonik@tuta.io&gt;
</content>
</entry>
<entry>
<title>wire recording into voice manager, config, events, /record command</title>
<updated>2026-09-09T12:36:50Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-09-09T12:36:50Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=0d1fdab3a10b30d83da50b7f20acc18b7a350a22'/>
<id>urn:sha1:0d1fdab3a10b30d83da50b7f20acc18b7a350a22</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: piper now not a subprocess, cache system for TTS</title>
<updated>2026-09-05T17:35:21Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-09-05T17:35:21Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=8e868894cbcaf421c263f3555af4d29bef653420'/>
<id>urn:sha1:8e868894cbcaf421c263f3555af4d29bef653420</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: Various cron fixes</title>
<updated>2026-08-19T00:45:49Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-08-19T00:45:49Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=850fad62f12b4e764f5e64036db35259237994cb'/>
<id>urn:sha1:850fad62f12b4e764f5e64036db35259237994cb</id>
<content type='text'>
Not saving full URL
Not using autocompletion content, just label
</content>
</entry>
</feed>
