v1.40.0 (2026-03-03)
Features
UUIDv5 Device ID as primary identifier (#270, #310, #311)
The internal device identifier has been migrated from WWN (World Wide Name) to a deterministic UUIDv5 based on model name, serial number, and WWN. This is a major architectural change that improves support for devices without a valid WWN.
- SQLite primary key changed from
wwntodevice_id(UUIDv5) - All API routes, handlers, and frontend updated to use
device_id - MQTT Home Assistant topics migrated from WWN-based to DeviceID-based (legacy topics cleaned up automatically on startup)
- Devices without a valid WWN (e.g. USB enclosures, virtual drives) are now fully supported
Add on-demand MQTT sync endpoint for HA entity cleanup (#316)
- New
POST /api/health/mqtt-syncendpoint to re-sync all MQTT discovery entities with Home Assistant on demand - Archived devices are actively removed from Home Assistant during sync
- No longer requires container restart to clean up stale entities
Bug Fixes
Fix duplicate WWN unique constraint failure (#314)
- Replaced unique index on
wwnwith a regular index, fixingUNIQUE constraint failed: devices.wwnerrors when registering multiple devices sharing the same non-empty WWN (e.g.0x0000000000000000)
Replace deprecated object_id with default_entity_id in HA discovery (#312, #313)
- Updated MQTT discovery messages to use
default_entity_idinstead of the deprecatedobject_idfield, ensuring compatibility with latest Home Assistant versions
Migration Notes
- The database migration runs automatically on startup. Both the UUIDv5 backfill (m20260315000000) and PK swap (m20260401000000) migrations are applied in sequence.
- Existing MQTT entities in Home Assistant will be recreated with new DeviceID-based identifiers. Old WWN-based entities are cleaned up automatically.
- Old collectors using WWN-based API paths will continue to work via backward-compatible device resolution.