From f2637c2cc8fe44958d93b65bfaff0308e191f720 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Mon, 6 Jul 2026 04:21:04 -0700 Subject: [PATCH] Truncation Logic Refinement Nucleic-Session: FE1E2C94-7945-4827-AF56-74525A9BD434 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/SessionDetailView.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift index 60bac70..bf20f89 100644 --- a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift +++ b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift @@ -21,6 +21,10 @@ struct SessionDetailView: View { // Owned here (not inside `TranscriptList`) so the jump-to-bottom chevron can ride in the chat // bar just above the composer. `TranscriptList` drives it from the scroll geometry. @State private var isScrolledToBottom = true + // The transcript's on-screen height, measured so the floating approval / question card can cap + // itself to the screen: a long host command or a long list of options must never grow the card + // past the screen edge and push its Allow/Deny (or Submit) buttons out of reach. + @State private var availableHeight: CGFloat = 0 private var summary: WireSessionSummary? { store.sessions.first { $0.sessionID == sessionID }