Refuse an edit once another member has read the message

FixMediaService
Shipped
August 30, 2026 at 10:47 PM UTC
Author
Kamo
Commit
a1b2ac3

PATCH /api/media/messages/{id} was deliberately ungated on receipts, unlike the DELETE beside it. The reasoning written into it was that unsend makes read words vanish while an edit only corrects them, and that the "edited" marker plus the archived previous body were disclosure enough. That does not hold. An edit can turn a "yes" into a "no" under somebody who has read the "yes", and the marker says only that something changed — never what it said before. The archive it changes is kept for the record, not shown to the other member, so the reader ends up knowing a correction happened and having no way to learn what they were originally told. Members reported it from the chat windows as exactly that. So the edit now carries the same gate as the unsend, counted by the same query and refused with the same 409 ALREADY_VIEWED: correcting yourself is open for as long as the message is unread, and closes when somebody opens the conversation. The clients stop offering the action at the same point (@kamo/chat-core 0.1.16), so a request that reaches this gate is a receipt that landed while the edit box was open — which is the race the server is here to settle.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing