SwiftUI: reveal message timestamps on swipe - #8620
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This adds a substantial user-facing iOS transcript interaction involving gesture arbitration, row overlays, streaming updates, accessibility, and bottom-anchor scrolling. Its production behavior extends well beyond a small isolated UI tweak, so the interaction and scrolling impact should receive human review. You can add or adjust custom eligibility rules. Learn more. |
…eveal Two review findings on the swipe-to-reveal timestamps feature: Eligibility (streaming -> complete) decided a structural branch around the message view, so completing a stream rebuilt the row and dropped MarkdownMessageView's @State, breaking its streaming -> complete promote path. The message view now sits at one fixed structural position and only the timestamp overlay is conditional; the accessibility modifier branches on role, which never changes, and announces an empty value while a message is still streaming. Dismissing the reveal zeroed the anchors immediately, so timestamps faded out while drifting to their row midpoints and the transcript re-anchored mid-dismissal. beginDismissal() now only zeroes the width; the anchors survive the slide-back and are cleared by the release animation's completion, guarded by a generation counter so a stale completion cannot settle a newer gesture. The collection view mirrors timestampReveal.isActive on every update so resets that bypass the completion cannot leave the bottom-anchor suppression stuck on. Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e87bce8. Configure here.

What Changed
Reveal message timestamps by swiping the SwiftUI transcript left, keeping each time aligned with its message. Releasing or cancelling returns the transcript to its normal position.
Why
This makes several message times visible together while preserving vertical scrolling, text selection, code-block scrolling, streaming updates and accessibility.
Verification and remaining proof
Candidate:
bfb058405a28d78e87eec3923475720180744507. This PR targetst3code/rebuild-mobile-app-swift; its historical integration base isb67837984e5650888b1eed0e1cd7fff83625f696. The current native parent inspected in the readiness review isb99405468a6b2be1e0f67d551ece824b1627e35c. Merging this child does not by itself deliver the native app to upstream main.The hosted native build/test job passed on the candidate. The earlier description reports passing Check, Test and native CI on this candidate. It provides no current integrated replacement recording; its previous media was removed after anonymous requests returned 404. No local build, test or client session was run for this description update; full historical local invocations were not recovered here.
Adapt the transcript wrapper to the current parent and capture gesture competition, streaming, bottom anchoring, release/cancel, Reduce Motion and VoiceOver. Historical occupied Simulator slots are not a current capacity check. This PR is not evidence-complete for human merge review against the current native parent.
UI evidence gap
Current comparable before/after captures and interaction proof remain missing. No illustrative or synthetic media is presented as application proof.
Description and evidence audit: GPT-6 in Codex, using prepare-proof-media from #9926.