← back to Nineoh Guide
TK-12: turnkey App Store screenshot script (iPhone 6.9" + iPad 13") — one command post-build, defers premature native build (yoloforever C2)
1f2a021d03a67d83b570dece10a9dd4266c59418 · 2026-08-05 09:35:44 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
A scripts/capture-appstore-screenshots.sh
Diff
commit 1f2a021d03a67d83b570dece10a9dd4266c59418
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Aug 5 09:35:44 2026 -0700
TK-12: turnkey App Store screenshot script (iPhone 6.9" + iPad 13") — one command post-build, defers premature native build (yoloforever C2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
scripts/capture-appstore-screenshots.sh | 54 +++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/scripts/capture-appstore-screenshots.sh b/scripts/capture-appstore-screenshots.sh
new file mode 100755
index 0000000..6cab9d9
--- /dev/null
+++ b/scripts/capture-appstore-screenshots.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+# Turnkey App Store screenshot capture for nineoh (TK-12).
+# Captures the two REQUIRED sizes: iPhone 6.9" + iPad 13".
+# Run this AFTER a build exists (EAS simulator build, or `expo run:ios` .app).
+#
+# bash scripts/capture-appstore-screenshots.sh /path/to/nineoh.app
+#
+# If no .app is given, it builds a local sim app first (`expo run:ios`, ~15 min first time).
+# Screenshots land in ./screenshots/<device>/NN.png — you tap to each screen, press Enter, it grabs.
+set -euo pipefail
+cd "$(dirname "$0")/.."
+
+APP_PATH="${1:-}"
+BUNDLE="com.abrams.nineohguide"
+OUT="screenshots"
+mkdir -p "$OUT"
+
+# Required App Store devices (2026): iPhone 6.9" (16 Pro Max) + iPad 13".
+IPHONE="iPhone 16 Pro Max"
+IPAD="iPad Pro 13-inch (M5)"
+
+boot() { # $1 = device name -> echoes its UDID, booting + downloading runtime if needed
+ local name="$1" udid
+ udid=$(xcrun simctl list devices available | grep -F "$name" | head -1 | grep -oE "[0-9A-F-]{36}" || true)
+ if [ -z "$udid" ]; then
+ echo " ⚠️ '$name' sim not installed. Create it in Xcode › Settings › Components (download the iOS runtime), then:" >&2
+ echo " xcrun simctl create \"$name\" \"$name\"" >&2
+ return 1
+ fi
+ xcrun simctl boot "$udid" 2>/dev/null || true
+ open -a Simulator
+ echo "$udid"
+}
+
+shoot() { # $1=udid $2=device-label
+ local udid="$1" label="$2" n=1 dir="$OUT/$label"
+ mkdir -p "$dir"
+ if [ -n "$APP_PATH" ]; then xcrun simctl install "$udid" "$APP_PATH"; fi
+ xcrun simctl launch "$udid" "$BUNDLE" 2>/dev/null || echo " (launch app manually if not auto-installed)"
+ echo "── Capturing $label. Navigate to each screen in the Simulator; press Enter to grab, or 'q' Enter to finish. ──"
+ while true; do
+ read -r -p " [$label] shot $n (Enter=grab / q=next device): " k
+ [ "$k" = "q" ] && break
+ xcrun simctl io "$udid" screenshot "$dir/$(printf '%02d' $n).png" && echo " saved $dir/$(printf '%02d' $n).png"
+ n=$((n+1))
+ done
+}
+
+echo "== nineoh App Store screenshots =="
+[ -z "$APP_PATH" ] && { echo "No .app passed — building local sim app (expo run:ios)…"; npx expo run:ios --configuration Release || { echo "local build failed — pass an EAS sim .app instead"; exit 1; }; }
+
+if U=$(boot "$IPHONE"); then shoot "$U" "iphone-6.9"; fi
+if U=$(boot "$IPAD"); then shoot "$U" "ipad-13"; fi
+echo "Done. Screenshots in ./$OUT/ → upload 3–5 per size to App Store Connect (Episodes/Cast/Watch/News have real content)."
← 4a00039 TK-12: add App Store icon (1024px, no-alpha) + splash, wire
·
back to Nineoh Guide
·
TK-12: fix fmt/consteval Xcode error — remove ios.image:late e12d07e →