Editing is implemented as a new ciphertext version linked to the original via editsMessageId nullable FK on messages. Broadcast message_edited { originalMessageId, newMessageId }. Clients render the latest version with an "edited" marker. Edit authorship restricted to the original sender.
Acceptance criteria:
- Edits create a linked new message + fresh envelopes
- Clients resolve to the newest version per original
- Edit authorship restricted to the original sender
Editing is implemented as a new ciphertext version linked to the original via
editsMessageIdnullable FK onmessages. Broadcastmessage_edited { originalMessageId, newMessageId }. Clients render the latest version with an "edited" marker. Edit authorship restricted to the original sender.Acceptance criteria: