Add Positive Pay, statement guide v1.0, onboarding, and switch every feature on

- Positive Pay on the 12 Oct /pps contract (account number, not account ID):
  OTP enrollment, cheque submit, saved cheques, detail and stop payment.
  Full flow passed on the phone against mobile-banking-backend.lincpay.
- Statement & Mini Statement guide v1.0 (14 Oct): mini statement JSON on
  Home and the Statement screen; dated PDF export with the password rule.
- Onboarding slides and splash screen, Inter font, shared Icon and
  TypewriterText components, nearby branches via OpenStreetMap.
- Every feature switched on; the 14 Oct switch set is kept in
  featureConfig.stage-2026-10-14.ts. Loans run on demo data until the
  backend has /loans routes.
- npm run android wraps run-android for shells spawned from VS Code.
- OpenProject work packages updated to 14-10-2026 status, with screenshots
  of Positive Pay, statement, loans and cards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Abin Toppo
2026-10-14 18:18:40 +05:30
co-authored by Claude Opus 5.5
parent 5fbd13ba12
commit f960a119e8
510 changed files with 20268 additions and 6483 deletions
+22
View File
@@ -117,3 +117,25 @@ dependencies {
implementation jscFlavor
}
}
/**
* Makes `gradlew clean` (and Android Studio's Clean Project) work.
*
* The app's native clean re-runs CMake before cleaning, and the app's CMake
* build pulls in each library's codegen output from
* node_modules/<lib>/android/build/generated/. `clean` deletes those library
* build folders first, so the configure step fails with "add_subdirectory given
* source ... which is not an existing directory" and the whole clean fails.
*
* There is nothing for that step to do that deleting the CMake folder does not
* do better, so it is skipped and `.cxx` goes with `build/`. The next build
* regenerates the codegen output before CMake needs it.
*/
tasks.configureEach { task ->
if (task.name.startsWith("externalNativeBuildClean")) {
task.enabled = false
}
}
tasks.named("clean") {
delete file(".cxx")
}