- Shipped
- September 16, 2026 at 3:28 PM UTC
- Author
- Kamo
- Commit
- 39ffa54
POST **************** and /unarchive (MANAGE_BULK_EMAIL) set and clear the campaign's archivedAt, and CampaignDTO carries it. The /marketing/email screen files an archived campaign under its own Archived tab. - Only a campaign with nothing left to send can be archived. A scheduled, sending or paused one is refused: cancel it first. Archiving it again keeps the first date. - Send now, Schedule and Send to latest clear archivedAt, so a campaign sent again is back on the working tabs. - Both are announced as ARCHIVED / UNARCHIVED change frames, so every open campaigns screen and the home widget update live. - CampaignWidgetReads leaves archived campaigns out of recent, inStatuses and countByStatus. Builds on kamo-shared-library ebdd15f1 **************** and the archived_at column, both already in place. TransactionalSendRatchetTest was red on main before this commit and still is; nothing here touches sendToUser. The other 1554 tests pass.