Fix thread indicator tokens for reply link and connector - #1555
Fix thread indicator tokens for reply link and connector#1555martinmitrevski wants to merge 4 commits into
Conversation
The thread reply link used textPrimary instead of the link color, and the connector line joining the indicator to the bubble was stroked with the bubble background tokens, leaving it with almost no contrast against the message list. Point the dependency at the connector-colors branch, which introduces chatThreadConnectorIncoming and chatThreadConnectorOutgoing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. π βΉοΈ Recent review infoβοΈ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: β Files ignored due to path filters (10)
π Files selected for processing (1)
π§ Files skipped from review as they are similar to previous changes (1)
π WalkthroughWalkthroughThe dependency is pinned to a specific revision. ChangesThread reply styling
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: π₯ Pre-merge checks | β 5β Passed checks (5 passed)
β¨ Finishing Touchesπ Generate docstrings
π§ͺ Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
π§Ή Nitpick comments (1)
StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift (1)
1482-1505: π Maintainability & Code Quality | π΅ Trivial | β‘ Quick winCover the inverted reply style.
This test uses the default
usesInvertedStyle: false. It validates the outgoing connector and non-invertedtextLinkpath only.Sources/StreamChatSwiftUI/ChatMessageList/MessageContainerView.swiftpassesshownAsPreviewintoMessageRepliesView, so thetextOnAccentpath is production-reachable. Add a snapshot withusesInvertedStyle: true, or verify that an existing test covers it.π€ Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift` around lines 1482 - 1505, The snapshot coverage for test_messageRepliesViewSentByCurrentUser_snapshot only exercises the default non-inverted style. Add a corresponding snapshot configuration with usesInvertedStyle set to true, ensuring MessageRepliesView receives the inverted style and validates the textOnAccent path while preserving the existing outgoing connector coverage.
π€ Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift`:
- Around line 1482-1505: The snapshot coverage for
test_messageRepliesViewSentByCurrentUser_snapshot only exercises the default
non-inverted style. Add a corresponding snapshot configuration with
usesInvertedStyle set to true, ensuring MessageRepliesView receives the inverted
style and validates the textOnAccent path while preserving the existing outgoing
connector coverage.
βΉοΈ Review info
βοΈ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 4b79e923-1f42-46c4-9133-4a277e9890ea
β Files ignored due to path filters (10)
StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messagePreview_threadReplies_snapshot.default-light.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messagePreview_threadReplies_snapshot.extraExtraExtraLarge-light.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messagePreview_threadReplies_snapshot.rightToLeftLayout-default.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messagePreview_threadReplies_snapshot.small-dark.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageRepliesViewSentByCurrentUser_snapshot.default-dark.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageRepliesViewSentByCurrentUser_snapshot.default-light.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageRepliesViewShownInChannel_snapshot.1.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageRepliesView_snapshot.1.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlayView_allAnnotations.default-dark.pngis excluded by!**/*.pngStreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlayView_allAnnotations.default-light.pngis excluded by!**/*.png
π Files selected for processing (5)
CHANGELOG.mdPackage.swiftSources/StreamChatSwiftUI/ChatMessageList/MessageRepliesView.swiftStreamChatSwiftUI.xcodeproj/project.pbxprojStreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift
There was a problem hiding this comment.
We need to adjust the thread connector, it can't overlap the bubble anymore because it has a different color.
There was a problem hiding this comment.
can you check if this is ok?
There was a problem hiding this comment.
Caution
Some comments are outside the diff and canβt be posted inline due to platform limitations.
β οΈ Outside diff range comments (1)
CHANGELOG.md (1)
4-25: π Maintainability & Code Quality | π‘ Minor | β‘ Quick winMove the new entry under
# Upcoming, not under the released5.8.0section.The new entry at Line 25, "Fix the thread reply link color and the low contrast of the thread indicator's connector line [
#1555]," sits under### π Fixed(Line 14), which now falls under the# [5.8.0]release header (Line 8), dated "August 03, 2026". This places the entry in an already-cut, dated release instead of the unreleased section.Add this entry under
# Upcoming(Line 4) in its own### π Fixedsubsection instead.π Proposed fix
# Upcoming -### π Changed +### π Fixed +- Fix the thread reply link color and the low contrast of the thread indicator's connector line [`#1555`](https://github.com/GetStream/stream-chat-swiftui/pull/1555) # [5.8.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/5.8.0) _August 03, 2026_ ... ### π Fixed - Fix media attachment picker being unresponsive and slow with many iCloud assets [`#1546`](https://github.com/GetStream/stream-chat-swiftui/pull/1546) @@ - Fix thread list items appearing lighter than the app background in dark mode [`#1550`](https://github.com/GetStream/stream-chat-swiftui/pull/1550) -- Fix the thread reply link color and the low contrast of the thread indicator's connector line [`#1555`](https://github.com/GetStream/stream-chat-swiftui/pull/1555)π€ Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@CHANGELOG.md` around lines 4 - 25, Move the entry about fixing the thread reply link color and thread indicator's connector line from the "### π Fixed" subsection under the "# [5.8.0]" release header to a new "### π Fixed" subsection under the "# Upcoming" section at the top of the changelog. This ensures unreleased changes are documented in the Upcoming section rather than in the already-dated 5.8.0 release section.Source: Coding guidelines
π§Ή Nitpick comments (1)
StreamChatSwiftUI.xcodeproj/project.pbxproj (1)
1546-1547: π Maintainability & Code Quality | π΅ Trivial | β‘ Quick winTrack the temporary revision pin for repinning.
This pins
stream-chat-swiftto a specific commitb1842c5e95698c420b2462615ff9cee7d90dacb7on theconnector-colorsbranch instead of a released version. The PR objectives state this must be repinned after that branch merges into the default branch. Confirm a follow-up task or issue exists to track this repin, so the dependency does not stay on a branch commit after release.π€ Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@StreamChatSwiftUI.xcodeproj/project.pbxproj` around lines 1546 - 1547, Verify that a tracking issue or task exists in your project management system (such as GitHub Issues, Jira, or your team's tracker) that documents the need to repin the stream-chat-swift dependency away from the temporary revision b1842c5e95698c420b2462615ff9cee7d90dacb7 once the connector-colors branch merges into the default branch. If no such task exists, create one with clear instructions to update the revision pin to a released version and link it to this PR so the temporary pin does not persist after release.
π€ Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@CHANGELOG.md`:
- Around line 4-25: Move the entry about fixing the thread reply link color and
thread indicator's connector line from the "### π Fixed" subsection under the
"# [5.8.0]" release header to a new "### π Fixed" subsection under the "#
Upcoming" section at the top of the changelog. This ensures unreleased changes
are documented in the Upcoming section rather than in the already-dated 5.8.0
release section.
---
Nitpick comments:
In `@StreamChatSwiftUI.xcodeproj/project.pbxproj`:
- Around line 1546-1547: Verify that a tracking issue or task exists in your
project management system (such as GitHub Issues, Jira, or your team's tracker)
that documents the need to repin the stream-chat-swift dependency away from the
temporary revision b1842c5e95698c420b2462615ff9cee7d90dacb7 once the
connector-colors branch merges into the default branch. If no such task exists,
create one with clear instructions to update the revision pin to a released
version and link it to this PR so the temporary pin does not persist after
release.
βΉοΈ Review info
βοΈ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 01125fa1-e4cd-4157-bd0a-2cdbc549f95b
π Files selected for processing (3)
CHANGELOG.mdPackage.swiftStreamChatSwiftUI.xcodeproj/project.pbxproj
π§ Files skipped from review as they are similar to previous changes (1)
- Package.swift
The connector was drawn in a fixed-height frame centred on the replies row, which started the line roughly 18pt up inside the bubble. That was invisible while the stroke reused the bubble's background colour, but the dedicated connector colour made it show along the bubble's edge. Anchor the path to the bubble's bottom edge and to the avatar's centre, derived from the row's measured height so it also holds at larger dynamic type sizes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Public Interfaceπ No changes affecting the public interface. |
SDK Size
|
StreamChatSwiftUI XCSize
|
|
| ], | ||
| dependencies: [ | ||
| .package(url: "https://github.com/GetStream/stream-chat-swift.git", from: "5.8.0") | ||
| .package(url: "https://github.com/GetStream/stream-chat-swift.git", revision: "b1842c5e95698c420b2462615ff9cee7d90dacb7") |
There was a problem hiding this comment.
Reminder to change to develop



π Issue Links
None linked yet.
π― Goal
The thread indicator shown under a message with replies had the wrong design tokens applied, so the reply link did not read as a link and the connector line joining the indicator to the message bubble was barely visible.
π Summary
text/linkcolor instead of primary text.chat/thread/connector-incomingfor incoming messages andchat/thread/connector-outgoingfor outgoing ones, giving it proper contrast.π Implementation
MessageRepliesViewwas stroking the connector path with the message bubble background tokens (chatBackgroundIncoming/chatBackgroundOutgoing). Since the bubble background is close to the message list background, the line had almost no contrast. It now uses the dedicated connector tokens, which are backed by a border token for incoming and a brand tint for outgoing.The reply label was using
textPrimary. It now usestextLink. TheusesInvertedStylebranch still resolves totextOnAccent, since in the message actions preview the indicator is rendered on an accent background.The two connector tokens are added in
stream-chat-swift, so the dependency is temporarily pointed at theconnector-colorsbranch in bothPackage.swiftand the Xcode project.Important
This should not be merged until the
connector-colorsbranch is merged instream-chat-swiftand the dependency here is re-pinned to a revision on the default branch.π¨ Showcase
The updated snapshot references are part of the diff.
test_messageRepliesView_snapshotandtest_messageRepliesViewSentByCurrentUser_snapshotshow the incoming and outgoing indicator in isolation;test_reactionsOverlayView_allAnnotationsandtest_messagePreview_threadReplies_snapshotshow it in context.π§ͺ Manual Testing Notes
In the demo app, open a channel with a message that has thread replies. The "N Thread Replies" label should be link-blue, and the curved connector joining it to the bubble should be clearly visible β a neutral border color for incoming messages and a brand tint for your own messages. Check both light and dark mode, and a right-to-left locale to confirm the connector still mirrors correctly.
βοΈ Contributor Checklist
docs-contentrepoSummary by CodeRabbit
Bug Fixes
Tests