Conversation Merging
Since Chatty has multi-protocol messaging (even at its most basic: SMS + Matrix) you may receive messages from different addresses/IDs that are from the same person. Also since a design goal of Chatty is that people interact with their contacts as people and not have to worry about protocol, when an unknown address/number/ID is added to an existing contact card, Chatty will need to merge the conversation history between those formerly 2 different contacts.
Tackling this in the UI will come in at least 3 parts:
Conversation Context Menu
When a user adds an unknown contact to their addressbook from within the conversation view, the option in the context menu to "Add to existing contact" will indicate an intention on behalf of the user to merge the present conversation into another with the same person. Since what is happening semantically is a user is letting Chatty know that these formerly 2 separate contacts are the same person so all messages from this one person should be in the same place (conversation thread).
Conversation List
Once a conversation has been merged in the background, the conversation list should no longer show the chat threads between what used to be 2 different contacts and show it as a single conversation. An icon can be displayed to indicate that this is a merged message thread, which will disappear after the user has seen the dialog presented within the conversation view (see subsequent design).
In-Chat View
When first returning to a newly-merged conversation, we should present a dialog that informs users what happened to their prior conversations as a result of their actions (merging contacts). The merged conversation should preserve all messages, sorted by original timestamp and their source address/ID labelling messages that follow as being from that address until it changes again.