What's Changed
Notifications are now live — configured webhook and email channels now fire automatically on certificate lifecycle events. Previously, the Notifier existed but was never connected to any events.
New Features
- EventBus listener mechanism —
add_listener(callback)allows non-SSE consumers to react to events - Automatic notifications — webhook/email notifications fire on
certificate_created,certificate_renewed, andcertificate_failedevents - Webhook retry with backoff — failed webhook deliveries retry up to 3 times with exponential backoff (1s, 2s, 4s)
- Per-webhook event filtering — each webhook can specify which event types it receives (e.g., only failures to PagerDuty)
- API event publishing — API resource endpoints now emit events (previously only web routes did)
certificate_failedevent — new event type emitted when background cert creation/renewal fails
Code Quality
- Replaced 11 silent
try/except/passblocks withlogger.debug()across storage_backends.py, resources.py, routes.py, and file_operations.py - Generic webhook payloads now use ISO 8601 timestamps
Full Changelog: v1.10.2...v1.10.3