New
v0.1.4.post2
π nanobot v0.1.4.post2 is here β 32 PRs merged, 14 new contributors! The community is on fire π₯
This release focuses on reliability: a completely redesigned heartbeat, prompt caching for lower API costs, hardened provider compatibility, and dozens of channel-level fixes. Fewer surprises, more stability.
Highlights
- Heartbeat Overhaul β Replaced fragile token detection with a virtual tool-call decision mechanism; heartbeat is now truly silent when idle (#1102, #1054, #1039, #1036)
- Prompt Cache Optimization β Dynamic context (time, session) moved from system prompt to user message, enabling persistent prompt cache hits (#1115)
- Agent Reliability β Behavioral constraints, full tool history in context, and actionable error hints (#1046)
- Slack β Thread-isolated sessions, mrkdwn post-processing for bold/header artifacts, socket error handling (#1048, #1107, #957)
- Feishu β Rich-text image extraction in post messages, file download API fix (#1090, #986)
- Email β Proactive sends work even when autoReply is disabled, smarter dedup eviction (#1077, #959)
- Provider Fixes β DeepSeek
reasoning_contentnormalization, empty content block filtering, API key hot-reload via@property(#947, #955, #949, #1071, #1098) - Security β Path traversal prevention using
relative_to()instead ofstartswith()(#956) - MCP β Configurable timeouts to prevent agent hangs, removed conflicting defaults for HTTP transport (#950, #1062)
- Memory β Fixed TypeError when LLM returns dict arguments during consolidation (#1061)
- Discord β Break typing indicator loop on persistent HTTP failure (#1029)
- CLI β DingTalk, QQ, Email added to
nanobot statusoutput (#982) - Packaging β Workspace templates moved to
nanobot/templates/for proper pip packaging (#1043) - Docs β systemd user service deployment guide (#968)
What's Changed
- fix: change VolcEngine litellm prefix from openai to volcengine by @init-new-world in https://github.com/HKUDS/nanobot/pull/951
- fix(context): Fix 'Missing
reasoning_contentfield' error for deepseek provider. by @homorunner in https://github.com/HKUDS/nanobot/pull/947 - Remove redundant tools description by @vincentchen0x2-dev in https://github.com/HKUDS/nanobot/pull/939
- feat(cli): add DingTalk, QQ, and Email to channels status output by @luoyingwen in https://github.com/HKUDS/nanobot/pull/982
- fix(security): prevent path traversal bypass via startswith check by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/956
- fix(slack): add exception handling to socket listener by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/957
- fix(session): handle errors in legacy session migration by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/958
- fix(email): evict oldest half of dedup set instead of clearing entirely by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/959
- fix(loop): serialize /new consolidation and preserve session on archival failure by @Athemis in https://github.com/HKUDS/nanobot/pull/881
- fix(qq): make start() long-running per base channel contract by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/962
- docs: add systemd user service instructions to README by @katafractari in https://github.com/HKUDS/nanobot/pull/968
- fix(mcp): add 30s timeout to MCP tool calls to prevent agent hangs by @eliumusk in https://github.com/HKUDS/nanobot/pull/950
- fix(providers): normalize empty reasoning_content to None at provider level by @nghiahsgs in https://github.com/HKUDS/nanobot/pull/955
- fix(feishu): replace file.get with message_resource.get to fix feishu file download problem by @FloRainRJY in https://github.com/HKUDS/nanobot/pull/986
- fix(provider): filter empty text content blocks causing API 400 by @eliumusk in https://github.com/HKUDS/nanobot/pull/949
- feat(channels): add send_progress option to control progress message β¦ by @luoyingwen in https://github.com/HKUDS/nanobot/pull/1000
- fix(heartbeat): route heartbeat runs to enabled chat context by @KimGLee in https://github.com/HKUDS/nanobot/pull/1036
- refactor: move workspace/ to nanobot/templates/ for packaging by @Re-bin in https://github.com/HKUDS/nanobot/pull/1043
- improve agent reliability: behavioral constraints, full tool history, error hints by @Re-bin in https://github.com/HKUDS/nanobot/pull/1046
- feat(slack): isolate session context per thread by @pjbakker in https://github.com/HKUDS/nanobot/pull/1048
- fix(heartbeat): deliver agent response to user and fix HEARTBEAT_OK detection by @Re-bin in https://github.com/HKUDS/nanobot/pull/1054
- fix(heartbeat): make start idempotent and require exact HEARTBEAT_OK by @cyzlmh in https://github.com/HKUDS/nanobot/pull/1039
New Contributors
- @homorunner made their first contribution in https://github.com/HKUDS/nanobot/pull/947
- @vincentchen0x2-dev made their first contribution in https://github.com/HKUDS/nanobot/pull/939
- @luoyingwen made their first contribution in https://github.com/HKUDS/nanobot/pull/982
- @nghiahsgs made their first contribution in https://github.com/HKUDS/nanobot/pull/956
- @katafractari made their first contribution in https://github.com/HKUDS/nanobot/pull/968
- @eliumusk made their first contribution in https://github.com/HKUDS/nanobot/pull/950
- @FloRainRJY made their first contribution in https://github.com/HKUDS/nanobot/pull/986
- @cyzlmh made their first contribution in https://github.com/HKUDS/nanobot/pull/1039
- @suportly made their first contribution in https://github.com/HKUDS/nanobot/pull/1061
- @xzq-xu made their first contribution in https://github.com/HKUDS/nanobot/pull/1090
- @dulltackle made their first contribution in https://github.com/HKUDS/nanobot/pull/1062
- @haosenwang1018 made their first contribution in https://github.com/HKUDS/nanobot/pull/1071
- @pikaxinge made their first contribution in https://github.com/HKUDS/nanobot/pull/1115
- @devops-tomorrow-io made their first contribution in https://github.com/HKUDS/nanobot/pull/1107
Full Changelog: https://github.com/HKUDS/nanobot/compare/v0.1.4.post1...v0.1.4.post2