🚀 Version 3.0.0 — Major Refactor and Rearchitecture This release represents a complete modernization of amcrest2mqtt, bringing cleaner structure, better MQTT handling, and richer event data. Highlights - Modularized codebase under src/amcrest2mqtt/ - Brand-new MqttMixin with resilient reconnect, structured logs, and HA rediscovery support - HelpersMixin for device-state building and service-level control commands - AmcrestApiMixin replaces direct device calls with consolidated error handling - New sensor.event_time (timestamp) and sensor.event_text entities for human-readable event tracking - Added doorbell and human detection binary sensors for supported models (AD110/AD410) - Proper Home Assistant schema compliance: ISO 8601 timestamps, availability templates, and via-device linkage - Clean shutdown on SIGTERM/SIGINT and improved signal management - Full developer environment setup (black, ruff, pytest, coverage settings) - Utility script tools/clear_mqtt.sh for clearing retained topics - Docker image metadata updated with links, license, and version labels Breaking Changes - Moved all code to src/ package layout — update imports and mount paths if using bind mounts. - MQTT topics slightly restructured for consistency across entities. - Deprecated util.py; its helpers are now integrated into mixins. 1.0.1 - lookup camera hostnames to get ip at setup time, so we aren't doing 100k lookups every day (in my 4 camera setup, for example) 1.0.0 - initial release