Skip to content

Android: force override of the outgoing quoted-reply slot#52

Open
jurgenploeger wants to merge 1 commit into
mainfrom
jurgen/android-quoted-reply-override
Open

Android: force override of the outgoing quoted-reply slot#52
jurgenploeger wants to merge 1 commit into
mainfrom
jurgen/android-quoted-reply-override

Conversation

@jurgenploeger

@jurgenploeger jurgenploeger commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What

Adds one bubble-region rule to the Android design-matching skill: when the outgoing bubble contains a quoted reply, override MessageQuotedContent for the mine branch instead of leaving the SDK default. Left at the default, a styled outgoing bubble still renders the quote as a separate rounded card with text that inverts in dark.

Why this is separate from the existing bubble rules

The contrast and empty-author inset rules (PR #50) style the main bubble, so the region looks handled. But the quote is a separate slot with its own tokens: the default QuotedMessage derives fill and text from chatBgAttachmentOutgoing and chatTextOutgoing, independent of the fill you pinned. It is the bubble-color trap one level down, in a slot you did not touch, which is exactly why it gets missed. Its own rule, at the build point, rather than a line buried in the main bubble note.

There is also a non-obvious binding trap the rule has to carry: the slot's params are swapped. params.message is the quoted message and params.replyMessage is the container, and the SDK's own param doc comment states this backwards, so the mine-check keys on the wrong field unless the rule says otherwise.

Evidence

Fixed-n benchmark, clean rebuilds from scratch, Bumble target, both light and dark, measured by pixel sampling.

  • Without the rule: 0 of 3 cold runs produced a faithful quote. All three left the default card.
  • With the rule: 3 of 3 clean single-pass passes.

An earlier version of the rule that omitted the param note passed once but stumbled on the swapped binding and self-corrected mid-run; adding the param note closed that, and the three runs above show no recurrence.

Reference

bumble-message-view-android

Findings (without the rule)

Default SDK quote: separate pale rounded card, and the quote text inverts in dark.

bumble-baseline-outgoing-light bumble-baseline-outgoing-dark

Improvements (with the rule)

Quote flush on the gold fill, white accent bar, near-black ink matched to the main text, no card, no dark inversion.

message-light message-dark

Notes

One rule at the build point plus a verify step. Scope is text-only quotes; attachment-preview quotes are out of scope and marked so in the rule. Incoming quotes delegate to the SDK default, unchanged.

Related Findings item: "Quoted reply renders as a separate box, not an accent bar on the fill."

- direct overriding MessageQuotedContent for the outgoing (mine) branch, so the quote does not fall back to the SDK default card and derived inverting ink
- name the swapped slot params (params.message is the quoted message, params.replyMessage is the container) so the mine-check keys on the right field; the SDK param doc comment states this backwards
- pin quote author and text to the main bubble ink, draw flush on the fill with the accent bar, delegate the incoming branch to default, text-only
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant