# Glidr - TODO ## Session 2026-03-16: Xcode Build + App Store Submission ### What Was Done #### Xcode Project Setup - Created Glidr.xcodeproj / Glidr.xcworkspace (renamed from Runner) - All Runner references replaced with Glidr in: pbxproj, Podfile, xcscheme, xcworkspacedata, xcconfig files, storyboards - Team ID: 7KU642K5ZL, Bundle ID: com.tekmidian.glidr - Signing: Automatic with Apple Development: Matthias Nott - Created Runner.xcscheme symlink -> Glidr.xcscheme (needed for flutter CLI) #### Build Issues Fixed - Homebrew rsync 3.4.1 incompatible with Xcode distribution (causes "Copy failed") - Fix: `mv /opt/homebrew/bin/rsync /opt/homebrew/bin/rsync.bak` before distribution, restore after - Icon alpha channels: App Store rejects transparent icons - Fix: Python PIL script removes alpha, saves as RGB - Overflow UI indicator ("RFLOWED BY" text): leadingWidth too small in home_screen.dart - Fix: Wrapped in ClipRect + OverflowBox, increased leadingWidth to 110 #### App Store Connect (Apple ID: 6760631689) - App name: Glider Pilot (Glidr was taken) - Apple account: mn@mnsoft.org - Build 1.0.0 uploaded successfully (with dSYM warning - non-blocking) - Pricing: FREE ($0.00) - changed from initial $49.99 mistake - In-App Purchase created: - Name: Full Access - Product ID: com.tekmidian.glidr.fullaccess - Type: Non-Consumable - Price: $49.99 (all 175 regions) - Localization: "Full Access - All Questions" / "Unlock all 950 SPL exam questions in EN/FR/DE." - Category: Education - Age Rating: 4+ (all "None" for all categories) - Content Rights: No third-party content - Encryption: None (no custom encryption) - 7 screenshots uploaded (resized from 1320x2868 to 1284x2778 for 6.5" display) - Description, promotional text, keywords, support URL, marketing URL all filled - Build attached to version, compliance handled - Review contact: Matthias Nott, mn@mnsoft.org, +41 79 000 0000 (placeholder) - Review notes filled #### App Store Submission Blockers (remaining) - [x] Privacy Policy URL - set to https://youdrill.com/glidr/privacy.html - [x] Content Rights - set to "no third-party content" - [ ] iPad 13-inch screenshot - created at screenshots/ipad/ipad_home.png but NOT uploaded yet - [ ] App Privacy practices - need to click "Get Started" and fill in (app collects no data) - [ ] Agreement Update dialog keeps appearing - may need to re-accept developer agreement - [ ] Submit for review (click "Add for Review") #### Docker / youdrill.com Server - Created youdrill-website container (nginx:alpine) alongside existing youdrill-api (node:22-alpine) - docker-compose.yml at /opt/data/youdrill/docker-compose.yml - has both services - Traefik config at /opt/data/traefik/dynamic/youdrill.yaml - routes /glidr/ to website, rest to API - Static files at /opt/data/youdrill/website/ - /glidr/privacy.html - privacy policy (live, verified 200) - /glidr/support.html - support page - /glidr/index.html - landing page - /index.html - root (for healthcheck) - Container is healthy #### Code Changes Made - ios/Glidr/Info.plist: CFBundleDisplayName changed to "Glider Pilot" - lib/screens/home_screen.dart: title changed to "Glider Pilot", leading wrapped in ClipRect/OverflowBox - create_icon.py: OUTPUT_DIR path updated from Runner to Glidr - ios/Glidr.xcodeproj/xcshareddata/xcschemes/Glidr.xcscheme: LaunchAction buildConfiguration changed to Release - Runner.xcscheme symlink created pointing to Glidr.xcscheme #### App Icon - Smiling glider plane icon restored from git history (commit a8a0c56) - Alpha channels removed from all 15 icon PNGs for App Store compliance - Icons in ios/Glidr/Assets.xcassets/AppIcon.appiconset/ ### Known Issues - App crashes on iPhone restart when deployed via Xcode Cmd+R (development signing issue) - Dev-signed apps have get-task-allow=true, iOS 26 kills process without debugger - Fix: Use flutter build ipa --release + devicectl install, or TestFlight - flutter build ipa --release --no-pub (then xcrun devicectl device install app) - Homebrew rsync must be temporarily moved aside for Xcode distribution - Scheme rename to "Glider Pilot" broke flutter CLI - reverted to "Glidr" with Runner symlink - Simulators must be shut down before flutter device detection (xcrun simctl shutdown all) - flutter run --release hangs on device detection with Xcode 26 beta ### Deploy Commands ```bash # Build release IPA cd /Users/i052341/dev/apps/glidr flutter build ipa --release --no-pub # Install on iPhone xcrun devicectl device install app --device 00008150-001609EA3CEA401C build/ios/ipa/glidr.ipa # Archive and distribute (Xcode GUI) # 1. Move homebrew rsync: mv /opt/homebrew/bin/rsync /opt/homebrew/bin/rsync.bak # 2. Open Glidr.xcworkspace, set destination to "Any iOS Device" # 3. Product > Archive # 4. Distribute App > App Store Connect > Distribute # 5. Restore rsync: mv /opt/homebrew/bin/rsync.bak /opt/homebrew/bin/rsync ``` ## Previously Completed (2026-03-15) - [x] Flutter app built and deployed to iPhone (release build) - [x] 950 questions across 9 subjects in EN/FR/DE - [x] SM-2 spaced repetition, cram mode, browse all, statistics - [x] Smiling glider app icon - [x] Content sync from youdrill.com - [x] Articles system - [x] Converter handles all 3 languages ## Next Up - [ ] Upload iPad screenshot to ASC - [ ] Complete App Privacy practices in ASC - [ ] Submit for App Review - [ ] Update phone number in review contact - [ ] Test release build on iPhone (standalone restart) - [ ] TestFlight testing