chahinebrini 3c52d8869e feat(native): WIP checkpoint — Profile/Settings/Demographics + WheelPicker + Maestro
Rollback-Punkt vor Expo SDK 54 / RN 0.81 Upgrade.

UI/UX:
- Profile: ProfileHeader redesign (sign-in chip + member-since), StatsBar 3 pill cards,
  Demographics accordion completed (Geburtsjahr, Geschlecht, Familienstand, Beruf-split,
  Wohnort), Pro-Trial-Banner, Approved-Domains list, DigaMissionBanner
- Settings: section-based layout, neutral icons (matched Header dropdown style)
- Header dropdown: extended with logout + games-page link
- Notifications page: skeleton dummy data
- Locales: i18n keys for new screens

New components:
- WheelPickerModal: native iOS UIPickerView wheel for long lists (Geburtsjahr 91 items,
  Bundesland 16, Stadt 30+/Bundesland)
- OptionsBottomSheet: iOS-style options sheet (used briefly for Geschlecht, currently
  unused — kept for potential future use)
- germanCities.ts: Top-cities per Bundesland (DSGVO-clean static data)

New libs (NewArch-codegen verified):
- @react-native-menu/menu 2.0.0 (UIMenu wrapper, Apple HIG-konform)
- @lodev09/react-native-true-sheet 3.10.1 (UISheetPresentationController wrapper —
  ABER incompatible mit RN 0.79.6, Build-Error → Trigger für SDK-54-Upgrade)

Maestro E2E:
- Initial setup mit auth/community/profile/urge flows

Scripts:
- build-ios-clean.sh: Xcode DerivedData + ios/build cleanup vor expo run:ios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 19:32:27 +02:00

79 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# build-ios-clean.sh — iOS clean rebuild ohne Festplatten-bloat
#
# Cleart vor jedem Build:
# - Rebreak DerivedData (NICHT alle Projects, nur Rebreak-*)
# - ios/build/ (Xcode workspace build output)
#
# Optional via env:
# CLEAN_PODS=1 → auch ios/Pods nukern + pod install (langsamer, ~3min extra)
# SKIP_BUILD=1 → nur cleanup, kein expo run:ios
#
# Usage:
# ./scripts/build-ios-clean.sh # cleanup + simulator-build
# ./scripts/build-ios-clean.sh --device # cleanup + device-build
# CLEAN_PODS=1 ./scripts/build-ios-clean.sh # full reset
# SKIP_BUILD=1 ./scripts/build-ios-clean.sh # nur disk freigeben
set -euo pipefail
cd "$(dirname "$0")/.."
echo "==================================="
echo " iOS Clean-Build"
echo "==================================="
free_before=$(df -h / | tail -1 | awk '{print $4}')
echo "Free disk (before): $free_before"
echo ""
# 1. Sicherheits-check: läuft gerade ein Xcode/expo-build?
if pgrep -f "xcodebuild|expo run:ios" >/dev/null 2>&1; then
echo "WARNUNG: xcodebuild oder expo run:ios läuft gerade."
echo " Cleanup würde laufenden Build kaputt machen. Abbruch."
exit 1
fi
# 2. Rebreak DerivedData nukern (gezielt, nicht alle Projects)
DD_DIR="$HOME/Library/Developer/Xcode/DerivedData"
REBREAK_DDS=$(find "$DD_DIR" -maxdepth 1 -name "Rebreak-*" -type d 2>/dev/null || true)
if [ -n "$REBREAK_DDS" ]; then
echo "==> Removing Rebreak DerivedData:"
echo "$REBREAK_DDS" | sed 's/^/ /'
echo "$REBREAK_DDS" | xargs rm -rf
else
echo "==> No Rebreak DerivedData found (already clean)"
fi
# 3. ios/build/ (workspace build output, falls vorhanden)
if [ -d "ios/build" ]; then
size=$(du -sh ios/build 2>/dev/null | awk '{print $1}')
echo "==> Removing ios/build/ ($size)"
rm -rf ios/build
fi
# 4. Optional: Pods komplett zurücksetzen
if [ "${CLEAN_PODS:-0}" = "1" ]; then
if [ -d "ios/Pods" ]; then
size=$(du -sh ios/Pods 2>/dev/null | awk '{print $1}')
echo "==> CLEAN_PODS=1 → Removing ios/Pods/ ($size)"
rm -rf ios/Pods ios/Podfile.lock
fi
echo "==> Running pod install"
(cd ios && pod install)
fi
free_after=$(df -h / | tail -1 | awk '{print $4}')
echo ""
echo "Free disk (after): $free_after"
echo ""
# 5. Build (außer SKIP_BUILD=1)
if [ "${SKIP_BUILD:-0}" = "1" ]; then
echo "SKIP_BUILD=1 → cleanup-only, kein expo run:ios"
exit 0
fi
echo "==> Starting expo run:ios $*"
exec npx expo run:ios "$@"