Skip to content

fix(ios): TestFlight marketing-version + CFBundleVersion (lost from #207)#208

Merged
oratis merged 2 commits into
mainfrom
fix/tf-version-and-cfbundle
Jul 1, 2026
Merged

fix(ios): TestFlight marketing-version + CFBundleVersion (lost from #207)#208
oratis merged 2 commits into
mainfrom
fix/tf-version-and-cfbundle

Conversation

@oratis

@oratis oratis commented Jul 1, 2026

Copy link
Copy Markdown
Owner

PR #207 squash-merged with only its first commit (build# date +%s); these two fixes were pushed to the branch afterward and never reached main. Both are required — without them ./testflight.sh from main still silently fails (verified: build 1782924012 — the one now VALID in TestFlight — was built with all three).

  1. MARKETING_VERSION 0.1.0 → 1.0 — must be ≥ the app's ASC version (1.0) or the upload is silently rejected at ingestion.
  2. Stamp CFBundleVersion into the generated Info.plists (app + widget) after xcodegen generate — xcodegen bakes a literal "1", so the CURRENT_PROJECT_VERSION override was a no-op → "Redundant Binary Upload".

🤖 Generated with Claude Code

oratis and others added 2 commits July 2, 2026 00:53
…ersion)

The App Store Connect record for Lisa Pocket is at version 1.0
(PREPARE_FOR_SUBMISSION), with builds under the 1.0 train. project.yml still
carried a stale "0.1.0", so testflight.sh archives declared CFBundleShortVersionString
0.1.0 — LOWER than 1.0. App Store Connect silently rejects a too-low marketing
version at ingestion: the upload reports "EXPORT SUCCEEDED" but no build ever
appears in TestFlight (no 0.1.0 train is even created).

Together with the build-number fix in this branch, this is the second half of
"why don't my uploads show up." Bump to 1.0 so archives attach to the existing
train by default.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ide was a no-op)

xcodegen writes a LITERAL CFBundleVersion ("1") into Sources/Info.plist and
Widgets/Info.plist, so `xcodebuild archive … CURRENT_PROJECT_VERSION=$BUILD_NUMBER`
never changed the shipped build number — every archive was build "1". App Store
Connect kept rejecting them as "Redundant Binary Upload" (and the earlier ones
under the wrong 0.1.0 train vanished outright).

After `xcodegen generate`, plutil-replace CFBundleVersion in both the app and the
widget extension (they must match, or embedded-binary validation fails) with
$BUILD_NUMBER. Verified locally: post-generate both read "1"; post-patch both read
the timestamp and are equal.

Third of three TestFlight-upload fixes in this branch (build# < 2^32, marketing
version >= app version, and now the build# actually reaching the binary).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit 13b8def into main Jul 1, 2026
1 check passed
@oratis oratis deleted the fix/tf-version-and-cfbundle branch July 1, 2026 16:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant