Catches React render errors (ErrorBoundary) and fatal JS errors
(ErrorUtils.setGlobalHandler) and displays the stacktrace on-screen
instead of crashing to desktop. Temporary — remove after crash identified.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SplashScreen.hideAsync() and the splash section in app.json were both
introduced after v0.1.5 and are common to every crashing build.
Reverting to the exact v0.1.5 baseline to isolate the crash source.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Release body now includes conventional-commit bullet points, a compare
link (prev_tag...current_tag) and a link to CHANGELOG.md for both the
GitHub release and a new Gitea release created via API.
GITEA_TOKEN secret must be added to GitHub repo secrets to enable
the Gitea release step.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
expo-router 56 already calls _internal_preventAutoHideAsync() internally.
Calling preventAutoHideAsync() at module level created a second user lock
that blocked the native splash indefinitely on Android, causing a crash.
SafeAreaProvider removed as expo-router's ExpoRoot already wraps with it.
Keep SplashScreen.hideAsync() to release the splash after SecureStore reads.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add SplashScreen.preventAutoHideAsync() at module level and hideAsync()
once SecureStore reads complete. Add splash backgroundColor to app.json
to match app theme. Wrap layout in SafeAreaProvider.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Debug APK required Metro bundler at runtime. Switch to a signed release
build using a local keystore (same pattern as Postiz-Android): keystore
decoded from KEYSTORE_B64 secret, build-apk.sh patches build.gradle and
assembles a standalone APK.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- cancel-in-progress for same ref prevents parallel duplicate builds
- post-build step creates a GitHub Release with APK as named asset
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>