v2.10 - Readable rename reports
The report now explains itself. Two changes, both about making the rename list readable.
Full names in the HTML report
The Name change previously showed only the text after the last " - " on each side of the arrow. A device going from Living Room-Lamp (Living Room - Lamp - Electric Consumption [W]) to Living Room - Lamp [W] - EP0 rendered as:
Electric Consumption [W]) → EP0
which reads as if the device is being renamed to EP0. Both names are now shown in full, long names wrap, and the collapsed header carries the full new name as a tooltip.
Collisions say who is to blame
Auto-resolved collisions were counted but never reported, so the endpoint suffix that caused that confusion had no explanation anywhere. A new Names Disambiguated section names, for each collision, the device that wanted the name and the device holding it, whether the node source still reports that device, and its Used flag and LastUpdate:
Living Room - Lamp [W] Endpoint suffix EP0 appended
WANTED BY zwavejs2mqtt_0xc15d8aa6_24-50-0-value-66049 [in node source]
HELD BY zwavejs2mqtt_0xc15d8aa6_24-50-1-value-66049 [not in node source, Used=0, last update 2026-05-14 00:06]
This is the case that motivated the release: when a Z-Wave value moves endpoint or disappears, Domoticz keeps the old DeviceStatus row forever. It never returns in the node source but still owns its name, so the live device can only be renamed with an endpoint suffix. That device is now named on the console and in the report, along with the fix (delete it in Setup → Devices and re-run). Unresolvable collisions gained the same detail.
Treat "not in node source" as a strong hint, not proof. zwave-js only creates notification, battery and smoke sub-values once a node first reports them, so a healthy but quiet device can be absent; Used and LastUpdate are shown so the call stays yours.
Notes
DeviceStatus is now read with Used and LastUpdate alongside the existing columns. Both are standard Domoticz columns and are used only for reporting, so which devices get renamed is unchanged. Preview with -DryRun first, as always.