From ba6fc9c6603a748ecbd1e16dc98ce3a88b87c62e Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sat, 2 May 2026 16:40:50 -0700 Subject: [PATCH] ios: right-align user bubbles on iPad --- .../Sybil/SybilChatTranscriptView.swift | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/ios/Packages/Sybil/Sources/Sybil/SybilChatTranscriptView.swift b/ios/Packages/Sybil/Sources/Sybil/SybilChatTranscriptView.swift index 7194946..d8f342b 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SybilChatTranscriptView.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SybilChatTranscriptView.swift @@ -25,6 +25,7 @@ struct SybilChatTranscriptView: View { ForEach(messages) { message in MessageBubble(message: message, isSending: isSending) + .frame(maxWidth: .infinity) .id(message.id) } @@ -86,10 +87,8 @@ private struct MessageBubble: View { } var body: some View { - HStack(alignment: .top) { - if isUser { - Spacer(minLength: 44) - } + HStack(alignment: .top, spacing: 0) { + leadingSpacer if let toolCallMetadata { ToolCallActivityChip( @@ -136,12 +135,24 @@ private struct MessageBubble: View { .frame(maxWidth: isUser ? 420 : nil, alignment: isUser ? .trailing : .leading) } - if !isUser { - Spacer(minLength: 0) - } + trailingSpacer } .frame(maxWidth: .infinity, alignment: isUser ? .trailing : .leading) } + + @ViewBuilder + private var leadingSpacer: some View { + if isUser { + Spacer(minLength: 44) + } + } + + @ViewBuilder + private var trailingSpacer: some View { + if !isUser { + Spacer(minLength: 0) + } + } } private struct ToolCallActivityChip: View {