Repository navigation
fix(chat): stand the jump button outside the bar clip so the reply strip no longer leaks - #1074
Merged
Merged
Conversation
…rip no longer leaks #1068 drew the jump-to-bottom button inside the bar and cut an 88x76pt hole in the bar clip's mask so it could show above the clip. The hole was pinned to the clip's top edge, and that edge is what slides to reveal and hide the reply strip. While it moved, the hole showed the strip's trailing end, and the stray ✕ in it took taps. The button now has its own hosting view, pinned on top of the clip's top edge and below the clip in z-order, so it rides every move of that edge and the clip cuts the bar at its bounds again. The view takes touches only in its trailing 88pt and only while the button shows. It decides by position because SwiftUI answers a tap on its content with the hosting view itself, the same view it returns for empty space.
bmc08gt
added a commit
that referenced
this pull request
Oct 16, 2026
* origin/main: (23 commits) feat(chat): open message links on the linked message (#1055) fix(chat): load the link preview for a draft restored on opening a chat fix(chat): bring a removed link preview back once its link is edited out of the draft fix(chat): animate the composer link card in and out on the chip spring fix(chat): draw the composer link preview as a compact card with its remove button on the corner fix(chat): enlarge the composer link image and pin its remove button to it feat(chat): send a link preview alongside staged photos feat(chat): show the link preview's page in the composer before its image uploads feat(chat): draw a web card from the sender's preview and drop the receive-side fetch feat(chat): build a link preview in the composer and send it with the text feat(chat): carry a text message's link preview on the wire and in the store feat(chat): add the sender-side link preview checks and their shared vectors fix(chat): match Android's update-app bubble border and subtitle fix(chat): stand the jump button outside the bar clip so the reply strip no longer leaks (#1074) build: update release manifest fix(home): draw unselected tab glyphs and labels white on every iOS version (#1073) feat(settings): version card for TestFlight builds, kept current by the release manifest (#1072) feat(settings): add the update dot and version card (#1070) feat(update): tell users when a newer App Store version is out (#1069) feat(chat): jump-to-bottom button with unread badge (#1068) ... # Conflicts: # Flipcash/Core/Screens/Conversation/LinkCardClassifier.swift # Flipcash/Core/Screens/Conversation/LinkCardFeed.swift # Flipcash/Core/Screens/Conversation/LinkCardResolver.swift # Flipcash/Core/Session/SessionAuthenticator.swift # FlipcashCore/Sources/FlipcashCore/Models/Chat/LinkCard.swift # FlipcashTests/Chat/LinkCardResolverTests.swift # FlipcashUI/Sources/FlipcashUI/Chat/ChatShareProfileCell.swift # FlipcashUI/Sources/FlipcashUI/Chat/LinkCardSource.swift # FlipcashUI/Sources/FlipcashUI/Chat/LinkCardView.swift
bmc08gt
added a commit
that referenced
this pull request
Oct 16, 2026
…t/message-link-share * origin/feat/message-link-card: (23 commits) feat(chat): open message links on the linked message (#1055) fix(chat): load the link preview for a draft restored on opening a chat fix(chat): bring a removed link preview back once its link is edited out of the draft fix(chat): animate the composer link card in and out on the chip spring fix(chat): draw the composer link preview as a compact card with its remove button on the corner fix(chat): enlarge the composer link image and pin its remove button to it feat(chat): send a link preview alongside staged photos feat(chat): show the link preview's page in the composer before its image uploads feat(chat): draw a web card from the sender's preview and drop the receive-side fetch feat(chat): build a link preview in the composer and send it with the text feat(chat): carry a text message's link preview on the wire and in the store feat(chat): add the sender-side link preview checks and their shared vectors fix(chat): match Android's update-app bubble border and subtitle fix(chat): stand the jump button outside the bar clip so the reply strip no longer leaks (#1074) build: update release manifest fix(home): draw unselected tab glyphs and labels white on every iOS version (#1073) feat(settings): version card for TestFlight builds, kept current by the release manifest (#1072) feat(settings): add the update dot and version card (#1070) feat(update): tell users when a newer App Store version is out (#1069) feat(chat): jump-to-bottom button with unread badge (#1068) ...
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.
Since #1068, opening or closing the reply strip with the jump-to-bottom button up leaves a box with the strip's ✕ hanging above the composer for a few frames. That stray ✕ also takes taps.
#1068 drew the button inside the bar and cut an 88×76pt hole in the bar clip's mask so it could show above the clip. The hole sat on the clip's top edge, which is the edge that slides to reveal and hide the strip. While the edge moved, the strip's trailing end showed through the hole. Placing the hole from the bar's measured height instead didn't fix it on a device, so this PR removes the hole.
UIHostingController, pinned on top of the clip's top edge and below the clip in z-order. It rides the keyboard and the reply reveal in the same layout pass as the clip. When the attach panel lets the bar draw past its edge, the bar covers the button.BarClipViewloses the mask and the overhang and goes back toclipsToBounds.JumpToBottomButtonView.reach.width(88pt), and only while the button shows. It decides by position rather than by which view claims the touch, because SwiftUI answers a tap on its content with the hosting view itself, the same view it returns for empty space.ChatScreenBarClipTestsreplaces the overhang test with one that checks three things through a reply opening and closing: the button's view stays on the clip's edge, a tap on a showing button reaches it, and taps beside it or on a hidden button fall through.