354 Commits

Author SHA1 Message Date
Justin Hernandez
6b26e53bb7 bump version (#2017) 2026-04-23 18:36:16 -07:00
github-actions[bot]
82060b8c9f chore: bump mobile app version to 2.9.20 (#2015)
Update build numbers, platform build files, and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-22 21:29:59 -07:00
Leszek Stachowski
94e2b4dd8f feat: MRZ data confirmation for NFC scanning (#1767)
* feat: MRZ data confirmation for NFC scanning

* - euclid DataConfirmationScreen, InputField -> app
- change date picker library

* lint

* fix build

* fix tests

* remove diff sending + add data confirmation button to trouble screen

* fix: date handling

* fix: greptile PR comments + lint/fmt

* simplify date handling

* update Podfile.lock

* migrate tests to test folder

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-04-22 15:52:21 -07:00
Justin Hernandez
8229aa3697 bump version (#2012) 2026-04-22 07:58:29 -07:00
Nesopie
537b0dd418 fix: gracefully gate passport OCR camera permission (#2008)
* fix(app): gate passport OCR camera in TS to stop Android permission loop (SELF-2645)

Denying the camera system prompt on the Android passport OCR scan screen
previously re-fired the prompt repeatedly (the UI "blinked") because the
native CameraFragment re-requested permission from onResume each time the
permission dialog dismissed. On iOS the scanner view silently stayed black
after denial. Both were caused by permission handling living in the native
layer with no TypeScript gate.

Move the gate to TypeScript:
- Pre-navigation check in DocumentOnboardingScreen routes denials to a
  KYC fallback via useKycLauncher instead of navigating into the camera.
- DocumentCameraScreen tracks permission in a cameraReady state and skips
  the <PassportCamera> render until confirmed granted; AppState foreground
  transitions re-check and dismount on revocation. This eliminates the
  iOS black scanner view entirely.

The broken native Android permission code (CameraFragment onResume +
inverted hasCameraPermission()) is now unreachable dead code. Cleaning it
up is tracked as a follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(ios): link Camera permission handler in Podfile (SELF-2645)

Without `setup_permissions(["Camera"])` in the Podfile, the iOS app has
the react-native-permissions JS wrapper but no native handler linked, so
`check(PERMISSIONS.IOS.CAMERA)` throws and the passport OCR gate falls
through to the "Camera not available" alert on real iPhones with working
cameras.

Run `cd app/ios && pod install` after pulling this commit. The matching
Podfile.lock update will land in a follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* update lock file

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-04-22 07:55:52 -07:00
Leszek Stachowski
11232e5b63 chore: update Podfile.lock (#2009) 2026-04-22 06:56:37 -07:00
github-actions[bot]
759dc15e83 chore: bump mobile app version to 2.9.19 (#2007)
Update build numbers, platform build files, and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-21 15:00:51 -07:00
Justin Hernandez
2ce93be408 bump version 2.9.19 (#2003) 2026-04-20 20:01:49 -07:00
github-actions[bot]
ad7f4ad21c chore: bump mobile app version to 2.9.18 (#1997)
Update build numbers, platform build files, and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-19 20:46:38 -07:00
Justin Hernandez
0d5eb6c26d bump version (#1995) 2026-04-19 18:56:22 -07:00
Seshanth.S
e2daa97151 Enable logs (#1985)
* enable logs

* improve NFC observability logging and add session-scoped log grouping

* Enhance logging by adding session ID to lokiTransport for improved traceability
2026-04-17 12:14:55 -07:00
turnoffthiscomputer
1042d27f54 fix: patch Podfile for WalletConnect Pay removal and Haptic feedback … (#1982)
* fix: patch Podfile for WalletConnect Pay removal and Haptic feedback framework addition

Removed the YttriumWrapper dependency from the react-native-compat podspec as it is not used in the Self app, preventing build failures. Additionally, patched the react-native-haptic-feedback podspec to include the AudioToolbox framework, ensuring proper functionality of haptic feedback features.

* Update app/ios/Podfile

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update app/ios/Podfile

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-17 15:35:30 +02:00
Seshanth.S
3e5523abdd SELF-2643: use expo-camera for qrcode scanning (#1981)
* use expo-camera for qrcode scanning

* remove unused react import

* greptile review comments

* coderabbit comments

* lint

* update podfile.lock

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-04-16 23:40:19 -07:00
Justin Hernandez
5c6419cc2e chore: clean up from 2.9.17 (#1978)
* minor pionts fixes

* pr feedback

* bump build numbers
2026-04-14 15:28:40 -07:00
github-actions[bot]
7b42c6e30e chore: bump mobile app version to 2.9.17 (#1973)
Update build numbers, platform build files, and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-13 21:51:43 -07:00
Justin Hernandez
7058ee96b3 chore: match build numbers (#1967)
* fix theme color

* mathc build numbers
2026-04-13 15:38:45 -07:00
Justin Hernandez
f348c3e6bf hide google client id (#1961) 2026-04-10 12:47:14 -07:00
Justin Hernandez
fb9da6e66b chore: bump mobile app version to 2.9.17 (#1951)
* save skill

* bump version
2026-04-09 15:18:24 -07:00
Justin Hernandez
77df53b990 Add Firebase Analytics and upgrade app dependencies (#1944)
* updates

* upgrade packages

* fixes
2026-04-08 10:43:50 -07:00
Justin Hernandez
690d576d54 Upgrade Wave 2 mobile app dependencies (React Navigation, Tamagui, WalletConnect, Lottie, XState) (#1941)
* Upgrade wave 2 mobile app dependencies

* fix pipelines
2026-04-08 09:42:12 -07:00
Justin Hernandez
06a513918f Fix reproducible Ruby gem installs and upgrade dependencies (#1937)
* fixes?

* fix order

* fix nokogiri build error

* upgrade pkgs and lock

* update podfile lock

* fix resolutions

* speed up installs

* increase install speed

* pr feedback

* fix

* only build for relevant webview paths

* attempt to fix oom issue

* actually fix

* pr feedback

* updaet package
2026-04-07 23:27:51 -07:00
Seshanth.S
577219e9c7 fix: didit ios native modules (#1867)
- Fixed openssl issue
- Fixed duplicate NFCPassportReader
- missing struct issue
2026-03-26 00:47:47 +05:30
Nesopie
07352a5ac6 feat: migrate from Sumsub to Didit KYC provider (#1860)
* chore: swap @sumsub/react-native-mobilesdk-module for @didit-protocol/sdk-react-native

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: rename SUMSUB_TEE_URL to DIDIT_TEE_URL

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: rename PendingKycVerification.userId to sessionId

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add Didit integration module, remove Sumsub integration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add useDiditWebSocket hook, remove useSumsubWebSocket

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add useDiditLauncher hook, remove useSumsubLauncher

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: rename userId to sessionId in pendingKycStore, bump persist version

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: rename sumsub error injection triggers to didit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: rename KycSuccess route param userId to sessionId

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: update KycSuccessScreen to use useDiditWebSocket and sessionId

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: update all consumer files from Sumsub to Didit

Updates usePendingKycRecovery, selfClientProvider, 5 fallback screens,
LogoConfirmationScreen, HomeScreen, KYCVerifiedScreen, and KycIdCard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: update jest mocks and config for Didit SDK

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* build: swap Sumsub native deps for Didit in Podfile and build.gradle

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: remove hardcoded sumsub namespace from nullifier generation

Read namespace from id_type field instead of hardcoding 'sumsub'.
The didit-tee encodes id_type as [namespace_len][namespace][doc_type],
so the namespace is already in the signed data.

Also fix deserializeApplicantInfo to parse the namespaced encoding
and extract just the document type for display.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: lint and formatting issues from Didit migration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add register_kyc support to build_r1cs_wasm.sh and build_cpp.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use circuits/node_modules paths in build_r1cs_wasm.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: emit ack_success after receiving KYC data to trigger session deletion

The didit-tee now expects the client to ack receipt of signed data,
which triggers DELETE of the session from Didit's API for data cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use raw bytes for KYC commitment/nullifier instead of deserialize+reserialize

The deserialize→reserialize path strips the namespace prefix from
id_type, producing different bytes than the TEE signed. Work on the
raw base64-decoded bytes directly to match the circuit inputs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: lint

* Revert "fix: lint"

This reverts commit d3dde1460b.

* fix: lint

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:49:49 +05:30
Justin Hernandez
9493e84b24 revert pr 1786 lottie json conversion (#1848)
* Revert "chore: convert json to lottie files (#1786)"

This reverts commit 9406bacda8.

* remove dotlottie

* fix regressions

* pr feedback

* formatting

* fixes

* lint
2026-03-12 10:04:30 -07:00
Justin Hernandez
1041babc7b Stabilize iOS simulator startup and crash mitigation flow (#1836)
* save sepc

* save wip

* save pr 2wip

* save wip rd 3

* finalize ios crash fix

* pr feedback and format
2026-03-10 20:09:03 -07:00
Justin Hernandez
d7c1556ddc Align KMP verification result contract with canonical SDK types (#1831)
* Align KMP verification result contract

* formatting

* pr feedback

* feedback
2026-03-10 09:02:12 -07:00
Justin Hernandez
88e28733b1 Phase 1 Native Consolidation: Extract MRZ OCR/Mapping Helpers and Thin Scanner Views (#1823)
* mrz consolidation

* consolidate mrz swift code

* update specs

* save changes

* fixes

* format

* update spec

* pr feedback

* add tests

* save prep work

* consolidate MRZ handling logic

* fixes

* format

* format

* remove giga

* pr feedback

* update spec

* update

* revert change

* pr feedback

* updates
2026-03-06 17:54:46 -08:00
Justin Hernandez
d1962734db Add Social Login Demo (Google + Apple) with navigation and test mocks (#1806)
* chore: bump firebase to v21 and clean up Podfile

* feat: add social login demo screen

* pr feedback

* pr feedback

* fixes

* add android values to ci

* feedback
2026-03-03 18:53:11 -08:00
Justin Hernandez
9406bacda8 chore: convert json to lottie files (#1786)
* convert json to lottie files

* add comment for future web dotlottie usage

* fix pipelines; agent feedback

* enable ios e2e

* update lottie

* one more try

* kotlin fix

* attempt fix

* save wip fixes

* fix patch

* final pass

* fix pipelines

* attempt fix

* fix test

* feedback

* fix types
2026-02-28 18:47:25 -08:00
Justin Hernandez
26353c0201 chore: update macos setup script (#1791)
* improve script stability

* fix cocoapods installastion

* improve detection, add swiftlift dep

* update packages; check bundler version

* fix script

* improvmeents

* fix sed issues

---------

Co-authored-by: Justin Hernandez <jmh@Justins-MacBook-Air.local>
2026-02-25 17:55:00 -08:00
Seshanth.S
330bc441eb SELF-761 add expo sdk 52 (#1766)
* add expo 52

* fix ios build

* update RN to 0.77.0

* fix 16kb alignment of libjnidispatch.so

* update coderabbit comments

* fix expo notifications

* fix ci

* update lock

* silence gitleaks

* reinstall updates

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-02-19 12:34:24 -08:00
Justin Hernandez
2495b7af4d bump to 2.9.16 (#1740) 2026-02-12 14:46:53 -08:00
Justin Hernandez
a1b04f2b03 chore: enable SumSub Fisherman device intelligence with privacy compliance (#1714)
* clean up permissions

* updates for permissions

* update permissions and packages

* fix: mark device ID collection as linked in privacy manifest

Address CodeRabbit feedback:
- Set NSPrivacyCollectedDataTypeLinked to true (device signals are tied to applicant identity)
- Clarify Android Data Safety checklist requirements with explicit data-linking declaration

Co-authored-by: Cursor <cursoragent@cursor.com>

* remove for now

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 12:08:08 -08:00
Justin Hernandez
141fcb67c3 chore: accept xcode suggestions 2026 02 (#1711)
* xcode suggestionsn rd1

* disable sandbox
2026-02-05 14:25:00 -08:00
Justin Hernandez
7acc9bb2a6 chore: fix failing mobile demo ios e2e tests (#1710)
* fix failing mobile demo ios e2e tests

* temp test

* add patch. update files

* run demo e2e patch

* sort package json

* disable running on dev
2026-02-05 13:15:05 -08:00
Justin Hernandez
4eecd2a065 chore: address ITMS-90738 (#1702)
* fix ITMS-90738

* update description
2026-02-04 11:31:10 -08:00
Justin Hernandez
cbc6c84546 chore: bump version to 2.9.15 (#1700)
* bump version

* disable for now to test deployment
2026-02-04 10:40:57 -08:00
Justin Hernandez
8da076cf0d Bump Babel, TypeScript, React Native and assorted dependencies; refresh lockfile (#1606)
* Update dependency versions

* Fix gesture handler Android dependency (#1611)

* Patch screens codegen type (#1609)

* Downgrade Sentry React Native (#1612)

* fix patches and packages

* downgrade versions for gesture handler and screens

* agent feedback

* fix ios building

* allow ios tets to pass

* formatting

* make cache more resilient

* Address CodeRabbitAI review comments

This commit addresses all 7 unresolved CodeRabbitAI comments on PR #1606:

Patch-package error handling (comments #1, #2, #3):
- stderr capture already implemented in both root and workspace patch runs
- Add CI warning when patches fail silently instead of exiting with 0
- Log completion status in CI mode for visibility

Critical Mixpanel dependency fix (comment #5):
- Add explicit Mixpanel-swift pod declaration to fix E2E build failures
- Ensures Mixpanel is available even when NFCPassportReader is skipped during E2E testing

React-native-web validation (comment #4):
- Verified no usage of deprecated findNodeHandle, pointerEvents: 'box-none', or createPortal
- Safe to upgrade from 0.19 to 0.21.2

CI workflow improvements (comments #6, #7):
- Create cache-sdk-build composite action for consistent SDK build artifact caching
- Replace all direct actions/cache@v4 usage with cache-yarn composite action
- Replace all direct actions/cache/restore@v4 and save@v4 with cache-sdk-build
- Add nested require() validation step before tests to fail fast on problematic patterns

All changes follow repository coding guidelines for CI caching and test memory optimization.

* Extend cache composite actions to all SDK workflows

This commit extends the caching standardization from PR #1606 to include
mobile-sdk-ci.yml and core-sdk-ci.yml workflows.

New composite actions created:
- cache-mobile-sdk-build: For mobile SDK build artifacts
- cache-core-sdk-build: For core SDK build artifacts

Workflow updates:
- mobile-sdk-ci.yml: Replaced 5 instances of direct actions/cache with cache-mobile-sdk-build
- core-sdk-ci.yml: Replaced 4 instances of direct actions/cache with cache-core-sdk-build

All SDK CI workflows now use consistent caching patterns via composite actions,
following the AGENTS.md guideline: "Use shared composite actions from .github/actions
for CI caching instead of calling actions/cache directly."

Benefits:
- Consistent caching across all SDK workflows (qrcode, mobile, core)
- Centralized cache configuration - easier to maintain
- Follows established patterns from qrcode-sdk-ci.yml

* downgrade react-native-svg

* update pod lock file

* sort
2026-01-28 12:47:32 -08:00
Justin Hernandez
ba856226d8 SELF-1812: integrate sumsub into mobile app (#1650)
* sumsub initial pass

* add sumsub tee url

* agent feedback and fixes

* update lock

* agent feedback

* fix types

* agnet feedback

* fix mock

* agent feedback

* lazy load sumsub screen

* white button color

* fix lint

* add debug url link

* allow us to see recordings

* debug maestro run

* disable e2e screen recording for now. don't load sumsub logic when running e2e test

* remove lazy loading

* skip installing sumsub plugin

* retest ios e2e

* get e2e tests passing

* clean up
2026-01-26 14:06:36 -08:00
Justin Hernandez
57c7df4ae3 chore: downgrade react-native-screens to fix iOS deploy (#1641)
* match ios version for deploy

* download react-native-screens to fix ios deploy
2026-01-21 20:56:02 -08:00
Justin Hernandez
c5e0ca459f bump version to 2.9.13 (#1636) 2026-01-21 16:09:12 -08:00
Seshanth.S
d5b843db5b SELF-1497: add keychain patch (#1607)
* add keychain patch - wip

* centralise useStrongbox flag usage

* set allowBackup to false

* bump to version 2.9.12

* bump android build for 2.9.12

* improve keychain error detection

* Disable Strongbox by default

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-01-20 23:35:41 +05:30
Justin Hernandez
5b5110925a [SELF-810] Edge-to-edge: add iOS-only SystemBars wrapper and update Android handling (#1610)
* Update edge-to-edge handling

* update lock file

* formatting

* agent feedback
2026-01-15 10:32:55 -08:00
Justin Hernandez
12f3262dbf chore: bump version to 2.9.11 (#1601)
* chore: bump version to 2.9.11

* fix linting
2026-01-13 14:08:50 -08:00
Justin Hernandez
906ca505d3 chore: bump mobile version to 2.9.10 (#1554)
* update gems and pods

* bump build number and version after 2.9.9 release
2026-01-07 11:23:09 -08:00
Justin Hernandez
2e9b79446a bump version (#1542) 2026-01-03 15:06:10 -08:00
Justin Hernandez
fe90b3a78d bump bugfix version to 2.9.7 (#1534) 2025-12-26 12:46:24 -08:00
github-actions[bot]
bc158ee730 chore: bump iOS version to 2.9.6 (#1529)
* chore: bump mobile app version to 2.9.6

Update build numbers and deployment timestamps after successful deployment.

* bump version too

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2025-12-25 11:19:01 -08:00
Justin Hernandez
7dbd46f245 Add docstring reporting script and workflows (#1333)
* Trim docstring coverage snapshots

* format all the tings

* update lock

* Update docstring coverage snapshots (#1521)

* docstring fixes

* address agent feedback

* update lock files

* address agent feedback

* lock react-native-svg version to prevent pipeline failures

* update docstring logic

* remove docstring coverage from ci

* remove old report, fix cursorignroe rule
2025-12-25 11:17:42 -08:00
Justin Hernandez
c66a1b17f9 bump version to 2.9.5; make webview tests async (#1501) 2025-12-14 12:16:48 -08:00