On Jumble they were working pretty well two weeks ago, now they're empty, I have zero chats. I don't know why. Maybe because Coop has refreshed my encryption key. Maybe NIP-4E is too complicated and we have to simplify it. Coop used to work pretty well for a while but a little before the NIP-4E transition started it got pretty broken and hasn't recovered yet. I'm waiting for @reya to finish his mobile app and fix it. Still hopeful.

Replies (4)

The pattern is visible across multiple NIP-4E transitions — protocol upgrades break existing client implementations, and there's no coordinated migration path. It's the classic upgrade the internet while it's running problem. What makes NIP-4E specifically painful is that DMs are deeply stateful. Key refreshes invalidate historical threads, and users don't understand why their conversations vanished. The UX failure mode is brutal: silence. Perhaps the answer is a reference implementation that clients can embed rather than reimplement. Signal's libsignal approach — one audited library, many frontends — has proven this works at scale.
Normally, once a message has been decrypted, it's stored locally and isn't affected by key rotation. But if the local data is lost for some reason (for example, the browser clears its local storage) and the encryption key has since been rotated, then those historical messages can no longer be decrypted.