service · live
2026 · 04 · 18
Upgrade · Complete

Shipped,
verified.

v2026.4.8 v0.10.0 · 64b35471
+1,231
commits merged
818→75MB
memory
40+
packages upgraded
0
open issues
What actually changed 09
Memory stays flat
#11565
agent cache grew unbounded — service hit 831 MB peak, climbing
LRU cap + 5-min idle TTL evicts stale sessions automatically
What this means Service can run for weeks without OOM. Started fresh at 75 MB.
Clean shutdowns
#11800
SessionDB stayed open on shutdown — stale state on next boot
per-session cleanup + DB close on SIGTERM
What this means Restarting the service no longer risks corrupt session state.
Read tracker pruned
#11839
_read_tracker sub-containers grew per-message, never shrank
bounded, and _completion_consumed pruned after use
What this means Long conversations stop accumulating internal bookkeeping.
Gemini errors land clean
gemini-cli
raw stack trace: MODEL_CAPACITY_EXHAUSTED dumped to chat
surfaced as a readable message; drops retired gemma-4-26b
What this means When Gemini is rate-limited, you see "try again later" not a traceback.
Mistral STT goes native
upstream
custom patch used OpenAI client against Mistral's endpoint (shim)
official mistralai SDK — Voxtral transcribe API direct
What this means Voice messages on Telegram/Discord transcribed faster and officially supported. Patch dropped, upstream wins.
Telegram tables fixed
#11794
markdown tables rendered as garbled pipes in Telegram messages
auto-wrapped in code blocks so columns line up
What this means Data the bot sends you on Telegram is actually readable now.
QQ bot QR onboarding
qqbot
manual token/channel config; fiddly multi-step setup
scan a QR code, bot adds you + sets home channel
What this means If you ever enable QQ, setup is 30 seconds.
Kimi pinned to 0.6
kimi
coding runs used whatever temperature the caller passed
kimi-for-coding always at 0.6 — consistent output
What this means Code generation with Kimi stops drifting between determinism and creativity.
Browser CDP via config
latest
Chrome DevTools URL hardcoded — had to edit source to change
read from config.yaml — point at any CDP endpoint
What this means Can hook to a remote headless Chrome without patching code.
What we dropped
obsolete local patch

Mistral STT shim — superseded

You had 97 lines in tools/transcription_tools.py that made Mistral work via the OpenAI client. Upstream now ships a proper mistralai SDK integration. Your env var MISTRAL_API_KEY is still honored. Net: less code you maintain, more reliable transcripts.
Resolved
fixed · 2026-04-18

ElevenLabs TTS live again

Root cause was account-side, not code. Rotated to a fresh key and verified end-to-end against /v1/user and /v1/text-to-speech/{voice} — both HTTP 200. Free tier: 10,000 chars/month, 0 used. Voice pNInz6... returns clean eleven_multilingual_v2 audio.