Fix thread-unsafe state writes; use conversation-agent dropdown
- entity.py: decorate the dispatcher target _handle_update with @callback so it runs on the event loop. Without it, async_dispatcher_send offloaded the plain sync callback to an executor thread, and async_write_ha_state raised "calls async_write_ha_state from a thread other than the event loop". - config_flow.py: replace the free-text Assist agent field with ConversationAgentSelector (a proper agent dropdown), and use LanguageSelector for the language field. - README: clarify that the built-in Assist agent only handles device commands; an LLM conversation agent is required for free-form chat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import DeviceInfo, Entity
|
||||
|
||||
@@ -35,5 +36,9 @@ class ReticulumEntity(Entity):
|
||||
)
|
||||
)
|
||||
|
||||
@callback
|
||||
def _handle_update(self) -> None:
|
||||
# Decorated with @callback so the dispatcher runs it on the event loop
|
||||
# (a plain sync callback would be offloaded to an executor thread, and
|
||||
# async_write_ha_state is not thread-safe).
|
||||
self.async_write_ha_state()
|
||||
|
||||
Reference in New Issue
Block a user