diff --git a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift index 73323df..ae0c725 100644 --- a/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift +++ b/NucleicRemote/NucleicRemote/Views/SessionDetailView.swift @@ -159,23 +159,13 @@ struct SessionDetailView: View { return min(100, Int((Double(used) / Double(window)) * 100)) } - /// The model / effort / auto controls for the open session — the mobile echo of the Mac's - /// session header, folded into the glass chat bar so they don't cost a strip of transcript - /// height. Reads current state from the summary; each change is a control intent. + /// The context-occupancy readout and the Auto toggle for the open session, folded into the + /// glass chat bar so they don't cost a strip of transcript height. The model / effort + /// selectors used to sit here too, but they moved into the ⋯ menu (`modelEffortMenu`) to keep + /// the bar compact. Reads current state from the summary; each change is a control intent. @ViewBuilder private func controlRow(_ summary: WireSessionSummary) -> some View { HStack(spacing: 10) { - // A session's backend is fixed at creation, so only same-backend models are offered. - ModelMenu(model: modelBinding, catalog: store.modelCatalog, backend: summary.backend) - EffortMenu(effort: effortBinding, catalog: store.modelCatalog, - // No explicit model yet → use the session backend's default, so the menu - // shows that backend's effort range rather than collapsing to one level. - modelSKU: summary.model ?? store.modelCatalog.models(for: summary.backend).first?.sku, - controlled: controlled, - // Orchestra is a one-way latch for an existing chat — the host won't turn it - // off, so disable the other levels here to match. - lockWhenOrchestra: true) - Spacer(minLength: 4) if let percent = contextPercent { // Weight and primary ink (not `.secondary`) so the metric stays legible over // whatever the Liquid Glass bar is blurring through. @@ -183,6 +173,7 @@ struct SessionDetailView: View { .font(.caption2.weight(.semibold)).foregroundStyle(.primary) .help("Context window used") } + Spacer(minLength: 4) // Locked on for a Nucleic Control project — those chats always run autonomously, and // the host keeps Auto on regardless of what the phone sends, so show it locked on to // match rather than offering a toggle that wouldn't take.