Repository navigation
fix(chat): keep the long-press menu off its neighbours - #904
Merged
Merged
Conversation
Long-pressing any bubble slid the group's invite card at the top of the transcript down over its own reaction pills, and it stayed there until the next scroll. The menu froze the transcript's inset by switching `contentInsetAdjustmentBehavior` to `.never`, which changes the safe area UIKit hands down to the rows; the SwiftUI-hosted card under the nav bar re-laid itself out for it. The freeze now holds the bottom inset at its keyboard-up value and leaves the mode at `.always`. The shift predates #898: it has been there since the freeze landed, and only showed once pills sat under a hosted card. The strip now takes whichever side of the bubble the menu didn't. UIKit picks the menu's side, and a bubble near the bottom got the menu and strip both above it. The taller lift from #898 now applies only to bubbles too close to the top for the strip to fit above; elsewhere it left an empty band between the bubble and a menu placed above it. The lift's copy fades out as the row's bubble reappears. UIKit keeps the copy above the transcript for about 0.4s after it lands, so a bubble partly under the bar's soft edge stayed sharp until it went.
UIKit's context menu can't slide only the pressed bubble to a spot with the strip above and the menu below. This records what the device investigation ruled out and the shape of an overlay that can.
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.
Long-pressing any bubble slid the group's invite card at the top of the transcript down over its own reaction pills, and it stayed there until the next scroll.
Cause. The menu froze the transcript's inset by switching
contentInsetAdjustmentBehaviorfrom.alwaysto.never. That changes the safe area UIKit passes to the rows, and the SwiftUI-hosted card under the nav bar re-laid itself out for it. Skipping the freeze on a device stopped the shift. It predates #898: a bisect back to #879 was bad throughout, because the freeze is older and the shift only shows once pills sit under a hosted card.Changes
.always, so the keyboard dropping under the menu still doesn't move the transcript.This keeps UIKit's menu, so the menu still goes above a bubble near the bottom. Sliding only the bubble up, WhatsApp-style, needs our own overlay;
.claude/plans/2026-09-29-chat-custom-context-menu.mdrecords why and how.Replaces #903.