Skip to content

Fix CRT-off consecutive reply bar 1px offset and vertical overlap.#9932

Open
svelle wants to merge 2 commits into
mainfrom
cursor/fix-crt-reply-bar-offset-ca9d
Open

Fix CRT-off consecutive reply bar 1px offset and vertical overlap.#9932
svelle wants to merge 2 commits into
mainfrom
cursor/fix-crt-reply-bar-offset-ca9d

Conversation

@svelle

@svelle svelle commented Jul 16, 2026

Copy link
Copy Markdown
Member

Summary

  • When Collapsed Reply Threads is off, consecutive same-user thread replies replace the avatar with a spacer
  • That spacer used marginLeft: 34/33 instead of the avatar width (PROFILE_PICTURE_SIZE = 32), shifting the reply bar by 1–2px
  • Align the consecutive-post spacer to PROFILE_PICTURE_SIZE so reply bars line up with the first reply

Root cause

In app/components/post_list/post/post.tsx, consecutivePostContainer.marginLeft was Platform.select({ios: 34, android: 33}) while a normal avatar column is 32px wide. Webhook icon buffers (which those values appear to mirror) never apply on the consecutive path because areConsecutivePosts excludes webhooks.

Testing

  • tested on android emulator:

Horizontal line issue before:

image

vertical line issue before:

image

vertical line issue after:

image
Fixed a 1-2px offset in consecutive threaded replies when CRT view is disabled.
Open in Web Open in Cursor 

Align the consecutive-post avatar spacer to PROFILE_PICTURE_SIZE so
same-user thread replies no longer shift the reply bar by 1–2px.
@mm-cloud-bot

Copy link
Copy Markdown

@svelle: Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it.

Details

I understand the commands that are listed here

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Coverage Comparison Report

Generated on July 17, 2026 at 11:04:33 UTC

+-----------------+------------+------------+-----------+
| Metric          | Main       | This PR    | Diff      |
+-----------------+------------+------------+-----------+
| Lines           |     88.09% |     88.04% |    -0.05% |
| Statements      |     87.96% |     87.91% |    -0.05% |
| Branches        |     76.88% |     76.85% |    -0.03% |
| Functions       |     87.37% |     87.30% |    -0.07% |
+-----------------+------------+------------+-----------+
| Total           |     85.07% |     85.02% |    -0.05% |
+-----------------+------------+------------+-----------+

@svelle svelle added Build App for iOS Build the mobile app for iOS Build App for Android Build the mobile app for Android labels Jul 16, 2026
Each reply post rendered its own translucent (opacity 0.1) bar meant to
line up seamlessly with neighboring replies in the same thread. At
non-integer device pixel ratios, Yoga rounds each bar's box
independently, so adjacent bars can overlap by a device pixel; two
translucent layers stacked there blend to a visibly darker line. Baking
the blend against centerChannelBg into an opaque color means an
accidental 1px overlap draws the same solid color twice instead of
compounding it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@mattermost-build mattermost-build added the E2E/Run Triggers E2E tests on both iOS and Android via Matterwick label Jul 17, 2026
@svelle svelle changed the title Fix CRT-off consecutive reply bar 1px offset Fix CRT-off consecutive reply bar 1px offset and vertical overlap. Jul 17, 2026
@svelle
svelle marked this pull request as ready for review July 17, 2026 12:49
@svelle
svelle requested a review from enahum July 17, 2026 12:53
@svelle

svelle commented Jul 17, 2026

Copy link
Copy Markdown
Member Author

@enahum lmk if you're not the right person to review this.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 41c28299-f34a-426a-bd89-08f60fc406c2

📥 Commits

Reviewing files that changed from the base of the PR and between f1e263b and 16554b3.

📒 Files selected for processing (2)
  • app/components/post_list/post/body/body.tsx
  • app/components/post_list/post/post.tsx

📝 Walkthrough

Walkthrough

Post list styling now blends theme colours for the reply bar and uses the shared profile picture size constant for consecutive-post spacing, replacing the previous opacity and platform-specific layout values.

Changes

Post display styling

Layer / File(s) Summary
Reply bar colour blending
app/components/post_list/post/body/body.tsx
The reply bar background uses blendColors to blend theme.centerChannelBg and theme.centerChannelColor at a factor of 0.1.
Consecutive-post avatar spacing
app/components/post_list/post/post.tsx
The consecutive-post container uses PROFILE_PICTURE_SIZE for marginLeft instead of platform-specific values.

Estimated code review effort: 1 (Trivial) | ~5 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main UI fix for consecutive reply bar offset and overlap.
Description check ✅ Passed The description matches the changes and explains the spacing and overlap fixes in the updated components.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cursor/fix-crt-reply-bar-offset-ca9d

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mattermost-build mattermost-build removed the E2E/Run Triggers E2E tests on both iOS and Android via Matterwick label Jul 17, 2026
@svelle
svelle requested review from a team and nickmisasi and removed request for a team and enahum July 20, 2026 14:04

@nickmisasi nickmisasi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - let's ensure this is tested on both Android and iOS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Build App for Android Build the mobile app for Android Build App for iOS Build the mobile app for iOS release-note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants