Identity is now derived from a BIP39 12-word mnemonic via keet-identity-key (SLIP-48 Ed25519). profile.id becomes a deterministic 32-hex hash of the identity public key, and writer-announce exchanges identity-signed proofs so peers can prove ownership across reinstalls. Mnemonic backup: - Android: Google Play Services Block Store (BlockStoreModule) - iOS: iCloud Keychain via Security.framework with kSecAttrSynchronizable - Local copy persisted via expo-secure-store for in-session reveal Onboarding adds "I already use PearCal" with cloud-restore and manual 12-word entry paths, a completion toast naming the backup platform, and a soft nudge banner shown once the user has authored events when only a local copy exists. Tapping "Back up" opens the Profile tab, auto-expands Advanced, and scrolls to the recovery-phrase row. The row's Save action writes pearcal-recovery-phrase.txt through the native share sheet. Phase 1 restores identity only — group/event rebinding lands in Phase 2. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
62 lines
1.9 KiB
JSON
62 lines
1.9 KiB
JSON
{
|
|
"private": true,
|
|
"name": "pearcal-native",
|
|
"main": "expo-router/entry",
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"bundle:bare": "bare-pack --linked src/bare.js -o assets/bare-universal.bundle",
|
|
"bundle:ui": "esbuild src/ui/App.jsx --bundle --format=iife --global-name=PearCalApp --jsx-factory=React.createElement --jsx-fragment=React.Fragment --outfile=assets/app-ui.bundle",
|
|
"postinstall": "patch-package"
|
|
},
|
|
"author": "Holepunch",
|
|
"license": "Apache-2.0",
|
|
"bugs": {
|
|
"url": "https://github.com/holepunchto/bare-expo/issues"
|
|
},
|
|
"homepage": "https://github.com/holepunchto/bare-expo#readme",
|
|
"dependencies": {
|
|
"@fontsource/manrope": "^5.2.8",
|
|
"@phosphor-icons/react": "^2.1.10",
|
|
"autobase": "^7.25.1",
|
|
"b4a": "^1.8.0",
|
|
"blind-peering": "^2.0.1",
|
|
"corestore": "^7.8.0",
|
|
"expo": "^54.0.10",
|
|
"expo-build-properties": "^1.0.9",
|
|
"expo-constants": "^18.0.9",
|
|
"expo-file-system": "~19.0.21",
|
|
"expo-linking": "^8.0.8",
|
|
"expo-router": "^6.0.8",
|
|
"expo-secure-store": "~15.0.8",
|
|
"expo-system-ui": "^6.0.7",
|
|
"hyperbee": "^2.27.3",
|
|
"hypercore": "^11.26.0",
|
|
"hyperdht": "^6.29.0",
|
|
"hyperswarm": "^4.17.0",
|
|
"keet-identity-key": "^3.1.0",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.1.4",
|
|
"react-dom": "^19.1.4",
|
|
"react-native": "^0.81.4",
|
|
"react-native-b4a": "^0.0.4",
|
|
"react-native-bare-kit": "^0.12.2",
|
|
"react-native-safe-area-context": "^5.4.0",
|
|
"react-native-screens": "^4.23.0",
|
|
"react-native-webview": "13.15.0",
|
|
"sodium-universal": "^5.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.1.3",
|
|
"bare-bundle": "^1.10.0",
|
|
"bare-pack": "^2.0.0",
|
|
"esbuild": "^0.27.3",
|
|
"patch-package": "^8.0.1",
|
|
"prettier": "^3.3.3",
|
|
"prettier-config-standard": "^7.0.0",
|
|
"typescript": "^5.3.3"
|
|
},
|
|
"version": "1.0.0"
|
|
}
|