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
This commit is contained in:
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user