Skip to content

fix(chat): arm the reply swipe only where the bubble is - #1501

Merged
bmc08gt merged 1 commit into
code/cashfrom
fix/reply-swipe-gutter
Sep 18, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
fix/reply-swipe-gutter

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

The avatar column was already inert, but the rule was keyed off that column being reserved — which only happens on an incoming row of a group. Every outgoing row still armed from its leading edge, where the bubble is aligned to the far side and there is nothing under the finger, in a DM and in a group alike.

replyGutterFor derives the strip from where the bubble sits instead of from what the row reserves: inert unless the bubble reaches the leading edge, which is true for exactly one kind of row.

Row Before After
Group, incoming inert (avatar column) inert
Group, outgoing armed inert
DM, incoming armed armed
DM, outgoing armed inert

A drag that starts on a bubble always replies. The strip keeps the avatar column's 30dp and cannot reach an outgoing bubble, which stops at 0.78 of the row width. The only content that fills the row edge to edge is a system notice, and resolveCapabilities returns an empty set for those, so no drag there was going to reply.

The decision comes out of the composable as a pure function, so SwipeToReplyTest covers it directly, one case per row kind.

The ask was about DMs. A group's outgoing rows are included because they have the same empty leading strip and would otherwise be the one place the old behaviour survived.

The avatar column was already inert, but the rule was keyed off that column
being reserved, which only happens on an incoming row of a group. Every outgoing
row still armed from its leading edge, where the bubble is aligned to the far
side and there is nothing under the finger — in a DM and in a group alike.

`replyGutterFor` derives the strip from where the bubble sits instead: inert
unless the bubble reaches the leading edge, which is true for exactly one kind of
row, an incoming message in a DM.

A drag that starts on a bubble still always replies. The strip keeps the avatar
column's 30dp and cannot reach an outgoing bubble, which stops at 0.78 of the row
width; the only content that fills the row edge to edge is a system notice, and
`resolveCapabilities` returns an empty set for those.
@bmc08gt bmc08gt self-assigned this Sep 18, 2026
@github-actions github-actions Bot added the type: fix Bug fix label Sep 18, 2026
@bmc08gt
bmc08gt merged commit d59ca1e into code/cash Sep 18, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the fix/reply-swipe-gutter branch September 23, 2026 16:45
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