You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The Card Place iOS: prepare the first App Store submission (screenshots, metadata, privacy), not just TestFlight #202
Get The Card Place for iOS ready to submit to the App Store itself, not just TestFlight. First find out everything that's needed, then prepare as much as possible, and stop before "Submit for Review".
Where it stands
thecardplace/ios/scripts/RELEASE.md has a working TestFlight pipeline: release-testflight.sh, asc.py (the App Store Connect REST client), and wire-testflight.py. The app record exists in App Store Connect. Nothing for the public App Store listing has been done yet.
To do, on the Mac
List the gaps. Check App Store Connect, through asc.py where the API allows, for what a first App Store submission needs and what's still missing. Post the list as a comment here. It probably includes:
screenshots for each required device size (6.9" iPhone, and iPad 13" if iPad is supported);
description, keywords, subtitle and promotional text;
support URL and marketing URL;
privacy policy URL and the App Privacy answers ("nutrition label");
age rating questionnaire;
price and availability, and the territories;
category and copyright;
App Review contact and notes, including how a reviewer can try the app with VoiceOver;
export compliance (encryption);
choosing the build for the version.
Screenshots. Script them, for example with a UI test or simctl driving the simulator at the required sizes, so they can be taken again for each release. Commit the script, and put the output where RELEASE.md says.
Metadata. Draft the store text in a file in the repo, so Kelly can review it as a diff. Upload it with asc.py where the API supports it. Say clearly which fields must be filled in by hand in App Store Connect.
Privacy. Draft the App Privacy answers and a privacy policy, which could live on theideaplace.net. Kelly confirms both.
Document it. Add an "App Store release" section to RELEASE.md, next to the TestFlight one.
Not without Kelly
These need Kelly's own go, typed by him:
"Submit for Review";
changing price or availability;
publishing a privacy policy on the website.
Stop at "everything is ready, here's the checklist".
Read through the API with asc.py on 8 October. App id 6807994140; version 1.0 exists and is in Prepare for Submission; builds 1, 2 and 3 are processed and valid (3 is in external beta testing).
Already done
App record, name "The Card Place", bundle id, SKU, primary locale en-US.
Export compliance: ITSAppUsesNonExemptEncryption = false is in the Info.plist, so no encryption questions per build.
App icon (single 1024 universal).
Not made for kids (isOrEverWasMadeForKids: false).
Empty, and the API can fill it (scripted, text kept in the repo)
Field
Where it lives
Now
Description, keywords, promotional text, support URL, marketing URL
every answer unset. Proposed: all None, so 4+ (no wagering, so not "simulated gambling")
Copyright
version
empty. Proposed: "2026 Kelly Ford" (as Weather Fast does)
Content rights
app
unset. Proposed: does not use third-party content
App Review contact and notes
app store review detail
does not exist yet
Release type
version
After approval. Proposed: Manual, so approval doesn't publish by itself
Build
version
none attached
Accessibility Nutrition Labels
accessibility declarations
none. The API has them, and this app can honestly claim VoiceOver, Voice Control, Larger Text, Dark Interface, Differentiate Without Color, Sufficient Contrast and Reduced Motion. Worth doing for this app above all.
Screenshots
app screenshot sets
none. Needed: 6.9" iPhone (1320×2868) and 13" iPad (2064×2752), because the app runs on iPad
Price and availability
price schedule, availability
no price schedule and no availability at all. Needs Kelly's go (free, all territories?)
Needed in the binary
Privacy manifest. There's no PrivacyInfo.xcprivacy. AppSettings uses UserDefaults, which is a required-reason API, so the manifest has to declare it (reason CA92.1) and say no data is collected and there's no tracking. That means a build 4.
By hand in App Store Connect (no API)
App Privacy answers (the nutrition label): "Data Not Collected". The app has no network access at all, so that's the whole answer, but it must be clicked through on the website.
Submit for Review — Kelly's go only.
Needs a page on the web
A privacy policy URL is required even for an app that collects nothing. Draft: "The Card Place collects no data. It doesn't connect to the network; your name and settings stay on the device." Kelly's go before it's published.
Support URL: the existing Card Place page (kellylford.github.io/TheWorkBench/thecardplace/) can serve, with a contact line added.
Review risk worth knowing
Low overall: native, offline, no accounts, no in-app purchases. The app review notes should say that it's built for VoiceOver and how to try it, so a reviewer who doesn't use VoiceOver isn't puzzled by the focus moving on each turn.
Hearts and spades difficulty does nothing Already handled: GameKind.hasDifficulty hides the choice for those two games, and Settings says they always play their best. Not a risk.
Everything that can be scripted is done; see #203. App Store Connect has build 5, the full listing, 12 screenshots, a 4+ age rating, and free in every territory. Left: merge #203 (publishes the privacy page the listing points at), then App Privacy "Data Not Collected" and Submit for Review on the website. After release: scripts/wire-appstore.py --apply --publish-accessibility.
Tried to submit 1.0 (build 5) for review. App Store Connect refused for two reasons: (1) App Privacy answers aren't published yet (website only); (2) the build was made with Xcode 27.1 (27A9269), which Apple says is "not yet supported" for App Store submission. TestFlight accepts it, but the App Store needs the current released Xcode. Next: install the released Xcode, rebuild as build 6, choose it for 1.0, submit. An empty draft review submission was left behind; the API won't delete or cancel it, and it will be reused.
Submitted: The Card Place 1.0 (build 6, Xcode 27.1 RC) is Waiting for Review, as of 8 October. Release is manual, so approval won't publish it. Still to do: merge #204 (build 6 number and RELEASE.md notes); after release, scripts/wire-appstore.py --apply --publish-accessibility; and the American spelling for the multiplayer forks' READMEs on their own branch.
#204 (the build 6 bookkeeping) is now merged. Still to do: scripts/wire-appstore.py --apply --publish-accessibility, and the README spelling fix on the multiplayer forks. TheWorkBench is moving to the TheIdeaPlace org now. The listing's support, marketing and privacy URLs are being updated to the new address in the same step.
After the move to TheIdeaPlace (2026-10-10): the App Store listing still names kellylford.github.io/TheWorkBench/thecardplace/ (support and marketing) and .../privacy.html. Those addresses keep working: the forwarding site kellylford/kellylford.github.io serves them as real pages, returning 200.
privacy.html is a copy of the policy.
The home page forwards to the new address, carrying settings.
thecardplace/ios/store/app-store.json already has the new theideaplace.github.io URLs. With the next app version, run scripts/wire-appstore.py --apply from the Mac (the keys are in ~/.thecardplace-keys) so the listing uses them. Until then, keep the forwarding site's privacy.html in step with thecardplace/privacy.html if the policy changes.
Activity
kellylford commentedon Oct 8, 2026
The gaps, checked against App Store Connect today
Read through the API with
asc.pyon 8 October. App id 6807994140; version 1.0 exists and is in Prepare for Submission; builds 1, 2 and 3 are processed and valid (3 is in external beta testing).Already done
ITSAppUsesNonExemptEncryption = falseis in the Info.plist, so no encryption questions per build.isOrEverWasMadeForKids: false).Empty, and the API can fill it (scripted, text kept in the repo)
Needed in the binary
PrivacyInfo.xcprivacy.AppSettingsusesUserDefaults, which is a required-reason API, so the manifest has to declare it (reason CA92.1) and say no data is collected and there's no tracking. That means a build 4.By hand in App Store Connect (no API)
Needs a page on the web
Review risk worth knowing
Hearts and spades difficulty does nothingAlready handled:GameKind.hasDifficultyhides the choice for those two games, and Settings says they always play their best. Not a risk.kellylford commentedon Oct 8, 2026
Everything that can be scripted is done; see #203. App Store Connect has build 5, the full listing, 12 screenshots, a 4+ age rating, and free in every territory. Left: merge #203 (publishes the privacy page the listing points at), then App Privacy "Data Not Collected" and Submit for Review on the website. After release:
scripts/wire-appstore.py --apply --publish-accessibility.The Card Place iOS gets ready for the App Store: listing in the repo,…
kellylford commentedon Oct 8, 2026
Tried to submit 1.0 (build 5) for review. App Store Connect refused for two reasons: (1) App Privacy answers aren't published yet (website only); (2) the build was made with Xcode 27.1 (27A9269), which Apple says is "not yet supported" for App Store submission. TestFlight accepts it, but the App Store needs the current released Xcode. Next: install the released Xcode, rebuild as build 6, choose it for 1.0, submit. An empty draft review submission was left behind; the API won't delete or cancel it, and it will be reused.
kellylford commentedon Oct 9, 2026
Submitted: The Card Place 1.0 (build 6, Xcode 27.1 RC) is Waiting for Review, as of 8 October. Release is manual, so approval won't publish it. Still to do: merge #204 (build 6 number and RELEASE.md notes); after release,
scripts/wire-appstore.py --apply --publish-accessibility; and the American spelling for the multiplayer forks' READMEs on their own branch.The Card Place iOS build 6, made with Xcode 27.1 RC for the App Store (…
kellylford commentedon Oct 10, 2026
Status correction (2026-10-10): The Card Place 1.0 is live on the App Store. It was released on 2026-10-09 at 18:52 UTC: https://apps.apple.com/us/app/the-card-place/id6807994140
#204 (the build 6 bookkeeping) is now merged. Still to do:
scripts/wire-appstore.py --apply --publish-accessibility, and the README spelling fix on the multiplayer forks. TheWorkBench is moving to the TheIdeaPlace org now. The listing's support, marketing and privacy URLs are being updated to the new address in the same step.🤖 Generated with Claude Code
kellylford commentedon Oct 10, 2026
After the move to TheIdeaPlace (2026-10-10): the App Store listing still names
kellylford.github.io/TheWorkBench/thecardplace/(support and marketing) and.../privacy.html. Those addresses keep working: the forwarding site kellylford/kellylford.github.io serves them as real pages, returning 200.privacy.htmlis a copy of the policy.thecardplace/ios/store/app-store.jsonalready has the newtheideaplace.github.ioURLs. With the next app version, runscripts/wire-appstore.py --applyfrom the Mac (the keys are in~/.thecardplace-keys) so the listing uses them. Until then, keep the forwarding site'sprivacy.htmlin step withthecardplace/privacy.htmlif the policy changes.🤖 Generated with Claude Code