From 3a7fe3351c9f4ac3be1317d19c63e20a81f8ccb9 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 17:55:00 -0700 Subject: [PATCH 1/5] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/Composer.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/NucleicRemote/NucleicRemote/Views/Composer.swift b/NucleicRemote/NucleicRemote/Views/Composer.swift index 0e8da3f..e370e84 100644 --- a/NucleicRemote/NucleicRemote/Views/Composer.swift +++ b/NucleicRemote/NucleicRemote/Views/Composer.swift @@ -16,7 +16,6 @@ struct StartChatComposer: View { @State private var auto = false @State private var model: String? @State private var effort = MobileEfforts.fallback - @FocusState private var draftFocused: Bool // Advanced options (the Mac new-session sheet's base branch + worktree fields). @State private var showOptions = false @State private var baseBranch = "" From e2c8d98b5de77a1ba056276ea12b23995d70dc06 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 17:55:08 -0700 Subject: [PATCH 2/5] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/Composer.swift | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/Composer.swift b/NucleicRemote/NucleicRemote/Views/Composer.swift index e370e84..595a878 100644 --- a/NucleicRemote/NucleicRemote/Views/Composer.swift +++ b/NucleicRemote/NucleicRemote/Views/Composer.swift @@ -85,15 +85,14 @@ struct StartChatComposer: View { .transition(.move(edge: .top).combined(with: .opacity)) } HStack(alignment: .bottom, spacing: 8) { - // Plain, borderless field over the glass — matching the open session's chat bar - // rather than a boxed form control. + // Plain, borderless field — matching the open session's chat bar rather than a + // boxed form control. TextField("Describe a task…", text: $draft, axis: .vertical) .textFieldStyle(.plain) .lineLimit(1...5) .padding(.vertical, 3) .orchestraGlow(active: MobileEfforts.isOrchestra(effort) && controlled) .keyboardDismissable() - .focused($draftFocused) Button { if let project = selected { let branch = baseBranch.trimmingCharacters(in: .whitespaces) From 1526d907c8b8c3e3ddccc704778e73d520171177 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 17:55:18 -0700 Subject: [PATCH 3/5] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/Composer.swift | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/Composer.swift b/NucleicRemote/NucleicRemote/Views/Composer.swift index 595a878..7bd501a 100644 --- a/NucleicRemote/NucleicRemote/Views/Composer.swift +++ b/NucleicRemote/NucleicRemote/Views/Composer.swift @@ -113,9 +113,8 @@ struct StartChatComposer: View { Text("This device is view-only.").font(.caption2).foregroundStyle(.secondary) } } - .padding(.horizontal, 14) - .padding(.vertical, 12) - .glassSurface(cornerRadius: 26) + // No surface of its own — the controls sit directly on the sheet, which is already a + // distinct panel; a glass card here would just be a card-on-card. // Switching to a model with a lower effort cap can't leave an unsupported level selected. .onChange(of: model) { _, newModel in let levels = store.modelCatalog.offeredEfforts(forModel: newModel) From cb895cbbdd39abd4003efba720310f93155eaa4c Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 17:55:26 -0700 Subject: [PATCH 4/5] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/SessionsView.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/SessionsView.swift b/NucleicRemote/NucleicRemote/Views/SessionsView.swift index d6c9449..f7dbe04 100644 --- a/NucleicRemote/NucleicRemote/Views/SessionsView.swift +++ b/NucleicRemote/NucleicRemote/Views/SessionsView.swift @@ -85,11 +85,12 @@ struct SessionsView: View { } } } + .safeAreaInset(edge: .bottom) { ConnectionChip().padding(.bottom, 8) } // A floating "new chat" affordance in the lower-right, mirroring the Mac's per-project // "New chat" button. Picks a project + prompt in a glass sheet, then kicks off the chat. - // Applied before the chip inset so it floats clear above the connection chip. + // Applied after the chip inset so it anchors to the true bottom — the same low spacing + // above the tab bar the project page has, rather than floating high above the chip. .newChatAffordance(isPresented: $showNewChat) - .safeAreaInset(edge: .bottom) { ConnectionChip().padding(.bottom, 8) } } } From 44bf31804be013c5ef623eacce73061479299eba Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 17:55:37 -0700 Subject: [PATCH 5/5] Bottom Tab Bar Visibility Adjustment Nucleic-Session: 747527BF-AEE9-4939-BE70-A14F1F3BBBA8 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/Views/HomeView.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/HomeView.swift b/NucleicRemote/NucleicRemote/Views/HomeView.swift index b9b4487..3d8444b 100644 --- a/NucleicRemote/NucleicRemote/Views/HomeView.swift +++ b/NucleicRemote/NucleicRemote/Views/HomeView.swift @@ -106,13 +106,14 @@ struct HomeView: View { .navigationBarTitleDisplayMode(.inline) .scrollDismissesKeyboard(.interactively) .refreshable { store.refreshSessions() } - // A floating "+" replaces the old inline start-chat card; opens the glass composer - // sheet. An iPad ⌘N (via focusNewChat) opens the same sheet. - .newChatAffordance(isPresented: $showNewChat) .onChange(of: focusNewChat.wrappedValue) { _, want in if want { showNewChat = true; focusNewChat.wrappedValue = false } } .safeAreaInset(edge: .bottom) { ConnectionChip().padding(.bottom, 8) } + // A floating "+" replaces the old inline start-chat card; opens the glass composer + // sheet. An iPad ⌘N (via focusNewChat) opens the same sheet. Applied after the chip + // inset so it anchors to the true bottom — matching the project page's tight spacing. + .newChatAffordance(isPresented: $showNewChat) } }