Skip to content

Take the store screenshots with each release - #299

Merged
hatstand merged 1 commit into
masterfrom
claude/release-screenshots
Sep 30, 2026
Merged

hatstand merged 1 commit into
masterfrom
claude/release-screenshots

Conversation

@hatstand

Copy link
Copy Markdown
Contributor

Each release now takes its own store screenshots, so the listing always shows the app as released.

Release (release.yml)

  • A short new plan job checks whether there's a release to make. Only when there is does the release call store-screenshots.yml, the same emulator run against a real Clementine that pull requests get. Mondays with nothing to release don't start an emulator.
  • The release job starts from the last release's screenshots and runs the new scripts/store_screenshots.py over them. It puts them in the release commit in the same order as now: the dark screens first, starting with now playing, then the light player. A screen whose pixels haven't changed stays the same file, so a release doesn't store it again. On the current screens the output is byte-identical to what's on master.
  • F-Droid reads the screenshots from the tag. After the Play upload, the release sends Play the whole listing, screenshots included (play_listing.py).
  • If the screenshot run fails, the release still goes out, with the last release's screenshots and a warning.
  • The play lock now covers only the release job, so the 45-minute emulator run doesn't hold up development builds or listing updates.

Master

  • The screenshots move off master, because they now belong to each release. A copy on master would go stale, and play-listing would push it back to Play. That workflow now sends only the text, icon and feature graphic, and leaves Play's screenshots to releases.
  • store_graphics.py now only draws the icon and feature graphic.
  • The screenshot comment on pull requests compares against the latest release's listing instead of master's. The column is named after the release, for example v13.3.

Tested

  • play_listing.py --check with no screenshots: passes and leaves them out.
  • As a release would do it: took v13.2's 7 light screenshots, ran store_screenshots.py on the latest run's screenshots, and got 8 images that pass --check. They're byte-identical to master's current ones. A second run left all 8 unchanged.
  • post_screenshots.sh with a faked latest release:
    • 8 screenshots: pairs each image with the matching dark screen;
    • v13.2's 7 light ones: no comparison;
    • no release: no comparison.
  • The two GitHub API calls it uses return what it expects on this repository.
  • actionlint: clean apart from a warning about an unused loop variable in store-screenshots.yml, which is already on master.
  • Not yet run for real. The first release after this merges will be the test, or run release by hand.

After merging: until the next release, pull request comments compare against v13.2, whose 7 light screenshots don't line up, so their release column is empty. Play keeps the 8 dark screenshots it has now.

🤖 Generated with Claude Code

https://claude.ai/code/session_012foWs5vBJrYTDtfyFhJ3ky


Generated by Claude Code

Every release now runs the store-screenshots workflow and puts its
screenshots in the release commit, so the store listing always shows
the app as released: F-Droid reads them from the tag, and the release
sends them to Google Play with the rest of the listing.

The screenshots move off master, since they're each release's own: a
copy there would go stale, and the play-listing workflow would send it
back to Play. It now sends the text, icon and feature graphic, leaving
Play's screenshots to releases. A screen that looks the same as in the
last release stays the same file, so releases don't store it again, and
when the screenshots fail the release keeps the last release's.

Pull requests' screenshot comments compare with the latest release.
The Play lock now covers only the release job, so the emulator run
doesn't hold back development builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012foWs5vBJrYTDtfyFhJ3ky
@github-actions

Copy link
Copy Markdown

Store screenshots

From run 36748348158, against clementine-it. Left: the store listing of the latest release, v13.2, which shows the dark theme. Right: this pull request, dark and light.

Screen v13.2 This PR, dark This PR
1_player –
2_library –
2_library_album –
3_playlist –
4_search –
5_connection –
6_connect –
10_internet –
11_internet_radio –
settings –

@hatstand
hatstand merged commit c17b6bb into master Sep 30, 2026
7 checks passed
@hatstand
hatstand deleted the claude/release-screenshots branch September 30, 2026 17:10
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.

2 participants