Release v2.22.2 (#360)
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 14m8s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 2m59s

Patch release for #359. No app changes.

- The Dutch store listing moved from `fastlane/metadata/android/nl` to `nl-NL`. Play rejects plain `nl`, so the Play upload of 2.22.0 and 2.22.1 failed with `nl - Invalid request`. F-Droid accepts either code.
- `check_store_listing.py` now checks every store code in `store-locales.txt` against the languages Play accepts, so CI catches this before a release.
- The 22202 "What's New" covers the 2.22 highlights, since Play users go straight from 2.21.0 to 2.22.2, and says the app is the same as 2.22.1.

Closes #359
This commit is contained in:
Jean-Luc Makiola
2026-10-02 20:41:17 +02:00
parent 06ee010f07
commit 99bb6adf80
27 changed files with 144 additions and 4 deletions
+15
View File
@@ -7,6 +7,7 @@ fail the upload after the release has shipped everywhere else.
- every locale directory is listed in fastlane/store-locales.txt, and every
app language (res/values-*) has an entry there and a directory
- every store code is a language Play accepts (supply's ALL_LANGUAGES)
- title / short / full description exist, are non-empty and within Play's caps,
and the full description isn't hard-wrapped
- icon: 512x512 32-bit PNG; featureGraphic: 1024x500 JPEG or 24-bit PNG
@@ -29,6 +30,16 @@ SCREENSHOT_DIRS = {"phoneScreenshots", "sevenInchScreenshots", "tenInchScreensho
"tvScreenshots", "wearScreenshots"}
IMAGE_EXTS = {".png", ".jpg", ".jpeg"}
# fastlane supply/lib/supply/languages.rb, with `_` back to `-`.
PLAY_LOCALES = set("""
af am ar az-AZ be bg bn-BD ca cs-CZ da-DK de-DE el-GR en-AU en-CA en-GB en-IN
en-SG en-US en-ZA es-419 es-ES es-US et eu-ES fa fi-FI fil fr-CA fr-FR gl-ES
hi-IN hr hu-HU hy-AM id is-IS it-IT iw-IL ja-JP ka-GE km-KH kn-IN ko-KR ky-KG
lo-LA lt lv mk-MK ml-IN mn-MN mr-IN ms ms-MY my-MM ne-NP nl-NL no-NO pl-PL
pt-BR pt-PT rm ro ru-RU si-LK sk sl sr sv-SE sw ta-IN te-IN th tr-TR uk vi
zh-CN zh-HK zh-TW zu
""".split())
errors = []
@@ -80,6 +91,10 @@ def check_mapping():
for q in sorted(mapping.keys() - app_langs):
error(f"{rel(MAPPING)} maps '{q}' but the app has no values-{q}")
for q, store in sorted(mapping.items()):
if store not in PLAY_LOCALES:
error(f"{rel(MAPPING)} maps '{q}' to '{store}', which Play doesn't accept as a listing language")
stores = set(mapping.values())
dirs = {d.name for d in META.iterdir() if d.is_dir()}
for d in sorted(dirs - stores):