User bubbles: move timestamp + delivery checkmarks to their own bottom-right line (Telegram look, matching agent bubbles) instead of inline at the end of the text

This commit is contained in:
ARIA committed 2026-08-21 00:01:13 +02:00
1 parent bff363d579
commit 8100730cba
1 file changed
+10 -8
@@ -1912,11 +1912,9 @@ private fun MessageBubble(
Spacer(modifier = Modifier.height(6.dp)) Spacer(modifier = Modifier.height(6.dp))
} }
if (isUser) { if (isUser) {
// M7: text + inline timestamp / delivery status at the end // M7: user text rendered as markdown (bold / italic / inline
// (reference look); the bubble hugs its content. User text is // code), so a pasted snippet or emphasis shows up the same as
// rendered as markdown too (bold / italic / inline code), so a // in replies.
// pasted snippet or emphasis shows up the same as in replies.
Row(verticalAlignment = Alignment.Bottom) {
if (msg.text.isNotBlank() || msg.streaming) { if (msg.text.isNotBlank() || msg.streaming) {
MarkdownText( MarkdownText(
text = msg.text.prepareForMarkdown().preserveNewlinesAsHardBreaks() + text = msg.text.prepareForMarkdown().preserveNewlinesAsHardBreaks() +
@@ -1925,8 +1923,13 @@ private fun MessageBubble(
fontSize = 15.sp, fontSize = 15.sp,
) )
} }
Spacer(modifier = Modifier.width(8.dp)) // M7: timestamp + delivery status on their own line at the
Row(verticalAlignment = Alignment.CenterVertically) { // bottom-right (Telegram look, same as agent bubbles).
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End,
verticalAlignment = Alignment.CenterVertically,
) {
if (time.isNotEmpty()) { if (time.isNotEmpty()) {
Text(time, fontSize = 10.sp, color = textColor.copy(alpha = 0.6f)) Text(time, fontSize = 10.sp, color = textColor.copy(alpha = 0.6f))
} }
@@ -1940,7 +1943,6 @@ private fun MessageBubble(
MsgStatus.Failed -> Unit MsgStatus.Failed -> Unit
} }
} }
}
if (msg.status == MsgStatus.Failed) { if (msg.status == MsgStatus.Failed) {
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),