mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
* feat: add iOS native shell package (NSL-02) Plain Swift implementation of the WebView host with bridge handlers for secure storage (Keychain), crypto (EC P-256), and lifecycle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add Android native shell package (NSL-01) Plain Kotlin implementation of the WebView host with bridge handlers for secure storage (EncryptedSharedPreferences), crypto (Android Keystore EC P-256), and lifecycle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: integrate Sumsub Web SDK into ProviderLaunchScreen (WV-05) Rewrites ProviderLaunchScreen to launch Sumsub Web SDK, adds KYC provider types, result normalization, and a ProviderResultScreen for displaying verification outcomes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update spec status for NSL-01, NSL-02, WV-05 to in-progress All three items are code-complete but need integration testing before marking done. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add build-pipeline workstream specs, update NSL-03 and BP-01 status Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add WebView bundle build pipeline (BP-01) Build script copies webview-app dist into both native shell asset directories. Gradle preBuild validation fails fast when bundle is missing. Root package.json gets build:sdk-* scripts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add SDK test apps for Android and iOS (NSL-03) Minimal test apps to exercise native shells end-to-end: - Android: Jetpack Compose app using SelfSdk.launch() via composite build - iOS: SwiftUI app using SelfSdk.createViewController() via local SPM dep Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update lockfile * fix: address CodeRabbit PR review findings for native shells - Fix iOS double callback: add hasEmittedResult flag to LifecycleHandler so dismiss() won't fire onCancelled after onResult already emitted - Fix Android error result codes: use RESULT_FIRST_USER for failed verifications instead of always RESULT_OK; add dedicated handler in SelfSdk.handleResult - Fix iOS production query params: append params to file URL via URLComponents so WebView receives teeUrl/verificationId/userId - Fix build:sdk-ios false-green: chain swift build after bundle script - Add expectedRequestCode param to handleResult for flexibility - Upgrade security-crypto 1.1.0-alpha06 → 1.1.0 stable - Improve callback type safety: onSuccess takes raw JSON string, onFailure takes SelfSdkException instead of generic Exception - Add requireBiometric intent comments to both SecureStorageHandlers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address remaining CodeRabbit PR review findings (round 2) - iOS BridgeResponse: add requestId/success fields, rename result→data to match JS bridge contract - iOS test app: fix callback deallocation with Coordinator pattern - ProviderLaunchScreen: fail closed on missing verificationId, fix retry via retryCount state - ProviderResultScreen: guard unknown status with fallback to error config - build-webview-bundle.sh: validate index.html before deleting targets - Package.swift: fix SPM resource path with target path/sources Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
#
|
|
# Builds the webview-app and copies the output to native shell asset directories.
|
|
# Usage: ./scripts/build-webview-bundle.sh [--skip-build]
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
|
|
WEBVIEW_DIST="${REPO_ROOT}/packages/webview-app/dist"
|
|
ANDROID_ASSETS="${REPO_ROOT}/packages/native-shell-android/src/main/assets/self-wallet"
|
|
IOS_RESOURCES="${REPO_ROOT}/packages/native-shell-ios/Resources/self-sdk-web"
|
|
|
|
SKIP_BUILD=false
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--skip-build) SKIP_BUILD=true ;;
|
|
*) echo "Unknown argument: $arg"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
# Step 1: Build webview-app
|
|
if [ "$SKIP_BUILD" = false ]; then
|
|
echo "Building webview-app..."
|
|
(cd "$REPO_ROOT" && yarn workspace @selfxyz/webview-app build)
|
|
else
|
|
echo "Skipping build (--skip-build)"
|
|
fi
|
|
|
|
# Verify build output exists
|
|
if [ ! -d "$WEBVIEW_DIST" ]; then
|
|
echo "ERROR: Build output not found at ${WEBVIEW_DIST}"
|
|
echo "Run without --skip-build or build webview-app manually first."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$WEBVIEW_DIST/index.html" ]; then
|
|
echo "ERROR: Build output incomplete — index.html not found at ${WEBVIEW_DIST}/index.html"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 2: Clean target directories
|
|
echo "Cleaning target directories..."
|
|
rm -rf "$ANDROID_ASSETS"
|
|
rm -rf "$IOS_RESOURCES"
|
|
|
|
# Step 3: Create target directories and copy
|
|
echo "Copying bundle to Android assets..."
|
|
mkdir -p "$ANDROID_ASSETS"
|
|
cp -r "$WEBVIEW_DIST"/* "$ANDROID_ASSETS"/
|
|
|
|
echo "Copying bundle to iOS resources..."
|
|
mkdir -p "$IOS_RESOURCES"
|
|
cp -r "$WEBVIEW_DIST"/* "$IOS_RESOURCES"/
|
|
|
|
# Step 4: Verify
|
|
FAILED=false
|
|
|
|
if [ ! -f "$ANDROID_ASSETS/index.html" ]; then
|
|
echo "ERROR: Android bundle verification failed — index.html not found at ${ANDROID_ASSETS}/index.html"
|
|
FAILED=true
|
|
fi
|
|
|
|
if [ ! -f "$IOS_RESOURCES/index.html" ]; then
|
|
echo "ERROR: iOS bundle verification failed — index.html not found at ${IOS_RESOURCES}/index.html"
|
|
FAILED=true
|
|
fi
|
|
|
|
if [ "$FAILED" = true ]; then
|
|
echo "Bundle copy FAILED."
|
|
exit 1
|
|
fi
|
|
|
|
echo "WebView bundle copied successfully to both native shells."
|