<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/AGENTS.md, 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:33Z</updated>
<entry>
<title>docs: sync with current behavior</title>
<updated>2026-11-04T00:33:33Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:33:33Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=97a26ec4e64a98a24dad7969337d2569339db9a7'/>
<id>urn:sha1:97a26ec4e64a98a24dad7969337d2569339db9a7</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>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>feat: local TTS via piper subprocess with Google fallback</title>
<updated>2026-08-18T21:18:37Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-08-18T21:18:37Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=b252c39517b9fce181d1a0fe4761404c7d981397'/>
<id>urn:sha1:b252c39517b9fce181d1a0fe4761404c7d981397</id>
<content type='text'>
- New src/tts.rs: centralize TTS in synthesize(config, http_client, text)
  Piper subprocess primary, Google Translate fallback on error/missing
- TTS_MODEL_PATH/TTS_VOICE env config (defaults to pl_PL-bass-high)
- Fix Unknown interaction errors: spawn play_tts_in_channel in background
  so voice-state TTS no longer blocks the shard event loop (3s Discord limit)
- Best-effort confirmation replies in /tts to prevent error cascade
- Custom on_error handler: graceful interaction-expired error handling
- Comprehensive tracing logging (engine, model, duration, stderr)
</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>
<entry>
<title>requirements shenanigans</title>
<updated>2026-05-21T14:37:49Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-21T14:37:49Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=053e3d959c592f5ddc15a0f0898d9b7e1deb8d6f'/>
<id>urn:sha1:053e3d959c592f5ddc15a0f0898d9b7e1deb8d6f</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>Refactor database connections and add integration tests</title>
<updated>2026-04-29T12:22:03Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-29T12:22:03Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=dba3388567818cb5c60be9d406d3e1cccc84b3ea'/>
<id>urn:sha1:dba3388567818cb5c60be9d406d3e1cccc84b3ea</id>
<content type='text'>
- Use context managers for sqlite3 connections in cron, vclogs, and database utils
- Add URL helper utility for yt-dlp with clean_url_for_ytdlp function
- Add slow integration test markers and new integration test files
- Fix test imports to use conftest directly instead of tests.conftest
- Improve downloader error handling and use COPYPARTY_URL_UPLOAD env var
- Update pytest.ini with slow test markers and warning filters
- Document slow test usage in AGENTS.md
</content>
</entry>
<entry>
<title>feat: add external URL playback support, fix vclogs audio handling</title>
<updated>2026-04-19T15:41:05Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-19T15:41:05Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=920d4b18e253f5642b895a1205d9826d54570db8'/>
<id>urn:sha1:920d4b18e253f5642b895a1205d9826d54570db8</id>
<content type='text'>
</content>
</entry>
</feed>
