<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/src/tasks, 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:31:45Z</updated>
<entry>
<title>cron: validate expressions and allocate ids atomically</title>
<updated>2026-11-04T00:31:45Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:31:45Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=a8c1d47132d4c47863ae7dc5b6f4816d024d3de4'/>
<id>urn:sha1:a8c1d47132d4c47863ae7dc5b6f4816d024d3de4</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>cron: simplify the first-fire lookup</title>
<updated>2026-11-04T00:13:42Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:13:42Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=7b144f43ad05eb28eb6726ff40b4b8bff80a32ea'/>
<id>urn:sha1:7b144f43ad05eb28eb6726ff40b4b8bff80a32ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>copyparty: never send the password to foreign hosts</title>
<updated>2026-11-04T00:06:38Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:06:38Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=64afa0fd8c863deb6a1568428dfaf2ce67ef9085'/>
<id>urn:sha1:64afa0fd8c863deb6a1568428dfaf2ce67ef9085</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cron: keep scheduled audio silent</title>
<updated>2026-11-02T14:23:51Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T14:23:51Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=d4ab83f20956fba09133571e14a9a64244b33d64'/>
<id>urn:sha1:d4ab83f20956fba09133571e14a9a64244b33d64</id>
<content type='text'>
Add a per-track silent flag. Cron already uses play_now (interrupt the
current track), but play_next_locked still announced the track to the last
known text channel; suppress playing and failure announcements for silent
tracks, including when a cron track fails to prepare.
</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>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>
<entry>
<title>make cron follow local time zone</title>
<updated>2026-07-10T19:04:21Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-10T19:04:21Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=cee8d7ff997afbb5b305ad72924b96277c151d8e'/>
<id>urn:sha1:cee8d7ff997afbb5b305ad72924b96277c151d8e</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>fix cron double fire</title>
<updated>2026-07-09T14:20:43Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-09T14:20:43Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=0768a2efa68b72107f2f2e7fa0f0dc87fd12d3c4'/>
<id>urn:sha1:0768a2efa68b72107f2f2e7fa0f0dc87fd12d3c4</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>OPEN THE RUST GATES</title>
<updated>2026-07-08T00:13:35Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-08T00:13:35Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=cd8ed8bc5793985df2c1692072a932ceee517b95'/>
<id>urn:sha1:cd8ed8bc5793985df2c1692072a932ceee517b95</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
</feed>
