[1.1.5-rc02] - 2026-02-27
Added
- Device OTA status handling — The plugin now handles protocol 500 (
device_status_ota) messages from the device. Firmware update status, progress, and device online/offline events are logged automatically.
Fixed
- Local client stale socket race condition — Replaced the
intentionalDisconnectflag (shared mutable state, time-sensitive) with a closure-captured socket reference inclose,error, andendevent handlers. When a ping-timeout reconnect fires, the old socket's asynccloseevent is now rejected via identity check (this.socket !== socket), preventing it from destroying the newly created socket mid-handshake. - MQTT fallback during local reconnect — While the local client is reconnecting,
ClientRouternow falls back to MQTT and emits a notice log instead of silently failing or waiting. ConnectionBroadcasternow requires a logger — Constructor updated to acceptAnsiLogger;registerandunregisternow emit notice logs for observability.ClientRouterfield rename —connectionListenerrenamed toconnectionBroadcasterfor naming consistency withAbstractClient.DisconnectNotificationListenerstub methods —onConnected,onError, andonReconnectnow log the duid at debug level instead of being empty stubs.