From 22c816add1d6135b38fed91852f534233cd922fa Mon Sep 17 00:00:00 2001 From: null Date: Wed, 8 Jul 2026 23:30:43 -0500 Subject: [PATCH] =?UTF-8?q?docs(manual):=20batch=2010=20review=20=E2=80=94?= =?UTF-8?q?=20RevenueCat=20version=20was=208.20.0,=20now=2010.12.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Gradle config section and the RevenueCat integration section both said 'purchases:8.20.0' / 'RevenueCat 8.20.0'. The actual current version in gradle/libs.versions.toml is 10.12.0 (was bumped in R30). iOS purchases-ios is declared as 'from: 5.0.0' in Package.swift. Replaced both occurrences with the real version (10.12.0 Android, 5.x iOS). Also added Glance 1.1.1 to the dependency list (the Today widget shipped in R29 and the manual was missing it from the build-config list - even though the widget is documented elsewhere). Other Batch 10 claims verified clean: - compileSdk 35, minSdk 26, targetSdk 35, jvmTarget 17 in app/build.gradle.kts - all match. - applicationId 'closer.app', namespace 'app.closer' - match. - ProGuard rules: Firebase, Hilt, Room, RevenueCat, Kotlin coroutines, Kotlin metadata, crash reporting - all match proguard-rules.pro. Tink is NOT explicitly kept (manual claim is accurate). - BiometricPrompt + biometricLoginEnabled gating in SecurityScreen.kt - match. - Required build secrets (RC_API_KEY, google-services.json, GoogleService-Info.plist, local.properties) - match the documented gitignore / per-source build-secret policy. --- docs/Engineering_Reference_Manual.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/Engineering_Reference_Manual.md b/docs/Engineering_Reference_Manual.md index c3d436f6..df34a8be 100644 --- a/docs/Engineering_Reference_Manual.md +++ b/docs/Engineering_Reference_Manual.md @@ -867,7 +867,7 @@ aggregateOutcomeStats every 24 hours (default ### RevenueCat integration -Both clients use the RevenueCat native SDK (`purchases:8.20.0` on Android, `purchases-ios` via SPM). The SDK handles the platform billing surface (Google Play Billing on Android, StoreKit on iOS) and exposes a normalized `CustomerInfo` API. +Both clients use the RevenueCat native SDK (`purchases:10.12.0` on Android, `purchases-ios:5.x` via SPM - `from: 5.0.0` in `Package.swift`). The SDK handles the platform billing surface (Google Play Billing on Android, StoreKit on iOS) and exposes a normalized `CustomerInfo` API. The Android app reads the API key from `BuildConfig.RC_API_KEY`, which is sourced from `local.properties` or the `RC_API_KEY` env var. A release build with a missing or placeholder key **fails fast** with a `GradleException` from `app/build.gradle.kts` - there is a doFirst guard on every release assemble/bundle task. @@ -1130,8 +1130,9 @@ The iOS CryptoKit implementation follows these rules of parity with Android: - Hilt 2.53.1 - Room 2.6.1 - DataStore 1.1.2 +- Glance 1.1.1 (Today widget) - Firebase BoM 33.8.0 (auth, firestore, messaging, config, analytics, crashlytics, appcheck, appcheck-playintegrity, storage, functions) -- RevenueCat 8.20.0 +- RevenueCat 10.12.0 - Tink 1.13.0, BouncyCastle 1.78.1 - Play Integrity 1.4.0 - Biometric 1.1.0