diff --git a/android-templates/MainActivity.java b/android-templates/MainActivity.java
new file mode 100644
index 0000000..58a02f2
--- /dev/null
+++ b/android-templates/MainActivity.java
@@ -0,0 +1,20 @@
+package org.skatespots.app;
+
+import com.getcapacitor.BridgeActivity;
+
+/**
+ * Default Capacitor launcher activity.
+ *
+ * This is the STOCK Capacitor MainActivity — it does NOT override the
+ * WebViewClient or anything else. An earlier custom version overrode the
+ * WebViewClient and wiped out the client Capacitor needs to load the web layer,
+ * causing a black-screen crash on launch. This minimal version simply exists so
+ * the AndroidManifest has a valid launcher class to point at, and lets Capacitor
+ * boot normally.
+ *
+ * Injected into the generated android/ project at build time by
+ * scripts/inject-main-activity.mjs so the correct class is always present even
+ * after `rm -rf android` / `cap add`.
+ */
+public class MainActivity extends BridgeActivity {
+}
diff --git a/package.json b/package.json
index 98accff..b77ee21 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "skate-spots",
"private": true,
- "version": "1.2.10",
+ "version": "1.2.11",
"type": "module",
"homepage": "https://skate-spots.com",
"scripts": {
@@ -9,11 +9,11 @@
"build": "npm i --silent && vite build -l error && cp dist/index.html dist/404.html && echo 'Project built successfully!'",
"test": "npm i --silent && tsc --noEmit && eslint && vitest run --reporter=dot --silent && vite build -l error && cp dist/index.html dist/404.html && echo 'All tests passed!'",
"deploy": "npm i --silent && npm run build && npx -y nostr-deploy-cli deploy --skip-setup",
- "android:init": "npm run android:build:apk && npx cap add android && npx cap sync android && node scripts/inject-amber-queries.mjs",
- "android:sync": "npm run android:build:apk && npx cap sync android && node scripts/sync-android-version.mjs && node scripts/inject-amber-queries.mjs",
+ "android:init": "npm run android:build:apk && npx cap add android && npx cap sync android && node scripts/inject-amber-queries.mjs && node scripts/inject-main-activity.mjs",
+ "android:sync": "npm run android:build:apk && npx cap sync android && node scripts/sync-android-version.mjs && node scripts/inject-amber-queries.mjs && node scripts/inject-main-activity.mjs",
"android:open": "npx cap open android",
"android:version": "node scripts/sync-android-version.mjs",
- "android:build": "npm run android:build:apk && npx cap sync android && node scripts/sync-android-version.mjs && node scripts/inject-amber-queries.mjs && cd android && ./gradlew assembleRelease",
+ "android:build": "npm run android:build:apk && npx cap sync android && node scripts/sync-android-version.mjs && node scripts/inject-amber-queries.mjs && node scripts/inject-main-activity.mjs && cd android && ./gradlew assembleRelease",
"android:build:apk": "CAPACITOR_BUILD=1 vite build && sed -i 's|||g' dist/index.html && sed -i 's|