CluPilotCloud/app
nexxo c899d41946 Pin CloudReady's null-mailbox guard and share it with the trait
A mutation the reviewer ran (if ($box !== null) -> if (true)) left every
test green: CloudReady hand-rolled the same null-mailbox guard as
SendsFromMailbox, but nothing exercised its null branch. Added the
missing test, then extracted the decision itself (null mailbox -> no
sender fields, no_reply -> no Reply-To) into one shared method so an
Envelope-shaped and a MailMessage-shaped consumer can no longer disagree.
2026-07-27 23:59:05 +02:00
..
Actions fix(billing): hold only what cannot be matched, and let migrations roll back 2026-07-26 13:57:11 +02:00
Console Make the private hostnames look like nothing is there, and close the way past the proxy 2026-07-27 11:26:48 +02:00
Http Let the console keep its recovery hostnames without breaking route caching 2026-07-27 06:20:44 +02:00
Livewire Editing in modals, an update button that is not gated on a stale reading, and a support page that is real 2026-07-27 17:55:49 +02:00
Mail Pin CloudReady's null-mailbox guard and share it with the trait 2026-07-27 23:59:05 +02:00
Models Reuse the existing UUID trait instead of a second copy of the logic 2026-07-27 21:31:39 +02:00
Notifications Pin CloudReady's null-mailbox guard and share it with the trait 2026-07-27 23:59:05 +02:00
Policies fix(vpn): losing the operator roles closes the owner doors by itself 2026-07-25 22:50:13 +02:00
Providers Resolve the sending mailbox when the mail goes out, not at boot 2026-07-27 22:28:37 +02:00
Provisioning Measure availability, and let a customer move down again 2026-07-27 16:41:15 +02:00
Services Make a deactivated mailbox fall back like a deleted one 2026-07-27 22:57:22 +02:00
Support Show times on the operator's clock, keep storing them in UTC 2026-07-27 17:32:21 +02:00