c915805f8c62

feat: Add passkey provider protection toggle (v2.3.22)

- Expose Android Credential Provider toggle and status in Protection settings - Keep T008 queue updated for remaining breach/recovery work - Verify compile and full Gradle gate

time
2026-06-26 08:04 UTC · 4 months ago
machine
koh2
parent
827354a8a29d
3 files app/build.gradle+2 −2app/src/main/java/com/peachpasswords/ui/settings/SettingsCardBodies.kt+16 −0app/src/main/java/com/peachpasswords/ui/settings/SettingsViewModel.kt+1 −0
app/build.gradle+2 −2
@@ -16,8 +16,8 @@1616         applicationId "com.peachpasswords"1717         minSdk 261818         targetSdk 3519-        versionCode 23210020-        versionName "2.3.21"19+        versionCode 23220020+        versionName "2.3.22"2121 2222         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"2323         vectorDrawables {

view file

app/src/main/java/com/peachpasswords/ui/settings/SettingsCardBodies.kt+16 −0
@@ -272,6 +272,22 @@272272             modifier = Modifier.padding(start = 2.dp, top = 2.dp, bottom = 4.dp),273273         )274274     }275+    SubLabel("PASSKEYS", fg)276+    RowLine(fg) {277+        Column(Modifier.weight(1f)) {278+            Text("Credential provider", color = fg, fontFamily = PeachType.Body, fontSize = 13.sp)279+            Text(280+                "Peach can handle passkey sign-in and creation through Android Credential Manager.",281+                color = fg.copy(alpha = 0.7f), fontFamily = PeachType.Body, fontSize = 11.sp, lineHeight = 16.sp,282+                modifier = Modifier.padding(top = 2.dp),283+            )284+        }285+        Toggle(s.passkeyProviderEnabled, fg) { vm.setPasskeyProviderEnabled(it) }286+    }287+    RowLine(fg) {288+        Name("Status", fg)289+        ValueText(if (s.passkeyProviderEnabled) "enabled" else "off", fg)290+    }275291     SubLabel("RECOVERY", fg)276292     RowLine(fg) {277293         Name("View recovery words", fg)

view file

app/src/main/java/com/peachpasswords/ui/settings/SettingsViewModel.kt+1 −0
@@ -191,6 +191,7 @@191191     fun setReduceMotion(on: Boolean) = mutate { it.copy(reduceMotion = on) }192192     fun setBreachMonitoring(on: Boolean) = mutate { it.copy(breachMonitoring = on) }193193     fun setBiometrics(on: Boolean) = mutate { it.copy(biometricsEnabled = on) }194+    fun setPasskeyProviderEnabled(on: Boolean) = mutate { it.copy(passkeyProviderEnabled = on) }194195 195196     /**196197      * Enable biometric unlock: prompt to wrap the live vault key under a hardware

view file