Skip to content

fix(chat): separate sender runs in a group by the author, not by isFromSelf - #1477

Merged
bmc08gt merged 1 commit into
code/cashfrom
fix/chat-sender-run-spacing
Sep 17, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
fix/chat-sender-run-spacing

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

A group transcript ran two members' messages together. Every neighbour comparison in the transcript used isFromSelf as a stand-in for the author, which is right in a DM and wrong in a group, where every member's message is incoming alike: Noah's last bubble and Chloe's first sat at the tight same-sender gap with their corners grouped into one stack, and the name and picture that start a run had nowhere to go.

ContentBubble.isSameAuthorAs answers the question with sender where isFromSelf cannot, and both the row gap and the bubble corners ask it. A change of author now opens grid.x3 — 12dp on the 4pt grid the design is drawn on (node 10127:117120), 15dp on the app's dynamic 5pt grid at normal phone width.

The avatar gutter is also reserved on every incoming row of a group rather than on rows carrying a resolved sender. It was already meant to hold the whole run so bubbles keep one left edge; keying it to the row's own sender dropped it while a member's profile was still resolving, which pushed the bubble out to the inset until the name arrived.

rowGapBelow is extracted pure and tested alongside startsSenderRun, and GroupTranscriptScreenshotTest renders a two-sender transcript to build/screenshots/ for the layout itself. Measured off that render at xhdpi: 5dp between bubbles within a run, and the wide gap between runs where a tight one used to be.

…omSelf

A group transcript ran two members' messages together: `isFromSelf` stood in
for the author everywhere the rows compare neighbours, and every member's
message is incoming alike. Noah's last bubble and Chloe's first sat at the
tight same-sender gap with their corners grouped into one stack, and the
name and picture that start the run had nowhere to go.

`ContentBubble.isSameAuthorAs` answers it with `sender` where `isFromSelf`
cannot, and the row gap and the bubble corners both ask it. A change of
author now opens `grid.x3` — 12dp on the 4pt grid the design is drawn on
(node 10127:117120).

The avatar gutter is also reserved on every incoming row of a group rather
than on rows that carry a resolved `sender`. It was already meant to hold
the whole run so bubbles keep one left edge; keying it to the row's own
sender dropped it while a member's profile was still resolving, which
pushed the bubble out to the inset until the name arrived.

`rowGapBelow` is extracted pure and tested alongside `startsSenderRun`, and
`GroupTranscriptScreenshotTest` renders a two-sender transcript to
`build/screenshots/` for the layout itself.
@bmc08gt bmc08gt self-assigned this Sep 17, 2026
@github-actions github-actions Bot added the type: fix Bug fix label Sep 17, 2026
@bmc08gt
bmc08gt merged commit fd77034 into code/cash Sep 17, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the fix/chat-sender-run-spacing branch September 23, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant