From da2b771de64e257fa2212395ae16ed8e45a359e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 16 Aug 2026 00:01:28 +0000 Subject: [PATCH 1/2] fix(deps): update androidx --- gradle/libs.versions.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4a5563808..964198118 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,14 +18,14 @@ android-desugarJdkLibs = "com.android.tools:desugar_jdk_libs:2.1.5" androidx-activity = { module = "androidx.activity:activity", version.ref = "androidxActivity" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" } androidx-annotation = "androidx.annotation:annotation:1.10.0" -androidx-appcompat = "androidx.appcompat:appcompat:1.7.1" +androidx-appcompat = "androidx.appcompat:appcompat:1.8.0" androidx-autofill = "androidx.autofill:autofill:1.3.0" androidx-biometricKtx = "androidx.biometric:biometric-ktx:1.2.0-alpha05" androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.2" androidx-core-ktx = "androidx.core:core-ktx:1.19.0" androidx-credentials = "androidx.credentials:credentials:1.6.0" androidx-documentfile = "androidx.documentfile:documentfile:1.1.0" -androidx-fragment-ktx = "androidx.fragment:fragment-ktx:1.8.9" +androidx-fragment-ktx = "androidx.fragment:fragment-ktx:1.9.0" androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.11.2" androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "lifecycle" } androidx-lifecycle-livedataKtx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" } @@ -46,7 +46,7 @@ build-r8 = "com.android.tools:r8:9.2.23" build-semver = "com.github.zafarkhaja:java-semver:0.10.2" build-spotless = "com.diffplug.spotless:spotless-plugin-gradle:8.9.0" build-vcu = "nl.littlerobots.version-catalog-update:nl.littlerobots.version-catalog-update.gradle.plugin:1.1.1" -compose-bom = "androidx.compose:compose-bom:2026.06.01" +compose-bom = "androidx.compose:compose-bom:2026.08.00" compose-foundation-core = { module = "androidx.compose.foundation:foundation" } compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" } compose-material3 = { module = "androidx.compose.material3:material3" } From 1fc7178b60ece2fd5e954c024522c4a11216d5e7 Mon Sep 17 00:00:00 2001 From: "forkline-dev[bot]" Date: Sun, 16 Aug 2026 00:22:56 +0000 Subject: [PATCH 2/2] Fix flaky symmetric decryption wrong passphrase error mapping When symmetric decryption fails with a wrong passphrase, PGPainless can throw different exception types non-deterministically. The error mapping now treats any exception during symmetric decryption (key == null) as IncorrectPassphraseException instead of UnknownError. --- .../app/passwordstore/crypto/PGPainlessCryptoHandler.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/crypto/pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt b/crypto/pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt index a6c2fa2c7..1c2213f49 100644 --- a/crypto/pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt +++ b/crypto/pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt @@ -85,13 +85,15 @@ public class PGPainlessCryptoHandler @Inject constructor() : .mapError { error -> when (error) { is MissingDecryptionMethodException -> { - if (key == null) // wrong passphrase provided for symmetric decryption - IncorrectPassphraseException(error.message, error.cause) + if (key == null) IncorrectPassphraseException(error.message, error.cause) else NoDecryptionKeyAvailableException(error.message, error.cause) } is WrongPassphraseException -> IncorrectPassphraseException(error.message, error.cause) is CryptoHandlerException -> error - else -> UnknownError(error.message, error) + else -> { + if (key == null) IncorrectPassphraseException(error.message, error) + else UnknownError(error.message, error) + } } }