v0.16.0
Quality, DX & code improvements
Added
- Descriptor-based entities — sensors and binary sensors use frozen dataclass descriptors for cleaner, data-driven entity creation
- Optimistic state for DnD and PhotoCaller switches — UI updates instantly before API confirmation
icons.json— state-aware icons for all entity types (switches, lock, connection, etc.)- Vulture dead code analysis in CI and
make deadcode - Coverage threshold (40%) enforced in CI
- GitHub issue templates — structured bug report with FCM/diagnostics fields, and feature request
Changed
- Ruff rules expanded — isort, naming, pyupgrade, bugbear, builtins-shadow, simplification, type-checking
- API models frozen — all 6 dataclasses use
@dataclass(frozen=True) - Diagnostics rewritten with
async_redact_data()and operational data (listener status, stream state) - Coordinator uses
dataclasses.replace()instead of manual DeviceInfo reconstruction
Full changelog: https://github.com/bvis/fermax-blue-hass/blob/main/CHANGELOG.md