From 1271682595a97b188c3f2cb39f1a57c25a28190e Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 18:22:22 -0700 Subject: [PATCH] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/Composer.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/Composer.swift b/NucleicRemote/NucleicRemote/Views/Composer.swift index fc49a3c..f57a9e3 100644 --- a/NucleicRemote/NucleicRemote/Views/Composer.swift +++ b/NucleicRemote/NucleicRemote/Views/Composer.swift @@ -6,13 +6,18 @@ import NucleicProtocol /// project (or is scoped to one), types a prompt, optionally toggles Auto. struct StartChatComposer: View { @EnvironmentObject var store: RemoteStore - /// Called after a chat is kicked off, so the presenting sheet can dismiss itself. + /// The prompt text, owned by `NewChatAffordance` so it can coordinate auto-focus and the + /// close-on-empty-dismiss behaviour with the composer. + @Binding var draft: String + /// The prompt field's focus, likewise owned by the affordance (auto-focused on open, resigned + /// to dismiss the keyboard). + var focus: FocusState.Binding + /// Called after a chat is kicked off, so the affordance can dismiss the composer. var onStart: (() -> Void)? = nil /// When set, the composer is scoped to this project and the picker is hidden — used by a /// project page's "+", so the chat always lands in that project. var lockedProject: WireProject? = nil @State private var projectID: ProjectID? - @State private var draft = "" @State private var auto = false @State private var model: String? @State private var effort = MobileEfforts.fallback