31 KiB
(2026-06-29) Version 1.25.0
-
(Feature) ♻️ Context management now works with every provider, not only OpenAI. Token counting previously went through tiktoken-rs, which is accurate only for OpenAI models and silently mis-counted everything else (worst of all for non-English text). OpenAI agents keep using tiktoken-rs; every other provider, including the recommended Venice, now uses a provider-neutral approximation that needs no per-model tokenizer (ASCII counted at about four characters per token, other scripts such as Cyrillic and CJK at about two), landing within roughly 10-20% of the real count. See the context management docs.
-
(Improvement) Context management now trims a conversation on whole-turn boundaries for every provider, so an assistant reply is never kept without the user message it answered. This also adjusts how the OpenAI provider trims: a dangling assistant reply at the oldest edge of the kept history is now dropped along with its missing prompt, rather than left in place.
(2026-06-26) Version 1.24.0
-
(Feature) Add an opt-in 💭 thinking notice for text generation. When enabled, a slow response (for example, from a reasoning model that runs for minutes) posts a "thinking…" placeholder after a short delay, refreshes it periodically with varying flavor text, and then edits that same message into the final answer, so a long wait no longer looks like a stuck bot. The notice is disabled by default and configurable per-room or globally via
text-generation set-thinking-notice-enabled true. Fast responses (under the delay threshold) never show a placeholder. See the text-generation configuration docs. -
(Bugfix) The Venice unsupported-field auto-recovery (added in 1.23.1) now actually remembers rejections across messages. The cache lived on the provider's controller, which is rebuilt on every message for room-local and global agents, so each turn started with an empty cache, re-sent the unsupported field, and logged the same
400 Bad Requestwarning again. The cache is now process-global (keyed per Venice deployment), so a field a model rejects is dropped proactively on every later request instead of being re-discovered each turn.
(2026-06-24) Version 1.23.1
-
(Bugfix) The Venice provider now auto-recovers when a model rejects an optional knob it does not support. Venice's request body is strict (
additionalProperties: false), so a model that lacksprompt_cache_retention,reasoning_effort, orprompt_cache_keyrejected the whole request with a400 Bad Request— breaking agent creation and every reply. baibot now drops the unsupported field and retries, remembering the rejection per model so later requests skip it without a wasted round-trip. Only these meaning-preserving fields are dropped; sampling knobs that change the output (temperature,top_p, the penalties) are never silently removed and still surface as an error. -
(Improvement) When Venice rejects a request with a
400 Bad Request, baibot now surfaces Venice's actual error message (e.g.Extra inputs are not permitted, field: 'prompt_cache_retention') instead of a generic "configuration does not result in a working agent". This makes agent-creation failures self-explanatory. Other error statuses keep their bodies redacted, since those can carry account or rate-limit details.
(2026-06-23) Version 1.23.0
-
(Feature) The Venice provider now accepts file inputs (PDF, DOCX, and other documents, up to 25MB), the same way it already handled images. This makes Venice the second provider after OpenAI to accept files; the others (Anthropic and the OpenAI-compatible providers) skip them. See the text-generation feature docs.
-
(Feature) Add prompt caching to the Venice provider, on by default (
prompt_cache_retention: 24h). baibot derives the cache key from the system prompt and the conversation start time (both fixed for the life of a conversation), so a long, stable system prompt stays cached across the day instead of being reprocessed and re-billed on every turn. See Text Generation / Prompt Override. -
(Feature) Wire up the rest of Venice's sampling and reasoning controls: top-level
top_p,frequency_penalty,presence_penalty,repetition_penalty, andreasoning_effort;verbosityin thevenice_parametersbag; and ashow_reasoningtoggle that appends the model's reasoning to the reply as a collapsible, folded-by-default💭 Reasoningblock (off by default). See the Venice configuration reference. -
(Feature) Render Venice web-search citations as readable
[n]references with aSources:list of links, instead of leaving Venice's raw^n^superscripts in the reply. -
(Security) Escape citation titles and validate citation URLs before rendering them, and drop user-supplied filenames from error messages, so a hostile web page or a crafted filename cannot inject a spoofed link into the bot's reply.
-
(Bugfix) The OpenAI-compatible provider now trusts the system CA store (honoring
SSL_CERT_FILE), so endpoints served behind a private/internal CA (FreeIPA, organization PKI) no longer fail the TLS handshake withinvalid peer certificate: UnknownIssuer. Fixed upstream inetke_openai_api_rust0.1.10. Thanks to @shaba for the report in #188.
(2026-06-21) Version 1.22.0
- (Feature) Add a native Venice provider with 🖌️ image-generation (incl. editing), 💬 text-generation (incl. vision), 🗣️ text-to-speech, 🦻 speech-to-text, and Venice's native web search via the full
venice_parametersknob set. Unlike the OpenAI-compatible path (which drops images and can't reach Venice's audio or native image endpoints), it talks to Venice's API directly, using the knob-rich native/image/generateand/image/editendpoints. See the Venice provider docs.
(2026-06-05) Version 1.21.1
- (Security) Update the anthropic dependency to use reqwest 0.12 / rustls 0.23, replacing the vulnerable
rustls-webpki0.101 line with 0.103.13. This resolvesGHSA-82j2-j2ch-gfr8(high — denial of service via panic on a malformed CRL),GHSA-xgp8-3hg3-c2mhandGHSA-965h-392x-2mh5(name-constraint validation issues).
(2026-06-05) Version 1.21.0
-
(Improvement) Default to OpenAI's
gpt-image-2model for image generation (in newly-created OpenAI agents and the sample provider configs). -
(Internal Improvement) Update async-openai from 0.40 to 0.41, which resynchronizes with the upstream OpenAI API spec after it had drifted out of sync — a mismatch that was already causing some breakage (hopefully now resolved). Adapts to the newly-added
gpt-image-2image model and anImageSizetype change. -
(Internal Improvement) Dependency updates.
(2026-06-02) Version 1.20.0
-
(Internal Improvement) Update matrix-sdk from 0.17 to 0.18 and mxlink to 1.15.0.
-
(Internal Improvement) Update tiktoken-rs to 0.12, backporting OpenAI tiktoken 0.13.0 for better alignment with upstream tokenization behavior.
-
(Internal Improvement) Bump the pinned Rust toolchain from 1.95.0 to 1.96.0 (in
rust-toolchain.tomland the Docker build images). -
(Internal Improvement) Dependency updates.
(2026-05-27) Version 1.19.3
-
(Internal Improvement) Update async-openai to 0.40.2, pulling in several upstream fixes (streaming HTTP error surfacing, default
ResponseTextParam.formatdeserialization, etc.). -
(Internal Improvement) Dependency updates.
(2026-05-21) Version 1.19.2
-
(Internal Improvement) Update async-openai to 0.40.0.
-
(Internal Improvement) Dependency updates.
(2026-05-09) Version 1.19.1
-
(Internal Improvement) Update async-openai to 0.38.0.
-
(Internal Improvement) Dependency updates.
(2026-05-09) Version 1.19.0
-
(Internal Improvement) Update matrix-sdk from 0.16 to 0.17 and mxlink to 1.14.0. matrix-sdk 0.17 dropped its
native-tlsfeature and now uses rustls exclusively as its TLS backend. -
(Internal Improvement) Bump the pinned Rust toolchain from 1.93.0 to 1.95.0 (in
rust-toolchain.tomland the Docker build images). -
(Internal Improvement) Dependency updates.
(2026-04-11) Version 1.18.0
-
(Bugfix) Fix the bot not sending a welcome message when joining a room on homeservers (like Continuwuity) that place the join membership event in the sync response's
stateblock rather than thetimelineblock, via mxlink 1.13.1 -
(Improvement) Update tiktoken-rs to 0.11, adding tokenization support for newer GPT models (gpt-5.x, codex, etc.) and fixing context sizes for o1-mini/chatgpt-4o/gpt-4.5
-
(Internal Improvement) Dependency updates
(2026-03-25) Version 1.17.0
- (Feature) Add
text-generation sender-context-modefor attaching sender metadata to conversation messages. See the 💬 Text Generation documentation for details. Thanks to kschwank for the contribution in #104!
(2026-03-24) Version 1.16.1
-
(Bugfix) Fix compatibility with async-openai 0.34.0 by populating the new
phasefield required for OpenAI Responses API message inputs. baibot does not currently distinguish between assistantcommentaryandfinal_answerturns, so usingNonepreserves the previous behavior while remaining compatible with the updated crate. -
(Internal Improvement) Dependency updates.
(2026-03-20) Version 1.16.0
-
(Feature) Add support for file attachments (
m.fileMatrix messages) in conversations. Files like PDFs, text documents, spreadsheets, code files, etc. are now downloaded and forwarded to the LLM alongside the conversation context, similar to how images (m.image) are already handled. See the 💬 Text Generation documentation for details and known limitations. -
(Improvement) Use the mime_guess crate for MIME type detection from file extensions, replacing a hand-maintained mapping. This covers hundreds of file extensions out of the box.
(2026-03-07) Version 1.15.0
-
(Feature) Add support for authentication via access tokens (for Matrix Authentication Service/OIDC-enabled homeservers) as an alternative to password authentication. See 🔐 Authentication for setup details. Thanks to Taylor Southwick for the contribution in #83!
-
(Internal Improvement) Pin the Rust toolchain to
1.93.0in both CI and local development to avoidmatrix-sdkbuild failures on newer stable toolchains. -
(Internal Improvement) Documentation updates.
-
(Internal Improvement) Dependency updates.
(2026-02-18) Version 1.14.3
-
(Internal Improvement) Add Renovate configuration for automated dependency updates
-
(Internal Improvement) Dependency updates
(2026-02-18) Version 1.14.2
-
(Internal Improvement) Dependency updates
-
(Internal Improvement) Reorganize the development environment to support Continuwuity as a homeserver choice (in addition to Synapse). Continuwuity is now the default for its lighter footprint (no external database required). See development docs for details.
(2026-02-10) Version 1.14.1
-
(Security) Dependency updates to fix security vulnerabilities (time stack exhaustion DoS, bytes integer overflow), via mxlink 1.12.0
-
(Internal Improvement) Switch from deprecated serde_yaml to its maintained fork serde_yaml_ng
-
(Internal Improvement) Add prek pre-commit hooks via mise for automated code quality checks (formatting, clippy, tests)
-
(Internal Improvement) Fix clippy warnings and formatting issues
(2026-02-04) Version 1.14.0
-
(Feature) The
openaiprovider now uses OpenAI's Responses API (instead of the older Chat Completions API), adding support for 🛠️ built-in tools (web_searchandcode_interpreter). These tools are disabled by default and can be enabled via thetext_generation.toolsconfiguration (see the sample configuration). To enable tools on an existing agent, you need to update the agent to re-create it with thetext_generation.toolssection added and enable the tools you need. Thanks to Layla Manley for the contribution in #62! -
(Bugfix) Fix sticker generation for newer GPT image models (
gpt-image-1,gpt-image-1-mini,gpt-image-1.5) which don't support the previously hardcoded256x256size (minimum is1024x1024) -
(Internal Improvement) Dependency updates
(2026-01-23) Version 1.13.0
-
(Improvement) Extend auto-switching to support cheaper models (
gpt-image-1-mini) forgpt-image-1andgpt-image-1.5when generating stickers (e0b4a40) -
(Internal Improvement) Upgrade Rust compiler (1.92.0 -> 1.93.0) (691aeeb)
-
(Internal Improvement) Dependency updates
(2025-12-21) Version 1.12.0
-
(Improvement) Upgrade async-openai (0.31.1 -> 0.32.2) and add support for OpenAI's
gpt-image-1.5model (08c689a, f7bf3d7) -
(Internal Improvement) Dependency updates
(2025-12-15) Version 1.11.0
-
(Feature) Add support for custom avatars via file path and for keeping the already-set avatar (for those who wish to manage it by themselves via other means). See the sample config for details. (062fbbb)
-
(Internal Improvement) Dependency updates (99bde53)
-
(Internal Improvement) Documentation updates (b3fd8e5)
-
(Internal Improvement) Upgrade Rust compiler (1.91.1 -> 1.92.0) (22906aa)
(2025-12-06) Version 1.10.0
- (Internal Improvement) Dependency updates. This version is based on mxlink@1.11.0 (which is based on the newly released matrix-sdk@0.16.0.
(2025-11-30) Version 1.9.0
- (Internal Improvement) Upgrade async-openai from our own etkecc fork (0.28.1-patched) to the official upstream version 0.31.1. This upgrade required some code adaptations to the new module structure, etc. While tested, regressions are possible.
(2025-11-28) Version 1.8.3
-
(Improvement) Add support for the
BAIBOT_PERSISTENCE_SESSION_ENCRYPTION_KEYenvironment variable for configuringpersistence.session_encryption_key -
(Improvement) Add support for the
BAIBOT_USER_ENCRYPTION_RECOVERY_RESET_ALLOWEDenvironment variable for configuringuser.encryption.recovery_reset_allowed -
(Internal Improvement) Dependency updates.
(2025-11-20) Version 1.8.2
- (Internal Improvement) Dependency and compiler updates (Rust 1.89.0 -> 1.91.1).
(2025-09-12) Version 1.8.1
- (Internal Improvement) Dependency updates.
(2025-09-08) Version 1.8.0
-
(Internal Improvement) Upgrade mxlink (1.9.0 -> 1.10.0) and matrix-sdk (0.13.0 -> 0.14.0)
-
(Internal Improvement) Upgrade Rust (1.88.0 -> 1.89.0)
-
(Internal Improvement) Upgrade Debian base for container images (12/bookworm -> 13/trixie)
(2025-07-11) Version 1.7.6
- (Internal Improvement) Dependency updates. This version is based on mxlink@1.9.0 (which is based on the newly released matrix-sdk@0.13.0, which contains fixes for some security vulnerabilities)
(2025-06-10) Version 1.7.5
- (Internal Improvement) Dependency and compiler updates (Rust 1.86 -> 1.86).
(2025-06-10) Version 1.7.4
- (Internal Improvement) Dependency updates.
(2025-06-10) Version 1.7.3
- (Internal Improvement) Dependency updates. This version is based on mxlink@1.8.0 (which is based on the newly released matrix-sdk@0.12.0, which contains fixes for important security vulnerabilities)
(2025-05-11) Version 1.7.2
- (Bugfix) Allow
image_generation.sizeconfiguration value for OpenAI to benullto allow the model to choose the size automatically and default to that
(2025-05-11) Version 1.7.1
- (Bugfix) Fix lack of documentation for the new image-editing feature in the
!bai usagecommand's output
(2025-05-10) Version 1.7.0
-
(Feature) Add vision support to the OpenAI and Anthropic providers. You can now mix text and images in your conversations - fixes issue #5
-
(Feature) Add image-editing support to the OpenAI provider
-
(Improvement) Add compatibility with OpenAI's
gpt-image-1model - fixes issue #40 -
(Change) Rework image-creation to avoid command conflicts with image-editing. The image-creation command syntax is now
!bai image create <prompt>(previously:!bai image <prompt>). -
(Internal Improvement) Dependency and compiler updates
Warning
Unlike other releases, this release is not published to crates.io, because it relies on multiple library forks (
async-openaiandanthropic-rs) sourced from Github.
(2025-04-12) Version 1.6.0
- (Internal Improvement) Dependency updates. This version is based on mxlink@1.7.0 (which is based on the newly released matrix-sdk@0.11.0)
(2025-03-31) Version 1.5.1
- (Internal Improvement) Dependency updates
(2025-02-27) Version 1.5.0
-
(Feature) Add support for sending Speech-to-Text replies for Transcribe-only mode as regular text messages instead of notices and doing it so by default (a1bd292752) - improvement for issue #14. See 🦻 Speech-to-Text / 🪄 Message Type for non-threaded only-transcribed messages for details.
-
(Feature) Add config setting controlling if a self-introduction message is posted after joining a room (c051da2f4a) - fixes issue #32. You may wish to add a
room.post_join_self_introduction_enabledproperty to your configuration. See the sample config for details. If unspecified, it defaults totrueanyway which preserves the old behavior. -
(Feature) Add support for configuring
max_completion_tokensfor OpenAI (47d8edea70) -
(Improvement) Dependency updates. This version is based on mxlink@1.6.1 (which is based on the newly released matrix-sdk@0.10.0)
-
(Improvement) Populate image/audio attachment
bodywith a filename, not with text to avoid incorrect rendering in Element Web, etc. (ec1879d212) -
(Improvement) Replace Anthropic library (anthropic-rs -> anthropic) and switch default recommended model (
claude-3-5-sonnet-20240620->claude-3-7-sonnet-20250219) (692d61b239) - fixes issue #22 -
(Internal Improvement) Switch to native building of
arm64container images to decrease total build times from ~40 minutes to ~8 minutes (6719538530b) -
(Internal Improvement) Various other internal changes, including upgrading Rust from 1.82 to 1.85 and switching to Rust edition 2024
(2024-12-12) Version 1.4.1
- (Bugfix) Fix detection for whether the bot is the last member in a room, to avoid incorrectly leaving multi-user rooms that have had at least one person
leave(3c47d40781)
(2024-11-19) Version 1.4.0
-
(Improvement) Dependency updates. This version is based on mxlink@1.4.0 (which is based on the newly released matrix-sdk@0.8.0). Once you run this version at least once and your matrix-sdk datastore gets upgraded to the new schema, you will not be able to downgrade to older baibot versions (based on the older matrix-sdk), unless you start with an empty datastore.
-
(Bugfix) Add missing typing notices sending functionality while generating images (9d166e35ba)
-
(Feature) Support for Matrix authenticated media, thanks to upgrading mxlink / matrix-sdk - fixes issue #12
(2024-11-12) Version 1.3.2
Dependency updates.
(2024-10-03) Version 1.3.1
- (Improvement) Improves fallback user mentions support for old clients (like Element iOS) which use the bot's display name (not its full Matrix User ID). (d9a045a5e4)
(2024-10-03) Version 1.3.0
TLDR: you can now use OpenAI's o1 models, benefit from prompt caching and mention the bot again from old clients lacking proper user mentions support (like Element iOS).
-
(Feature) Introduces a new
baibot_conversation_start_time_utcprompt variable which is not a moving target (like thebaibot_now_utcvariable) and allows prompt caching to work. All default/sample configs have been adjusted to make use of this new variable, but users need to adjust your existing dynamically-created agents to start using it. (85e66406dc) -
(Improvement) Allows for the
max_response_tokensconfiguration value for the OpenAI provider to be set tonullto allow o1 models (which do not supportmax_response_tokens) to be used. See the new o1 sample config here. (db9422740c) -
(Improvement) Switches the sample configs for the OpenAI provider to point to the
gpt-4omodel, which since 2024-10-02 is the same as thegpt-4o-2024-08-06model. We previously explicitly pointed the bot to thegpt-4o-2024-08-06model, because it was much better (longer context window). Now thatgpt-4opoints to the same powerful model, we don't need to pin its version anymore. Existing users may wish to adjust their configuration to match. (90fbad5b64) -
(Bugfix) Restores fallback user mentions support (via regular text, not via the user mentions spec) to allow certain old clients (like Element iOS) to be able to mention the bot again. Support for this was intentionally removed recently (in v1.2.0), but it turned out to be too early to do this. (b40226826f)
(2024-10-01) Version 1.2.0
-
(Feature) Adds support for on-demand involvement of the bot (via mention) in arbitrary threads and reply chains (9908512968) - fixes issue #15
-
(Improvement) Simplifies Transcribe-only mode reply format (removing
> 🦻prefixing) to allow easier forwarding, etc. (e6aa956423) - fixes issue #14 -
(Bugfix) Fixes speech-to-text replies rendering incorrectly in certain clients, due to them confusing our old reply format with fallback for rich replies (e6aa956423) - fixes issue #17
(2024-09-22) Version 1.1.1
-
(Bugfix) Fix thread messages being lost due to lack of pagination support (d4ddd29660) - fixes issue #13
-
(Bugfix) Fix Anthropic conversations getting stuck when being impatient and sending multiple consecutive messages (8b12bdf2b3) - fixes issue #13
(2024-09-21) Version 1.1.0
-
(Feature) Adds support for prompt variables (date/time, bot name, model id) (2a5a2d6a4d) - fixes issue #10
-
(Improvement) Dockerfile changes to produce ~20MB smaller container images (354063abb7)
-
(Improvement) Dockerfile changes to optimize local (debug) runs in a container (c8c5e0e540)
-
(Improvement) CI changes to try and work around multi-arch image issues like this one (5de7559ed6)
(2024-09-19) Version 1.0.6
Improvements to:
- messages sent by the bot - better onboarding flow, especially when no agents have been created yet
- documentation pages
(2024-09-14) Version 1.0.5
Further improves the typing notification logic, so that it tolerates edge cases better.
(2024-09-14) Version 1.0.4
Improves the typing notification logic.
(2024-09-13) Version 1.0.3
Contains fixes for some startup failures caused by partial initialization (errors during startup).
(2024-09-12) Version 1.0.0
Initial release. 🎉