- Ya
- 4 Septemba 2026, 19:22 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 615e4b0
MessageIndexer is already a durable consumer of email.inbox.> and already resolves the mailbox OWNER, so it is where this belongs — one notification per genuinely new message, surviving restarts, with the member in hand. Raised BEFORE the IMAP fetch below it. Everything a notification needs is already in the event, and making the member wait on a round trip that exists to build a search index would be the wrong way round; it also means a mailbox whose credentials have gone stale still notifies, which is exactly when it matters. Three things it will not do. It only notifies for INBOX — a rule filing something into Archive is not news, and pushing for it teaches people to ignore the notification. It ignores anything older than thirty minutes, because some IMAP servers replay messagesAdded on reconnect and a phone that buzzes eleven times after a pod restart is a phone with notifications turned off. And it decides nothing about presence or devices: MediaService already suppresses a push for a member with a live socket, and a second copy of that rule is how the two would drift. The kill switch is in the ConfigMap as well as application.yml, because push auto-deploys and turning a misbehaving notification off must not need a rebuild. Note the merge into the EXISTING kamo: block — a second top-level kamo: key parses and then silently drops the first, taking sender-avatars and the security subtree with it.