<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/README.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>docker: pin and verify a week-old yt-dlp release</title>
<updated>2026-11-04T00:32:40Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:32:40Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=9281c7e48405e8db94194f33af9e3bce60840929'/>
<id>urn:sha1:9281c7e48405e8db94194f33af9e3bce60840929</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docker: install ImageMagick for image compress/convert</title>
<updated>2026-11-04T00:16:50Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:16:50Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=7015c0518e52c4d1e6f7e2870f601f2aac4f5115'/>
<id>urn:sha1:7015c0518e52c4d1e6f7e2870f601f2aac4f5115</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docker: bake espeak-ng data for Piper TTS</title>
<updated>2026-10-28T11:00:03Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-28T11:00:03Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=722883ab4a4583b799ce8bfd0cfad70b4b89daf9'/>
<id>urn:sha1:722883ab4a4583b799ce8bfd0cfad70b4b89daf9</id>
<content type='text'>
espeak-rs-sys installs espeak-ng-data into the build tree and compiles that
path in as the default, so the runtime image failed with 'phontab: No such
file or directory'. Copy the data from the builder to /usr/share and point
PIPER_ESPEAKNG_DATA_DIRECTORY there; compose overrides the host path from
.env.

Also trim trailing slashes from Copyparty base URLs, document that env_file
changes need --force-recreate, and clean inline comments in .env.example.
</content>
</entry>
<entry>
<title>docker: build and run on Debian trixie</title>
<updated>2026-10-27T17:35:58Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-27T17:35:58Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=a82489c95f8c8f3e55f92939224599598bd0de96'/>
<id>urn:sha1:a82489c95f8c8f3e55f92939224599598bd0de96</id>
<content type='text'>
Add a multi-stage image that compiles inside Debian trixie and runs on the
same glibc/libssl/libopus, avoiding the Arch-built binary failing on
Debian. The runtime image installs ffmpeg, qalc, the shared libraries, and
the latest yt-dlp zipapp, and runs as uid 1000.

compose.yaml mounts data/ and piper/, overrides TTS_MODEL_PATH for the
container layout, and builds with host networking because the default
Docker bridge DNS cannot resolve crates.io or deb.debian.org on this host.
</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: 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>chore: update .gitignore, minor README fix</title>
<updated>2026-04-19T13:44:50Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-19T13:44:50Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=5528aeb9f4292d05141b6bdc3f48641def2eec64'/>
<id>urn:sha1:5528aeb9f4292d05141b6bdc3f48641def2eec64</id>
<content type='text'>
</content>
</entry>
</feed>
