[object Object]

← 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

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 →