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
+20
View File
@@ -1,6 +1,17 @@
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const exclusionList = require('metro-config/private/defaults/exclusionList').default;
/*
* "Open DevTools" launches React Native DevTools, which is an Electron app
* spawned from this process with this process's environment. VS Code sets
* ELECTRON_RUN_AS_NODE=1 for everything its extensions start, so a Metro
* launched from inside the editor hands that on, and the DevTools app then
* runs as plain Node, rejects `--frontendUrl` as a "bad option" and exits.
* Nothing opens and the app shows no error. Metro itself is not Electron, so
* dropping the variable here costs nothing.
*/
delete process.env.ELECTRON_RUN_AS_NODE;
/**
* Metro configuration
* https://reactnative.dev/docs/metro
@@ -9,6 +20,13 @@ const exclusionList = require('metro-config/private/defaults/exclusionList').def
* excluded from the file crawl. Without watchman installed Metro walks these
* directories on startup and never becomes responsive.
*
* The same crawl runs on every start, and it walks every file that is not
* blocked here. @hugeicons/core-free-icons alone ships ~24,000 files — a
* CommonJS copy, type definitions and a source map for each of ~6,000 icons —
* out of ~70,000 in node_modules. Metro resolves the icons to `dist/esm/*.js`
* only, so the rest is skipped. If an icon import ever fails to resolve after
* a library upgrade, check these two entries first.
*
* @type {import('@react-native/metro-config').MetroConfig}
*/
const config = {
@@ -22,6 +40,8 @@ const config = {
/\/\.cxx\/.*/,
/\/ios\/build\/.*/,
/\/ios\/Pods\/.*/,
/\/node_modules\/@hugeicons\/core-free-icons\/dist\/(cjs|types)\/.*/,
/\/node_modules\/@hugeicons\/core-free-icons\/dist\/esm\/.*\.map$/,
]),
},
};