https://bugs.kde.org/show_bug.cgi?id=528032
Bug ID: 528032
Summary: SMS app: group thread with recipients in one
space-separated address takes over a contact's row;
clicking opens the wrong conversation
Classification: Applications
Product: kdeconnect
Version First 25.12.3
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: messaging-application
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
ADDITIONAL INFORMATION
SUMMARY
For some group conversations, kdeconnectd receives the recipients as a single
address string with space-separated numbers ("+386AAAAAAAA +386BBBBBBBB")
instead of separate addresses. The messaging app then treats the group thread
as single-target and merges it into the row of the contact whose number ends
that string. The row keeps the preview of the newest 1:1 message, but its
thread id is overwritten with the group thread's id, so clicking the row opens
the old group conversation. The 1:1 conversation cannot be opened from the
list. Six of my contacts are affected.
STEPS TO REPRODUCE
1. On the phone, have a 1:1 SMS thread with contact B containing recent
messages.
2. Have a group thread with contacts A and B, B listed last. On my phone,
activeConversations over D-Bus (org.kde.kdeconnect.device.conversations)
returns this thread's head message with one address: "+386AAAAAAAA
+386BBBBBBBB".
3. Open KDE Connect SMS.
OBSERVED RESULT
One row named after contact B, with the preview of the newest 1:1 message
(October 2026). Clicking it shows only the group thread (one message from
February 2026).
EXPECTED RESULT
Two rows, the 1:1 thread and the group thread, each opening its own messages.
ANALYSIS (master, commit 37af4586)
- smsapp/conversationlistmodel.cpp, createRowFromMessage(): if no row has the
message's threadID and !message.isMultitarget(), the row from
getConversationForAddress(rawAddresses[0].address()) is reused and its
ConversationIdRole is overwritten with the new threadID. The group message has
a single (space-joined) address, so isMultitarget() is false.
- smsapp/smshelper.cpp, isPhoneNumberMatchCanonicalized(): canonicalization
strips non-digits, so the joined string becomes one long digit string and
longerNumber.endsWith(shorterNumber) matches contact B.
- DateRole keeps the newer 1:1 message, so the preview stays from the 1:1
thread while the row points to the group thread.
Possible fixes: split addresses containing whitespace into separate
ConversationAddress entries, and/or reuse a row from
getConversationForAddress() only when it has no thread id yet (rows created
from contacts), never reassign a row that already belongs to another thread.
SOFTWARE/OS VERSIONS
KDE Connect: 25.12.3 (logic unchanged in master 37af4586)
KDE Plasma: 6.6.6
Linux kernel: 7.0.0-38-generic
Phone: Samsung Galaxy S23 Ultra
--
You are receiving this mail because:
You are watching all bug changes.