The zero-bug release. Every open bug on the tracker has been fixed.
Config persistence finally works
Dashboard changes to agent model, provider, fallback chain, system prompt, and identity settings now write back to agent.toml on disk. Your config survives daemon restarts. This was the single most reported pain point across Discord and GitHub.
Security
PowerShell command bypass closed. When the outer command is a shell wrapper (powershell, cmd, bash), OpenFang now extracts and validates the inner commands against the exec allowlist. powershell -Command "Remove-Item ..." is blocked when Remove-Item is not in allowed_commands.
Dashboard auth upgraded to Argon2id with random salts, replacing the old SHA-256 hash. New openfang auth hash-password CLI command for migration.
Stability
WebSocket 404 race condition fixed. The upgrade handler now retries agent lookup up to 5 times before giving up, handling the spawn-to-register timing gap.
Feishu webhook panic paths eliminated. Poisoned mutex recovery, regex fallback, bounds-checked indexing, and malformed paragraph skip.
rustls CryptoProvider initialized at kernel boot. Fixes TLS panics on Discord, Mattermost, and Feishu WebSocket connections.
Revolt adapter now supports self-hosted instances with configurable ws_url and allowed_channels.
Community contributions
Copilot OAuth device flow by @dmbutko. Full token lifecycle with persistence, refresh rotation, and HTTPS validation.
AWS Bedrock provider by @smitb. Native Converse API with bearer auth and streaming.
Russian localization by @AlexZander85. Complete i18n framework with English and Russian out of the box.
SearXNG search provider by @norci. Self-hosted metasearch with category validation and pagination.
Gemini compatibility improvements by @nldhuyen0047. History ordering fix and array schema injection.
Novita AI provider by @Alex-wuhu. armv7 target by @Myshkouski.
Signal defaults to plain text. New agents use your configured model instead of hardcoded Groq. Cron jobs preserved across Hand reactivation. Intermediate tool text no longer dropped. UTF-8 boundary panics fixed. Alpine SVG rendering errors resolved. Dozens of UI polish fixes from @lc-soft.
Numbers
45 bugs fixed. 86 issues closed. 85 PRs merged. 55 PRs rejected after strict security audit. 8 releases shipped. Zero open bugs remaining.
Full Changelog: v0.5.8...v0.5.9