Read-receipt avatars float at the end of the message text instead of the message's right edge #269

Closed
opened 2026-10-04 17:41:28 -04:00 by jared · 0 comments
Owner

What happens
The per-message read-receipt pill sits at the point where the message text ends. Under short messages it floats mid-timeline, at a different horizontal spot on every message (screenshot: Carol's receipt under "filler message 29", Bob's under "latest message from Bob"). LOTUS_FEATURES.md says the pill is shown "at the bottom-right of each message".

Why

  • The message content column is alignSelf="Start" with shrink-to-fit width (src/app/features/room/message/Message.tsx:1114).
  • ReceiptTrigger pushes itself right with marginLeft: 'auto' (src/app/components/read-receipt-avatars/ReadReceiptAvatars.css.ts:11).
  • The right edge of that column is the text's right edge, so that's where the pill ends up.
  • On touch devices MobileTouchTarget also adds a near-empty 44 px row under the message.

Fix: render the pill outside the shrink-to-fit column (in the full-width message row), or give the column alignSelf: stretch for the receipt row only.

Screenshot

F1-receipt-pill.png

More context

Introduced by b361d430 (2026-06-19), which moved the hover styling into ReadReceiptAvatars.css.ts with marginLeft: 'auto'. The same misplacement shows in the thread panel (the receipt under a thread root floats mid-panel).

Who: everyone, on every message that has a reader. It's most visible on short messages.

Acceptance criteria: the pill's right edge aligns with the message row's right edge (the timestamp column) for short and long messages, in Modern and Compact layouts, in the main timeline and the thread panel.


Found in the October 2026 client audit (Playwright against a local Synapse + LiveKit stack, plus code reading). Code refs are at cinny 30e2dbcd, cinny-desktop 8f67ec7, element-call 3b0050e8.

**What happens** The per-message read-receipt pill sits at the point where the message **text** ends. Under short messages it floats mid-timeline, at a different horizontal spot on every message (screenshot: Carol's receipt under "filler message 29", Bob's under "latest message from Bob"). LOTUS_FEATURES.md says the pill is shown "at the bottom-right of each message". **Why** - The message content column is `alignSelf="Start"` with shrink-to-fit width (src/app/features/room/message/Message.tsx:1114). - `ReceiptTrigger` pushes itself right with `marginLeft: 'auto'` (src/app/components/read-receipt-avatars/ReadReceiptAvatars.css.ts:11). - The right edge of that column is the text's right edge, so that's where the pill ends up. - On touch devices `MobileTouchTarget` also adds a near-empty 44 px row under the message. **Fix:** render the pill outside the shrink-to-fit column (in the full-width message row), or give the column `alignSelf: stretch` for the receipt row only. **Screenshot** ![F1-receipt-pill.png](https://code.lotusguild.org/attachments/96d077d9-3e77-48f8-8aa2-f3d03710368e) ### More context **Introduced by** b361d430 (2026-06-19), which moved the hover styling into `ReadReceiptAvatars.css.ts` with `marginLeft: 'auto'`. The same misplacement shows in the **thread panel** (the receipt under a thread root floats mid-panel). **Who:** everyone, on every message that has a reader. It's most visible on short messages. **Acceptance criteria:** the pill's right edge aligns with the message row's right edge (the timestamp column) for short and long messages, in Modern and Compact layouts, in the main timeline and the thread panel. --- _Found in the October 2026 client audit (Playwright against a local Synapse + LiveKit stack, plus code reading). Code refs are at cinny `30e2dbcd`, cinny-desktop `8f67ec7`, element-call `3b0050e8`._
jared added the bugpriority: lowarea: messaging labels 2026-10-04 17:41:28 -04:00
jared closed this issue 2026-10-19 15:59:47 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#269