From 95b759a77b8e44b27411fbac6ce8ebc573515430 Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Wed, 14 Oct 2026 22:33:38 +0200 Subject: [PATCH 1/6] Bump version and native pins to 4.10.0 Co-Authored-By: Claude Opus 5.5 (1M context) --- README.md | 6 +++--- android/build.gradle.kts | 2 +- example/ios/Podfile | 2 +- example/ios/Podfile.lock | 10 +++++----- example/pubspec.lock | 2 +- ios/didit_sdk.podspec | 4 ++-- ios/didit_sdk/Package.swift | 2 +- packages/didit_sdk_autodetection/README.md | 2 +- .../didit_sdk_autodetection/android/build.gradle.kts | 2 +- .../ios/didit_sdk_autodetection.podspec | 4 ++-- .../ios/didit_sdk_autodetection/Package.swift | 2 +- packages/didit_sdk_autodetection/pubspec.yaml | 2 +- packages/didit_sdk_core/README.md | 2 +- packages/didit_sdk_core/android/build.gradle.kts | 2 +- packages/didit_sdk_core/ios/didit_sdk_core.podspec | 4 ++-- .../didit_sdk_core/ios/didit_sdk_core/Package.swift | 2 +- packages/didit_sdk_core/pubspec.yaml | 2 +- packages/didit_sdk_nfc/README.md | 2 +- packages/didit_sdk_nfc/android/build.gradle.kts | 2 +- packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec | 4 ++-- packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift | 2 +- packages/didit_sdk_nfc/pubspec.yaml | 2 +- pubspec.yaml | 2 +- 23 files changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 2acc2e6..2668292 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Add the dependency to your `pubspec.yaml`: ```yaml dependencies: - didit_sdk: ^4.9.1 + didit_sdk: ^4.10.0 ``` Then run: @@ -57,7 +57,7 @@ To use a smaller native SDK variant, depend on the matching variant package inst ```yaml dependencies: - didit_sdk_core: ^4.9.1 # or didit_sdk_autodetection / didit_sdk_nfc + didit_sdk_core: ^4.10.0 # or didit_sdk_autodetection / didit_sdk_nfc ``` The `core` and `autodetection` variants allow an iOS 13.0 deployment target; `nfc` requires 15.0+ like the default. @@ -85,7 +85,7 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant else raise "Invalid $DiditSdkIosVariant '#{$DiditSdkIosVariant}'. Supported values: all, core, autodetection, nfc." end -didit_sdk_ios_podspec = 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.9.1/DiditSDK.podspec' +didit_sdk_ios_podspec = 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' target 'Runner' do use_frameworks! diff --git a/android/build.gradle.kts b/android/build.gradle.kts index bc31314..1369461 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.9.1" +val diditSdkAndroidVersion = "4.10.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/example/ios/Podfile b/example/ios/Podfile index bf75dab..8a51d4c 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -48,7 +48,7 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant end didit_sdk_ios_podspec = ENV.fetch( 'DIDIT_SDK_IOS_PODSPEC', - 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.9.1/DiditSDK.podspec' + 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' ) # Optional: the path to a DiditSDK source tree (the directory holding DiditSDK.podspec) # to build the native SDK from source instead. It also adds the DiditSDK/Location module, diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 4d6c5cf..38348f6 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,15 +1,15 @@ PODS: - - didit_sdk (4.9.1): - - DiditSDK/All (= 4.9.1) + - didit_sdk (4.10.0): + - DiditSDK/All (= 4.10.0) - Flutter - - DiditSDK/All (4.9.1) + - DiditSDK/All (4.10.0) - Flutter (1.0.0) - integration_test (0.0.1): - Flutter DEPENDENCIES: - didit_sdk (from `.symlinks/plugins/didit_sdk/ios`) - - DiditSDK/All (from `https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.9.1/DiditSDK.podspec`) + - DiditSDK/All (from `https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec`) - Flutter (from `Flutter`) - integration_test (from `.symlinks/plugins/integration_test/ios`) @@ -17,7 +17,7 @@ EXTERNAL SOURCES: didit_sdk: :path: ".symlinks/plugins/didit_sdk/ios" DiditSDK: - :podspec: https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.9.1/DiditSDK.podspec + :podspec: https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec Flutter: :path: Flutter integration_test: diff --git a/example/pubspec.lock b/example/pubspec.lock index c581633..423a655 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -55,7 +55,7 @@ packages: path: ".." relative: true source: path - version: "4.9.1" + version: "4.10.0" fake_async: dependency: transitive description: diff --git a/ios/didit_sdk.podspec b/ios/didit_sdk.podspec index 823b90f..6c90fc4 100644 --- a/ios/didit_sdk.podspec +++ b/ios/didit_sdk.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk' - s.version = '4.9.1' + s.version = '4.10.0' s.summary = 'Didit Identity Verification SDK for Flutter' s.description = <<-DESC Flutter plugin wrapping the native DiditSDK for identity verification @@ -31,7 +31,7 @@ with document scanning, NFC passport reading, and liveness detection. else raise "Invalid DiditSdk iOS variant '#{didit_sdk_ios_variant}'. Set $DiditSdkIosVariant in your Podfile to one of: all, core, autodetection, nfc." end - s.dependency didit_sdk_ios_pod, '4.9.1' + s.dependency didit_sdk_ios_pod, '4.10.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/ios/didit_sdk/Package.swift b/ios/didit_sdk/Package.swift index 3c84901..5a79b52 100644 --- a/ios/didit_sdk/Package.swift +++ b/ios/didit_sdk/Package.swift @@ -15,7 +15,7 @@ let package = Package( .library(name: "didit-sdk", targets: ["didit_sdk"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.9.1") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") ], targets: [ .target( diff --git a/packages/didit_sdk_autodetection/README.md b/packages/didit_sdk_autodetection/README.md index de10326..5341d75 100644 --- a/packages/didit_sdk_autodetection/README.md +++ b/packages/didit_sdk_autodetection/README.md @@ -13,7 +13,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_autodetection: ^4.9.1 + didit_sdk_autodetection: ^4.10.0 ``` ```dart diff --git a/packages/didit_sdk_autodetection/android/build.gradle.kts b/packages/didit_sdk_autodetection/android/build.gradle.kts index e964894..8949e7c 100644 --- a/packages/didit_sdk_autodetection/android/build.gradle.kts +++ b/packages/didit_sdk_autodetection/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.9.1" +val diditSdkAndroidVersion = "4.10.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec index 520b328..8bd2873 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_autodetection' - s.version = '4.9.1' + s.version = '4.10.0' s.summary = 'Didit Identity Verification SDK for Flutter - autodetection variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/AutoDetection native SDK @@ -17,7 +17,7 @@ variant (automatic capture without NFC). Generated from didit_sdk. # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync # (DiditSDK/AutoDetection) when building with CocoaPods. - s.dependency 'DiditSDK/AutoDetection', '4.9.1' + s.dependency 'DiditSDK/AutoDetection', '4.10.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift index 14bb7fb..6ea3496 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-autodetection", targets: ["didit_sdk_autodetection"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.9.1") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") ], targets: [ .target( diff --git a/packages/didit_sdk_autodetection/pubspec.yaml b/packages/didit_sdk_autodetection/pubspec.yaml index 9b3ce32..7acb64a 100644 --- a/packages/didit_sdk_autodetection/pubspec.yaml +++ b/packages/didit_sdk_autodetection/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_autodetection description: Didit Identity Verification SDK for Flutter, pinned to the autodetection native SDK variant (automatic capture without NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.9.1 +version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/packages/didit_sdk_core/README.md b/packages/didit_sdk_core/README.md index 2599c34..2b362f9 100644 --- a/packages/didit_sdk_core/README.md +++ b/packages/didit_sdk_core/README.md @@ -13,7 +13,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_core: ^4.9.1 + didit_sdk_core: ^4.10.0 ``` ```dart diff --git a/packages/didit_sdk_core/android/build.gradle.kts b/packages/didit_sdk_core/android/build.gradle.kts index 084047a..4d45bee 100644 --- a/packages/didit_sdk_core/android/build.gradle.kts +++ b/packages/didit_sdk_core/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.9.1" +val diditSdkAndroidVersion = "4.10.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_core/ios/didit_sdk_core.podspec b/packages/didit_sdk_core/ios/didit_sdk_core.podspec index bcdbf9e..a6d1cb2 100644 --- a/packages/didit_sdk_core/ios/didit_sdk_core.podspec +++ b/packages/didit_sdk_core/ios/didit_sdk_core.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_core' - s.version = '4.9.1' + s.version = '4.10.0' s.summary = 'Didit Identity Verification SDK for Flutter - core variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/Core native SDK @@ -17,7 +17,7 @@ variant (smallest, manual capture only - no automatic capture, no NFC). Generate # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync # (DiditSDK/Core) when building with CocoaPods. - s.dependency 'DiditSDK/Core', '4.9.1' + s.dependency 'DiditSDK/Core', '4.10.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift b/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift index 5ade16f..bf7cdab 100644 --- a/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift +++ b/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-core", targets: ["didit_sdk_core"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.9.1") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") ], targets: [ .target( diff --git a/packages/didit_sdk_core/pubspec.yaml b/packages/didit_sdk_core/pubspec.yaml index 124af3c..61923d8 100644 --- a/packages/didit_sdk_core/pubspec.yaml +++ b/packages/didit_sdk_core/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_core description: Didit Identity Verification SDK for Flutter, pinned to the core native SDK variant (smallest, manual capture only - no automatic capture, no NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.9.1 +version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/packages/didit_sdk_nfc/README.md b/packages/didit_sdk_nfc/README.md index ae6187a..895e795 100644 --- a/packages/didit_sdk_nfc/README.md +++ b/packages/didit_sdk_nfc/README.md @@ -13,7 +13,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_nfc: ^4.9.1 + didit_sdk_nfc: ^4.10.0 ``` ```dart diff --git a/packages/didit_sdk_nfc/android/build.gradle.kts b/packages/didit_sdk_nfc/android/build.gradle.kts index aeddf10..ed4a573 100644 --- a/packages/didit_sdk_nfc/android/build.gradle.kts +++ b/packages/didit_sdk_nfc/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.9.1" +val diditSdkAndroidVersion = "4.10.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec index e99967d..e56324c 100644 --- a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec +++ b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_nfc' - s.version = '4.9.1' + s.version = '4.10.0' s.summary = 'Didit Identity Verification SDK for Flutter - nfc variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/NFC native SDK @@ -17,7 +17,7 @@ variant (NFC passport reading without automatic capture). Generated from didit_s # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync # (DiditSDK/NFC) when building with CocoaPods. - s.dependency 'DiditSDK/NFC', '4.9.1' + s.dependency 'DiditSDK/NFC', '4.10.0' s.platform = :ios, '15.0' s.static_framework = true diff --git a/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift b/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift index d0522ce..2b61979 100644 --- a/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift +++ b/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-nfc", targets: ["didit_sdk_nfc"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.9.1") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") ], targets: [ .target( diff --git a/packages/didit_sdk_nfc/pubspec.yaml b/packages/didit_sdk_nfc/pubspec.yaml index e3045a5..f19109e 100644 --- a/packages/didit_sdk_nfc/pubspec.yaml +++ b/packages/didit_sdk_nfc/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_nfc description: Didit Identity Verification SDK for Flutter, pinned to the nfc native SDK variant (NFC passport reading without automatic capture). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.9.1 +version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/pubspec.yaml b/pubspec.yaml index 1dc43f3..b300a4e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk description: Didit Identity Verification SDK for Flutter. Wraps native iOS and Android SDKs for document scanning, NFC passport reading, face verification, and liveness detection. -version: 4.9.1 +version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues From b8e19bc74b14b622835841afcba616278540dc50 Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Wed, 14 Oct 2026 22:35:45 +0200 Subject: [PATCH 2/6] Release Flutter 4.10.0: iOS Location variants, deprecate autodetection, release notes Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 15 +++++++ README.md | 43 +++++++++++++------ example/ios/Podfile | 13 +++--- ios/didit_sdk.podspec | 11 ++++- packages/didit_sdk_autodetection/CHANGELOG.md | 15 +++++++ packages/didit_sdk_autodetection/README.md | 4 +- .../ios/didit_sdk_autodetection.podspec | 11 +++-- .../ios/didit_sdk_autodetection/Package.swift | 2 +- packages/didit_sdk_autodetection/pubspec.yaml | 2 +- packages/didit_sdk_core/CHANGELOG.md | 15 +++++++ packages/didit_sdk_core/README.md | 4 +- .../didit_sdk_core/ios/didit_sdk_core.podspec | 9 ++-- packages/didit_sdk_core/pubspec.yaml | 2 +- packages/didit_sdk_nfc/CHANGELOG.md | 15 +++++++ packages/didit_sdk_nfc/README.md | 4 +- .../didit_sdk_nfc/ios/didit_sdk_nfc.podspec | 9 ++-- packages/didit_sdk_nfc/pubspec.yaml | 2 +- release-notes/4.10.0.md | 11 +++++ tool/generate_variant_packages.sh | 23 +++++++--- 19 files changed, 163 insertions(+), 47 deletions(-) create mode 100644 release-notes/4.10.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 92dcb2b..e5d8742 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 4.10.0 + +Pins the iOS and Android native SDKs exactly to 4.10.0. + +- Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. +- New native steps run inside the existing start-verification call, with no new Dart API: + - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. + - Electronic signature (Sign documents). + - Biometric consent, when Didit's backend requires it. +- Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. +- iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. +- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. + + ## 4.9.1 Pins the iOS and Android native SDKs exactly to 4.9.1. diff --git a/README.md b/README.md index 2668292..7001517 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ A Flutter plugin for Didit Identity Verification. Wraps the native iOS and Andro | Dart | 3.11+ | | iOS | 13.0+ (`all`/`nfc` variants require 15.0+) | | Android | API 23+ (6.0 Marshmallow) | +| Android build toolchain | Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+, JDK 17 (required by the native 4.10.0 artifacts) | ## Installation @@ -33,9 +34,11 @@ The Flutter plugin can install the same native SDK variants exposed by the iOS a | Variant | Automatic capture | NFC passport reading | Flutter package | Use when | |---------|-------------------|----------------------|-----------------|----------| | `all` | Yes | Yes | `didit_sdk` | You want the complete SDK (default) | -| `core` | No | No | `didit_sdk_core` | You only need manual capture and the smallest binary | -| `autodetection` | Yes | No | `didit_sdk_autodetection` | You need automatic capture without NFC | -| `nfc` | No | Yes | `didit_sdk_nfc` | You need NFC passport reading without automatic capture | +| `core` | Yes | No | `didit_sdk_core` | You do not need NFC passport reading | +| `autodetection` (deprecated) | Yes | No | `didit_sdk_autodetection` | Nothing: identical to `core`, switch to `didit_sdk_core` | +| `nfc` | Yes | Yes | `didit_sdk_nfc` | You need NFC passport reading | + +Since native SDK 4.10.0 automatic capture is in every variant (the Didit tiny detectors replace TensorFlowLite on iOS and MediaPipe on Android), so `autodetection` is deprecated and identical to `core`; the Android `didit-sdk-autodetection-play` artifact is no longer published. The variant packages expose exactly the same Dart API as `didit_sdk` and pin the matching native SDK variant on BOTH platforms. Depend on exactly one of them and import from the package you chose (e.g. `package:didit_sdk_core/sdk_flutter.dart`). @@ -53,6 +56,9 @@ No Podfile configuration is needed - the native DiditSDK dependency resolves fro By default the full native SDK is installed (the `all` variant, including NFC), which requires an iOS 15.0+ deployment target. Set your app's iOS deployment target accordingly in Xcode (Runner target and project). +Location verification with Swift Package Manager is not available through this plugin yet, because Flutter's Swift package manifests cannot read a Podfile flag to pick the native Location product. +Use CocoaPods with `$DiditSdkIosLocationEnabled` (see [Location Configuration](#location-configuration-for-the-location-verification-step)) for workflows that include a Location step. + To use a smaller native SDK variant, depend on the matching variant package instead of `didit_sdk` (see "Native SDK Variants" above): ```yaml @@ -67,8 +73,10 @@ The `core` and `autodetection` variants allow an iOS 13.0 deployment target; `nf The Flutter plugin picks the native iOS SDK variant from `$DiditSdkIosVariant`, a Ruby global you set in your app's `ios/Podfile`. The plugin's `didit_sdk.podspec` reads the same global, so the choice is consistent and — critically — it survives every implicit `pod install` that `flutter build` triggers. Configure your `ios/Podfile` like this: ```ruby -# Pick one: 'all', 'core', 'autodetection', 'nfc' +# Pick one: 'all', 'core', 'autodetection' (deprecated, same as 'core'), 'nfc' $DiditSdkIosVariant = 'all' +# Optional, default off: set to true to include the Location verification step +# $DiditSdkIosLocationEnabled = true didit_sdk_ios_deployment_target = ['all', 'nfc'].include?($DiditSdkIosVariant) ? '15.0' : '13.0' platform :ios, didit_sdk_ios_deployment_target @@ -78,13 +86,14 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant 'DiditSDK/All' when 'core' 'DiditSDK/Core' - when 'autodetection' - 'DiditSDK/AutoDetection' + when 'autodetection' # deprecated, identical to core + 'DiditSDK/Core' when 'nfc' 'DiditSDK/NFC' else raise "Invalid $DiditSdkIosVariant '#{$DiditSdkIosVariant}'. Supported values: all, core, autodetection, nfc." end +didit_sdk_ios_pod += '-Location' if $DiditSdkIosLocationEnabled # only for workflows with a Location step didit_sdk_ios_podspec = 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' target 'Runner' do @@ -124,7 +133,7 @@ The variant packages (`didit_sdk_core`, `didit_sdk_autodetection`, `didit_sdk_nf The Flutter plugin selects the native Android SDK variant from `diditSdkAndroidVariant`. The default variant is `all`. To choose another variant, add this to `android/gradle.properties`: ```properties -diditSdkAndroidVariant=autodetection +diditSdkAndroidVariant=core ``` Supported values are `all`, `core`, `autodetection`, and `nfc`. @@ -202,7 +211,13 @@ This NFC configuration is not needed when `$DiditSdkIosVariant` is `'core'` or ` Only needed when your workflows include a Location step (see [Bank and Location Steps](#bank-and-location-steps)). -1. **Native Location module.** The step runs on Core Location, which the native SDK ships in its optional `DiditSDK/Location` module, outside every variant, so apps that never run the step do not link location APIs. The released native binaries do not include that module yet. +1. **Enable it in your Podfile.** The step runs on Core Location, which the native SDK ships as separate `-Location` variants (`DiditSDK/All-Location`, `DiditSDK/Core-Location`, `DiditSDK/NFC-Location`), so apps that never run the step do not link location APIs. Set the opt-in flag before `pod install`; it is off by default: + ```ruby + $DiditSdkIosLocationEnabled = true + ``` + The plugin podspec then depends on the `-Location` twin of your variant (`all` -> `All-Location`, `core` and `autodetection` -> `Core-Location`, `nfc` -> `NFC-Location`), and your Podfile must declare that same single subspec, as in the Podfile above (`didit_sdk_ios_pod += '-Location' if $DiditSdkIosLocationEnabled`). Declare exactly one DiditSDK subspec: two would vendor two copies of the framework. The `DIDIT_SDK_IOS_LOCATION_ENABLED=true` environment variable is a CI fallback. + Swift Package Manager cannot select the Location product through this plugin yet, so use CocoaPods for Location. + Without it the step reports that the device cannot place the person. 2. **Usage strings** in `Info.plist`. `NSLocationTemporaryUsageDescriptionDictionary` is optional: with it, a step that needs a precise position can ask once for precise location when the person granted only an approximate one (iOS 14+). Its purpose key must be exactly `DiditLocationVerification`. ```xml @@ -232,8 +247,8 @@ The following permissions are declared in the native SDK's `AndroidManifest.xml` | `ACCESS_NETWORK_STATE` | Detect network availability | Yes | | `CAMERA` | Document scanning and face verification | Yes | | `NFC` | Read NFC chips in passports/ID cards | If using NFC | -| `ACCESS_FINE_LOCATION` | Precise position for the Location verification step | Native releases with the Location step | -| `ACCESS_COARSE_LOCATION` | Approximate position for the Location verification step | Native releases with the Location step | +| `ACCESS_FINE_LOCATION` | Precise position for the Location verification step | Declared by `didit-sdk-core` and merged into your app | +| `ACCESS_COARSE_LOCATION` | Approximate position for the Location verification step | Declared by `didit-sdk-core` and merged into your app | Camera and NFC hardware features are declared as optional (`android:required="false"`), so your app can be installed on devices without these features. When `diditSdkAndroidNfcEnabled=false`, the Android NFC permission and feature are not added by the SDK. @@ -461,10 +476,10 @@ final result = await DiditSdk.startVerification(sessionToken); Workflows can include a Bank verification step and a Location verification step. The native SDKs draw both screens, so there is no Dart API to call: start the verification as usual and handle the same [`VerificationResult`](#verification-results), in the language set by [`languageCode`](#languagecode). -> **Availability:** these steps need a native SDK release that includes them and a Flutter release that pins it. The native SDK this release pins does not include them, so keep Bank and Location out of the workflows you start from the app until the [CHANGELOG](CHANGELOG.md) announces support. +> **Availability:** these steps ship with native SDK 4.10.0, which this release pins. They run inside the existing start-verification call: there is no new Dart API. -- **Location:** the SDK explains why it needs the position, asks for location permission, reads the position once while the step is on screen and never tracks it in the background. It needs the iOS setup in [Location Configuration](#location-configuration-for-the-location-verification-step); on Android the permissions are merged from the native SDK (see [Android](#android)). Without the iOS module or usage string, or with the Android permissions removed, the step shows no prompt: it reports the location as unavailable and the workflow's own settings decide what happens next. -- **Bank:** the person picks their bank and approves in the system browser (`SFSafariViewController` on iOS, Custom Tabs on Android), then returns to the SDK, which reads the outcome from Didit. Your app needs no permission, URL scheme or intent filter for it. +- **Location:** the SDK explains why it needs the position, asks for location permission, reads the position once while the step is on screen and never tracks it in the background. On iOS it needs the opt-in `$DiditSdkIosLocationEnabled` flag and usage strings from [Location Configuration](#location-configuration-for-the-location-verification-step); on Android `didit-sdk-core` declares the location permissions and they are merged into your app (see [Android](#android); remove them with `tools:node="remove"` if you never run the step). Without the iOS flag or usage string, or with the Android permissions removed, the step shows no prompt: it reports that the device cannot place the person and the workflow's own settings decide what happens next. +- **Bank:** the person picks their bank and the SDK opens the bank's page in the system browser (for Stripe, Didit's hosted Stripe page), then returns to the SDK, which reads the outcome from Didit. Your app needs no setup, permission, URL scheme or intent filter for it. ## Verification Results @@ -641,7 +656,7 @@ flutter run To run on a real device, open `example/ios/Runner.xcworkspace` in Xcode, configure your signing team, and select your device. -To build the native SDK from a DiditSDK source tree instead (the directory holding `DiditSDK.podspec`, at the version `ios/didit_sdk.podspec` pins), which also adds the `DiditSDK/Location` module, `export DIDIT_SDK_IOS_SOURCE=/path/to/sdk` before `pod install` and `flutter run`. The example app's Info.plist already carries the location usage strings, in English and Spanish. +To build the native SDK from a DiditSDK source tree instead (the directory holding `DiditSDK.podspec`, at the version `ios/didit_sdk.podspec` pins), `export DIDIT_SDK_IOS_SOURCE=/path/to/sdk` before `pod install` and `flutter run`. To run the Location step in the example, also `export DIDIT_SDK_IOS_LOCATION_ENABLED=true` (the same name works for the binary podspec and for a source tree). The example app's Info.plist already carries the location usage strings, in English and Spanish. The example app starts verification in Hebrew; pick another language with `flutter run --dart-define=DIDIT_LANGUAGE=es`. diff --git a/example/ios/Podfile b/example/ios/Podfile index 8a51d4c..3c17362 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -2,8 +2,11 @@ # podspec by setting a single Ruby global. CocoaPods re-reads the Podfile on every # `pod install` (including the implicit ones `flutter build` runs), so this choice # survives without depending on shell env vars. Edit this line to switch variants; -# valid values: 'all', 'core', 'autodetection', 'nfc'. +# valid values: 'all', 'core', 'autodetection' (deprecated, same as 'core'), 'nfc'. $DiditSdkIosVariant = ENV.fetch('DIDIT_SDK_IOS_VARIANT', 'all').downcase +# Opt in to the Location verification step: the plugin podspec and this Podfile +# then use the variant's -Location subspec (e.g. DiditSDK/All-Location). +$DiditSdkIosLocationEnabled = ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false').downcase == 'true' didit_sdk_ios_deployment_target = ['all', 'nfc'].include?($DiditSdkIosVariant) ? '15.0' : '13.0' platform :ios, didit_sdk_ios_deployment_target @@ -40,19 +43,20 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant when 'core' 'DiditSDK/Core' when 'autodetection' - 'DiditSDK/AutoDetection' + 'DiditSDK/Core' when 'nfc' 'DiditSDK/NFC' else raise "Invalid $DiditSdkIosVariant '#{$DiditSdkIosVariant}'. Supported values: all, core, autodetection, nfc." end +didit_sdk_ios_pod += '-Location' if $DiditSdkIosLocationEnabled didit_sdk_ios_podspec = ENV.fetch( 'DIDIT_SDK_IOS_PODSPEC', 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' ) # Optional: the path to a DiditSDK source tree (the directory holding DiditSDK.podspec) -# to build the native SDK from source instead. It also adds the DiditSDK/Location module, -# which the Location verification step needs and the released binaries do not include. +# to build the native SDK from source instead; its podspec has the same subspec names, +# so the same single subspec works for :path and :podspec. # The tree's DiditSDK version must match the plugin's pin in ios/didit_sdk.podspec. didit_sdk_ios_source = ENV.fetch('DIDIT_SDK_IOS_SOURCE', '').strip @@ -61,7 +65,6 @@ target 'Runner' do unless didit_sdk_ios_source.empty? pod didit_sdk_ios_pod, :path => didit_sdk_ios_source - pod 'DiditSDK/Location', :path => didit_sdk_ios_source else # DiditSDK is not on CocoaPods trunk; pull it from the GitHub-hosted podspec. pod didit_sdk_ios_pod, :podspec => didit_sdk_ios_podspec diff --git a/ios/didit_sdk.podspec b/ios/didit_sdk.podspec index 6c90fc4..83c37f8 100644 --- a/ios/didit_sdk.podspec +++ b/ios/didit_sdk.podspec @@ -24,13 +24,20 @@ with document scanning, NFC passport reading, and liveness detection. 'DiditSDK/All' when 'core' 'DiditSDK/Core' - when 'autodetection' - 'DiditSDK/AutoDetection' + when 'autodetection' # deprecated, identical to core + 'DiditSDK/Core' when 'nfc' 'DiditSDK/NFC' else raise "Invalid DiditSdk iOS variant '#{didit_sdk_ios_variant}'. Set $DiditSdkIosVariant in your Podfile to one of: all, core, autodetection, nfc." end + + # Opt-in Location verification: $DiditSdkIosLocationEnabled (Podfile) or the + # DIDIT_SDK_IOS_LOCATION_ENABLED env var ("true"), default off. The native SDK + # ships Location as complete variants, so the flag swaps the one subspec for + # its -Location twin (All-Location, Core-Location, NFC-Location). + didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' + didit_sdk_ios_pod += '-Location' if didit_sdk_ios_location s.dependency didit_sdk_ios_pod, '4.10.0' s.platform = :ios, '13.0' diff --git a/packages/didit_sdk_autodetection/CHANGELOG.md b/packages/didit_sdk_autodetection/CHANGELOG.md index 8467588..49d1a81 100644 --- a/packages/didit_sdk_autodetection/CHANGELOG.md +++ b/packages/didit_sdk_autodetection/CHANGELOG.md @@ -1,3 +1,18 @@ +## 4.10.0 + +Pins the iOS and Android native SDKs exactly to 4.10.0. + +- Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. +- New native steps run inside the existing start-verification call, with no new Dart API: + - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. + - Electronic signature (Sign documents). + - Biometric consent, when Didit's backend requires it. +- Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. +- iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. +- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. + + ## 4.9.1 Pins the iOS and Android native SDKs exactly to 4.9.1. diff --git a/packages/didit_sdk_autodetection/README.md b/packages/didit_sdk_autodetection/README.md index 5341d75..e462efb 100644 --- a/packages/didit_sdk_autodetection/README.md +++ b/packages/didit_sdk_autodetection/README.md @@ -1,6 +1,8 @@ # didit_sdk_autodetection -The Didit Identity Verification SDK for Flutter, pinned to the **autodetection** native SDK variant on both iOS and Android: automatic capture without NFC. +The Didit Identity Verification SDK for Flutter, pinned to the **autodetection** native SDK variant on both iOS and Android: identical to didit_sdk_core. + +> **Deprecated.** This package is identical to [`didit_sdk_core`](https://pub.dev/packages/didit_sdk_core) since native SDK 4.10.0, which has automatic capture in every variant. Switch to `didit_sdk_core`. | | | |---|---| diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec index 8bd2873..9716aaa 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec @@ -3,8 +3,8 @@ Pod::Spec.new do |s| s.version = '4.10.0' s.summary = 'Didit Identity Verification SDK for Flutter - autodetection variant' s.description = <<-DESC -Didit identity verification Flutter plugin pinned to the DiditSDK/AutoDetection native SDK -variant (automatic capture without NFC). Generated from didit_sdk. +Didit identity verification Flutter plugin pinned to the DiditSDK/Core native SDK +variant (identical to didit_sdk_core). Generated from didit_sdk. DESC s.homepage = 'https://github.com/didit-protocol/sdk-flutter' s.license = { :file => '../LICENSE' } @@ -16,8 +16,11 @@ variant (automatic capture without NFC). Generated from didit_sdk. # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync - # (DiditSDK/AutoDetection) when building with CocoaPods. - s.dependency 'DiditSDK/AutoDetection', '4.10.0' + # (DiditSDK/Core) when building with CocoaPods. Location verification is opt-in + # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), + # which swaps the subspec for its -Location twin (DiditSDK/Core-Location). + didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' + s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.10.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift index 6ea3496..5111aa2 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift @@ -17,7 +17,7 @@ let package = Package( .target( name: "didit_sdk_autodetection", dependencies: [ - .product(name: "DiditSDKAutoDetection", package: "sdk-ios") + .product(name: "DiditSDKCore", package: "sdk-ios") ], resources: [ .process("Resources") diff --git a/packages/didit_sdk_autodetection/pubspec.yaml b/packages/didit_sdk_autodetection/pubspec.yaml index 7acb64a..e9d5938 100644 --- a/packages/didit_sdk_autodetection/pubspec.yaml +++ b/packages/didit_sdk_autodetection/pubspec.yaml @@ -1,5 +1,5 @@ name: didit_sdk_autodetection -description: Didit Identity Verification SDK for Flutter, pinned to the autodetection native SDK variant (automatic capture without NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. +description: Deprecated, identical to didit_sdk_core - switch to didit_sdk_core. Didit Identity Verification SDK for Flutter, pinned to the autodetection native SDK variant (identical to didit_sdk_core). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter diff --git a/packages/didit_sdk_core/CHANGELOG.md b/packages/didit_sdk_core/CHANGELOG.md index fe42ee1..73c5ebc 100644 --- a/packages/didit_sdk_core/CHANGELOG.md +++ b/packages/didit_sdk_core/CHANGELOG.md @@ -1,3 +1,18 @@ +## 4.10.0 + +Pins the iOS and Android native SDKs exactly to 4.10.0. + +- Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. +- New native steps run inside the existing start-verification call, with no new Dart API: + - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. + - Electronic signature (Sign documents). + - Biometric consent, when Didit's backend requires it. +- Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. +- iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. +- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. + + ## 4.9.1 Pins the iOS and Android native SDKs exactly to 4.9.1. diff --git a/packages/didit_sdk_core/README.md b/packages/didit_sdk_core/README.md index 2b362f9..6314804 100644 --- a/packages/didit_sdk_core/README.md +++ b/packages/didit_sdk_core/README.md @@ -1,10 +1,10 @@ # didit_sdk_core -The Didit Identity Verification SDK for Flutter, pinned to the **core** native SDK variant on both iOS and Android: smallest, manual capture only - no automatic capture, no NFC. +The Didit Identity Verification SDK for Flutter, pinned to the **core** native SDK variant on both iOS and Android: automatic capture, no NFC. | | | |---|---| -| Automatic capture | No | +| Automatic capture | Yes | | NFC passport reading | No | | Minimum iOS | 13.0 | diff --git a/packages/didit_sdk_core/ios/didit_sdk_core.podspec b/packages/didit_sdk_core/ios/didit_sdk_core.podspec index a6d1cb2..6e725f7 100644 --- a/packages/didit_sdk_core/ios/didit_sdk_core.podspec +++ b/packages/didit_sdk_core/ios/didit_sdk_core.podspec @@ -4,7 +4,7 @@ Pod::Spec.new do |s| s.summary = 'Didit Identity Verification SDK for Flutter - core variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/Core native SDK -variant (smallest, manual capture only - no automatic capture, no NFC). Generated from didit_sdk. +variant (automatic capture, no NFC). Generated from didit_sdk. DESC s.homepage = 'https://github.com/didit-protocol/sdk-flutter' s.license = { :file => '../LICENSE' } @@ -16,8 +16,11 @@ variant (smallest, manual capture only - no automatic capture, no NFC). Generate # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync - # (DiditSDK/Core) when building with CocoaPods. - s.dependency 'DiditSDK/Core', '4.10.0' + # (DiditSDK/Core) when building with CocoaPods. Location verification is opt-in + # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), + # which swaps the subspec for its -Location twin (DiditSDK/Core-Location). + didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' + s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.10.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_core/pubspec.yaml b/packages/didit_sdk_core/pubspec.yaml index 61923d8..7d13021 100644 --- a/packages/didit_sdk_core/pubspec.yaml +++ b/packages/didit_sdk_core/pubspec.yaml @@ -1,5 +1,5 @@ name: didit_sdk_core -description: Didit Identity Verification SDK for Flutter, pinned to the core native SDK variant (smallest, manual capture only - no automatic capture, no NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. +description: Didit Identity Verification SDK for Flutter, pinned to the core native SDK variant (automatic capture, no NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter diff --git a/packages/didit_sdk_nfc/CHANGELOG.md b/packages/didit_sdk_nfc/CHANGELOG.md index 0faa59c..f454f05 100644 --- a/packages/didit_sdk_nfc/CHANGELOG.md +++ b/packages/didit_sdk_nfc/CHANGELOG.md @@ -1,3 +1,18 @@ +## 4.10.0 + +Pins the iOS and Android native SDKs exactly to 4.10.0. + +- Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. +- New native steps run inside the existing start-verification call, with no new Dart API: + - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. + - Electronic signature (Sign documents). + - Biometric consent, when Didit's backend requires it. +- Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. +- iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. +- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. + + ## 4.9.1 Pins the iOS and Android native SDKs exactly to 4.9.1. diff --git a/packages/didit_sdk_nfc/README.md b/packages/didit_sdk_nfc/README.md index 895e795..1be4367 100644 --- a/packages/didit_sdk_nfc/README.md +++ b/packages/didit_sdk_nfc/README.md @@ -1,10 +1,10 @@ # didit_sdk_nfc -The Didit Identity Verification SDK for Flutter, pinned to the **nfc** native SDK variant on both iOS and Android: NFC passport reading without automatic capture. +The Didit Identity Verification SDK for Flutter, pinned to the **nfc** native SDK variant on both iOS and Android: automatic capture and NFC passport reading. | | | |---|---| -| Automatic capture | No | +| Automatic capture | Yes | | NFC passport reading | Yes | | Minimum iOS | 15.0 | diff --git a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec index e56324c..2e051be 100644 --- a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec +++ b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec @@ -4,7 +4,7 @@ Pod::Spec.new do |s| s.summary = 'Didit Identity Verification SDK for Flutter - nfc variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/NFC native SDK -variant (NFC passport reading without automatic capture). Generated from didit_sdk. +variant (automatic capture and NFC passport reading). Generated from didit_sdk. DESC s.homepage = 'https://github.com/didit-protocol/sdk-flutter' s.license = { :file => '../LICENSE' } @@ -16,8 +16,11 @@ variant (NFC passport reading without automatic capture). Generated from didit_s # Fixed native variant - unlike didit_sdk this podspec intentionally ignores # $DiditSdkIosVariant. Keep your Podfile's DiditSDK subspec line in sync - # (DiditSDK/NFC) when building with CocoaPods. - s.dependency 'DiditSDK/NFC', '4.10.0' + # (DiditSDK/NFC) when building with CocoaPods. Location verification is opt-in + # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), + # which swaps the subspec for its -Location twin (DiditSDK/NFC-Location). + didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' + s.dependency "DiditSDK/NFC#{'-Location' if didit_sdk_ios_location}", '4.10.0' s.platform = :ios, '15.0' s.static_framework = true diff --git a/packages/didit_sdk_nfc/pubspec.yaml b/packages/didit_sdk_nfc/pubspec.yaml index f19109e..0b38059 100644 --- a/packages/didit_sdk_nfc/pubspec.yaml +++ b/packages/didit_sdk_nfc/pubspec.yaml @@ -1,5 +1,5 @@ name: didit_sdk_nfc -description: Didit Identity Verification SDK for Flutter, pinned to the nfc native SDK variant (NFC passport reading without automatic capture). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. +description: Didit Identity Verification SDK for Flutter, pinned to the nfc native SDK variant (automatic capture and NFC passport reading). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. version: 4.10.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter diff --git a/release-notes/4.10.0.md b/release-notes/4.10.0.md new file mode 100644 index 0000000..690904c --- /dev/null +++ b/release-notes/4.10.0.md @@ -0,0 +1,11 @@ +Pins the iOS and Android native SDKs exactly to 4.10.0. + +- Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. +- New native steps run inside the existing start-verification call, with no new Dart API: + - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. + - Electronic signature (Sign documents). + - Biometric consent, when Didit's backend requires it. +- Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. +- iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. +- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. diff --git a/tool/generate_variant_packages.sh b/tool/generate_variant_packages.sh index 3d20f69..5f0909d 100755 --- a/tool/generate_variant_packages.sh +++ b/tool/generate_variant_packages.sh @@ -41,6 +41,10 @@ prepend_release_notes CHANGELOG.md generate() { local name=$1 variant=$2 product=$3 subspec=$4 floor=$5 feature_desc=$6 auto=$7 nfc=$8 local pkg=packages/$name + local deprecation="" + if [[ "$variant" == autodetection ]]; then + deprecation="Deprecated, identical to didit_sdk_core - switch to didit_sdk_core. " + fi echo "generating $pkg" rm -rf "$pkg/ios" "$pkg/lib" "$pkg/android" @@ -59,7 +63,7 @@ generate() { cat > "$pkg/pubspec.yaml" < **Deprecated.** This package is identical to [\`didit_sdk_core\`](https://pub.dev/packages/didit_sdk_core) since native SDK 4.10.0, which has automatic capture in every variant. Switch to \`didit_sdk_core\`. +} | | | |---|---| | Automatic capture | $auto | @@ -192,8 +201,8 @@ EOF } # name variant SPM product pod subspec floor description auto nfc -generate didit_sdk_core core DiditSDKCore DiditSDK/Core 13.0 "smallest, manual capture only - no automatic capture, no NFC" No No -generate didit_sdk_autodetection autodetection DiditSDKAutoDetection DiditSDK/AutoDetection 13.0 "automatic capture without NFC" Yes No -generate didit_sdk_nfc nfc DiditSDKNFC DiditSDK/NFC 15.0 "NFC passport reading without automatic capture" No Yes +generate didit_sdk_core core DiditSDKCore DiditSDK/Core 13.0 "automatic capture, no NFC" Yes No +generate didit_sdk_autodetection autodetection DiditSDKCore DiditSDK/Core 13.0 "identical to didit_sdk_core" Yes No +generate didit_sdk_nfc nfc DiditSDKNFC DiditSDK/NFC 15.0 "automatic capture and NFC passport reading" Yes Yes echo "done" From b96c75603e591bd6dca2910073b4bf9d08c0fe09 Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Wed, 14 Oct 2026 22:39:28 +0200 Subject: [PATCH 3/6] Release notes: active-liveness recovery is on both platforms iOS gained it too (callback watchdog and stale-error re-read). CHANGELOGs regenerated with tool/generate_variant_packages.sh from release-notes/4.10.0.md. Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 3 ++- packages/didit_sdk_autodetection/CHANGELOG.md | 3 ++- packages/didit_sdk_core/CHANGELOG.md | 3 ++- packages/didit_sdk_nfc/CHANGELOG.md | 3 ++- release-notes/4.10.0.md | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5d8742..924f58e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Biometric consent, when Didit's backend requires it. - Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. - iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. -- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. +- Both platforms: active liveness recovers when its completion callback is missed or arrives late, instead of waiting or returning to the intro. +- Android: the native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. ## 4.9.1 diff --git a/packages/didit_sdk_autodetection/CHANGELOG.md b/packages/didit_sdk_autodetection/CHANGELOG.md index 49d1a81..7170a2c 100644 --- a/packages/didit_sdk_autodetection/CHANGELOG.md +++ b/packages/didit_sdk_autodetection/CHANGELOG.md @@ -10,7 +10,8 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Biometric consent, when Didit's backend requires it. - Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. - iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. -- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. +- Both platforms: active liveness recovers when its completion callback is missed or arrives late, instead of waiting or returning to the intro. +- Android: the native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. ## 4.9.1 diff --git a/packages/didit_sdk_core/CHANGELOG.md b/packages/didit_sdk_core/CHANGELOG.md index 73c5ebc..dc228a4 100644 --- a/packages/didit_sdk_core/CHANGELOG.md +++ b/packages/didit_sdk_core/CHANGELOG.md @@ -10,7 +10,8 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Biometric consent, when Didit's backend requires it. - Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. - iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. -- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. +- Both platforms: active liveness recovers when its completion callback is missed or arrives late, instead of waiting or returning to the intro. +- Android: the native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. ## 4.9.1 diff --git a/packages/didit_sdk_nfc/CHANGELOG.md b/packages/didit_sdk_nfc/CHANGELOG.md index f454f05..78f62f5 100644 --- a/packages/didit_sdk_nfc/CHANGELOG.md +++ b/packages/didit_sdk_nfc/CHANGELOG.md @@ -10,7 +10,8 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Biometric consent, when Didit's backend requires it. - Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. - iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. -- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. +- Both platforms: active liveness recovers when its completion callback is missed or arrives late, instead of waiting or returning to the intro. +- Android: the native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. ## 4.9.1 diff --git a/release-notes/4.10.0.md b/release-notes/4.10.0.md index 690904c..9c77ba3 100644 --- a/release-notes/4.10.0.md +++ b/release-notes/4.10.0.md @@ -8,4 +8,5 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Biometric consent, when Didit's backend requires it. - Both platforms: a "No camera found" screen with a Copy link action. Verification steps the SDK version does not support show update-app guidance and return a failed result. - iOS: the native framework is smaller because translations moved out of the binary. A verification ended by reaching the maximum number of attempts is reported as `retryBlocked` instead of `unknown`. -- Android: improved recovery during active liveness. The native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. +- Both platforms: active liveness recovers when its completion callback is missed or arrives late, instead of waiting or returning to the intro. +- Android: the native artifacts need Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+ and JDK 17. From 676758f33c3ac041b690c8f2ec97a843cf0d70c7 Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Wed, 14 Oct 2026 22:42:12 +0200 Subject: [PATCH 4/6] Android: resolve the deprecated autodetection variant to didit-sdk-core Native 4.10.0's didit-sdk-autodetection is empty and only depends on core, and its release notes tell apps to drop it; iOS already resolves autodetection to DiditSDK/Core. Variant packages regenerated. Co-Authored-By: Claude Opus 5.5 (1M context) --- android/build.gradle.kts | 3 ++- packages/didit_sdk_autodetection/android/build.gradle.kts | 3 ++- packages/didit_sdk_core/android/build.gradle.kts | 3 ++- packages/didit_sdk_nfc/android/build.gradle.kts | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 1369461..c82e4a3 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -10,7 +10,8 @@ val diditSdkAndroidVariant = ( val diditSdkAndroidArtifact = when (diditSdkAndroidVariant) { "all" -> "didit-sdk" "core" -> "didit-sdk-core" - "autodetection" -> "didit-sdk-autodetection" + // Deprecated and identical to core since native 4.10.0 (didit-sdk-autodetection is empty). + "autodetection" -> "didit-sdk-core" "nfc" -> "didit-sdk-nfc" else -> error( "Invalid diditSdkAndroidVariant '$diditSdkAndroidVariant'. " + diff --git a/packages/didit_sdk_autodetection/android/build.gradle.kts b/packages/didit_sdk_autodetection/android/build.gradle.kts index 8949e7c..972d73d 100644 --- a/packages/didit_sdk_autodetection/android/build.gradle.kts +++ b/packages/didit_sdk_autodetection/android/build.gradle.kts @@ -10,7 +10,8 @@ val diditSdkAndroidVariant = ( val diditSdkAndroidArtifact = when (diditSdkAndroidVariant) { "all" -> "didit-sdk" "core" -> "didit-sdk-core" - "autodetection" -> "didit-sdk-autodetection" + // Deprecated and identical to core since native 4.10.0 (didit-sdk-autodetection is empty). + "autodetection" -> "didit-sdk-core" "nfc" -> "didit-sdk-nfc" else -> error( "Invalid diditSdkAndroidVariant '$diditSdkAndroidVariant'. " + diff --git a/packages/didit_sdk_core/android/build.gradle.kts b/packages/didit_sdk_core/android/build.gradle.kts index 4d45bee..c6dfedd 100644 --- a/packages/didit_sdk_core/android/build.gradle.kts +++ b/packages/didit_sdk_core/android/build.gradle.kts @@ -10,7 +10,8 @@ val diditSdkAndroidVariant = ( val diditSdkAndroidArtifact = when (diditSdkAndroidVariant) { "all" -> "didit-sdk" "core" -> "didit-sdk-core" - "autodetection" -> "didit-sdk-autodetection" + // Deprecated and identical to core since native 4.10.0 (didit-sdk-autodetection is empty). + "autodetection" -> "didit-sdk-core" "nfc" -> "didit-sdk-nfc" else -> error( "Invalid diditSdkAndroidVariant '$diditSdkAndroidVariant'. " + diff --git a/packages/didit_sdk_nfc/android/build.gradle.kts b/packages/didit_sdk_nfc/android/build.gradle.kts index ed4a573..f588ec5 100644 --- a/packages/didit_sdk_nfc/android/build.gradle.kts +++ b/packages/didit_sdk_nfc/android/build.gradle.kts @@ -10,7 +10,8 @@ val diditSdkAndroidVariant = ( val diditSdkAndroidArtifact = when (diditSdkAndroidVariant) { "all" -> "didit-sdk" "core" -> "didit-sdk-core" - "autodetection" -> "didit-sdk-autodetection" + // Deprecated and identical to core since native 4.10.0 (didit-sdk-autodetection is empty). + "autodetection" -> "didit-sdk-core" "nfc" -> "didit-sdk-nfc" else -> error( "Invalid diditSdkAndroidVariant '$diditSdkAndroidVariant'. " + From 0c8ddf621ec8d069731b75defcd1ea8e7f676d03 Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Wed, 14 Oct 2026 23:08:54 +0200 Subject: [PATCH 5/6] Describe the bank step without naming a provider CHANGELOGs regenerated with tool/generate_variant_packages.sh. Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 2 +- README.md | 2 +- packages/didit_sdk_autodetection/CHANGELOG.md | 2 +- packages/didit_sdk_core/CHANGELOG.md | 2 +- packages/didit_sdk_nfc/CHANGELOG.md | 2 +- release-notes/4.10.0.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 924f58e..caec373 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. - Electronic signature (Sign documents). - Biometric consent, when Didit's backend requires it. diff --git a/README.md b/README.md index 7001517..e135cef 100644 --- a/README.md +++ b/README.md @@ -479,7 +479,7 @@ Workflows can include a Bank verification step and a Location verification step. > **Availability:** these steps ship with native SDK 4.10.0, which this release pins. They run inside the existing start-verification call: there is no new Dart API. - **Location:** the SDK explains why it needs the position, asks for location permission, reads the position once while the step is on screen and never tracks it in the background. On iOS it needs the opt-in `$DiditSdkIosLocationEnabled` flag and usage strings from [Location Configuration](#location-configuration-for-the-location-verification-step); on Android `didit-sdk-core` declares the location permissions and they are merged into your app (see [Android](#android); remove them with `tools:node="remove"` if you never run the step). Without the iOS flag or usage string, or with the Android permissions removed, the step shows no prompt: it reports that the device cannot place the person and the workflow's own settings decide what happens next. -- **Bank:** the person picks their bank and the SDK opens the bank's page in the system browser (for Stripe, Didit's hosted Stripe page), then returns to the SDK, which reads the outcome from Didit. Your app needs no setup, permission, URL scheme or intent filter for it. +- **Bank:** the person picks their bank and the SDK opens the bank's page (or a page Didit hosts) in the system browser, then returns to the SDK, which reads the outcome from Didit. Your app needs no setup, permission, URL scheme or intent filter for it. ## Verification Results diff --git a/packages/didit_sdk_autodetection/CHANGELOG.md b/packages/didit_sdk_autodetection/CHANGELOG.md index 7170a2c..8684936 100644 --- a/packages/didit_sdk_autodetection/CHANGELOG.md +++ b/packages/didit_sdk_autodetection/CHANGELOG.md @@ -4,7 +4,7 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. - Electronic signature (Sign documents). - Biometric consent, when Didit's backend requires it. diff --git a/packages/didit_sdk_core/CHANGELOG.md b/packages/didit_sdk_core/CHANGELOG.md index dc228a4..cbdc8d7 100644 --- a/packages/didit_sdk_core/CHANGELOG.md +++ b/packages/didit_sdk_core/CHANGELOG.md @@ -4,7 +4,7 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. - Electronic signature (Sign documents). - Biometric consent, when Didit's backend requires it. diff --git a/packages/didit_sdk_nfc/CHANGELOG.md b/packages/didit_sdk_nfc/CHANGELOG.md index 78f62f5..97d1b44 100644 --- a/packages/didit_sdk_nfc/CHANGELOG.md +++ b/packages/didit_sdk_nfc/CHANGELOG.md @@ -4,7 +4,7 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. - Electronic signature (Sign documents). - Biometric consent, when Didit's backend requires it. diff --git a/release-notes/4.10.0.md b/release-notes/4.10.0.md index 9c77ba3..9ba7976 100644 --- a/release-notes/4.10.0.md +++ b/release-notes/4.10.0.md @@ -2,7 +2,7 @@ Pins the iOS and Android native SDKs exactly to 4.10.0. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - - Bank verification: the person approves in the system browser (for Stripe, Didit's hosted Stripe page). No setup. + - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. - Location verification: on iOS it is opt-in with `$DiditSdkIosLocationEnabled = true` in your Podfile (or `DIDIT_SDK_IOS_LOCATION_ENABLED=true`), which selects the `DiditSDK/All-Location`, `Core-Location` or `NFC-Location` subspec; Swift Package Manager cannot select it through this plugin yet. On Android `didit-sdk-core` declares `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION`; remove them with `tools:node="remove"` if you never run the step. Without it the step reports that the device cannot place the person. See the README for the Info.plist purpose strings. - Electronic signature (Sign documents). - Biometric consent, when Didit's backend requires it. From 7368aeee2cf05183f34ae61578f2de33a4fc8c6c Mon Sep 17 00:00:00 2001 From: Alejandro Rosas Date: Sun, 1 Nov 2026 23:00:38 +0400 Subject: [PATCH 6/6] Release Flutter 4.11.0 with native SDK 4.11.0 pins Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 7 +++++-- README.md | 10 +++++----- android/build.gradle.kts | 2 +- example/ios/Podfile | 2 +- example/ios/Podfile.lock | 10 +++++----- example/pubspec.lock | 2 +- ios/didit_sdk.podspec | 4 ++-- ios/didit_sdk/Package.swift | 2 +- packages/didit_sdk_autodetection/CHANGELOG.md | 7 +++++-- packages/didit_sdk_autodetection/README.md | 2 +- .../didit_sdk_autodetection/android/build.gradle.kts | 2 +- .../ios/didit_sdk_autodetection.podspec | 4 ++-- .../ios/didit_sdk_autodetection/Package.swift | 2 +- packages/didit_sdk_autodetection/pubspec.yaml | 2 +- packages/didit_sdk_core/CHANGELOG.md | 7 +++++-- packages/didit_sdk_core/README.md | 2 +- packages/didit_sdk_core/android/build.gradle.kts | 2 +- packages/didit_sdk_core/ios/didit_sdk_core.podspec | 4 ++-- .../didit_sdk_core/ios/didit_sdk_core/Package.swift | 2 +- packages/didit_sdk_core/pubspec.yaml | 2 +- packages/didit_sdk_nfc/CHANGELOG.md | 7 +++++-- packages/didit_sdk_nfc/README.md | 2 +- packages/didit_sdk_nfc/android/build.gradle.kts | 2 +- packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec | 4 ++-- packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift | 2 +- packages/didit_sdk_nfc/pubspec.yaml | 2 +- pubspec.yaml | 2 +- release-notes/{4.10.0.md => 4.11.0.md} | 5 ++++- 28 files changed, 59 insertions(+), 44 deletions(-) rename release-notes/{4.10.0.md => 4.11.0.md} (77%) diff --git a/CHANGELOG.md b/CHANGELOG.md index caec373..e9f80cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ -## 4.10.0 +## 4.11.0 -Pins the iOS and Android native SDKs exactly to 4.10.0. +Pins the iOS and Android native SDKs exactly to 4.11.0. This release also carries everything planned for 4.10.0, which was never published to pub.dev. +- Both platforms: the redesigned flow shell, with a new top bar, progress in words, a rebuilt welcome screen and clearer error messages. +- Both platforms: Bank verification never ends in a dead end. Countries without a bank route offer a statement upload or continuing without a bank, and an account check counts its own attempts. +- iOS: document capture focuses reliably on close-up cards. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. diff --git a/README.md b/README.md index e135cef..4328203 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A Flutter plugin for Didit Identity Verification. Wraps the native iOS and Andro | Dart | 3.11+ | | iOS | 13.0+ (`all`/`nfc` variants require 15.0+) | | Android | API 23+ (6.0 Marshmallow) | -| Android build toolchain | Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+, JDK 17 (required by the native 4.10.0 artifacts) | +| Android build toolchain | Kotlin 2.1.10+, Android Gradle Plugin 8.6.0+, Gradle 8.7+, JDK 17 (required by the native 4.11.0 artifacts) | ## Installation @@ -18,7 +18,7 @@ Add the dependency to your `pubspec.yaml`: ```yaml dependencies: - didit_sdk: ^4.10.0 + didit_sdk: ^4.11.0 ``` Then run: @@ -63,7 +63,7 @@ To use a smaller native SDK variant, depend on the matching variant package inst ```yaml dependencies: - didit_sdk_core: ^4.10.0 # or didit_sdk_autodetection / didit_sdk_nfc + didit_sdk_core: ^4.11.0 # or didit_sdk_autodetection / didit_sdk_nfc ``` The `core` and `autodetection` variants allow an iOS 13.0 deployment target; `nfc` requires 15.0+ like the default. @@ -94,7 +94,7 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant raise "Invalid $DiditSdkIosVariant '#{$DiditSdkIosVariant}'. Supported values: all, core, autodetection, nfc." end didit_sdk_ios_pod += '-Location' if $DiditSdkIosLocationEnabled # only for workflows with a Location step -didit_sdk_ios_podspec = 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' +didit_sdk_ios_podspec = 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.11.0/DiditSDK.podspec' target 'Runner' do use_frameworks! @@ -476,7 +476,7 @@ final result = await DiditSdk.startVerification(sessionToken); Workflows can include a Bank verification step and a Location verification step. The native SDKs draw both screens, so there is no Dart API to call: start the verification as usual and handle the same [`VerificationResult`](#verification-results), in the language set by [`languageCode`](#languagecode). -> **Availability:** these steps ship with native SDK 4.10.0, which this release pins. They run inside the existing start-verification call: there is no new Dart API. +> **Availability:** these steps ship with native SDK 4.11.0, which this release pins. They run inside the existing start-verification call: there is no new Dart API. - **Location:** the SDK explains why it needs the position, asks for location permission, reads the position once while the step is on screen and never tracks it in the background. On iOS it needs the opt-in `$DiditSdkIosLocationEnabled` flag and usage strings from [Location Configuration](#location-configuration-for-the-location-verification-step); on Android `didit-sdk-core` declares the location permissions and they are merged into your app (see [Android](#android); remove them with `tools:node="remove"` if you never run the step). Without the iOS flag or usage string, or with the Android permissions removed, the step shows no prompt: it reports that the device cannot place the person and the workflow's own settings decide what happens next. - **Bank:** the person picks their bank and the SDK opens the bank's page (or a page Didit hosts) in the system browser, then returns to the SDK, which reads the outcome from Didit. Your app needs no setup, permission, URL scheme or intent filter for it. diff --git a/android/build.gradle.kts b/android/build.gradle.kts index c82e4a3..a48be6c 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.10.0" +val diditSdkAndroidVersion = "4.11.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/example/ios/Podfile b/example/ios/Podfile index 3c17362..543799e 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -52,7 +52,7 @@ didit_sdk_ios_pod = case $DiditSdkIosVariant didit_sdk_ios_pod += '-Location' if $DiditSdkIosLocationEnabled didit_sdk_ios_podspec = ENV.fetch( 'DIDIT_SDK_IOS_PODSPEC', - 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec' + 'https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.11.0/DiditSDK.podspec' ) # Optional: the path to a DiditSDK source tree (the directory holding DiditSDK.podspec) # to build the native SDK from source instead; its podspec has the same subspec names, diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 38348f6..d787649 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,15 +1,15 @@ PODS: - - didit_sdk (4.10.0): - - DiditSDK/All (= 4.10.0) + - didit_sdk (4.11.0): + - DiditSDK/All (= 4.11.0) - Flutter - - DiditSDK/All (4.10.0) + - DiditSDK/All (4.11.0) - Flutter (1.0.0) - integration_test (0.0.1): - Flutter DEPENDENCIES: - didit_sdk (from `.symlinks/plugins/didit_sdk/ios`) - - DiditSDK/All (from `https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec`) + - DiditSDK/All (from `https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.11.0/DiditSDK.podspec`) - Flutter (from `Flutter`) - integration_test (from `.symlinks/plugins/integration_test/ios`) @@ -17,7 +17,7 @@ EXTERNAL SOURCES: didit_sdk: :path: ".symlinks/plugins/didit_sdk/ios" DiditSDK: - :podspec: https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.10.0/DiditSDK.podspec + :podspec: https://raw.githubusercontent.com/didit-protocol/sdk-ios/4.11.0/DiditSDK.podspec Flutter: :path: Flutter integration_test: diff --git a/example/pubspec.lock b/example/pubspec.lock index 423a655..edafa88 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -55,7 +55,7 @@ packages: path: ".." relative: true source: path - version: "4.10.0" + version: "4.11.0" fake_async: dependency: transitive description: diff --git a/ios/didit_sdk.podspec b/ios/didit_sdk.podspec index 83c37f8..7b90f88 100644 --- a/ios/didit_sdk.podspec +++ b/ios/didit_sdk.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk' - s.version = '4.10.0' + s.version = '4.11.0' s.summary = 'Didit Identity Verification SDK for Flutter' s.description = <<-DESC Flutter plugin wrapping the native DiditSDK for identity verification @@ -38,7 +38,7 @@ with document scanning, NFC passport reading, and liveness detection. # its -Location twin (All-Location, Core-Location, NFC-Location). didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' didit_sdk_ios_pod += '-Location' if didit_sdk_ios_location - s.dependency didit_sdk_ios_pod, '4.10.0' + s.dependency didit_sdk_ios_pod, '4.11.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/ios/didit_sdk/Package.swift b/ios/didit_sdk/Package.swift index 5a79b52..71a57d2 100644 --- a/ios/didit_sdk/Package.swift +++ b/ios/didit_sdk/Package.swift @@ -15,7 +15,7 @@ let package = Package( .library(name: "didit-sdk", targets: ["didit_sdk"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.11.0") ], targets: [ .target( diff --git a/packages/didit_sdk_autodetection/CHANGELOG.md b/packages/didit_sdk_autodetection/CHANGELOG.md index 8684936..93f013d 100644 --- a/packages/didit_sdk_autodetection/CHANGELOG.md +++ b/packages/didit_sdk_autodetection/CHANGELOG.md @@ -1,7 +1,10 @@ -## 4.10.0 +## 4.11.0 -Pins the iOS and Android native SDKs exactly to 4.10.0. +Pins the iOS and Android native SDKs exactly to 4.11.0. This release also carries everything planned for 4.10.0, which was never published to pub.dev. +- Both platforms: the redesigned flow shell, with a new top bar, progress in words, a rebuilt welcome screen and clearer error messages. +- Both platforms: Bank verification never ends in a dead end. Countries without a bank route offer a statement upload or continuing without a bank, and an account check counts its own attempts. +- iOS: document capture focuses reliably on close-up cards. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. diff --git a/packages/didit_sdk_autodetection/README.md b/packages/didit_sdk_autodetection/README.md index e462efb..b6b46a8 100644 --- a/packages/didit_sdk_autodetection/README.md +++ b/packages/didit_sdk_autodetection/README.md @@ -15,7 +15,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_autodetection: ^4.10.0 + didit_sdk_autodetection: ^4.11.0 ``` ```dart diff --git a/packages/didit_sdk_autodetection/android/build.gradle.kts b/packages/didit_sdk_autodetection/android/build.gradle.kts index 972d73d..65092c6 100644 --- a/packages/didit_sdk_autodetection/android/build.gradle.kts +++ b/packages/didit_sdk_autodetection/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.10.0" +val diditSdkAndroidVersion = "4.11.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec index 9716aaa..b978f3a 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_autodetection' - s.version = '4.10.0' + s.version = '4.11.0' s.summary = 'Didit Identity Verification SDK for Flutter - autodetection variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/Core native SDK @@ -20,7 +20,7 @@ variant (identical to didit_sdk_core). Generated from didit_sdk. # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), # which swaps the subspec for its -Location twin (DiditSDK/Core-Location). didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' - s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.10.0' + s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.11.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift index 5111aa2..689af73 100644 --- a/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift +++ b/packages/didit_sdk_autodetection/ios/didit_sdk_autodetection/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-autodetection", targets: ["didit_sdk_autodetection"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.11.0") ], targets: [ .target( diff --git a/packages/didit_sdk_autodetection/pubspec.yaml b/packages/didit_sdk_autodetection/pubspec.yaml index e9d5938..b1dfe32 100644 --- a/packages/didit_sdk_autodetection/pubspec.yaml +++ b/packages/didit_sdk_autodetection/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_autodetection description: Deprecated, identical to didit_sdk_core - switch to didit_sdk_core. Didit Identity Verification SDK for Flutter, pinned to the autodetection native SDK variant (identical to didit_sdk_core). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.10.0 +version: 4.11.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/packages/didit_sdk_core/CHANGELOG.md b/packages/didit_sdk_core/CHANGELOG.md index cbdc8d7..0ac2416 100644 --- a/packages/didit_sdk_core/CHANGELOG.md +++ b/packages/didit_sdk_core/CHANGELOG.md @@ -1,7 +1,10 @@ -## 4.10.0 +## 4.11.0 -Pins the iOS and Android native SDKs exactly to 4.10.0. +Pins the iOS and Android native SDKs exactly to 4.11.0. This release also carries everything planned for 4.10.0, which was never published to pub.dev. +- Both platforms: the redesigned flow shell, with a new top bar, progress in words, a rebuilt welcome screen and clearer error messages. +- Both platforms: Bank verification never ends in a dead end. Countries without a bank route offer a statement upload or continuing without a bank, and an account check counts its own attempts. +- iOS: document capture focuses reliably on close-up cards. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. diff --git a/packages/didit_sdk_core/README.md b/packages/didit_sdk_core/README.md index 6314804..542ca54 100644 --- a/packages/didit_sdk_core/README.md +++ b/packages/didit_sdk_core/README.md @@ -13,7 +13,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_core: ^4.10.0 + didit_sdk_core: ^4.11.0 ``` ```dart diff --git a/packages/didit_sdk_core/android/build.gradle.kts b/packages/didit_sdk_core/android/build.gradle.kts index c6dfedd..62ba74c 100644 --- a/packages/didit_sdk_core/android/build.gradle.kts +++ b/packages/didit_sdk_core/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.10.0" +val diditSdkAndroidVersion = "4.11.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_core/ios/didit_sdk_core.podspec b/packages/didit_sdk_core/ios/didit_sdk_core.podspec index 6e725f7..4c52643 100644 --- a/packages/didit_sdk_core/ios/didit_sdk_core.podspec +++ b/packages/didit_sdk_core/ios/didit_sdk_core.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_core' - s.version = '4.10.0' + s.version = '4.11.0' s.summary = 'Didit Identity Verification SDK for Flutter - core variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/Core native SDK @@ -20,7 +20,7 @@ variant (automatic capture, no NFC). Generated from didit_sdk. # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), # which swaps the subspec for its -Location twin (DiditSDK/Core-Location). didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' - s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.10.0' + s.dependency "DiditSDK/Core#{'-Location' if didit_sdk_ios_location}", '4.11.0' s.platform = :ios, '13.0' s.static_framework = true diff --git a/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift b/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift index bf7cdab..664c74e 100644 --- a/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift +++ b/packages/didit_sdk_core/ios/didit_sdk_core/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-core", targets: ["didit_sdk_core"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.11.0") ], targets: [ .target( diff --git a/packages/didit_sdk_core/pubspec.yaml b/packages/didit_sdk_core/pubspec.yaml index 7d13021..d415165 100644 --- a/packages/didit_sdk_core/pubspec.yaml +++ b/packages/didit_sdk_core/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_core description: Didit Identity Verification SDK for Flutter, pinned to the core native SDK variant (automatic capture, no NFC). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.10.0 +version: 4.11.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/packages/didit_sdk_nfc/CHANGELOG.md b/packages/didit_sdk_nfc/CHANGELOG.md index 97d1b44..8f773f8 100644 --- a/packages/didit_sdk_nfc/CHANGELOG.md +++ b/packages/didit_sdk_nfc/CHANGELOG.md @@ -1,7 +1,10 @@ -## 4.10.0 +## 4.11.0 -Pins the iOS and Android native SDKs exactly to 4.10.0. +Pins the iOS and Android native SDKs exactly to 4.11.0. This release also carries everything planned for 4.10.0, which was never published to pub.dev. +- Both platforms: the redesigned flow shell, with a new top bar, progress in words, a rebuilt welcome screen and clearer error messages. +- Both platforms: Bank verification never ends in a dead end. Countries without a bank route offer a statement upload or continuing without a bank, and an account check counts its own attempts. +- iOS: document capture focuses reliably on close-up cards. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup. diff --git a/packages/didit_sdk_nfc/README.md b/packages/didit_sdk_nfc/README.md index 1be4367..81a7f53 100644 --- a/packages/didit_sdk_nfc/README.md +++ b/packages/didit_sdk_nfc/README.md @@ -13,7 +13,7 @@ Depend on exactly one of the `didit_sdk` packages: ```yaml dependencies: - didit_sdk_nfc: ^4.10.0 + didit_sdk_nfc: ^4.11.0 ``` ```dart diff --git a/packages/didit_sdk_nfc/android/build.gradle.kts b/packages/didit_sdk_nfc/android/build.gradle.kts index f588ec5..6ea734c 100644 --- a/packages/didit_sdk_nfc/android/build.gradle.kts +++ b/packages/didit_sdk_nfc/android/build.gradle.kts @@ -1,7 +1,7 @@ group = "me.didit.sdk.sdk_flutter" version = "1.0-SNAPSHOT" -val diditSdkAndroidVersion = "4.10.0" +val diditSdkAndroidVersion = "4.11.0" val diditSdkAndroidVariant = ( rootProject.findProperty("diditSdkAndroidVariant") ?: findProperty("diditSdkAndroidVariant") diff --git a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec index 2e051be..3db5200 100644 --- a/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec +++ b/packages/didit_sdk_nfc/ios/didit_sdk_nfc.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'didit_sdk_nfc' - s.version = '4.10.0' + s.version = '4.11.0' s.summary = 'Didit Identity Verification SDK for Flutter - nfc variant' s.description = <<-DESC Didit identity verification Flutter plugin pinned to the DiditSDK/NFC native SDK @@ -20,7 +20,7 @@ variant (automatic capture and NFC passport reading). Generated from didit_sdk. # through $DiditSdkIosLocationEnabled (or DIDIT_SDK_IOS_LOCATION_ENABLED=true), # which swaps the subspec for its -Location twin (DiditSDK/NFC-Location). didit_sdk_ios_location = (defined?($DiditSdkIosLocationEnabled) && !$DiditSdkIosLocationEnabled.nil? ? $DiditSdkIosLocationEnabled : ENV.fetch('DIDIT_SDK_IOS_LOCATION_ENABLED', 'false')).to_s.downcase == 'true' - s.dependency "DiditSDK/NFC#{'-Location' if didit_sdk_ios_location}", '4.10.0' + s.dependency "DiditSDK/NFC#{'-Location' if didit_sdk_ios_location}", '4.11.0' s.platform = :ios, '15.0' s.static_framework = true diff --git a/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift b/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift index 2b61979..dabf5a6 100644 --- a/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift +++ b/packages/didit_sdk_nfc/ios/didit_sdk_nfc/Package.swift @@ -11,7 +11,7 @@ let package = Package( .library(name: "didit-sdk-nfc", targets: ["didit_sdk_nfc"]) ], dependencies: [ - .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.10.0") + .package(url: "https://github.com/didit-protocol/sdk-ios.git", exact: "4.11.0") ], targets: [ .target( diff --git a/packages/didit_sdk_nfc/pubspec.yaml b/packages/didit_sdk_nfc/pubspec.yaml index 0b38059..d644a8c 100644 --- a/packages/didit_sdk_nfc/pubspec.yaml +++ b/packages/didit_sdk_nfc/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk_nfc description: Didit Identity Verification SDK for Flutter, pinned to the nfc native SDK variant (automatic capture and NFC passport reading). Same Dart API as didit_sdk - depend on exactly one of the didit_sdk packages. Generated from didit_sdk - do not edit by hand. -version: 4.10.0 +version: 4.11.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/pubspec.yaml b/pubspec.yaml index b300a4e..c9c5bf1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: didit_sdk description: Didit Identity Verification SDK for Flutter. Wraps native iOS and Android SDKs for document scanning, NFC passport reading, face verification, and liveness detection. -version: 4.10.0 +version: 4.11.0 homepage: https://didit.me repository: https://github.com/didit-protocol/sdk-flutter issue_tracker: https://github.com/didit-protocol/sdk-flutter/issues diff --git a/release-notes/4.10.0.md b/release-notes/4.11.0.md similarity index 77% rename from release-notes/4.10.0.md rename to release-notes/4.11.0.md index 9ba7976..e232924 100644 --- a/release-notes/4.10.0.md +++ b/release-notes/4.11.0.md @@ -1,5 +1,8 @@ -Pins the iOS and Android native SDKs exactly to 4.10.0. +Pins the iOS and Android native SDKs exactly to 4.11.0. This release also carries everything planned for 4.10.0, which was never published to pub.dev. +- Both platforms: the redesigned flow shell, with a new top bar, progress in words, a rebuilt welcome screen and clearer error messages. +- Both platforms: Bank verification never ends in a dead end. Countries without a bank route offer a statement upload or continuing without a bank, and an account check counts its own attempts. +- iOS: document capture focuses reliably on close-up cards. - Both platforms: automatic capture is available in every variant, using the Didit tiny detectors (TensorFlowLite on iOS and MediaPipe on Android are removed). The `autodetection` variant and the `didit_sdk_autodetection` package are deprecated and identical to `core` / `didit_sdk_core`; switch to `didit_sdk_core`. The Android `didit-sdk-autodetection-play` artifact is no longer published. - New native steps run inside the existing start-verification call, with no new Dart API: - Bank verification: the person approves in the system browser, on the bank's page or a page Didit hosts. No setup.