Client-chosen id (typically a UUID). Primary key in the local store.
Conversation key. For DMs this is the other party's DID; for group messages this is the group id.
DID of the sender.
Plaintext body.
Sender's send-time.
OptionaleditedWhen the message was last edited, if ever.
OptionalreadWhen this row was marked read locally, if ever.
Outbound delivery status (incoming messages stay at "delivered").
0 = normal chat message; >0 = a system/metadata timeline entry (docs/03 §3.6 group event). Renderers show kind>0 rows as a centered line.
OptionalmetadataJSON for system rows (event kind + actor/target DIDs); undefined for
normal chat messages.
OptionalattachmentsAttachments on this message (docs/35); empty for plain text.
OptionalpreviewsLink-preview cards on this message (docs/35); empty for plain text.
A message from local history (persisted in SQLCipher). Returned by AppCore.loadMessages, AppCore.loadLastMessage, and AppCore.loadConversations. Pass back to AppCore.saveMessage to insert/update.