nanobot v0.1.5.post3

v0.1.5.post3
Added 16
  • Feishu group topics now isolate sessions so messages in one topic do not leak into another
  • Discord threads inherit their parent channel's allowChannels and get session isolation
  • Slack thread context is preserved on proactive replies
  • MSTeams conversation references gained TTL-based pruning and auto-cleanup for Web Chat refs
  • Per-channel override for sendProgress and sendToolHints instead of global switches
  • New ask_user tool lets the agent pause and ask users to choose mid-task
Changed 3
  • History.jsonl now uses atomic writes with fsync and directory sync
  • GitHub Copilot routes GPT-5 and o-series models correctly
  • Gemini routing picks up reasoning_effort none and Gemma
Fixed 4
  • Shell injection vector via path_append on non-Windows platforms
  • Workspace directory violations now stop the agent loop instead of logging a warning
  • resolve_config_env_vars no longer strips excluded fields
  • Anthropic image_url blocks inside tool_result content are converted correctly

🐈 nanobot v0.1.5.post3 is here 🎉 — 57 PRs merged, 12 new contributors. The agent learned to talk in threads.

If v0.1.5.post2 was about reach and polish, v0.1.5.post3 is about conversations becoming first-class citizens of their platform. Feishu group topics get isolated sessions. Discord threads inherit parent allowlists and keep their own context. Telegram can render inline keyboard choices. MSTeams prunes stale conversation references so outbound messages stop failing silently. And across all channels, sendProgress and sendToolHints can now be overridden per channel — quiet the noisy ones, keep the verbose ones. Underneath, DeepSeek-V4 is supported end to end: thinking mode and legacy session compatibility ship together, with follow-up fixes for incomplete reasoning history and non-string message content so long threads stay stable. A new ask_user tool lets the agent pause and ask you to choose mid-task. Olostep and Hugging Face joined the provider lineup, and a pair of timeout env vars (NANOBOT_LLM_TIMEOUT_S and NANOBOT_OPENAI_COMPAT_TIMEOUT_S) keep hung requests from holding your session hostage. The WebUI continued to evolve — image uploads, video rendering, ask-user choices, model settings — but remains source-preview only, not bundled into the wheel.

Highlights
  • Threads everywhere — Feishu, Discord, Slack, MSTeams — Each channel grew up this release. Feishu group topics now isolate sessions so messages in one topic don't leak into another; streaming cards and tool hints follow the original topic. Discord threads inherit their parent channel's allowChannels and get session isolation, which also means slash commands respect the allowlist. Slack stopped losing thread context on proactive replies. MSTeams conversation references gained TTL-based pruning (refTtlDays), auto-cleanup for Web Chat refs, and a touch interval to keep active refs alive. The theme is consistent: conversations belong to their thread, not to the channel at large. (#3449, #3397, #3440, #3462, #3475, #3447, #3487)

  • Per-channel progress and interaction controlssendProgress and sendToolHints used to be global on-or-off switches. Now you can place them inside any individual channel config to override the global default — keep Telegram quiet while WebSocket stays verbose. The agent also learned to ask users structured questions mid-task via the new ask_user tool: in WebUI these render as buttons, in other channels they fall back to text. Telegram got inline keyboards (inline_keyboards: true) for rendering message tool button choices. The /history [n] command lets you review recent messages without scrolling. (#3487, #2791, #3398, #3454, #3466)

  • DeepSeek-V4 and the wider provider stack — This release makes DeepSeek-V4 a first-class target: thinking mode and legacy session compatibility land in one go (#3420), so you can point the agent at V4 without abandoning older conversations. Real-world transcripts exposed two gaps that got dedicated follow-ups — truncated or incomplete reasoning history (#3453) and heterogeneous (non-string) message content (#3458) — so tool-heavy sessions don’t fall over mid-run. On top of that, Hugging Face Inference Providers arrived as a first-class provider (#3496), Olostep joined web search (#3505), OpenAI-compatible endpoints gained extraBody for vLLM guided decoding and friends (#3491), and the timeout pair NANOBOT_LLM_TIMEOUT_S / NANOBOT_OPENAI_COMPAT_TIMEOUT_S split outer turn limits from inner HTTP bounds (#3428, #3478). GitHub Copilot routes GPT-5 and o-series models correctly (#3380); Gemini routing picks up reasoning_effort="none" and Gemma (#3515).

  • Memory and session hardeningconsolidationRatio (0.1–0.95) lets you tune how aggressively token-triggered consolidation compresses context. maxMessages (default 120) caps the replay window without touching persistence. History.jsonl gained atomic writes with fsync and directory sync, closing the last data-loss window on unexpected shutdowns. A raw_archive bloat path and several stuck-consolidation edges were sealed. Sessions now fsync on graceful shutdown. The result: memory is both more tunable and more durable. (#3285, #3482, #3508, #3369, #3412, #3415, #3459)

  • macOS LaunchAgent and deployment — A new docs/deployment.md section walks through deploying nanobot gateway as a macOS LaunchAgent — plist, launchctl bootstrap/enable/kickstart, log paths, and the inevitable port-conflict gotcha when you forget to stop a manual gateway. Useful for anyone who wants the agent online at login without keeping a terminal open. (#3441)

  • Security and reliability fixes — A shell injection vector via path_append on non-Windows platforms was closed. Workspace directory violations now stop the agent loop instead of logging a warning. resolve_config_env_vars stopped stripping excluded fields. Anthropic image_url blocks inside tool_result content get converted correctly. MCP capability names are sanitized for model API compatibility. Windows MCP stdio launchers avoid WinError 193. Structured tool-event payloads give channels richer progress data. Document parsers lazy-import to cut cold-start time. Twenty-odd smaller fixes across providers, channels, and the agent loop round out the release. (#3366, #3493, #3383, #3387, #3470, #3379, #3399, #3423)

Community

Heartfelt thanks to everyone who shipped v0.1.5.post357 PRs, 27 contributors, and a huge welcome to 12 first-time contributors. Every review, patch, and bug report helped; this release is a shared win. 🎉

What's Changed
New Contributors

Full Changelog: https://github.com/HKUDS/nanobot/compare/v0.1.5.post2...v0.1.5.post3

View original

Upgraded? How did it go?

Discussion