penrose-mobile/, SDK 54) → two store clones: iOS App Store and Android Google Play / APK. Android is not a separate version — it is the Android target of v1.0.0 b1.
Native ios/ project present, EAS production profile wired.
Store-ready as of 2026-05-28. Next: EAS production build → TestFlight → App Store Review.
Same code, same v1.0.0 b1. EAS preview profile emits an installable
APK for testing (no local Android SDK needed). Config ready —
first build pending (eas login required).
Onboarding (first launch only), Daily mosaic (UTC seed), 20 figure levels (Diamond → Twin Suns), native rating prompt after L10, waitlist / "collection complete" after L20, haptics, Fraunces brand wordmark. Engine: Penrose multigrid geometry + patch engine, on-device progress (AsyncStorage).
Stack: Expo SDK 54 · React Native 0.81 · Skia · Reanimated · bundle com.botsnbones.tessra.
v3 = gameplay QA mirror. v3.1 = store visual + patch-engine map glyphs. v3.2 = Soft Atlas visual exploration with 3-day Daily and centered victory. Verify all 20 level figures on Level etalon.
open http://127.0.0.1:8877/penrose/versions/v3-daily-levels/Penrose%20Mosaic.html
open http://127.0.0.1:8877/penrose/versions/v3.1-hidden-order/Penrose%20Mosaic.html
open http://127.0.0.1:8877/penrose/versions/v3.2-soft-atlas/Penrose%20Mosaic.html
open http://127.0.0.1:8877/levels-etalon.html
Run in Simulator, then production build + submit. Replace APP_STORE_ID in release.ts before submitting.
./run-ios.command
cd penrose-mobile && eas build --platform ios --profile production && eas submit --platform ios --latest
Cloud build via EAS — returns a downloadable .apk + QR. One-time eas login first; keystore is auto-managed.
cd penrose-mobile && npm run build:apk
Install: adb install tessra.apk or scan the QR. Expo Go won't work (Skia + Reanimated need a real build).