App\Mail\PostAtRisk now takes the recipient so the at-risk times render in the recipient's time zone and 12h/24h clock. Mails queued by the previous release carry no recipient, so the recipient was made nullable with a fallback to the workspace owner (the person those mails always went to). That fallback only exists to survive the deploy with a full queue.
Once no PostAtRisk mail queued before the deploy is left, remove it:
Suggested timing: one to two weeks after the deploy.
App\Mail\PostAtRisknow takes the recipient so the at-risk times render in the recipient's time zone and 12h/24h clock. Mails queued by the previous release carry no recipient, so the recipient was made nullable with a fallback to the workspace owner (the person those mails always went to). That fallback only exists to survive the deploy with a full queue.Once no PostAtRisk mail queued before the deploy is left, remove it:
PostAtRiskjob without a recipient remains (check the queue / failed jobs).app/Mail/PostAtRisk.php: make$recipienta required promoted constructor property again (public User $recipient), drop the?User $recipient = nulldefault and the privaterecipient()fallback to$this->workspace->owner, and read$this->recipientdirectly incontent()andatRiskGroups().tests/Feature/Mail/PostAtRiskTest.php: delete the test "a payload queued without a recipient renders for the workspace owner".tests/Feature/Mail,tests/Feature/Jobs/VerifyUpcomingPostConnectionsTest.phpandtests/Feature/Jobs/SendNotificationTest.phpon PostgreSQL and MySQL.Suggested timing: one to two weeks after the deploy.