This release introduces Recipes — a one-click way to turn your hardware into a working Home Assistant setup — and brings full multi-language support across the backend, panel, and conversational AI. It also adds anonymous opt-in telemetry, local usage metrics, and a long list of chat-reliability fixes.
✨ Highlights
🍳 Recipes — turn your hardware into a working home
A new Recipes tab and install flow lets users browse a public catalog hosted on selorahomes.com and install vetted, end-to-end packages in one click. A recipe is more than a bunch of automations — it ties your hardware to a complete Home Assistant setup:
- Device roles — a recipe declares the roles it needs (e.g. bedroom lights, door locks, a thermostat) and the install wizard maps your actual devices onto them, with min/max counts and required/optional selection.
- Configurable inputs — recipes expose tunable parameters (bedtime, dim duration, night temperature, notification style, …) so the same package adapts to each home.
- Full HA wiring — once devices and inputs are resolved, the recipe renders and writes the automations, scenes, and dashboards that make those devices work together as one routine.
- Hardened, sandboxed rendering — recipe templates are treated as untrusted input. Jinja rendering runs in a
SandboxedEnvironment, remote fetches require TLS for public hosts, and redirect hops are validated on fetch to prevent SSRF-style abuse.
⚠️ Limitation: Recipes are currently English-only.
🌍 Internationalization (i18n)
Selora AI now speaks your language — across the config flow, panel UI, entity filtering, and conversational replies.
- 13 locales shipped:
en,fr,de,es,it,nl,hu,pt,ru,ja,ko,zh-Hans,zh-Hant. - Conversational reply language is detected per message (falling back to panel locale, then HA config language), driving both the LLM directive and deterministic command confirmations — a French command on an English UI gets a French confirmation.
- Multilingual entity resolution + lexical ranking — "which lights are on?" / "quelles lumières sont allumées?" resolve to the correct entities with Unicode-aware tokenization and ranked matching.
- Deterministic status answers — the cloud path computes the exact matching entity set/count from live state and constrains the LLM, fixing wrong counts and EN/FR set drift.
⚠️ Limitation: Selora AI Local has not yet been trained on multi-language data — multilingual conversation currently applies to the cloud providers.
📊 Telemetry & Usage
- Anonymous, opt-in PostHog telemetry (off by default) — counter/enum/version-only payloads, no PII, with a one-time consent banner and a Settings toggle.
usage_activityevent — anonymous period deltas of how the install is used.- Local Selora Cloud usage metrics — token/call usage recorded locally (never leaves the network), separate from telemetry.
💬 Chat & Reliability
- Per-message action toolbar in chat (copy, etc.), with hover actions no longer shifting layout.
- Cloud + multi-provider reliability improvements, including reliable chat with weaker gateway models.
- Commit a final answer when the tool loop is exhausted (no more silent dead-ends).
- Resolve device triggers so button automations complete.
- Decode percent-encoded YAML pasted into chat.
- Click to expand truncated suggestion card title/subtitle.
🐛 Other Fixes
- Surface device manufacturer/model in entity context for better LLM grounding.
- Repair silent
play_mediaannouncements totts.speak. - Catch provider
ConnectionErrorin the collector. - Reduce recorder attribute spam and chat-stream errors.
- Protect code fences from tile-marker substitution.
Full changelog (commits)
Features
- chat: multilingual entity resolution + lexical ranking (3c56943)
- chat: per-message action toolbar (5691bc6)
- i18n: add pt/ru/ja/ko/zh locales + i18n fixes (4f5e597)
- i18n: multi-language support — fr / de / es / it (3d9a74d)
- recipes: recipe wizard + public catalog install flow (eef371d)
- telemetry: add usage_activity event (89f6551)
- telemetry: anonymous opt-in PostHog telemetry (2e85198)
- usage: record Selora Cloud token/call usage locally (5db1919)
Bug Fixes
- chat: cloud + multi-provider reliability (7395aba)
- chat: resolve device triggers so button automations complete (87917e7)
- chat: stop hover actions shifting layout (da7463f)
- client: thread user_message + new intent + command_policy exports (4228ea8)
- collector: catch provider ConnectionError (86078ac)
- integration: commit a final answer when the tool loop exhausts (664e95d)
- integration: repair silent play_media announcements to tts.speak (1506c63)
- integration: surface device manufacturer/model in entity context for brand resolution (47caed6)
- llm: reliable cloud chat with weak gateway models (8b5b703)
- panel: decode percent-encoded YAML pasted into chat (971023d)
- protect code fences from tile-marker substitution (84dd8ba)
- recipe template sandbox + state-filter determinism (pre-release review) (2f2ed75)
- reduce recorder attr spam and chat-stream errors (2240069)
- suggestions: click to expand truncated card title/subtitle (5fad883)