- Rewrote MQTT handling with reconnect, structured logging, and Home Assistant re-discovery triggers
- Introduced modular mixins (`helpers`, `mqtt`, `amcrest_api`) for cleaner architecture
- Replaced `util.py` with internal mixin helpers and `to_gb()` conversions
- Added new `event_text` and `event_time` sensors (with `device_class: timestamp`)
- Added support for doorbell and human-detection binary sensors
- Improved reconnect logic, last-will handling, and clean shutdown on signals
- Overhauled device discovery and state publishing to use unified upsert logic
- Simplified event handling and privacy mode inference from motion/human/doorbell events
- Introduced `tools/clear_mqtt.sh` for quick topic cleanup
- Added full pyproject.toml with lint/test/dev config (Black, Ruff, Pytest)
- Embedded full metadata and image labels in Docker build
BREAKING CHANGE:
Project layout moved to `src/amcrest2mqtt/`, internal class and import paths changed.
Users must update configs and volumes to the new structure before deploying.
- Added multiprocessing-based connection pooling for faster camera setup
- Implemented robust signal handling (SIGINT/SIGTERM) for graceful shutdown
- Upgraded MQTT client to v5 with improved logging and reconnect behavior
- Added defensive WebRTC config validation to avoid runtime errors
- Introduced unified config loader (`util.load_config`) with boolean coercion
- Improved IP resolution and logging consistency across modules
# 1.0.0 (2025-10-09)
### Bug Fixes
* ensure entity_id is correct for Storage Used % entity ([f10c04b](f10c04b006))
* fix doorbell entity name when device is called 'Doorbell' ([bd18f74](bd18f74507))
* move to more static Home Assistant topic names ([cfa7b00](cfa7b00135))
### Features
* semantic versioning, github action features, writes a version file, and tags Docker images ([69c4f1a](69c4f1ac57))