feat(email): send alert, notification and digest email through qbit-email when installed #23

Merged
KofTwentyTwo merged 3 commits from feature/email-qbit into develop 2026-10-14 13:27:25 +00:00
KofTwentyTwo commented 2026-10-14 04:13:06 +00:00 (Migrated from github.com)

Phase (d) of the qbit-email design (QRun-IO/qbit-email docs/DESIGN.md section 11).

Alert channel emails, immediate notification emails and daily digests go through qbit-email when it is installed (templates alerts_alert, alerts_notification, alerts_digest; NOTIFICATION; one recipient per message; idempotency keys with a recipient hash, never the address; linked alert/notification record). Results map to the existing statuses (QUEUED/DUPLICATE → SENT, SUPPRESSED → SKIPPED, REFUSED → FAILED). messagingProviderName is no longer required when qbit-email is present; without qbit-email the core SendMessageAction path is unchanged. Alert keys include the message kind and minute so reminders and reopened alerts are not dropped as duplicates. 84 tests (9 new).

qbit-email is an <optional> dependency at 0.1.0-RC.1 (property qbit-email.version); every qbit-email reference is in one adapter class behind a Class.forName + EmailRuntime.config(qInstance) guard. Uses qbit-email 0.1.0-RC.1 from Maven Central; ./mvnw verify is green against it.

🤖 Generated with Claude Code

Phase (d) of the qbit-email design (QRun-IO/qbit-email docs/DESIGN.md section 11). Alert channel emails, immediate notification emails and daily digests go through qbit-email when it is installed (templates alerts_alert, alerts_notification, alerts_digest; NOTIFICATION; one recipient per message; idempotency keys with a recipient hash, never the address; linked alert/notification record). Results map to the existing statuses (QUEUED/DUPLICATE → SENT, SUPPRESSED → SKIPPED, REFUSED → FAILED). messagingProviderName is no longer required when qbit-email is present; without qbit-email the core SendMessageAction path is unchanged. Alert keys include the message kind and minute so reminders and reopened alerts are not dropped as duplicates. 84 tests (9 new). qbit-email is an `<optional>` dependency at `0.1.0-RC.1` (property `qbit-email.version`); every qbit-email reference is in one adapter class behind a `Class.forName` + `EmailRuntime.config(qInstance)` guard. Uses `qbit-email` **0.1.0-RC.1** from Maven Central; `./mvnw verify` is green against it. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.