Refactor from one-entry-one-identity to a hub config entry (shared RNS stack)
plus config subentries of type "identity", each an independent LXMF identity
with its own LXMRouter, address, device and entities. This is required because
LXMRouter allows only one delivery identity per instance.
- ReticulumStack: owns the single process-wide RNS instance, peer discovery and
interface telemetry (hub device).
- IdentityManager: one per subentry, its own LXMRouter/identity/destination and
delivery callback (identity device). Signal handlers suppressed and atexit
handlers tamed for each router too.
- Config subentry flow (add / reconfigure identity); a first identity is seeded
on stack creation. Editable announce display name = subentry title.
- Per-identity "Regenerate identity" button: new address + re-announce
(clears the router's single delivery destination first).
- Services and events gain an "identity" field to target/distinguish identities.
- Per-identity assist bridge, greeting-when-assist-off, allow-list, notify,
announce/sync buttons, message counters; hub-level connectivity/telemetry/peers.
Verified against current HA config_entries/entity_platform/selector and RNS/LXMF
sources. Docs and en/ru translations updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The greeting option returns, but it is now sent as an automatic reply to
incoming messages only when "Route incoming messages to Assist" is disabled,
so senders get an acknowledgement instead of silence. When Assist handles
messages the greeting is not used. Blank disables it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Drops the CONF_GREETING option, the first-contact greeting logic and its
RuntimeData state, and all related strings/translations/README text. Any
greeting value left in an existing entry's options is simply ignored.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- messages_sent now increments when a message is queued (async_send_message),
not only when a delivery proof returns. LXMessage's delivery callback only
fires on a returned proof (LXMessage.py ~566), which many peers/methods never
send, so the "Messages sent" sensor was stuck at 0 for messages that were
actually delivered. The delivery callback now only emits the event.
- Implement the previously-inert "greeting" option: send it automatically the
first time each sender contacts HA (tracked per sender in RuntimeData).
- Clarify the notify entity (rename to "Send message" / "Отправить сообщение")
and document greeting + notify in strings/translations/README.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Custom integration connecting Home Assistant to a Reticulum network over a
TCPClientInterface and exchanging LXMF messages, with an Assist conversation
bridge, notify entity, sensors (incl. interface telemetry), buttons, services,
bus events and device triggers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>