docs: log KC-7 (iPad launch-screen upload failure) + fast-fix checklist

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
kutesir
2026-06-07 14:11:26 +03:00
parent 345415ee7b
commit 8e4a42666c

View File

@@ -215,3 +215,47 @@ Files: `CalendarView.swift`, `NotificationManager.swift`.
alert may double (system + KisaniCal). Feed events (F1/TV) are the main win. alert may double (system + KisaniCal). Feed events (F1/TV) are the main win.
- Tapping a calendar notification opens the Today view (no calendar deeplink). - 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. - 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>.app/Info.plist`
and `ls <App>.app | grep LaunchScreen` (expect `LaunchScreen.storyboardc`).
Committed: fix `72f4566`, build-number bump `345415e`.