Commit Graph

3222 Commits

Author SHA1 Message Date
Justin Hernandez
408e2fa4de kmp wrap up handoff work (#1785)
* save wip

* finalize pr

* pr feedback

* update specs. feedback

* add handoff security doc
2026-02-25 17:51:43 -08:00
Justin Hernandez
3b55ef29fd Add engineering standards for coding agents (#1789)
* add purple md files

* update rules

* udpates

* last update
2026-02-24 17:02:28 -08:00
Justin Hernandez
7f43ade300 Sync Android/iOS build files when applying mobile version bumps (#1617)
* Update mobile version apply

* updates

* tweaks; single source of file truth

* fix workflow

* pr feedback
2026-02-23 15:08:41 -08:00
Justin Hernandez
63865d200d Update spec guide to improve quality (#1783)
* update specs

* updates

* feedback

* clean up docs

* fix rule
2026-02-20 11:58:14 -08:00
github-actions[bot]
f2361d9662 chore: bump mobile app version to 2.9.16 (#1781)
Update build numbers and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-20 03:20:51 -08:00
Justin Hernandez
6d3b016388 fix gitleaks misses (#1780) 2026-02-20 02:15:57 -08:00
Evi Nova
111d513093 Fix/auto convert sc endpoint to lowerpoint (#1760)
* fix: automatically lowercase smart contract end points

To avoid getting scopeMismatch() errors which were caused by ethers.js returning checksummed addresses (mixed case, including upper case) by default. Forces to lowercase to match logic in on chain _calculateScope() function

* fix: auto lowercase for Go SDK

* chore: yarn prettier
2026-02-20 02:04:18 -08:00
Evi Nova
0f5d8cbff5 fix: show country nationality in view id card screen (#1777)
* fix: show country nationality in view id card screen

Was showing country code, now tries to fetch the country name. If can't find, resolves back to raw country code.

* port fix over

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-02-20 02:04:01 -08:00
Justin Hernandez
ac1e6fdb44 [SELF-2033] bugfix: clipped card header (#1778)
* simplify Id and Kyc Card to make it easier to fix header

* format

* fix global Buffer polyfill

* fix padding

* remove dev card screen

* minor fixes
2026-02-19 23:27:59 -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
65d5188384 add currnet branc (#1775) 2026-02-18 22:30:48 -08:00
turnoffthiscomputer
c00241d327 Feat/person1 2 3 implementation (#1770)
* add ios swift handlers

* Add lifecycle completion and optional relay listener

* agent feedback

* save wip

* fix compiling

* finalize feedback

* agent feedback

* fix ci

* udpate specs

* feat: implement React Native adapters for authentication, documents, and networking

- Added new adapters for authentication, document management, and network communication tailored for React Native.
- Introduced `createAuthAdapter`, `createDocumentsAdapter`, and `createNetworkAdapter` to streamline integration with React Native's capabilities.
- Updated `SelfClientProvider` to utilize the new adapter factory for improved modularity and maintainability.
- Enhanced package dependencies to include necessary libraries for secure storage and hashing.

This update enhances the SDK's functionality and prepares it for better cross-platform compatibility.

* refactor: update specs to streamline documentation and remove obsolete entries

- Removed the "Keep / Modify / Delete" section from the specs to simplify the document structure.
- Updated the remaining specifications to reflect the current architecture and integration paths, including the introduction of the new `SPEC-RN-SDK.md` for the `<SelfVerification />` RN WebView wrapper component.
- This change enhances clarity and aligns the documentation with recent architectural decisions.

* prettier

* update gitignore to include swift build paths

* update gems

* address pr feedback and pipeline errors

* agent feedback. also include follow up work items

* add spec guide rules

* add markdown files to prettier formatting and update

* add status line update spec guide

* add new specs

* formatting

* format all markdown files

* more formatting

* consolidate into overview

* update spec and template guidelines

* refactor specs

* save wip

* move status up

* feat: add biometrics and camera bridge adapters

Create biometrics adapter (authenticate, isAvailable, getBiometryType) and camera adapter (scanMRZ, isAvailable) matching the native KMP handler response shapes. Wire both into webview-app SelfClientProvider. Includes 6 new tests (50 total, all passing).

* feat: add web fallback adapters and wire in SelfClientProvider

- Create IndexedDB documents adapter and console/fetch
    analytics adapter in webview-bridge (documents-web.ts,
    analytics-web.ts) per Person 1 spec Section 4
  - Create equivalent browser adapters in mobile-sdk-alpha
    per Person 4 Chunk 4F (documents, crypto, analytics,
    haptic)
  - Wire web fallbacks into SelfClientProvider — documents
    and analytics no longer cross the bridge
  - 32 new tests across both packages, all passing
  - fake-indexeddb added as devDep to both packages

* feat: remove 4 Android web-fallback handlers

  - Delete DocumentsBridgeHandler (146 LOC)
  - Delete CryptoBridgeHandler (177 LOC)
  - Delete AnalyticsBridgeHandler (94 LOC)
  - Delete HapticBridgeHandler (94 LOC)
  - Remove registrations from SelfVerificationActivity
  - Android now registers 5 handlers: NFC, Camera,
    Biometrics, SecureStorage, Lifecycle
  - Documents, crypto, analytics, and haptic are now
    handled by web fallback adapters in the WebView

* style: align DocumentsBridgeHandler param extraction

  Standardize iOS DocumentsBridgeHandler to use
  ?.jsonPrimitive?.content for parameter extraction,
  matching the convention used by all other iOS handlers.

* feat: add MiniPay sample app

  Create Compose Multiplatform sample app showing how
  third-party integrators embed Self identity verification
  via SelfSdk.launch(). Two native screens (Home, Result);
  all verification logic runs in the SDK's WebView.

  Shared Kotlin (commonMain):
  - App.kt: NavHost with home/result navigation
  - MainViewModel.kt: SDK launch + callback routing
  - HomeScreen.kt: status card + "Verify Identity" button
  - ResultScreen.kt: success/failure with error mapping
  - Theme.kt: MiniPay-style Material 3 colors

  Android:
  - MainApplication.kt: SelfSdk.configure() in onCreate
  - MainActivity.kt: passes SDK instance to Compose
  - AndroidManifest.xml: NFC, Camera, Biometric, Internet
    permissions + NFC TECH_DISCOVERED intent filter
  - res/xml/nfc_tech_filter.xml: IsoDep for passport NFC

  iOS Kotlin:
  - MainViewController.kt: ComposeUIViewController entry

  iOS Swift (iosApp/):
  - iOSApp.swift: provider registration with
    SdkProviderRegistry (same pattern as kmp-test-app)
  - ContentView.swift: UIViewControllerRepresentable
  - Xcode project with NFC/Camera entitlements

  Spec deviation — single-module vs two-module:
  The spec directory diagram (lines 88-120) shows a
  separate androidApp/ module, but the spec's own build
  config (lines 384-447) has composeApp using the
  androidApplication plugin — meaning composeApp IS the
  Android app. These contradict: you cannot have two
  androidApplication modules. The existing kmp-test-app
  uses the same single composeApp pattern. We follow the
  build config + test app precedent.

  Build verified on all targets:
  - compileDebugKotlinAndroid: BUILD SUCCESSFUL
  - compileKotlinIosArm64: BUILD SUCCESSFUL
  - compileKotlinIosSimulatorArm64: BUILD SUCCESSFUL

* style: Rename webAnalyticsAdapter to consoleAnalyticsAdapter

  Align web analytics adapter naming with updated spec
  (specs/person1-webview/SPEC.md section 4c).

  - Rename webAnalyticsAdapter → consoleAnalyticsAdapter
  - Rename WebAnalyticsOptions → ConsoleAnalyticsOptions
  - Update barrel export in adapters/index.ts
  - Update import in SelfClientProvider.tsx
  - Update all references in analytics-web.test.ts

  The new name better describes the adapter's purpose: a
  console-logging (+ optional HTTP endpoint) fallback for
  environments without a native bridge.

  Verified: webview-bridge build clean, 63/63 tests pass,
  webview-app type-check clean.

* refactor: Align Person 4 adapters with updated spec

  Rename haptic + fix crypto algo normalization per updated
  specs/person4-sdk-core/SPEC.md (Chunk 4F).

  Haptic:
  - createNoOpHapticFeedback → createNoOpHapticAdapter
  - Updated barrel export, re-export, and test references

  Crypto:
  - Replace static ALGO_MAP lookup with regex normalization:
    algo.toUpperCase().replace(/^SHA(\d)/, 'SHA-$1')
  - Handles all variants: sha256, SHA256, sha-256, SHA-256
  - Add tests for already-hyphenated and uppercase inputs

  Verified: 20/20 browser adapter tests pass, tsc clean.

* fix: resolve 7 Android device testing bugs in SDK + MiniPay

Fix issues found during physical device testing (Pixel 8
Pro) of the MiniPay sample app end-to-end flow.

SDK fixes (kmp-sdk):
- Use activityResultRegistry.register() instead of
  activity.registerForActivityResult() to avoid
  IllegalStateException when registering after onStart
- Replace FragmentActivity with ComponentActivity
  (AndroidX 1.9.x changed the class hierarchy)
- Change SelfVerificationActivity theme to
  Theme.AppCompat.NoActionBar (AppCompatActivity
  requires an AppCompat theme)
- Rewrite AndroidWebViewHost to use WebViewAssetLoader
  with custom PathHandler, serving bundled Vite assets
  under https://appassets.androidplatform.net/ to fix
  CORS, history.replaceState, and asset path resolution
- Add runtime permission requests for Camera + NFC in
  SelfVerificationActivity.onCreate()

MiniPay fixes (kmp-minipay-sample):
- Create expect/actual platformLaunch to thread Android
  Activity to SDK without leaking platform types into
  commonMain
- Set debug = false to load bundled assets instead of
  emulator dev server URL

Tested on Pixel 8 Pro: app launches, verification
WebView opens, camera scans for MRZ. Full passport
scan untested (no document available).

* feat: implement @selfxyz/rn-sdk React Native SDK

  Thin <SelfVerification /> component wrapping react-native-webview
  that embeds Self's identity verification flow. Bridges NFC, camera,
  biometrics, keychain, and lifecycle to native via MessageRouter.

  - MessageRouter: routes WebView bridge messages to domain handlers
  - 5 handlers: lifecycle, biometrics, secureStorage, nfc, camera
  - Platform.select asset loading (Android file://, iOS RNFS bundle)
  - 59 unit tests, build + typecheck clean
  - ReactNativeWebView transport detection added to webview-bridge

* fix: Remove dead code and persist verification state

Claude identified some gaps in the spec. Fixed to match:

  - Delete unused onVerificationSuccess/Failure/Cancelled methods
    from MainViewModel (sdkCallback handles all cases)
  - Add expect/actual AppStorage (SharedPreferences / NSUserDefaults)
    to persist HomeState across app restarts
  - Update homeState eagerly in sdkCallback.onSuccess() so Android
    system back button shows correct state on HomeScreen

* refactor: migrate webview-app from Tamagui to @selfxyz/euclid-web

  Replace Tamagui + react-native-web UI framework with Self's
  official euclid-web component library across all 10 screens.
  Simplify Vite config, remove RN aliases, and fix country flag
  emoji rendering with proper ISO 3166-1 alpha-3 to alpha-2
  conversion.

  - Remove tamagui, @tamagui/config, react-native-web deps
  - Add @selfxyz/euclid-web and @selfxyz/euclid-core
  - Rewrite 6 screens as euclid direct replacements
  - Compose 4 screens from euclid primitives
  - Fix fonts.css for euclid font family names
  - Add shared countryFlags utility (alpha-3 → alpha-2 lookup)
  - Clean up tsconfig.json and stale .tamagui cache

* fix pipeline

* formatting

* fix tests

* fix type error

* address feedback

* fix formatting

* update specs and create handoff doc for new pull request

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
Co-authored-by: Tranquil-Flow <tranquil_flow@protonmail.com>
2026-02-18 21:32:20 -08:00
Justin Hernandez
3a0592c903 chore: address spec inconsistencies (#1774)
* fix spec consistencies

* update inconsistnecies

* fix: address PR review feedback on spec inconsistencies

- Fix proof type in MiniPay sample to use String? (matching canonical
  Kotlin VerificationResult), not a map
- Fix HomeState.verifiedClaims to Map<String, String> matching actual SDK
- Fix returnToHome description to not reference proof?.timestamp
- Clarify crypto domain routing: sign/generateKey/getPublicKey still use
  bridge.request('crypto', ...), native handler uses secure storage
  internally — key never leaves native
- Change crypto domain from "Deprecated" to "Native †" in domain catalog
- Fix Adapter Interface Mapping for CryptoAdapter.sign()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve remaining spec inconsistencies in SDK-OVERVIEW

- Update North Star constraint to include crypto signing/key-gen as
  native-only (was missing after crypto domain reclassification)
- Fix status checklist: "Delete 3 handlers" not 4 — crypto domain
  still routed natively for signing/key-gen
- Update iOS handler count from 3 to 4 (SecureStorage now required)
- Fix architecture diagram footnote to list SecureStorage as required
  provider, remove "managed directly by host app" language
- Remove "crypto" from Swift Providers module table (no separate
  CryptoProvider exists; crypto ops route through secure storage)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add crypto signing/key-gen to Design Principles native list

Aligns Design Principle #2 with the updated constraint and crypto
domain note — crypto signing stays native so keys never leave
secure storage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address 3 review findings — claim type, regex, trust boundary

- Fix MiniPay sample comment: claims is Map<String, Any?>? (canonical
  target type), not Map<String, String>?
- Fix CI guard regex: add \b word boundary to "verified" pattern so it
  won't false-positive on isVerified; drop overly broad .timestamp check
- Add trust boundary statement to crypto domain note: native signing
  handler signs whatever the WebView sends, which is safe only because
  the Vite bundle is statically embedded at build time

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 18:45:20 -08:00
Justin Hernandez
f37c3e904c add prompt to enhance product spec (#1772) 2026-02-18 15:07:23 -08:00
Justin Hernandez
5cdf9df36d Update CLAUDE.md with instructions to use spec framework (#1771)
* add session logging for resuming sessions

* update CLAUDE prompt to use spec work docs
2026-02-18 14:23:44 -08:00
Justin Hernandez
d5a03a6f64 refactor specs with new style (#1769)
* add new specs

* formatting

* format all markdown files

* more formatting

* consolidate into overview

* update spec and template guidelines

* refactor specs

* save wip

* move status up

* wip

* update specs with missing items, remove stale items, add wave planning

* finalize specs and formatting

* formatting

* agent feedback, reviews

* formatting and feedback

* finalize feedback

* more feedback

* pr feedback

* formatting
2026-02-17 21:31:01 -08:00
turnoffthiscomputer
21c5e9b394 Add VERIFICATION_COMPLETE event and optional relay listener for WebView mode (#1765)
* Add lifecycle completion and optional relay listener

* fix ci

* udpate specs

* feat: implement React Native adapters for authentication, documents, and networking

- Added new adapters for authentication, document management, and network communication tailored for React Native.
- Introduced `createAuthAdapter`, `createDocumentsAdapter`, and `createNetworkAdapter` to streamline integration with React Native's capabilities.
- Updated `SelfClientProvider` to utilize the new adapter factory for improved modularity and maintainability.
- Enhanced package dependencies to include necessary libraries for secure storage and hashing.

This update enhances the SDK's functionality and prepares it for better cross-platform compatibility.

* refactor: update specs to streamline documentation and remove obsolete entries

- Removed the "Keep / Modify / Delete" section from the specs to simplify the document structure.
- Updated the remaining specifications to reflect the current architecture and integration paths, including the introduction of the new `SPEC-RN-SDK.md` for the `<SelfVerification />` RN WebView wrapper component.
- This change enhances clarity and aligns the documentation with recent architectural decisions.

* prettier

* update gitignore to include swift build paths

* update gems

* address pr feedback and pipeline errors

* agent feedback. also include follow up work items

* fix ws send guard + document unresolved coderabbit review items in specs

- Add readyState guard to WsConn.send() to throw a clear error instead of
  InvalidStateError when socket is not OPEN
- Fix stale abort listener leak: clean up abort handler unconditionally on
  socket close, not only when caller registers onClose
- Add "Chunk 3F implementation notes" to SPEC-PERSON3-SDK-CORE for SHA
  algorithm name mapping and fake-indexeddb test requirement
- Add "Spec Corrections" section to SPEC-RN-SDK documenting 5 issues
  (peerDep, missing router arg, iOS source, randomUUID, RNFS) to address
  during implementation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* formatting

---------

Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 14:48:41 -08:00
Evi Nova
fca391c6f1 Fix/quick webview fixes (#1764)
Claude noticed some stuff to clean up in previous day's code.

* fix: add missing uuid dep, fix redundant ternary, register DINOT-Bold

- Add uuid as direct dependency instead of relying on hoisting
  - Remove redundant success ternary in VerificationResultScreen
  - Fix ComingSoonScreen to match documentType codes from IDSelectionScreen
  - Register DINOT-Bold font family in Tamagui config

* chore: unpushed fixes

* chore: force CI
2026-02-17 13:52:05 +10:00
turnoffthiscomputer
6d107e709a fix: exclude kmp-sdk from monorepo-wide build
The kmp-sdk requires Android SDK + Gradle which aren't available in
Codex/CI environments. Exclude it from `yarn build` like contracts
and circuits already are.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:56:16 +01:00
turnoffthiscomputer
74695784d5 fix: resolve kmp-sdk build failure on iOS native test compilation
Replace assert() with assertTrue() in MrzKeyUtilsTest to avoid
ExperimentalNativeApi opt-in requirement on Kotlin/Native. Also
gitignore the copyWebViewAssets build artifact (shared/src/main/).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:44:45 +01:00
turnoffthiscomputer
addfebe817 feat: add SDK Core Adaptation spec for @selfxyz/mobile-sdk-alpha
- Introduced a new specification document for making the mobile-sdk-alpha work in a browser/WebView context.
- Updated SPEC-OVERVIEW.md to include Person 3's role in SDK Core Adaptation.
- The new spec outlines the removal of React Native dependencies from core logic, ensuring compatibility across platforms.
- Key changes include adapting platform detection, debugging configurations, and font handling for a seamless WebView experience.
2026-02-16 18:14:37 +01:00
Evi Nova
64a4f04c6a Feat/webview+bridge (#1763)
* feat: add @selfxyz/webview-bridge protocol library

Pure TypeScript bridge for WebView-to-native communication via postMessage JSON.

  - WebViewBridge class: request/response lifecycle, event subscriptions, timeouts
  - 9 adapter factories: NFC scanner (120s timeout, abort support), crypto
    (WebCrypto hash + bridge sign), auth, documents, storage, analytics,
    haptic, navigation (React Router mapping), lifecycle
  - MockNativeBridge test utility for testing without native
  - Schema validation with typed errors
  - 44 tests passing (bridge, schema, adapters)
  - Build: tsup → ESM + CJS + DTS

* chore: gitignore Android SDK and platform directories

Add app/build-tools, licenses, ndk, platform-tools, platforms and mobile-sdk-alpha equivalents to .gitignore.

* feat: add @selfxyz/webview-app shell with routing, providers, and stubs

Scaffolds the private @selfxyz/webview-app Vite package that runs inside
  the KMP SDK's native WebView.

  - Vite config with @vitejs/plugin-react + @tamagui/vite-plugin,
    react-native → react-native-web alias, lottie-react-native → lottie-react
  - Tamagui config copied from app/ with custom fonts (advercase, dinot, plexMono)
  - 4 OTF font files copied to public/fonts/ with @font-face CSS
  - BridgeProvider: singleton WebViewBridge context (debug in dev mode)
  - SelfClientProvider: wires all 9 bridge adapters (nfc, crypto, auth,
    documents, storage, analytics, haptic, navigation, lifecycle) and
    fires lifecycle.ready() on mount
  - BrowserRouter with 11 routes + catch-all redirect
  - 10 stub screen components (to be implemented in follow-up commits)
  - CSS reset tuned for WebView (no scroll, no tap highlight, no user-select)

  Verified: tsc --noEmit passes, vite build produces dist/index.html + 520KB bundle.

* feat(webview-app): implement all 10 WebView screens

Replace stub screens with full implementations wired to bridge adapters.

  Onboarding flow (5 screens):
  - CountryPickerScreen: searchable country list from local JSON data
  - IDSelectionScreen: passport/ID card/other document type selection
  - DocumentCameraScreen: MRZ scanning via bridge camera adapter
  - DocumentNFCScreen: NFC chip reading with progress, 120s timeout, abort
  - ConfirmIdentificationScreen: ownership confirmation via lifecycle.setResult

  App screens (5 screens):
  - HomeScreen: document catalog with empty/loaded states
  - ProvingScreen: disclosure item review + proof generation
  - VerificationResultScreen: success/failure result display
  - SettingsScreen: account menu items + dismiss SDK
  - ComingSoonScreen: placeholder for unimplemented features

* chore: yarn prettier
2026-02-16 21:41:02 +10:00
github-actions[bot]
2da4df6748 chore: bump mobile app version to 2.9.16 (#1761)
Update build numbers and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 01:19:06 -08:00
Justin Hernandez
466fd5d8e7 update kmp specs (#1757)
* save new specs

* rename specs
2026-02-16 00:42:06 -08:00
Justin Hernandez
b5510f565d pass var down (#1758) 2026-02-16 00:41:44 -08:00
Justin Hernandez
a2eb8a1a67 fix code ql issues (#1756) 2026-02-16 00:16:25 -08:00
Justin Hernandez
709f7b36b2 chore: code quality feedback for 2.9.16 (#1754)
* code quality feedback

* agent feedback
2026-02-15 21:54:29 -08:00
Javier Cortejoso
522ced4f20 chore: NPM publish using Trusted Publishing (#1729)
* chore: simplify npm publish workflow by removing NPM token checks

- Removed redundant checks for NPM_TOKEN before publishing packages to npm.
- Updated publish result messages to reflect the use of Trusted Publishers (OIDC) for package publishing.
- Streamlined the workflow for better clarity and efficiency.

* chore: update npm publish workflow to use ubuntu-slim

- Changed the runner from 'ubuntu-latest' to 'ubuntu-slim' for improved efficiency and reduced resource usage during the npm publish process.

* chore: enhance npm publish workflow with dry run option

- Added a 'dry_run' input to the npm publish workflow to validate authentication and Trusted Publishers without uploading packages.
- Updated publish result messages to indicate when a dry run is completed, improving feedback during the publishing process.

* chore: refine npm publish workflow by removing strict mode input

- Eliminated the 'strict_mode' input from the npm publish workflow to simplify the process.
- Removed associated error handling comments and environment variable for stricter publish mode.
- Streamlined the workflow for improved clarity and efficiency during package publishing.

* chore: update npm publish workflow to use npx for publishing

- Replaced `yarn npm publish` with `npx npm@latest publish` to ensure the latest npm CLI is used for package publishing.
- Removed unnecessary `yarn config set npmPublishAccess` commands to streamline the workflow.
- Maintained the existing dry run functionality for testing without actual publishing.

* chore: enhance npm publish workflow to include version tagging

- Updated the npm publish workflow to dynamically determine the package version and apply a beta tag for pre-release versions.
- This change ensures that the correct versioning is maintained during the publishing process, improving clarity for users regarding package stability.
- Retained existing dry run functionality for testing without actual publishing.

* chore: remove npm publish command from package.json files

- Eliminated the `publish` script from multiple package.json files across contracts, sdk/core, sdk/qrcode, and sdk/qrcode-angular.
- This change streamlines the package management process by removing unnecessary publish commands, ensuring a cleaner configuration for future development.

* Temporary bump versions for check package publishing

* Revert "Temporary bump versions for check package publishing"

This reverts commit 180f5d538a.

* chore: add version check before npm publishing

- Implemented a version check in the npm publish workflow to prevent publishing of already published package versions.
- This enhancement ensures that developers are notified to bump the version in package.json if the version is already published, improving the publishing process and reducing errors.

* chore: improve npm publish workflow with enhanced outcome handling

- Updated the npm publish workflow to include detailed outcome handling for publish results, including checks for version publication status and improved messaging for skipped or failed publishes.
- This enhancement provides clearer feedback to developers regarding the publishing process, ensuring they are informed about the status of their package versions and necessary actions to take.

* chore: update npm publish workflow to include yarn packing for workspace resolution

- Added steps to pack each workspace using `yarn pack` before publishing to npm, ensuring that the correct package is published from each directory.
- This change resolves issues related to workspace protocol and improves the reliability of the publishing process across multiple packages.

* chore: simplify npm publish workflow by removing version check step

- Removed the version check for publish-msdk, as it did not work for private packages.
- Updated outcome handling to ensure clear messaging for skipped publishes without the version check dependency, improving overall workflow clarity.
2026-02-15 21:04:17 -08:00
Justin Hernandez
03635abaaf chore: add kmp license headers; update license year range (#1752)
* add kmp license headers and update year

* formatting
2026-02-15 16:56:06 -08:00
Justin Hernandez
9ad5388f05 feat: introduce kmp sdk & demo app (#1749)
* add kotlin debug app

* add specs

* first kmp sdk version

* add deploy script

* save working nfc implementation

* save demo app flow wip

* agent feedback

* show viewfinder on mrz

* save working scan

* add kotlin formatting

* remove mrz overlay

* fix expiry date

* add feedback to mrz san

* save improved nfc scanning

* save wip

* save gitignore and md state

* add logging and error handling. get iOS demo app working

* format

* add swift formatting

* enable iOS camera

* save ios mrz implementation

* nfc scanning works

* final optimizations

* add tests

* fixes

* better linting

* agent feedback

* bug fixes

* formatting

* agent feedback

* fix app breaking on run

* consolidate kotlin and swift clean up commands

* fix pipeline by installing swiftlint

* fix blurry scanning

* fix ci

---------

Co-authored-by: turnoffthiscomputer <colin.remi07@gmail.com>
2026-02-15 12:03:12 -08:00
Evi Nova
3298e13e60 refactor: remove blur on document when selected + show old view ID data (#1747)
* refactor: remove blur on document when selected

* fix: show original 'view ID data'
2026-02-14 09:34:08 +10:00
Nesopie
3576682e59 chore: revert to aadhaar fix (#1736)
* chore: revert to aadhaar fix

* fix: tests
2026-02-13 10:58:12 +05:30
Justin Hernandez
a632727fee Add tech debt baseline snapshot generator and baseline docs (#1743)
* Add cruft baseline snapshot

* pr feedback

* rename cruft to tech deb

* improve baseline
2026-02-12 19:29:56 -08:00
github-actions[bot]
c158869725 chore: bump mobile app version to 2.9.16 (#1746)
Update build numbers and deployment timestamps after successful deployment.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-12 19:26:50 -08:00
Justin Hernandez
eee830b7ea agent feedback (#1744) 2026-02-12 17:35:54 -08:00
Justin Hernandez
2495b7af4d bump to 2.9.16 (#1740) 2026-02-12 14:46:53 -08:00
Justin Hernandez
de8787ef1a chore: enable sumsub (#1737)
* enable sumsub

* bugbot feedback
2026-02-12 14:42:18 -08:00
Justin Hernandez
575566f7f2 chore: less flaky nfc test (#1738)
* attempt to make test less flaky

* fix flaky test again

* lint
2026-02-12 14:24:07 -08:00
Justin Hernandez
7c49a3261f chore: address additional sumsub feedback (#1735)
* agent feedback

* fix settings screen color
2026-02-12 11:09:22 -08:00
Leszek Stachowski
abf01c82c0 Show badge for inactive documents (#1487)
* Show badge for inactive documents

* fix

* refactor to use the new flag

* add inactive check to ProveScreen

* lint

* fix for proving button not working

* use new qrHashlogic

* increase bundle size threshold to 46MB

* remove commented out line

* add kyc related changes

---------

Co-authored-by: seshanthS <seshanth@protonmail.com>
2026-02-12 11:05:47 -08:00
Justin Hernandez
ec8b8fc419 refactor(app): share homescreen card dimensions (#1733)
* refactor(app): share homescreen card dimensions

* formatting

* fix logic
2026-02-11 15:56:15 -08:00
Justin Hernandez
3ba1d33fbe chore: agent points hook feedback (#1727)
* agent points feedback

* agent feeddback
2026-02-11 15:35:14 -08:00
Seshanth.S
886e02f53d SELF-1938 sumsub integration (#1661)
* Sumsub: Update keychain and types

* sumsub: ProvingMachine changes - WIP

* fix: remove duplicate identifier

* update proving machine

* Refactor && Continue onchain registration if user left the app

* fix register flow

* Add hooks to KycSuccessScreen

* Integrate KycVerifiedScreen (#1686)

* Integrate KycVerifiedScreen & Fix race conditions

* yarn lint

* lint

* lint

* add mock kyc

* fix disclose flow

* yarn lint

* Feat/add kyc home screen card design (#1708)

* feat: add new designs to the kycIdCard

* refactor: Update KycIdCard design to match IdCard styling

* feat: update document cards + dev document

* feat: update empty id card for new design

* feat: update pending document card design

* feat: update expired doc + unregistered doc cards from new design

* fix: unregisted id card button links to continue registration screen

* fix: logo design on document cards

* feat: add 6 different backgrounds for ids

deterministically shows 1 of 6 backgrounds for each document | fix: fixed document designs not displaying correctly.

* chore: trigger CI rebuild

* feat: Integrate PendingIdCard to Homescreen

* fix KycIdCard.tsx

---------

Co-authored-by: seshanthS <seshanth@protonmail.com>

* lint

* fix tests

* fix: cleanup only on unmount

* coderabbit comments

* fix: cleanup unused code

* fix: edge case for German Passports with D<< nationality code

* fix tests

* review comments

* review comments

* lint

* Hide duplicated cards in Homescreen

* remove console.log

* fix patch

* remove unused vars

* agent updates

* agent feedback

* abstract colors and formatting

* agent feedback

* Regenerate Sumsub patch-package patch

* fix: handle malformed kyc payload in card background selector

* re-add for clean up

---------

Co-authored-by: Evi Nova <66773372+Tranquil-Flow@users.noreply.github.com>
Co-authored-by: Evi Nova <tranquil_flow@protonmail.com>
Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-02-11 13:51:10 -08:00
Evi Nova
0bece5edd0 Feat/upgrade kyc celo mainnet (#1726)
* feat: celo mainnet deployments

* fix: upgrade script now reads version from contract directly

* fix: add library linking for kyc related contracts in upgrade script

* feat: IdentityVerificationHub v2.13.0 deployed on Celo

- Implementation: 0x0D911083b2F2236D79EF20bb58AAf6009a1220B5
- Changelog: Upgrade

* feat: update with new gcpJwtVerifier contract

* chore: yarn prettier

* Feat/new gcp verifier (#1719)

* feat: new gcp jwt verifier

* lint: contracts

---------

Co-authored-by: Nesopie <87437291+Nesopie@users.noreply.github.com>
2026-02-11 16:40:41 +10:00
Evi Nova
fa253fcf2d Upgrade/update celo sepolia hub kyc (#1725)
* fix: update celo-sepolia in upgrade script to correct chain ID

* feat: add celo-sepolia deployed contracts to registry.json

* fix: upgrade script now reads version from contract directly

* fix: add library linking for kyc related contracts in upgrade script

* feat: IdentityVerificationHub v2.13.0 deployed on Celo Sepolia

- Implementation: 0x244c93516Abd58E1952452d3D8C4Ce7D454776B8
- Code-only upgrade (no new initializer), adds KYC support
- Tx: 0xf24d1c2cd4fd0055237f406a9850ce6e24f538ed09e57ff09755ed142fcc903c

* chore: yarn prettier

* Feat/new gcp verifier (#1719)

* feat: new gcp jwt verifier

* lint: contracts

---------

Co-authored-by: Nesopie <87437291+Nesopie@users.noreply.github.com>
2026-02-10 18:44:50 +10:00
Justin Hernandez
2a583f72c7 chore: update fastlane to 2.232.0 (#1723)
* udpate fastlane

* audit gems
2026-02-09 17:14:49 -08:00
Justin Hernandez
2fbd39f5eb chore: remove microphone permission; release new build for 2.9.15 (#1724)
* remove microphone permission

* bump build to 142
2026-02-09 16:58:20 -08:00
github-actions[bot]
63e4fdb111 chore: bump mobile app version to 2.9.15 (#1722)
* chore: bump mobile app version to 2.9.15

Update build numbers and deployment timestamps after successful deployment.

* bump android version code

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
2026-02-09 15:53:58 -08:00
Justin Hernandez
c886ed19e0 SELF-1959: reset isDecoding on OCR failure (#1720)
* add try catch to set isDecoding on failure

* call mrz listener with failure

* remove redundant log call
2026-02-09 10:12:37 -08:00
Nesopie
14a6cbb91b Feat/new gcp verifier (#1719)
* feat: new gcp jwt verifier

* lint: contracts
2026-02-09 20:03:34 +05:30