diff --git a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift index ba56965..2576a4e 100644 --- a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift +++ b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift @@ -685,7 +685,9 @@ struct TranscriptList: View { } action: { _, distance in if distance <= bottomFollowThreshold { isScrolledToBottom = true - } else if !transcriptSettling, distance > bottomUnfollowThreshold, isUserScrolling { + jumpingToBottom = false // arrived — the jump is complete + } else if !transcriptSettling, distance > bottomUnfollowThreshold, isUserScrolling, + !jumpingToBottom { // While the chat is opening the layout grows over a few passes and the offset // lags each growth by a frame — those frames read "not at bottom" even though // `.defaultScrollAnchor(.bottom)` is about to re-pin, so settling accepts