Repository navigation
Automate the App Store screenshot upload - #136
Merged
Merged
Conversation
SettingsView takes showsTestingTools (default true), read only in simulator builds. ScreenshotTests passes false, so 03-settings-* shows the shipped app. Device builds do not change.
ci/appstore-screenshots.txt holds the approved set in store order. scripts/upload_appstore_screenshots.py checks every image before any write, then replaces the version's 6.9-inch iPhone set in that order. The ASC scripts now share asc_api.configure_logging, which keeps httpx and httpcore at WARNING: the upload URLs are pre-signed.
appstore-screenshots.yml downloads the screenshots artifact of a CI run and runs the upload script, as a dry run unless dry_run=false. release-testflight.yml now uploads the screenshots artifact too, so the release tag's run holds images with the right version number.
This was referenced Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR automates the App Store screenshot upload. It is item 2 of #132, the screenshot part.
ci/appstore-screenshots.txt: the approved set, in store order. This file is the one place where the set is chosen.appstore-screenshots.yml: a dispatch-only workflow on the Linux runner. Inputs:version,run_id(optional) anddry_run(defaulttrue).screenshotsartifact of the newest successful TestFlight run onv<version>, or of the run you name.dry_run=false.scripts/upload_appstore_screenshots.py: ported from StationCast, with 60 new tests.release-testflight.yml: it now uploads thescreenshotsartifact too, so each release tag's run holds images that show that release's version number.SettingsView.showsTestingToolsis read only in simulator builds.Verification
actionlint: no findings.mypy --strictandpytest -rs: 202 passed, 0 skipped.ci/lint_swift.sh: 0 violations.pre-commit run --all-files: all hooks pass.build-for-testing: 0 errors and 0 Swift warnings.Release
skip-release. CI and tooling only. The app change exists only in simulator builds.