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
+7 -3
View File
@@ -13,7 +13,7 @@ import { secureStorage } from './secureStorage';
* which is the whole point of the guarantee, and the failure mode a
* clear-this-list approach has every time someone forgets to update it.
*
* None of the three exemptions is a property of a person:
* None of the four exemptions is a property of a person:
*
* - the theme is a display choice made on this device, and flipping someone
* back to light mode because they signed out is a bug, not privacy;
@@ -24,12 +24,16 @@ import { secureStorage } from './secureStorage';
* that starts offline still honours a feature the bank killed during an
* incident, and deleting it would make signing out a way to turn those
* features back on. Its one customer-scoped half, `roleOverrides`, is
* stripped out below instead — see `forgetRoleScope`.
* stripped out below instead — see `forgetRoleScope`;
* - the onboarding flag records that this handset has shown its introduction.
* Sign-out also forgets the profile, so without this every sign-out would
* replay the welcome slides to someone who has used the app for years.
*/
const KEPT_KEYS: readonly string[] = [
'@bankcbs/theme-mode',
'bankcbs.featureOverrides',
'bankcbs.featureConfig.lastKnown',
'bankcbs.onboarding.seen',
];
/**
@@ -41,7 +45,7 @@ const KEPT_KEYS: readonly string[] = [
* name) and the **MPIN itself**, which biometric sign-in stores behind the
* device prompt. Only the session was being cleared before, so the other
* two survived every sign-out;
* - every AsyncStorage key but the three above — the biometric flag, payee
* - every AsyncStorage key but the four above — the biometric flag, payee
* favourites, and awareness and scheme bookmarks;
* - the customer's entitlements, in memory *and* in the config cache, which
* would otherwise be re-applied over whoever signs in next;