aboutsummaryrefslogtreecommitdiffstats
path: root/gradle/libs.versions.toml
AgeCommit message (Collapse)AuthorFilesLines
9 hoursbuild(deps): update sshj to 0.41.2 and drop eddsaDanilo M.1-2/+1
sshj 0.40 replaced the unmaintained net.i2p.crypto:eddsa 0.3.0 (last release 2019) with Bouncy Castle's Ed25519. 0.41.2 still targets Java 8. The app used eddsa directly for wrapped Ed25519 SSH keys. Generate the 32-byte seed with SecureRandom and build the key pair with sshj's Ed25519KeyFactory and Bouncy Castle's public key derivation. The wrapped format is still the raw RFC 8032 seed, so keys generated by 0.1.3 keep working; Ed25519KeyPairTest pins this with the RFC 8032 test vector. sshj 0.40 also changed setSecurityProvider(null) to reset the registerBouncyCastle flag, which undid the earlier setRegisterBouncyCastle(false): sshj then forced every operation through Bouncy Castle, which cannot sign with Android Keystore keys ("no encoding for EC private key"), and hardware-backed SSH keys failed to authenticate. Call the two in the opposite order; SshjConfigTest checks that sshj leaves provider selection to the JCA. Verified with the R8 release build on the emulator against the e2e server: a hardware ECDSA key, a newly generated wrapped Ed25519 key and an imported OpenSSH Ed25519 key all authenticated and synced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 hoursfeat(crypto): replace androidx security-crypto with Keystore AES-GCMDanilo M.1-1/+0
security-crypto is deprecated in 1.1.0 and the app was stuck on 1.1.0-alpha06, since the stable release fails the warnings-as-errors build. It also pulled in Tink for what is a single AES-GCM operation. KeystorePreferences is a SharedPreferences whose values are AES-GCM sealed under an Android Keystore key (random IV, entry name as AAD so values cannot be swapped between entries); a value that fails to decrypt reads as absent. It backs the Git credentials (git_secrets), the proxy credentials (proxy_secrets) and the PGP passphrase cache, whose key needs the screen lock or a strong biometric within 60s and is recreated if a new biometric enrollment invalidates it. Wrapped Ed25519 SSH keys are sealed the same way into the private key file. Password generator settings are not secret and move to plain preferences. Nothing is migrated: removeSecurityCryptoData deletes the old encrypted preference files, Tink keysets, their Keystore master keys and a security-crypto wrapped Ed25519 key once on upgrade. Only 0.1.x installs from the last few hours have such data. Hardware SSH keys and imported keys are untouched. Tests: KeystorePreferencesTest (round trip, defaults, no plaintext, random IVs, AAD binding, tamper rejection, remove/clear) with a software AES key. Verified on the emulator by upgrading a 0.1.2 debug build that held a wrapped Ed25519 key, Tink keysets and a cached passphrase: the old data was deleted, a new Ed25519 key authenticated over SSH after a fingerprint unlock, and a passphrase cached on first decrypt was reused on the second with only the fingerprint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 hoursbuild: drop the nonFree flavor, Sentry and Play ServicesDanilo M.1-3/+0
The fork targets GrapheneOS and ships only FOSS builds. The nonFree flavor added Sentry crash reporting, wired to upstream's Sentry project, and Play Services SMS one-time-code autofill, which needs Google's servers. Neither is wanted, so remove the flavor dimension entirely: - Delete app/src/nonFree, the SentryPlugin, the sentry-stub module, the Sentry and Play Services catalog entries, and the Sentry scope setup in Application. - Move the free AutofillSmsActivity stub into main; it keeps the SMS OTP feature off exactly as the free build did. A ponytail note marks the FillOtpFromSms paths for later removal. - SlimTests no longer needs to skip a nonFree variant. - Workflows and docs use :app:assembleDebug / :app:assembleRelease. A bare assembleRelease would also verify library modules in release mode, where ui:compose fails on a pre-existing AppCompat attribute reference the old flavored task never touched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
16 hoursbuild(deps): update JGit from 4.5.7 to 5.13.5Danilo M.1-1/+1
JGit 4.5.7 dates from 2019. 5.13 is the last line that needs only Java 8 APIs, so it works with Android's desugaring; it also fixes GHSA-3p86-9955-h393 (arbitrary file overwrite on checkout). GHSA-vrpq-qp53-qv56 (XXE in repo manifest parsing) has no 5.x fix but the app never parses repo manifests. API changes: - SshSessionFactory now requires getType(). - CheckoutCommand.setForce is deprecated; setForceRefUpdate is its documented replacement with the same meaning. JGit 5 references java.lang.management and javax.management, which Android lacks; R8 flagged them. Both paths are made unreachable rather than only silenced: - WindowCache registers JMX statistics by default; Application.onCreate now installs a WindowCacheConfig with exposeStatsViaJmx = false. - GC.gc() takes a PID lock that queries ManagementFactory and would throw NoClassDefFoundError on a device. GcOperation now runs the GC steps (packRefs, repack, prune) directly; the lock only guards against concurrent gc processes, which cannot happen in the app. Aggressive packing is dropped. The R8 -dontwarn rules and the lint baseline entries are added only for those two now-unreachable references. JGitBehaviourTest covers the operations' command chains plus the GC steps and passes on 5.13.5. It now ignores the developer's global git config, which JGit 5 reads (commit.gpgsign made test commits try to sign). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursbuild(deps): move pre-release libraries to stable releasesDanilo M.1-7/+7
autofill 1.3.0, constraintlayout 2.2.2, documentfile 1.1.0, recyclerview 1.4.0, recyclerview-selection 1.2.0, swiperefreshlayout 1.2.0 and OkHttp 5.5.1 (build-logic only) replace their alpha, beta and rc builds. Left on pre-releases for now: - biometric-ktx 1.2.0-alpha05 and modernandroidpreferences 2.4.0-beta2: their newest stable releases are older than what is in use. - security-crypto-ktx 1.1.0-alpha06: the 1.1.0 stable release deprecates the whole library, which fails the warnings-as-errors build. Replacing it is tracked separately. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursbuild: update to Gradle 9.8.2, AGP 9.5.0, Kotlin 2.4.21, Hilt 2.60.1Danilo M.1-10/+11
AGP 9 migration: - Configure the shared Android setup through the new DSL (CommonExtension, ApplicationExtension) instead of the removed TestedExtension and BaseAppModuleExtension; targetSdk moves to the application extension. - Stop applying the Kotlin Android plugin; AGP 9 compiles Kotlin itself. - Replace kapt with KSP 2.3.13 for Hilt, which built-in Kotlin requires, and carry the Dagger compiler options over as KSP arguments. - AGP 9 now applies packaging excludes to unit-test resources, which stripped the diceware word list (**/*.txt) from its tests; lift that exclude in the diceware module. - Use resources.directories instead of the deprecated srcDir. Plugin updates required by Gradle 9 / AGP 9: Sentry Gradle plugin 6.25.0 (sentry-android 8.62.0), metalava plugin 0.5.1, maven-publish 0.37.0, spotless 8.10.4, version-catalog-update 1.1.2, download task 5.7.0, foojay resolver 1.0.0, with their API changes. Newer metalava models Kotlin properties, so autofill-parser/api.txt is regenerated; the diff is representation only, no API was added or removed. Fix new Kotlin 2.4 and lint findings (explicit return type in a function with an early return, UseKtx in autofill-parser), drop deprecated Kotlin Gradle properties, and make the AGENTS.md pre-commit command cover every task CI runs (both flavors, lint on all modules). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hoursbuild: update to Gradle 8.14.6, AGP 8.13.2, Kotlin 2.1.21, Hilt 2.58Danilo M.1-4/+3
Newest releases that still fit together on the Gradle 8 / AGP 8 line: - Kotlin stops at 2.1, the newest metadata Gradle 8's embedded Kotlin 2.0 compiler can read when compiling build-logic. - Hilt stops at 2.58; 2.59 and later require AGP 9. Hilt 2.52's annotation processor could not read Kotlin 2.1 metadata. Drop the languageVersion = 1.9 pin so code compiles with the K2 frontend; Kotlin 2.4 no longer accepts 1.9. Drop the R8 8.5.35 pin and its repository, which is older than the R8 AGP 8.13 bundles. Move the deprecated buildFeatures.androidResources flag to androidResources.enable, and replace Uri.parse with toUri for the new UseKtx lint check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hoursbuild(deps): update Bouncy Castle to 1.86 and PGPainless to 1.7.8Danilo M.1-2/+2
Bouncy Castle 1.78.1 is affected by GHSA-574f-3g2m-x479, GHSA-9pwp-9qqc-pr26, GHSA-c3fc-8qff-9hwx and GHSA-qp49-qgx5-5m26, all fixed by 1.85. PGPainless 1.7.8 is the newest 1.x release. A root resolution rule keeps every Bouncy Castle module on the catalog version; before, bcpg 1.77 shipped next to bcprov 1.78.1. The new stack decrypts the OCB (LibrePGP) packets GnuPG 2.3+ emits by default, which the old one rejected as "non-standard AEAD". Drop the NonStandardAEAD error, its bottom sheet and strings, and replace the mislabelled aead_* fixtures (SHA-1 self-signed keys plus a message encrypted to an unrelated key) with a real GnuPG 2.5 key and OCB message that the tests now decrypt. The new fixture is a throwaway test key, so it is allowlisted in .gitleaksignore by fingerprint. Fix KeyUtils.isKeyUsable, which compared a Boolean to null and so accepted every key that parsed, including keys with no encryption subkey. A signing-only key fixture now covers the rejection path. Also: migrate the removed SelectUserId.firstMatch and deprecated addDecryptionPassphrase APIs, keep one copy of the Bouncy Castle META-INF/LICENSE.md in the APK, and move the existing InvalidPackage lint baseline entries to the bcpkix 1.86 jar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2024-10-10chore(deps): update kotlin and compose to v2.0.21 (#3258)latestrenovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09fix(deps): update dependency io.sentry:sentry-android to v7.15.0 (#3257)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-04fix(deps): update dependency ↵renovate[bot]1-1/+1
com.google.testparameterinjector:test-parameter-injector to v1.18 (#3248) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02fix(deps): update dependency com.slack.lint.compose:compose-lint-checks to ↵renovate[bot]1-1/+1
v1.4.1 (#3244) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02fix(deps): update dependency com.slack.lint:slack-lint-checks to v0.8.0 (#3245)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02fix(deps): update androidx (#3243)renovate[bot]1-2/+2
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02fix(deps): update dependency com.slack.lint.compose:compose-lint-checks to ↵renovate[bot]1-1/+1
v1.4.0 (#3242) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01fix(deps): update dependency com.android.tools.build:gradle to v8.7.0 (#3240)renovate[bot]1-1/+1
* fix(deps): update dependency com.android.tools.build:gradle to v8.7.0 * fix: remove deprecated options --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2024-09-18fix(deps): update androidx (#3221)renovate[bot]1-4/+4
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-18fix(deps): update dependency com.android.tools.build:gradle to v8.6.1 (#3216)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-13fix(deps): update dependency com.hierynomus:sshj to v0.39.0renovate[bot]1-1/+1
2024-09-13fix(deps): update kotlin and compose to v1.9.0renovate[bot]1-1/+1
2024-09-11fix(deps): update dependency androidx.compose:compose-bom to v2024.09.01 (#3206)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-05fix(deps): update dependency ↵renovate[bot]1-1/+1
org.jetbrains.kotlinx:kotlinx-collections-immutable to v0.3.8 (#3199) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-05fix(deps): update dependency androidx.compose:compose-bom to v2024.09.00 (#3197)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-05fix(deps): update androidx (#3195)renovate[bot]1-4/+4
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03fix(deps): update dependency com.android.tools.build:gradle to v8.6.0 (#3192)renovate[bot]1-1/+1
* fix(deps): update dependency com.android.tools.build:gradle to v8.6.0 * chore: regenerate Lint baselines --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2024-08-29fix(deps): update dependency ↵renovate[bot]1-1/+1
com.google.testparameterinjector:test-parameter-injector to v1.17 (#3191) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-26fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to ↵renovate[bot]1-1/+1
v7.0.0.beta2 (#3187) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-22chore(deps): update kotlin and compose to v2.0.20 (#3184)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-21fix(deps): update androidx (#3182)renovate[bot]1-2/+2
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-21fix(deps): update Spotless to 7.0.0.BETA1Harsh Shandilya1-1/+1
This is the version with all the configuration cache fixes
2024-08-14fix(deps): update dependency com.android.tools:r8 to v8.5.35 (#3167)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-14feat(build): replace homebrew ktfmt formatter with SpotlessHarsh Shandilya1-1/+1
Spotless has fixed their Gradle Configuration Cache woes in the past couple months which gets rid of my primary complaint.
2024-08-13fix(deps): update dependency io.sentry:sentry-android to v7.14.0 (#3164)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-09fix(deps): update dependency com.android.tools.build:gradle to v8.5.2 (#3160)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-07fix(deps): update androidx (#3159)renovate[bot]1-3/+3
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-07fix(deps): update dependency ↵renovate[bot]1-1/+1
io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin to v4.11.0 (#3158) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06chore(deps): update kotlin and compose to v2.0.10 (#3155)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-05chore(deps): update hilt to v2.52 (#3154)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-31fix(deps): update dependency io.sentry:sentry-android to v7.13.0 (#3145)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-25fix(deps): update dependency io.sentry:sentry-android to v7.12.1 (#3135)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-24fix(deps): update dependency androidx.annotation:annotation to v1.8.1 (#3133)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-24fix(deps): update androidx (#3132)renovate[bot]1-3/+3
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15fix(deps): update dependency ↵renovate[bot]1-1/+1
io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin to v4.10.0 (#3123) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15fix(deps): update dependency io.sentry:sentry-android to v7.12.0 (#3121)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12fix(deps): update dependency com.android.tools.build:gradle to v8.5.1 (#3118)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08fix(deps): update dependency org.robolectric:robolectric to v4.13 (#3116)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02fix(deps): update dependency ↵renovate[bot]1-1/+1
io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin to v4.9.0 (#3111) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02fix(deps): update dependency io.sentry:sentry-android to v7.11.0 (#3110)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02fix(deps): update androidx to v2.8.3 (#3109)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-26fix(deps): update dependency androidx.fragment:fragment-ktx to v1.8.1 (#3104)renovate[bot]1-1/+1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>