feat(settings): Passkeys section

Informational only, per Outline itself — passkey/WebAuthn registration
needs a browser context, so this stays web-only rather than a
placeholder for missing native functionality.
This commit is contained in:
2026-08-18 14:18:26 +01:00
parent 78a0e31897
commit 6eb780d1bd
@@ -82,6 +82,7 @@ struct SettingsView: View {
case .profile: profileDetail case .profile: profileDetail
case .preferences: preferencesDetail case .preferences: preferencesDetail
case .notifications: notificationsDetail case .notifications: notificationsDetail
case .passkeys: passkeysDetail
case .offlineSync: offlineSyncDetail case .offlineSync: offlineSyncDetail
case .advanced: advancedDetail case .advanced: advancedDetail
case .about: aboutDetail case .about: aboutDetail
@@ -715,6 +716,29 @@ struct SettingsView: View {
} }
} }
// MARK: - Passkeys
/// Read-only on purpose Outline only exposes passkey management from
/// its own web app (WebAuthn registration needs a browser context this
/// native app doesn't have), so this page is informational, not a
/// placeholder for missing functionality.
private var passkeysDetail: some View {
VStack(alignment: .leading, spacing: 16) {
sectionHeader
Text("Passkeys allow you to sign in safely without a password using your device's biometric authentication (Face ID, Touch ID, Windows Hello) or security key.")
.font(.subheadline)
.foregroundStyle(.secondary)
.frame(maxWidth: 480, alignment: .leading)
Label("This setting can only be changed from the web version of Outline.", systemImage: "lock.fill")
.font(.callout)
.foregroundStyle(.secondary)
.padding(12)
.frame(maxWidth: 480, alignment: .leading)
.background(.quaternary.opacity(0.5), in: RoundedRectangle(cornerRadius: 8, style: .continuous))
}
}
// MARK: - Offline & Sync // MARK: - Offline & Sync
private var offlineSyncDetail: some View { private var offlineSyncDetail: some View {