Compare commits

...
2 Commits
Author SHA1 Message Date
Jean-Luc Makiola e1b80d9f89 Release v2.22.3 (#362)
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 8s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 14m42s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m40s
Patch release for #361. No app changes.

- `title.txt` in every store locale is now "Calendula: Calendar", with "Calendar" taken from the app's own translation of the word (`event_detail_calendar`). Since 2.22.0 the Play listing is pushed from the repo, and the repo title was only "Calendula", which replaced the suffixed name from the Play Console.
- ja has no translation for that string yet, so it uses カレンダー. zh-CN has "Calendula" as its translation of "Calendar" on Weblate, so the title uses 日历 instead. That string should be fixed on Weblate.
- F-Droid reads the same `title.txt`, so the F-Droid listing gets the suffix too.

Plus the release commit: CHANGELOG section, versionName 2.22.3 / versionCode 22203, and the 22203 changelogs for every store locale. Merging this to main triggers the release pipeline.

Closes #361
2026-10-02 22:14:34 +02:00
Jean-Luc Makiola 99bb6adf80 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
2026-10-02 20:41:17 +02:00
61 changed files with 184 additions and 21 deletions
+12
View File
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [2.22.3] — 2026-10-02
### Fixed
- **The store listing is called "Calendula: Calendar" again,** with "Calendar" in each store language. Since 2.22.0 the Play listing comes from the repository, whose title was only "Calendula". The app is unchanged ([#361]).
## [2.22.2] — 2026-10-02
### Fixed
- **2.22 reaches Google Play.** The Dutch store listing used the locale code `nl`, which Play rejects, so the Play uploads of 2.22.0 and 2.22.1 failed. It now uses `nl-NL`, and CI checks every store locale against the codes Play accepts. The app is unchanged from 2.22.1 ([#359]).
## [2.22.1] — 2026-10-02 ## [2.22.1] — 2026-10-02
### Fixed ### Fixed
@@ -1823,3 +1833,5 @@ automatically, with zero telemetry and no internet permission.
[#331]: https://codeberg.org/jlmakiola/calendula/issues/331 [#331]: https://codeberg.org/jlmakiola/calendula/issues/331
[#336]: https://codeberg.org/jlmakiola/calendula/issues/336 [#336]: https://codeberg.org/jlmakiola/calendula/issues/336
[#357]: https://codeberg.org/jlmakiola/calendula/issues/357 [#357]: https://codeberg.org/jlmakiola/calendula/issues/357
[#359]: https://codeberg.org/jlmakiola/calendula/issues/359
[#361]: https://codeberg.org/jlmakiola/calendula/issues/361
+2 -2
View File
@@ -28,8 +28,8 @@ android {
// which builds this version and then creates the matching vX.Y.Z tag + // which builds this version and then creates the matching vX.Y.Z tag +
// release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 + // release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 +
// PATCH from versionName, e.g. 2.7.2 -> 20702). See docs/RELEASING.md. // PATCH from versionName, e.g. 2.7.2 -> 20702). See docs/RELEASING.md.
versionCode = 22201 versionCode = 22203
versionName = "2.22.1" versionName = "2.22.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }
+1 -1
View File
@@ -184,7 +184,7 @@ on every pull request:
| `images/icon.png` | 512×512, 32-bit PNG | | `images/icon.png` | 512×512, 32-bit PNG |
| `images/featureGraphic.png` | 1024×500, JPEG or 24-bit PNG | | `images/featureGraphic.png` | 1024×500, JPEG or 24-bit PNG |
| `images/*Screenshots/*` | JPEG or 24-bit PNG (no alpha), sides 320–3840, long edge ≤ 2× short, 2–8 per type | | `images/*Screenshots/*` | JPEG or 24-bit PNG (no alpha), sides 320–3840, long edge ≤ 2× short, 2–8 per type |
| locale directories | exactly the ones in `fastlane/store-locales.txt`, which maps every app `values-*` to a Play locale code | | locale directories | exactly the ones in `fastlane/store-locales.txt`, which maps every app `values-*` to a Play locale code; the code must be one Play accepts (`nl-NL`, not `nl`) |
A locale without its own images falls back to en-US in both stores, so graphics A locale without its own images falls back to en-US in both stores, so graphics
only need to exist there. Adding an app language means adding its line to only need to exist there. Adding an app language means adding its line to
@@ -0,0 +1,7 @@
لم يصل الإصداران 2.22.0 و2.22.1 إلى Google Play، لذا هذا أول إصدار 2.22 هناك. التطبيق مطابق للإصدار 2.22.1.
• يتنقّل اليوم والأسبوع والشهر بمُنزلق يتبع إصبعك.
• يعرض العرض متعدد الأيام عدداً قابلاً للتخصيص من الأيام جنباً إلى جنب.
• الساعات المرئية: يملأ نطاق ساعات تختاره الشاشة.
• يبرز اليوم في شبكة الشهر.
• يُفتح الرابط في موقع الحدث في المتصفح.
@@ -0,0 +1 @@
عاد اسم صفحة المتجر إلى "Calendula: التقويم". لم يتغير شيء في التطبيق.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: التقويم
@@ -0,0 +1,7 @@
Вэрсіі 2.22.0 і 2.22.1 не трапілі ў Google Play, таму гэта першая вэрсія 2.22 там. Праграма такая ж, як 2.22.1.
• Дзень, Тыдзень і Месяц перагортваюцца пэйджарам, які сочыць за пальцам.
• Шматдзённы выгляд паказвае наладжвальную колькасць дзён побач.
• Бачныя гадзіны: абраны дыяпазон гадзін запаўняе экран.
• Сёньня вылучаецца ў сетцы месяца.
• Спасылка ў месцы падзеі адкрываецца ў браўзеры.
@@ -0,0 +1 @@
Старонка ў краме зноў называецца «Calendula: Каляндар». Праграма не змянілася.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Каляндар
@@ -0,0 +1,7 @@
Verze 2.22.0 a 2.22.1 se na Google Play nedostaly, takže tohle je tam první verze 2.22. Aplikace je stejná jako 2.22.1.
• Den, Týden a Měsíc listují stránkovačem, který sleduje prst.
• Vícedenní zobrazení ukazuje nastavitelný počet dní vedle sebe.
• Viditelné hodiny: zvolený rozsah hodin vyplní obrazovku.
• Dnes vyniká v mřížce měsíce.
• Odkaz v místě události se otevře v prohlížeči.
@@ -0,0 +1 @@
Stránka v obchodě se opět jmenuje „Calendula: Kalendář“. Aplikace se nezměnila.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Kalendář
@@ -0,0 +1,7 @@
Google Play hat 2.22.0 und 2.22.1 verpasst, deshalb ist das dort die erste 2.22-Version. Die App ist dieselbe wie 2.22.1.
• Tag, Woche und Monat lassen sich mit einem fingerfolgenden Pager wischen.
• Mehrtagesansicht: einstellbare Anzahl Tage nebeneinander.
• Sichtbare Stunden: ein gewählter Stundenbereich füllt den Bildschirm.
• Heute hebt sich im Monatsraster ab.
• Ein Link im Ort eines Termins öffnet sich im Browser.
@@ -0,0 +1 @@
Der Store-Eintrag heißt wieder „Calendula: Kalender“. An der App hat sich nichts geändert.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Kalender
@@ -0,0 +1,7 @@
Google Play missed 2.22.0 and 2.22.1, so this is the first 2.22 release there. The app is the same as 2.22.1.
• Day, Week and Month follow your finger when you swipe between dates.
• A multi-day view shows a set number of days side by side.
• Visible hours fits the hours you choose to the screen.
• Today stands out in the month grid.
• A link in an event's location opens in the browser.
@@ -0,0 +1 @@
The store listing is called "Calendula: Calendar" again. Nothing in the app changed.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendar
@@ -0,0 +1,7 @@
2.22.0 y 2.22.1 no llegaron a Google Play, así que esta es la primera versión 2.22 allí. La app es la misma que 2.22.1.
• Día, Semana y Mes se deslizan con un paginador que sigue tu dedo.
• Vista de varios días: muestra un número configurable de días uno junto a otro.
• Horas visibles: un rango de horas elegido llena la pantalla.
• Hoy destaca en la cuadrícula del mes.
• Un enlace en la ubicación de un evento se abre en el navegador.
@@ -0,0 +1 @@
La ficha de la tienda vuelve a llamarse «Calendula: Calendario». La app no cambia.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendario
@@ -0,0 +1,7 @@
Les versions 2.22.0 et 2.22.1 ne sont pas arrivées sur Google Play ; voici donc la première version 2.22 sur Play. L'app est identique à la 2.22.1.
• Jour, Semaine et Mois défilent avec un pager qui suit le doigt.
• Vue multi-jours : affiche un nombre de jours réglable, côte à côte.
• Heures visibles : une plage d'heures choisie remplit l'écran.
• Aujourd'hui ressort dans la grille du mois.
• Un lien dans le lieu d'un événement s'ouvre dans le navigateur.
@@ -0,0 +1 @@
La fiche du store s'appelle de nouveau « Calendula: Calendrier ». L'app ne change pas.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendrier
@@ -0,0 +1,7 @@
A 2.22.0 és a 2.22.1 nem jutott el a Google Playre, így ez az első 2.22-es verzió ott. Az alkalmazás ugyanaz, mint a 2.22.1.
• A Nap, Hét és Hónap nézet ujjkövető lapozóval lapozható.
• A többnapos nézet beállítható számú napot jelenít meg egymás mellett.
• Látható órák: a kiválasztott óratartomány kitölti a képernyőt.
• A mai nap kiemelkedik a havi rácsban.
• Az esemény helyszínében lévő link a böngészőben nyílik meg.
@@ -0,0 +1 @@
Az áruházi oldal neve ismét „Calendula: Naptár”. Az alkalmazás nem változott.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Naptár
@@ -0,0 +1,7 @@
Le versioni 2.22.0 e 2.22.1 non sono arrivate su Google Play, quindi questa è la prima versione 2.22 lì. L'app è la stessa della 2.22.1.
• Giorno, Settimana e Mese scorrono con un pager che segue il dito.
• Vista multi-giorno: mostra un numero configurabile di giorni affiancati.
• Ore visibili: un intervallo di ore scelto riempie lo schermo.
• Oggi risalta nella griglia del mese.
• Un link nel luogo di un evento si apre nel browser.
@@ -0,0 +1 @@
La scheda dello store si chiama di nuovo «Calendula: Calendario». L'app non cambia.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendario
@@ -0,0 +1,7 @@
2.22.0と2.22.1はGoogle Playに配信されなかったため、これがGoogle Playでの最初の2.22です。アプリの内容は2.22.1と同じです。
• 日・週・月ビューが指に追従するページャーでめくれます。
• マルチデイビューで、設定可能な日数を横に並べて表示します。
• 表示時間帯: 選んだ時間の範囲が画面いっぱいに表示されます。
• 月表示で今日が目立ちます。
• 予定の場所にあるリンクはブラウザで開きます。
@@ -0,0 +1 @@
ストアの掲載名が再び「Calendula: カレンダー」になりました。アプリ自体に変更はありません。
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: カレンダー
@@ -0,0 +1,7 @@
2.22.0 en 2.22.1 zijn nooit op Google Play verschenen, dus dit is daar de eerste 2.22-versie. De app is gelijk aan 2.22.1.
• Dag, Week en Maand blader je door met een pager die je vinger volgt.
• Een meerdaagse weergave toont een instelbaar aantal dagen naast elkaar.
• Zichtbare uren: een gekozen tijdsbereik vult het scherm.
• Vandaag valt op in het maandraster.
• Een link in de locatie van een afspraak opent in de browser.
@@ -0,0 +1 @@
De winkelvermelding heet weer "Calendula: Agenda". Aan de app is niets veranderd.
@@ -0,0 +1 @@
Calendula: Agenda
-1
View File
@@ -1 +0,0 @@
Calendula
@@ -0,0 +1,7 @@
Wersje 2.22.0 i 2.22.1 nie trafiły do Google Play, więc to pierwsza wersja 2.22 w tym sklepie. Aplikacja jest taka sama jak 2.22.1.
• Dzień, Tydzień i Miesiąc przewijają się pagerem, który podąża za palcem.
• Widok wielodniowy pokazuje ustawialną liczbę dni obok siebie.
• Widoczne godziny: wybrany zakres godzin wypełnia ekran.
• Dziś wyróżnia się w siatce miesiąca.
• Link w miejscu wydarzenia otwiera się w przeglądarce.
@@ -0,0 +1 @@
Strona w sklepie znów nazywa się „Calendula: Kalendarz”. Aplikacja się nie zmieniła.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Kalendarz
@@ -0,0 +1,7 @@
As versões 2.22.0 e 2.22.1 não chegaram ao Google Play, então esta é a primeira versão 2.22 lá. O app é o mesmo da 2.22.1.
• Dia, Semana e Mês avançam com um pager que acompanha o dedo.
• Visualização de vários dias: mostra um número configurável de dias lado a lado.
• Horas visíveis: um intervalo de horas escolhido preenche a tela.
• Hoje se destaca na grade do mês.
• Um link no local de um evento abre no navegador.
@@ -0,0 +1 @@
A página da loja voltou a se chamar "Calendula: Calendário". O app não mudou.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendário
@@ -0,0 +1,7 @@
As versões 2.22.0 e 2.22.1 não chegaram ao Google Play, por isso esta é a primeira versão 2.22 lá. A app é a mesma da 2.22.1.
• Dia, Semana e Mês deslizam com um pager que acompanha o dedo.
• Vista de vários dias: mostra um número configurável de dias lado a lado.
• Horas visíveis: um intervalo de horas escolhido preenche o ecrã.
• Hoje destaca-se na grelha do mês.
• Uma ligação no local de um evento abre no navegador.
@@ -0,0 +1 @@
A página da loja volta a chamar-se "Calendula: Calendário". A app não mudou.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Calendário
@@ -0,0 +1,7 @@
Версии 2.22.0 и 2.22.1 не попали в Google Play, поэтому это первая версия 2.22 там. Приложение то же, что и 2.22.1.
• День, Неделя и Месяц листаются пейджером, который следует за пальцем.
• Многодневный вид показывает настраиваемое число дней рядом друг с другом.
• Видимые часы: выбранный диапазон часов заполняет экран.
• Сегодня выделяется в сетке месяца.
• Ссылка в месте события открывается в браузере.
@@ -0,0 +1 @@
Страница в магазине снова называется «Calendula: Календарь». Приложение не изменилось.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Календарь
@@ -0,0 +1,7 @@
Verzie 2.22.0 a 2.22.1 sa na Google Play nedostali, takže toto je tam prvá verzia 2.22. Aplikácia je rovnaká ako 2.22.1.
• Deň, Týždeň a Mesiac sa listujú stránkovačom, ktorý sleduje prst.
• Viacdňové zobrazenie ukazuje nastaviteľný počet dní vedľa seba.
• Viditeľné hodiny: zvolený rozsah hodín vyplní obrazovku.
• Dnešok vyniká v mriežke mesiaca.
• Odkaz v mieste udalosti sa otvorí v prehliadači.
@@ -0,0 +1 @@
Stránka v obchode sa opäť volá „Calendula: Kalendár“. Aplikácia sa nezmenila.
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: Kalendár
@@ -0,0 +1,7 @@
2.22.0 和 2.22.1 未能发布到 Google Play,因此这是 Google Play 上的第一个 2.22 版本。应用内容与 2.22.1 相同。
• 日、周、月视图可以用跟手的分页手势滑动切换。
• 多日视图并排显示可自定义天数。
• 可见时段:选定的时间范围会铺满整个屏幕。
• “今天”在月视图网格中突出显示。
• 日程地点中的链接会在浏览器中打开。
@@ -0,0 +1 @@
商店页面名称恢复为“Calendula: 日历”。应用本身没有变化。
+1 -1
View File
@@ -1 +1 @@
Calendula Calendula: 日历
+1 -1
View File
@@ -12,7 +12,7 @@ fr fr-FR
hu hu-HU hu hu-HU
it it-IT it it-IT
ja ja-JP ja ja-JP
nl nl nl nl-NL
pl pl-PL pl pl-PL
pt pt-PT pt pt-PT
pt-rBR pt-BR pt-rBR pt-BR
+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 - every locale directory is listed in fastlane/store-locales.txt, and every
app language (res/values-*) has an entry there and a directory 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, - title / short / full description exist, are non-empty and within Play's caps,
and the full description isn't hard-wrapped and the full description isn't hard-wrapped
- icon: 512x512 32-bit PNG; featureGraphic: 1024x500 JPEG or 24-bit PNG - icon: 512x512 32-bit PNG; featureGraphic: 1024x500 JPEG or 24-bit PNG
@@ -29,6 +30,16 @@ SCREENSHOT_DIRS = {"phoneScreenshots", "sevenInchScreenshots", "tenInchScreensho
"tvScreenshots", "wearScreenshots"} "tvScreenshots", "wearScreenshots"}
IMAGE_EXTS = {".png", ".jpg", ".jpeg"} 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 = [] errors = []
@@ -80,6 +91,10 @@ def check_mapping():
for q in sorted(mapping.keys() - app_langs): for q in sorted(mapping.keys() - app_langs):
error(f"{rel(MAPPING)} maps '{q}' but the app has no values-{q}") 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()) stores = set(mapping.values())
dirs = {d.name for d in META.iterdir() if d.is_dir()} dirs = {d.name for d in META.iterdir() if d.is_dir()}
for d in sorted(dirs - stores): for d in sorted(dirs - stores):