Repository navigation
fix(chat): apply speaker rules to replies and reactions, and match the never composer design - #922
Merged
Merged
Conversation
bmc08gt
added this pull request to stack #923
September 30, 2026 17:08
…a never speaker rule The never rule replaces the composer with a disabled, non-interactive Liquid Glass capsule at the composer's height carrying one muted line, instead of the gate card that said messages can't be sent. Balance and staff panels are unchanged. capsuleGlassBackground gains an interactive flag (default unchanged); iOS below 26 keeps its ultra-thin material fallback.
…sage MessageCapability.resolve now drops Reply from any message when the viewer cannot speak, and ChatItem.from withholds reactions the same way, not only for widgets. Copy, Report and the sender's own Edit/Delete are unchanged; a DM always passes.
The pill was a capsule of plain glass, lighter than the design. It is now non-interactive glass in a RoundedRectangle at Metrics.boxRadius, tinted with backgroundMain at 0.46 (node 10588:1969). Below iOS 26 the same fill lies over the ultra-thin material.
bmc08gt
force-pushed
the
fix/chat-never-composer
branch
from
September 30, 2026 17:11
8b0bbfd to
0c30670
Compare
bmc08gt
removed this pull request from stack #923
September 30, 2026 17:14
bmc08gt
added this pull request to stack #924
September 30, 2026 17:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
iOS offered Reply and reactions on every message in a chat the viewer can't speak in, and its
neverpanel read "Messages can't be sent in this chat" instead of the design's copy. This aligns both with Android's code-payments/code-android-app#1631.Stacked on #919, which added the widget's
canSpeakgating.MessageCapability.resolvedrops Reply, andChatItem.fromdrops reactions, from text, cash and widget messages whencanSpeakis false or the viewer isn't a member.canSpeakcomes fromconversationGate(session:rules:rates:), the same check that decides whether the composer is live. Copy, Report and your own Edit/Delete are unchanged. DMs keep Reply.nevercomposer (node 10588:1969):ConversationGatePaneldraws.readOnly(.never)as a pill reading "Only Flipcash can send messages", with no field or buttons. It's glass tinted withColor.backgroundMainat 0.46 to match the design's fill, atMetrics.boxRadius(12pt), and non-interactive. Below iOS 26 it falls back to the ultra-thin material with the same fill on top. Balance and staff panels are unchanged.MessageCapabilityTestscovers can-speak and cannot-speak for text and cash, your own messages, and a DM.NeverComposerRenderTestschecks the sentence and renders the pill.The render test writes a PNG only when
TEST_RUNNER_NEVER_COMPOSER_PNGis set;Scripts/test.shdoesn't forward the unprefixed name.