From e8bc920454293a245d9f56d1b6f9ca74f71e5217 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 9 Nov 2026 17:09:10 -0800 Subject: [PATCH] iOS: default build is dev + prov, public only on request Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + ios/scripts/build-ipa.sh | 9 ++++++--- ios/scripts/build-remote.sh | 26 ++++++++++++++++++-------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64388e2..2dfe9c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,3 +32,4 @@ 2026-11-09 iOS: Duo split now engages with the phone lying flat (hinge region reports inactive then), with a screen-size fallback if no region is reported. 1.0 RC 4 (build 24). 2026-11-09 iOS: dev builds (`ios/scripts/build-remote.sh dev`): bundle id org.cdnutter.stemify-dev, "Stemify Dev", own App Group, into ios/build/dev. Internal tests only, never on Gitea or Sideload. 2026-11-09 iOS: Duo unfolded redesign. Tabs move to a rail on the right edge by the status bar, Now Playing fills the screen with stems and queue on the left and the player on the right, picking a tab swaps the left pane, Swap flips the sides (remembered). Folded screen unchanged. +2026-11-09 iOS: build-remote.sh now builds dev + prov by default; public only with `public`. diff --git a/ios/scripts/build-ipa.sh b/ios/scripts/build-ipa.sh index 8bb6eb9..57266aa 100755 --- a/ios/scripts/build-ipa.sh +++ b/ios/scripts/build-ipa.sh @@ -5,6 +5,7 @@ # Finished IPAs are kept per version; build/work is scratch and is wiped each run. # "build-ipa.sh dev" builds only build/dev/stemify--dev.ipa: bundle id org.cdnutter.stemify-dev, # named "Stemify Dev", ad-hoc signed, so it installs next to the release app. For internal tests, never released. +# "build-ipa.sh prov" builds only the signed prov IPA (no public one). # ios/scripts/build-remote.sh runs this on White-M1 and copies build/public and build/prov back to DevOps. set -euo pipefail cd "$(dirname "$0")/.." @@ -41,9 +42,11 @@ if [ "$MODE" = dev ]; then fi # Public build, for the releases and AltStore/Sideloadly. -rm -f $B/public/stemify-$VERSION.ipa -(cd $OUT && zip -qry ../public/stemify-$VERSION.ipa Payload) -echo "$B/public/stemify-$VERSION.ipa" +if [ "$MODE" != prov ]; then + rm -f $B/public/stemify-$VERSION.ipa + (cd $OUT && zip -qry ../public/stemify-$VERSION.ipa Payload) + echo "$B/public/stemify-$VERSION.ipa" +fi if [ -f prov/Stemify.mobileprovision ] && [ -f prov/key.p12 ] && [ -n "${P12_PASS:-}" ]; then KC=$PWD/$OUT/sign.keychain-db; KP=$(uuidgen) diff --git a/ios/scripts/build-remote.sh b/ios/scripts/build-remote.sh index 67e3916..904a7c7 100755 --- a/ios/scripts/build-remote.sh +++ b/ios/scripts/build-remote.sh @@ -1,13 +1,23 @@ #!/bin/bash -# Run from DevOps: syncs ios/ to White-M1, builds there, and pulls the IPAs back into ios/build/{public,prov}. -# "build-remote.sh dev" builds only the internal test IPA into ios/build/dev. +# Run from DevOps: syncs ios/ to White-M1, builds there, and pulls the IPAs back into ios/build. +# build-remote.sh dev + prov (the usual build): build/dev and build/prov +# build-remote.sh public public + prov, only when a public release is asked for: build/public and build/prov +# build-remote.sh dev dev only set -euo pipefail cd "$(dirname "$0")/.." H=${BUILD_HOST:-white-m1}; R=stemify-build/ios +case "${1:-}" in + "") MODES="dev prov" ;; + public) MODES="release" ;; + dev) MODES="dev" ;; + *) echo "usage: $0 [public|dev]" >&2; exit 1 ;; +esac rsync -a --exclude build --exclude prov --exclude Stemify.xcodeproj ./ $H:$R/ -ssh $H "cd $R && P12_PASS=\$(cat prov/cert_pass.txt 2>/dev/null) bash scripts/build-ipa.sh ${1:-}" -if [ "${1:-}" = dev ]; then mkdir -p build/dev; rsync -a $H:$R/build/dev/ build/dev/; ls build/dev; exit 0; fi -mkdir -p build/public build/prov -rsync -a $H:$R/build/public/ build/public/ -rsync -a $H:$R/build/prov/ build/prov/ -ls build/public build/prov +for m in $MODES; do + ssh $H "cd $R && P12_PASS=\$(cat prov/cert_pass.txt 2>/dev/null) bash scripts/build-ipa.sh $m" +done +for m in $MODES; do + case $m in dev) DIRS=dev ;; prov) DIRS=prov ;; release) DIRS="public prov" ;; esac + for d in $DIRS; do mkdir -p build/$d; rsync -a $H:$R/build/$d/ build/$d/; done +done +ls build/*/stemify-$(sed -nE 's/^ *VERSION_LABEL: "(.*)"/\1/p' project.yml | tr 'A-Z' 'a-z' | sed -E 's/ rc /-rc/; s/ /-/g')*.ipa 2>/dev/null