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
- createicon.py: OUTPUTDIR 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