From 8e4a42666c2caa6ed86781cebea252af9b136979 Mon Sep 17 00:00:00 2001 From: kutesir Date: Sun, 7 Jun 2026 14:11:26 +0300 Subject: [PATCH] docs: log KC-7 (iPad launch-screen upload failure) + fast-fix checklist Co-Authored-By: Claude Opus 4.8 --- KisaniCal/ISSUES.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/KisaniCal/ISSUES.md b/KisaniCal/ISSUES.md index 4aec8e6..65f9444 100644 --- a/KisaniCal/ISSUES.md +++ b/KisaniCal/ISSUES.md @@ -215,3 +215,47 @@ Files: `CalendarView.swift`, `NotificationManager.swift`. alert may double (system + KisaniCal). Feed events (F1/TV) are the main win. - Tapping a calendar notification opens the Today view (no calendar deeplink). - The 7-day window re-scans on each foreground; no background refresh beyond that. + +--- + +## KC-7 — App Store upload: "iPad Multitasking must provide a launch screen" + +**Status:** Resolved (fix in `72f4566`; re-archive required to ship) +**Reported by:** User (App Store / Transporter validation) +**Area:** Build / App Store + +### Symptom +Upload fails validation: +> Invalid bundle. Apps that support Multitasking on iPad must provide the app's +> launch screen using an Xcode storyboard, or using UILaunchScreen … Verify that +> the UILaunchStoryboardName key is included in your com.kutesir.KisaniCal bundle. + +### Root cause +The app targets iPad (`TARGETED_DEVICE_FAMILY = "1,2"`) with multitasking +(`UIApplicationSupportsMultipleScenes = true`), but `project.yml` had +`INFOPLIST_KEY_UILaunchStoryboardName: ""` (empty) and no `UILaunchScreen` — +so the bundle shipped no valid launch screen. + +### Fix +- Added `KisaniCal/LaunchScreen.storyboard` (blank, `systemBackgroundColor`). +- `project.yml`: `INFOPLIST_KEY_UILaunchStoryboardName: LaunchScreen`. +- `xcodegen generate`. Verified a clean **Release** build emits + `UILaunchStoryboardName = LaunchScreen` and ships `LaunchScreen.storyboardc`. + +### ⚡ If it happens again — solve it fast +This error almost always recurs because a **stale archive** was uploaded, NOT +because the code is wrong. Checklist: +1. Confirm the fix is present: + `grep UILaunchStoryboardName project.yml` → must be `LaunchScreen` (not `""`). + `git log --oneline -- KisaniCal/LaunchScreen.storyboard` → should show `72f4566`. +2. If Xcode was open, **reload the project** (xcodegen rewrites `.xcodeproj`). +3. **Product → Clean Build Folder (⇧⌘K)** — a cached build folder re-emits the old + Info.plist. This is the step people skip. +4. **Bump `CURRENT_PROJECT_VERSION`** in `project.yml` + `xcodegen generate` + (a failed upload can "use up" the build number). +5. Re-Archive → Validate → Distribute. +6. Sanity check any archive: + `/usr/libexec/PlistBuddy -c "Print :UILaunchStoryboardName" .app/Info.plist` + and `ls .app | grep LaunchScreen` (expect `LaunchScreen.storyboardc`). + +Committed: fix `72f4566`, build-number bump `345415e`.