Juan Denis and Claude Opus 4.8
2cbbb61dbf
refactor(unify): §6 Phase C6b — Postfix relay backed by EmailProviderConnection
...
Completes the email unification: the outbound relay is now one smtp
EmailProviderConnection flagged uses_relay, so a single table drives both the
Notification Bus and the Postfix relay. The legacy single-row email_relay_config
is folded in on first boot and kept only as a read fallback.
- EmailRelayService rewritten over the unified table: get/save/disable/test all
operate on the uses_relay smtp connection; password stays Fernet-encrypted in
credentials_json; masked round-trips preserve the stored secret. Postfix apply
unchanged (no-op when Postfix absent).
- migrate_legacy_config(): idempotent fold of email_relay_config → connection
(password copied verbatim — same Fernet key); wired into the boot-time legacy
migration block.
- API: PUT /notifications/admin/email-providers/:id toggles usage flags
(uses_notifications/uses_relay/relay_priority); uses_relay honored for SMTP only.
Verified: 6 new relay tests + usage-flag + notification-bus suites pass (30 passed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 14:36:08 -04:00
..
2026-06-23 00:34:55 -04:00
2026-01-17 04:22:12 -05:00
2026-06-15 00:52:30 -04:00
2026-03-23 01:46:41 -04:00
2026-06-12 18:35:35 -04:00
2026-06-12 18:35:52 -04:00
2026-06-23 16:56:13 -04:00
2026-06-01 02:39:05 -04:00
2026-06-01 02:39:05 -04:00
2026-01-22 18:11:22 -05:00
2026-03-04 01:53:46 -05:00
2026-03-04 01:53:46 -05:00
2026-06-21 20:19:57 -04:00
2026-06-22 19:53:23 -04:00
2026-06-24 14:19:32 -04:00
2026-06-22 19:53:23 -04:00
2026-06-23 18:49:04 -04:00
2026-06-23 18:49:04 -04:00
2026-03-23 02:27:52 -04:00
2026-06-15 10:47:59 -04:00
2026-06-22 20:39:12 -04:00
2026-06-23 23:19:41 -04:00
2026-06-23 21:15:16 -04:00
2026-06-21 19:57:02 -04:00
2026-05-05 14:03:31 -04:00
2026-06-19 10:13:50 -04:00
2026-06-19 09:54:40 -04:00
2026-06-23 18:23:47 -04:00
2026-06-01 02:39:05 -04:00
2026-03-23 01:58:28 -04:00
2026-06-15 00:01:41 -04:00
2026-05-31 22:39:57 -04:00
2026-06-19 03:12:07 -04:00
2026-06-23 17:28:29 -04:00
2026-06-21 20:19:57 -04:00
2026-06-23 21:33:53 -04:00
2026-03-23 01:58:28 -04:00
2026-03-04 02:34:49 -05:00
2026-06-22 16:34:17 -04:00
2026-06-22 16:34:17 -04:00
2026-06-22 16:34:17 -04:00
2026-06-23 00:34:55 -04:00
2026-06-24 01:43:29 -04:00
2026-03-04 02:34:49 -05:00
2026-06-24 14:36:08 -04:00
2026-03-04 02:34:49 -05:00
2026-06-23 23:19:41 -04:00
2026-01-28 21:12:55 -05:00
2026-06-22 14:37:44 -04:00
2026-06-21 02:11:47 -04:00
2026-06-20 22:43:38 -04:00
2026-06-21 20:19:57 -04:00
2026-06-23 17:48:59 -04:00
2026-06-21 02:11:47 -04:00
2026-02-10 08:09:38 -05:00
2026-03-23 01:58:28 -04:00
2026-06-21 02:11:47 -04:00
2026-06-23 18:49:04 -04:00
2026-06-22 14:37:44 -04:00
2026-06-01 02:27:52 -04:00
2026-01-21 21:31:57 -05:00
2026-06-19 10:08:58 -04:00
2026-06-19 01:33:45 -04:00
2026-06-19 09:22:18 -04:00
2026-03-04 02:34:49 -05:00
2026-06-21 02:11:47 -04:00
2026-06-20 22:43:38 -04:00
2026-01-22 08:51:31 -05:00
2026-06-06 23:29:22 -04:00
2026-06-21 20:19:57 -04:00
2026-03-23 02:19:33 -04:00
2026-06-23 17:48:59 -04:00
2026-01-22 18:11:22 -05:00
2026-06-21 19:57:02 -04:00
2026-03-04 01:53:46 -05:00
2026-05-31 16:08:32 -04:00
2026-06-19 01:33:45 -04:00
2026-03-04 02:34:49 -05:00
2026-03-04 00:02:52 -05:00
2026-06-01 02:39:05 -04:00
2026-06-15 09:19:56 -04:00
2026-06-23 19:33:44 -04:00
2026-01-19 02:35:18 -05:00
2026-06-18 22:16:00 -04:00
2026-06-23 19:33:44 -04:00
2026-06-23 21:15:16 -04:00
2026-06-22 14:37:44 -04:00
2026-06-15 19:43:00 -04:00
2026-05-01 05:52:11 -04:00
2026-05-01 01:54:17 -04:00
2026-06-21 02:11:47 -04:00
2026-05-01 03:37:33 -04:00
2026-05-01 04:33:08 -04:00
2026-05-01 04:42:30 -04:00
2026-05-01 04:33:08 -04:00
2026-06-22 18:12:50 -04:00
2026-06-05 23:04:06 -04:00
2026-01-25 20:01:07 -05:00
2026-06-22 14:37:44 -04:00
2026-06-20 22:43:38 -04:00
2026-06-21 01:54:51 -04:00
2026-01-22 08:51:31 -05:00
2026-06-23 20:04:04 -04:00
2026-06-12 18:35:35 -04:00
2026-06-23 16:56:13 -04:00
2026-06-23 23:19:41 -04:00
2026-06-22 16:45:10 -04:00
2026-06-22 16:40:35 -04:00
2026-06-21 00:20:10 -04:00
2026-03-04 02:34:49 -05:00
2026-06-19 16:34:14 -04:00
2026-06-22 14:37:44 -04:00
2026-06-20 22:43:38 -04:00
2026-06-21 02:11:47 -04:00
2026-06-21 02:11:47 -04:00
2026-06-22 01:45:15 -04:00
2026-06-23 18:23:47 -04:00
2026-01-22 16:44:06 -05:00
2026-01-18 01:03:56 -05:00
2026-06-15 23:28:12 -04:00
2026-06-15 23:28:12 -04:00
2026-06-15 23:20:00 -04:00
2026-06-20 22:43:38 -04:00
2026-01-17 13:37:40 -05:00
2026-06-19 14:02:24 -04:00
2026-06-20 22:43:38 -04:00
2026-05-31 22:39:57 -04:00
2026-01-27 19:35:21 -05:00
2026-06-23 19:33:44 -04:00
2026-06-21 22:01:38 -04:00
2026-01-28 21:12:55 -05:00
2026-06-21 18:32:25 -04:00
2026-06-21 02:11:47 -04:00
2026-06-01 03:04:03 -04:00
2026-06-23 17:48:59 -04:00
2026-06-01 02:27:52 -04:00
2026-06-01 01:45:20 -04:00