Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
bec59dd
fix: spacing in unified chat bubble
bwees Jul 2, 2026
d98ced3
feat: edge to edge chat window
bwees Jul 2, 2026
a9816dc
fix: styling and keyboard handling for edge to edge chat
bwees Jul 2, 2026
3ac8a88
refactor: message send bar
bwees Jul 2, 2026
01907a3
fix: gaps between messages when scrolling
bwees Jul 3, 2026
9f445a2
feat: chat design consistency spacing and date divider
bwees Jul 3, 2026
d0031d3
chore: format
bwees Jul 3, 2026
6f9cd3c
fix: time spacing
bwees Jul 3, 2026
b9f919e
feat: bubble states now live inside the bubbles
bwees Jul 3, 2026
34a9265
chore: microinteractions and fade fix
bwees Jul 3, 2026
bc59b13
feat: send count bubble footer, refactor footer builder
bwees Jul 3, 2026
2d0aa6c
chore: migrate to swiftui-messaging-ui
bwees Jul 5, 2026
257b114
fix: performance issues on chat bubbles
bwees Jul 7, 2026
2c7095e
fix: gesture handling
bwees Jul 7, 2026
447d83a
chore: remove ViewThatFits path truncation
bwees Jul 7, 2026
a4a0b34
chore: move all formatting to formatter
bwees Jul 7, 2026
c7e73a1
fix: keyboard dismiss swipe
bwees Jul 7, 2026
cd80fca
fix: down button showing on short threads
bwees Jul 7, 2026
c6c3927
fix: divider button not showing unless scrolling up a bit
bwees Jul 7, 2026
17d5c75
fix: really good dismiss logic
bwees Jul 7, 2026
42ffcab
fix: scroll to message
bwees Jul 8, 2026
dd50ea4
fix: better chat performance
bwees Jul 8, 2026
6793360
fix: scroll to bottom on short threads
bwees Jul 8, 2026
de2fcbe
fix: maybe remove the 1 frame layout flash
bwees Jul 8, 2026
c2946d2
feat: cache prewarming for chats
bwees Jul 10, 2026
d612c5d
fix: removed param
bwees Jul 10, 2026
d55e06d
fix: formatting
bwees Jul 10, 2026
311a9ee
fix: handle resizing message previews
bwees Jul 12, 2026
799cc82
fix: small interactions
bwees Jul 12, 2026
10dce0a
fix: failing test
bwees Jul 12, 2026
9881c5b
refactor: more robust right click capture
bwees Jul 12, 2026
acd1553
fix: scrolling when loading channels
bwees Jul 14, 2026
bf4b185
chore: pin MessagingUI to an exact revision
Avi0n Jul 14, 2026
30014ab
feat: open at the bottom, steady previews
Avi0n Jul 14, 2026
8f2d19b
fix: address SwiftFormat
Avi0n Jul 14, 2026
4399cbe
feat: open at the new messages divider
Avi0n Jul 14, 2026
e077ad6
fix: trailing-align outgoing bubble content
Avi0n Jul 14, 2026
72e3265
fix: link previews stuck in shimmer on first view
Avi0n Jul 14, 2026
51ce173
chore: address SwiftFormat
Avi0n Jul 14, 2026
c049713
chore: code review cleanup
bwees Jul 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions MC1/Resources/Generated/L10n.swift
Original file line number Diff line number Diff line change
Expand Up @@ -999,22 +999,6 @@ public enum L10n {
return L10n.tr("Chats", "chats.scrollButton.scrollToBottom.accessibilityValue", p1, fallback: "%d unread messages")
}
}
public enum ScrollToDivider {
/// Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button
public static let accessibilityHint = L10n.tr("Chats", "chats.scrollButton.scrollToDivider.accessibilityHint", fallback: "Double-tap to scroll to the new messages divider")
/// Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button
public static let accessibilityLabel = L10n.tr("Chats", "chats.scrollButton.scrollToDivider.accessibilityLabel", fallback: "Scroll to new messages")
}
public enum ScrollToMention {
/// Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button
public static let accessibilityHint = L10n.tr("Chats", "chats.scrollButton.scrollToMention.accessibilityHint", fallback: "Double-tap to navigate to the message")
/// Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button
public static let accessibilityLabel = L10n.tr("Chats", "chats.scrollButton.scrollToMention.accessibilityLabel", fallback: "Scroll to your oldest unread mention")
/// Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions
public static func accessibilityValue(_ p1: Int) -> String {
return L10n.tr("Chats", "chats.scrollButton.scrollToMention.accessibilityValue", p1, fallback: "%d unread mentions")
}
}
}
public enum Search {
/// Location: ChatsView.swift - Search placeholder
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/de.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Zur ältesten ungelesenen Erwähnung scrollen";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Doppeltippen, um zur Nachricht zu navigieren";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d ungelesene Erwähnungen";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Zur neuesten Nachricht scrollen";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Zu neuen Nachrichten scrollen";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Doppeltippen, um zur Trennlinie der neuen Nachrichten zu scrollen";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -809,7 +794,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Pfad";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Pfadkarte";

Expand Down Expand Up @@ -916,7 +900,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Fertig";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
16 changes: 0 additions & 16 deletions MC1/Resources/Localization/en.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Scroll to your oldest unread mention";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Double-tap to navigate to the message";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d unread mentions";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Scroll to latest message";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Scroll to new messages";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Double-tap to scroll to the new messages divider";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -908,7 +893,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Path";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Path Map";

Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/es.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Ir a tu mención más antigua sin leer";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Toca dos veces para navegar al mensaje";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d menciones sin leer";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Ir al mensaje más reciente";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Ir a los mensajes nuevos";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Pulsa dos veces para ir al divisor de mensajes nuevos";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -809,7 +794,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Ruta";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Mapa de ruta";

Expand Down Expand Up @@ -916,7 +900,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Listo";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/fr.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Aller à votre plus ancienne mention non lue";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Appuyez deux fois pour accéder au message";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d mentions non lues";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Aller au dernier message";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Faire défiler jusqu'aux nouveaux messages";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Appuyez deux fois pour faire défiler jusqu'au séparateur de nouveaux messages";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -809,7 +794,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Chemin";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Carte du trajet";

Expand Down Expand Up @@ -916,7 +900,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Terminé";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/nl.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Scroll naar je oudste ongelezen vermelding";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Dubbeltik om naar het bericht te navigeren";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d ongelezen vermeldingen";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Scroll naar nieuwste bericht";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Scroll naar nieuwe berichten";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Dubbeltik om naar de scheidingslijn voor nieuwe berichten te scrollen";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -809,7 +794,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Pad";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Padkaart";

Expand Down Expand Up @@ -916,7 +900,6 @@
/* Location: Various - Done button */
"chats.common.done" = "Klaar";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/pl.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Przewiń do najstarszej nieprzeczytanej wzmianki";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Dotknij dwukrotnie, aby przejść do wiadomości";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d nieprzeczytanych wzmianek";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Przewiń do najnowszej wiadomości";

Expand All @@ -127,12 +118,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Przewiń do nowych wiadomości";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Stuknij dwukrotnie, aby przewinąć do separatora nowych wiadomości";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -804,7 +789,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Ścieżka";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Mapa trasy";

Expand Down Expand Up @@ -908,7 +892,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Gotowe";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/ru.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Перейти к самому старому непрочитанному упоминанию";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Двойное нажатие для перехода к сообщению";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d непрочитанных упоминаний";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Перейти к последнему сообщению";

Expand All @@ -126,12 +117,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Прокрутить к новым сообщениям";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Нажмите дважды, чтобы прокрутить к разделителю новых сообщений";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -803,7 +788,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Путь";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Карта пути";

Expand Down Expand Up @@ -907,7 +891,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Готово";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
17 changes: 0 additions & 17 deletions MC1/Resources/Localization/uk.lproj/Chats.strings
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,6 @@

// MARK: - Scroll Buttons

/* Location: ScrollToMentionButton.swift - Accessibility label for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityLabel" = "Перейти до найстарішої непрочитаної згадки";

/* Location: ScrollToMentionButton.swift - Accessibility hint for scroll to mention button */
"chats.scrollButton.scrollToMention.accessibilityHint" = "Подвійний дотик для переходу до повідомлення";

/* Location: ScrollToMentionButton.swift - Accessibility value for unread mention count - %d is the number of unread mentions */
"chats.scrollButton.scrollToMention.accessibilityValue" = "%d непрочитаних згадок";

/* Location: ScrollToBottomButton.swift - Accessibility label for scroll to bottom button */
"chats.scrollButton.scrollToBottom.accessibilityLabel" = "Перейти до останнього повідомлення";

Expand All @@ -126,12 +117,6 @@
/* Location: ScrollToMentionButton.swift, ScrollToBottomButton.swift - Badge text for 99+ unread */
"chats.scrollButton.badge.overflow" = "99+";

/* Location: ScrollToDividerButton.swift - Accessibility label for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityLabel" = "Перейти до нових повідомлень";

/* Location: ScrollToDividerButton.swift - Accessibility hint for scroll to divider button */
"chats.scrollButton.scrollToDivider.accessibilityHint" = "Подвійний дотик для переходу до роздільника нових повідомлень";

// MARK: - Chat View (Direct Messages)

/* Location: ChatConversationView.swift - Alert title when message send fails */
Expand Down Expand Up @@ -803,7 +788,6 @@
/* Location: MessagePathSheet.swift - Section header for path */
"chats.path.section.header" = "Шлях";


/* Location: MessagePathMapView.swift - Path map button and sheet navigation title */
"chats.path.map" = "Карта шляху";

Expand Down Expand Up @@ -907,7 +891,6 @@
/* Location: Various - Done button (use L10n.Localizable.Common.done) */
"chats.common.done" = "Готово";


// MARK: - Message Path

/* Direct message path (no hops) */
Expand Down
Loading
Loading