diff --git a/NucleicRemote/NucleicRemote/Views/AdaptiveRootView.swift b/NucleicRemote/NucleicRemote/Views/AdaptiveRootView.swift index 7b29ced..48bccd8 100644 --- a/NucleicRemote/NucleicRemote/Views/AdaptiveRootView.swift +++ b/NucleicRemote/NucleicRemote/Views/AdaptiveRootView.swift @@ -50,12 +50,12 @@ struct CompactRootView: View { @State private var barHeight: CGFloat = 72 /// The bar owns the bottom edge on the top-level tabs, but yields it to a pushed session's - /// floating glass chat bar (`compactDetailPresented`, driven by `SessionsView`'s navigation - /// path) and to the new-chat composer while it's up (`showNewChat`) — both slide it out, so the - /// composer doesn't just stack on top of a lingering tab bar. We key off the path rather than - /// `openSessionID` because the path flips the instant a back-swipe begins, whereas - /// `openSessionID` isn't cleared until the detail's `onDisappear` fires at the *end* of the pop - /// transition — which left the bar sliding back up 1–2s late. + /// floating glass chat bar (`compactDetailPresented`) and to the new-chat composer while it's up + /// (`showNewChat`) — both slide it out, so the composer doesn't just stack on top of a lingering + /// tab bar. `compactDetailPresented` is driven by the session lifecycle (`RemoteStore.open`/ + /// `closeOpen`), so the bar hides whenever a session view opens — no matter which tab launched + /// it, not only the Sessions list. `SessionsView` additionally clears it the instant a + /// back-swipe begins (the path empties before `onDisappear` fires) for a snappy re-show. private var showsTabBar: Bool { !store.compactDetailPresented && !showNewChat } /// The "+" is inert without control scope or a project to start in, so it's shown only when a