From f39fd16800ed75717be91277b83bd6eb21d19a71 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Fri, 3 Jul 2026 16:32:14 -0700 Subject: [PATCH] Resolve Trunk Promotion Conflict Nucleic-Session: 20A52F7E-A10D-4B59-B650-D3FD6BC3B46B Co-authored-by: Nucleic --- .../NucleicRemote/Views/SettingsView.swift | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/NucleicRemote/NucleicRemote/Views/SettingsView.swift b/NucleicRemote/NucleicRemote/Views/SettingsView.swift index e5bf4a2..22d4e7a 100644 --- a/NucleicRemote/NucleicRemote/Views/SettingsView.swift +++ b/NucleicRemote/NucleicRemote/Views/SettingsView.swift @@ -162,8 +162,22 @@ struct PairingIntroView: View { private var pairingStatus: some View { switch store.connectivity { case .connecting, .reconnecting: - Label("Connecting to your Mac…", systemImage: "arrow.triangle.2.circlepath") - .font(.footnote).foregroundStyle(.secondary) + // A first tailnet pairing with no auth key detours through a browser login + // that can take minutes — and this intro is the ONLY screen an unpaired phone + // has (no Settings tab yet), so the way back to the login page must live here. + if let loginURL = store.tailnetLoginURL { + VStack(spacing: 6) { + Label("Approve this iPhone in your browser to join your tailnet.", + systemImage: "person.crop.circle.badge.checkmark") + .font(.footnote).foregroundStyle(.secondary) + .multilineTextAlignment(.center).padding(.horizontal, 32) + Link("Open the Tailscale login page", destination: loginURL) + .font(.footnote.weight(.medium)) + } + } else { + Label("Connecting to your Mac…", systemImage: "arrow.triangle.2.circlepath") + .font(.footnote).foregroundStyle(.secondary) + } case .hostOffline: Label("Can't reach your Mac. Make sure it's on the same Wi‑Fi and remote access is on.", systemImage: "wifi.exclamationmark")