From 8db3c250f41e8f1d0b36da6b5a5093821e72d4f3 Mon Sep 17 00:00:00 2001 From: James C <134711311+Exotic209093@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:12:48 +0100 Subject: [PATCH] fix(mobile): prevent overlapping text and UI on Android chat messages (#11611) Co-authored-by: Julius Marminge --- apps/mobile/src/features/threads/ThreadFeed.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/mobile/src/features/threads/ThreadFeed.tsx b/apps/mobile/src/features/threads/ThreadFeed.tsx index 585354f7baf24d054a5a042dc4678e57bcf876e5..a860612cb922172ca9285cc276c1f37eb7d5c4f5 100644 --- a/apps/mobile/src/features/threads/ThreadFeed.tsx +++ b/apps/mobile/src/features/threads/ThreadFeed.tsx @@ -627,6 +627,7 @@ const markdownLinkStyles = StyleSheet.create({ height: 14, marginHorizontal: 3, transform: [{ translateY: 2 }], + flexShrink: 0, }, favicon: { borderRadius: 3, @@ -1155,7 +1156,7 @@ function useMarkdownStyles( > {ordered ? `${start + index}.` : "•"} - + @@ -1684,10 +1685,14 @@ 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 enterAnimated = isFreshTimestamp(message.createdAt); return ( {renderedText.trim().length > 0 ? ( -- 2.54.0