Stop offering an edit once somebody else has read the message

Fixkamo-internal
Shipped
August 30, 2026 at 10:53 PM UTC
Author
Kamo
Commit
d97ff30

Every chat window that draws a MessageBubble — the member chat popups, and the social and ticket conversations that share ChatBox — offered Edit on the sender's own message for as long as it existed, including long after another member had read it. Unsend comes off at that moment; editing deliberately did not, on the reasoning that a typo is normally noticed after somebody has seen it, so a seen-gate would refuse corrections exactly when they are wanted, and that the "edited" marker plus the server-side archive of the previous body were disclosure enough. Reported by a member as the wrong trade, and it is. The marker says that something changed, never what it said before, and the archive is kept for the record rather than shown to the other member — so an edit can turn a "yes" into a "no" under somebody who has read the "yes" and leave them with no way to see what they were originally told. That is what the seen-gate on unsend exists to prevent, and rewriting a message a word at a time is not gentler than withdrawing it whole. So canEditMessage now takes the receipts and applies the same someoneElseSaw rule as canUnsend (@kamo/chat-core 0.1.16): correcting yourself stays open for as long as nobody has opened the conversation, and closes when they do. The sender's own receipt still does not count — re-reading your own message is not somebody else seeing it. MediaService refuses the PATCH with the same 409 ALREADY_VIEWED the unsend uses, so an edit already in the box when a receipt lands is answered by the server and shown on the bubble rather than kept.

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