Files
GHOSTWIRE/ios/release.sh
T
Daniel Redetzke f31bb360c9 Add native iOS app with App Store preparation
iOS app (ios/, SwiftUI, iOS 17+) in the web UI's styling with the Kamon
logo. It covers everything the web interface does except password, API
tokens and backups: dashboard, peers with search and filter, peer detail
with traffic charts, add/edit peers, one-time config with QR code and
share sheet, server settings with apply bar, app settings, data
retention and log viewer.

- Pairing by QR code or pasted pairing code; token kept in the keychain;
  self-signed certificates are pinned by SHA-256 fingerprint.
- Colour providers and logo drawing are nonisolated: SwiftUI's background
  renderer calls them, and main-actor closures crashed there when the
  camera scanner was open.
- App Store: version 1.0, export compliance, privacy manifest, app icon,
  release.sh (archive and upload), listing text, review notes and 6.9"
  screenshots in ios/AppStore.

Server:
- Full-access API tokens may use settings, logs and restart; password,
  tokens, backup/restore and the admin username stay admin-only.
- Web pairing dialog gains "Copy pairing code".
- The development simulator reports health checks in Linux wording.

Claude-Session: https://claude.ai/code/session_01RAnLbyQZ5ZTA7KqwXP98nw
2026-10-03 18:34:41 +03:00

38 lines
1.4 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# Archives GHOSTWIRE for the App Store and uploads it to App Store Connect.
#
# Needs Xcode signed in to your Apple developer account (Xcode → Settings →
# Accounts) and your team ID (developer.apple.com → Membership).
#
# TEAM_ID=ABCDE12345 ./release.sh archive and upload
# TEAM_ID=ABCDE12345 ./release.sh --export archive and export an .ipa only
#
# The build number is the current date and time, so every upload is unique.
set -eu
cd "$(dirname "$0")"
: "${TEAM_ID:?Set TEAM_ID to your Apple Developer team ID}"
BUILD=${BUILD:-$(date +%Y%m%d%H%M)}
DEST=upload
[ "${1:-}" = "--export" ] && DEST=export
OUT=build
rm -rf "$OUT"
mkdir -p "$OUT"
sed -e "s/__TEAM_ID__/$TEAM_ID/" -e "s/__DEST__/$DEST/" ExportOptions.plist > "$OUT/ExportOptions.plist"
xcodebuild -project GHOSTWIRE.xcodeproj -scheme GHOSTWIRE -configuration Release \
-destination 'generic/platform=iOS' -archivePath "$OUT/GHOSTWIRE.xcarchive" \
DEVELOPMENT_TEAM="$TEAM_ID" CURRENT_PROJECT_VERSION="$BUILD" \
-allowProvisioningUpdates archive
xcodebuild -exportArchive -archivePath "$OUT/GHOSTWIRE.xcarchive" \
-exportOptionsPlist "$OUT/ExportOptions.plist" -exportPath "$OUT" \
-allowProvisioningUpdates
if [ "$DEST" = upload ]; then
echo "Uploaded build $BUILD. It appears in App Store Connect → TestFlight after processing (usually 5–30 minutes)."
else
echo "Exported $OUT/GHOSTWIRE.ipa (build $BUILD)."
fi