Combined release covering all changes since v2.4.1.
Action required: DeepSeek and Gemini model names
- Google shut down
gemini-2.0-flashon 2026-06-01. The Gemini 2.5 family follows on 2026-10-16. - DeepSeek retires
deepseek-chatanddeepseek-reasoneron 2026-07-24 with no fallback.
If your instance uses one of these models, open the integration options and switch the model. New installation defaults: gemini-3.5-flash and deepseek-v4-flash.
Features
disable_thinkingoption (closes #11) - turns off model reasoning per instance or perask_questioncall. Implementation per provider:- OpenAI reasoning models (o-series, gpt-5):
reasoning_effortlow/minimal - OpenAI-compatible chat models and legacy DeepSeek:
/no_thinksoft switch plus<think>block stripping - DeepSeek V4: native
thinkingrequest parameter - Gemini 2.5:
thinking_budget=0(128 for 2.5 Pro, its minimum) - Gemini 3.x:
thinking_levelMINIMAL (LOW for Pro models) - Anthropic: no-op, extended thinking is opt-in there
- OpenAI reasoning models (o-series, gpt-5):
- Reasoning model support: o1/o3/o4-mini and the gpt-5 family get
max_completion_tokensand thedeveloperrole; custom temperature is not sent because these models reject it. OpenRouter-styleopenai/prefixes are recognized.deepseek-reasonerresponses keepreasoning_contentas a separate field.
Security
- API key must be re-entered when changing provider or endpoint in options
- DNS rebinding closed: all API traffic goes through a session pinned to the pre-validated IPs
- HTTP redirects disabled on API requests, a 3xx response cannot route traffic to an unvalidated host
- Isolated cookie jar per instance
- Link-local and cloud metadata addresses (169.254.0.0/16) are blocked even in
allow_local_networkmode - Symlink protection for history storage
- Expanded log redaction; Gemini API keys are stripped from stored URLs
Reliability
- Retries on 429/502/503/504 with
Retry-Aftersupport and exponential backoff - Services survive a config entry reload: changing options no longer removes
ask_questionand the other services until restart get_historywithresponse_variablenow works and returns{"history": [...]}. Before this release every such call failed with a server error, so no automation could have consumed the old shapeget_historyaccepts any positivelimitagain, values above 200 are clamped instead of rejected- Each instance gets a dedicated HTTP session, closed on unload and on failed setup
- Anthropic: response parsing picks the text block, and temperature is clipped to the [0, 1] range the API accepts
- Instance names that normalize to an empty string get a stable hash-based fallback name
License
PolyForm Noncommercial 1.0.0 replaced with MIT.
Breaking changes
None for working setups: entity IDs, sensor attributes, the ask_question response format and on-disk history/metrics files are unchanged. The response_variable path of ask_question still returns the full response text.
All 8 translations updated (de, en, es, hi, it, ru, sr, zh).