From a38624ba75a282e12f3521cb0fabf4c18c2d6640 Mon Sep 17 00:00:00 2001 From: Exotic209093 <134711311+Exotic209093@users.noreply.github.com> Date: Sun, 13 Sep 2026 19:09:02 +0100 Subject: [PATCH] fix(mobile): prevent overlapping text and UI on Android chat messages Fixes #11119 --- apps/mobile/src/features/threads/ThreadFeed.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/features/threads/ThreadFeed.tsx b/apps/mobile/src/features/threads/ThreadFeed.tsx index 53b8a528ee00..37fe3415badb 100644 --- a/apps/mobile/src/features/threads/ThreadFeed.tsx +++ b/apps/mobile/src/features/threads/ThreadFeed.tsx @@ -391,6 +391,7 @@ const markdownLinkStyles = StyleSheet.create({ height: 14, marginHorizontal: 3, transform: [{ translateY: 2 }], + flexShrink: 0, }, favicon: { borderRadius: 3, @@ -772,7 +773,7 @@ function useMarkdownStyles( > {ordered ? `${start + index}.` : "•"} - + @@ -1119,10 +1120,16 @@ function renderFeedEntry( return null; } + // Assistant messages hit the same Android unclamped-pass bug as user + // bubbles: wide markdown blocks cause children to be positioned at + // intrinsic width before the container is clamped, overlapping the + // timestamp/copy button row. Pinning the width removes that pass. + const assistantHasWideBlock = hasWideMarkdownBlock(message.text, WIDE_MARKDOWN_BLOCK_OPTIONS); const enterAnimated = isFreshTimestamp(message.createdAt); return ( {message.text.trim().length > 0 ? (