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")