v0.9.13
[0.9.13] - 2026-08-01
Added
-
contributed by @Demontego. Thank you!!
-
Telegram Secretary Summon, Chat Automation Archive & Owner Tools (PR #159) — Integrated Chat Automation peer DM archiving (
businessAutoReply), owner-only secretary tools (business_searchfor searching archives andqmdvector search projections,business_sendfor queueing outbound peer DMs via Telegram Business Connection), peer secretary summons viatriggerWordsor bot/secretary replies, contextual safety preambles (build_guest_preamble,build_secretary_preamble), andhistoryMaxAgeHours(default 24h) history age trimming for Telegram sessions. -
Telegram Mini App
initDataAuth & WebUI Surface (PR #154) — Opt-in Telegram Mini App authentication viainitData(HMAC-SHA256 data-check-string validation) withauth_datefreshness check. Restricts access strictly toallowFromowner IDs and usernames (rejecting wildcard*for Mini App access), introduces dedicated Mini App WebUI mode with custom CSS (telegram_mini.css), automatic theme adaptation (applyTelegramTheme), auto-expanded UI, and sliding-window rate limiting on/api/auth/telegram. -
Profile Tool Allow/Deny Lists, Temperature & Default KBs (PR #156) — Added per-profile tool allow/deny lists (
disabled_toolsandenabled_tools) enforced at prompt generation, tool definition filtering, and tool call execution with fail-closed security. Added profile temperature override (temperature), automatic session default Knowledge Base pinning (knowledge_bases), Telegram video file support (.mp4,.mov,.webm,.mkv), and optional HuggingFace embeddings import handling for OpenRouter RAG environments. -
WebUI Telegram Session Grouping, Search & Speaker Autolabeling (PR #153) — Session sidebar channel grouping (Telegram, WebUI, CLI, etc.) with collapsible headers and real-time search filtering. Added automatic session autolabeling for Telegram chats (group titles,
"You + <Peer>","You") and speaker label indicators ("You", "Peer", "Shiba") on WebUI chat history message bubbles.
Changed
- Telegram Ingress Access Control (
openGroups) & Default-Deny Sandboxing (PR #159 & PR #151) — AddedopenGroupssetting allowing non-allowlisted group members to talk to the bot while keeping DMs locked toallowFrom. Implemented fail-closed security sandboxing for non-allowlisted Telegram turns, restricting them strictly to safe web tools (web_search,web_fetch) while stripping filesystem, execution, MCP, and memory tools.
Fixed
- Telegram Edited Message Lifecycle & Truncation (PR #157) — Automatically edits previous response bubbles when a user edits their message, with automatic 4096-character chunking for overlong responses. Handles Telegram
BadRequest("Message is not modified")gracefully without sending duplicate fallback messages, and suppresses empty agent responses cleanly. - Gemini 3.x / OpenRouter Reasoning Details & Injection Filtering (PR #155) — Preserves and streams
reasoning_detailslist across agent turns for Gemini 3.x / OpenRouter compatibility, with in-place deduplication during streaming chunk accumulation. Hardened prompt injection filter regex (_YOU_ARE_NOW_ROLE_RE) preventing false positives on benign system text, and added vault-backed API key resolution forWebSearchTool(Brave,Tavily,Jina). - Profile Modal WebUI Form Submit Fix (PR #156) — Fixed HTML form element nesting in profile modal (
profiles.js&bundle.js), ensuring<form>encloses the submit button so profile settings can be saved from the WebUI. - Path Traversal Protection for Secretary Archives (PR #159) — Replaced string suffix matching with canonical path resolution (
resolved.is_relative_to(secretary_dir)) infilesystem.py. - Legacy Manual Session Nickname Preservation (PR #153) — Preserved custom manual nicknames for legacy sessions by checking
nickname_auto is not True.