c1c8452367
fix(import): don't lose Fossify's contact birthdays and anniversaries ( #225 )
...
Found the actual cause. Fossify mirrors Contacts birthdays and
anniversaries with startTS == endTS (MainActivity), so its exporter's
dayCode(endTS + 12h) rounds back to the starting day and writes
DTEND == DTSTART. We read that literally: a yearly series with
DURATION:P0D, which the provider expands into no instances at all. The
import reported success and the events were nowhere — matching the
report exactly ("birthdays, memorials, dates").
An all-day event may no longer end at or before it starts, and an all-day
DURATION is floored at P1D. Verified against the released parser, which
returns days=0.0 for all three fixture events.
Do not generalise this into sniffing PRODID: the same exporter is correct
for UI-created events (endTS anchors at noon of the last day) and for
CalDAV rows, and Fossify's bundled holiday files are conformant while
naming Fossify in their PRODID. Both are kept as fixtures.
Also: existingUids counted DELETED rows, so re-importing after deleting
events skipped everything as duplicates.
Closes #225
2026-08-31 19:03:43 +02:00
e9bf344567
chore: keep .ics test fixtures byte-exact (CRLF)
2026-08-31 19:03:43 +02:00
84f28f3768
fix(import): make .ics import survive events the provider rejects ( #225 )
...
importEvents inserted every event in one unguarded loop, so a single row
the provider refused — it throws on a malformed RRULE straight out of
insert — aborted the batch and left the user with "couldn't read this
file" and nothing imported. Each event is now isolated and rejects are
counted into IcsImportSummary.failed and shown. sanitizeRrule drops empty
and malformed rule parts before the write.
Alongside that, several things a foreign file carries that we dropped:
VTODO components (silently lost, now imported as events), EXDATE, the
CATEGORIES calendar name, and colours — X-FOSSIFY-EVENT-COLOR / COLOR /
the category colour plus the X-SMT-* legacy spellings, snapped in Oklab
to the nearest key a palette account publishes since those reject a raw
EVENT_COLOR.
Two correctness fixes on our side: an all-day event may no longer end at
or before it starts (the provider expands a zero-length series into no
instances, so it just disappears), and imported all-day reminders now go
through the same encoding as hand-created ones instead of firing at UTC
midnight. A VALARM trigger pointing after the start is read as a time of
day rather than clamped to zero.
Note for later: their all-day DTEND is RFC-correct — endTS anchors at
noon of the last day and the exporter's +12h rounds it to the following
midnight. Do not "fix" it by sniffing PRODID; the holiday files bundled
in Fossify are conformant and name Fossify in theirs. One is kept as a
fixture.
Refs #225
2026-08-31 19:03:43 +02:00
Jean-Luc Makiola
eb406c3132
Move EXDATE with the series when its times change ( #248 ) ( #249 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/249
2026-08-31 18:17:43 +02:00
Jean-Luc Makiola
248842871b
fix(deps): update work to v2.11.2 ( #204 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/204
2026-08-31 09:12:47 +02:00
Jean-Luc Makiola
1cab023abc
Translations update from Weblate ( #250 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 8s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/250
2026-08-31 09:12:01 +02:00
9ca29bb797
fix(deps): update work to v2.11.2
2026-08-31 05:02:32 +00:00
JeanWenzel
13640751d2
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/zh_Hans/
2026-08-29 03:03:54 +00:00
JeanWenzel
0c7d1a97e2
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/zh_Hans/
2026-08-28 16:11:05 +00:00
Weblate
d0202783d4
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/zh_Hans/
2026-08-28 16:11:05 +00:00
JeanWenzel
f72f810e4f
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/zh_Hans/
2026-08-28 16:11:05 +00:00
Weblate
13f4c86113
Update translation files
...
Updated by "Remove blank strings" add-on in Weblate.
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/
2026-08-28 02:17:51 +00:00
James Trivette
65d9f95717
Translated using Weblate (Czech)
...
Currently translated at 47.7% (274 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/cs/
2026-08-28 02:17:51 +00:00
JeanWenzel
19fa8203f1
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 24.5% (141 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/zh_Hans/
2026-08-28 02:17:51 +00:00
Jean-Luc Makiola
0f1df4800d
Translations update from Weblate ( #247 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 8s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Renovate / renovate (push) Successful in 1m54s
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/247
2026-08-27 20:38:38 +02:00
Weblate
7351b2d35c
Translated using Weblate (Polish)
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/pl/
2026-08-27 18:24:01 +00:00
Bazyli Cyran
1a66a31563
Translated using Weblate (Polish)
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/pl/
2026-08-27 18:24:01 +00:00
Weblate
fe3c659804
Translated using Weblate (Polish)
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/pl/
2026-08-27 18:24:01 +00:00
Jean-Luc Makiola
a2172dce12
Google Play is live: README + production track ( #244 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 8s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Calendula is published on Google Play, so the pipeline and the docs stop treating it as pending.
**README**
- Google Play badge next to F-Droid/Obtainium, linking the store page.
- Install table: the Play row goes from "Coming soon / —" to a real channel.
- The "coming soon" section becomes a live one with the store link; the closed-testing "testers wanted" call drops out. The note that Play signs with Google's key (so switching channels needs an uninstall) stays, and the trailing shared-signing-key line now flags Play as the exception.
**Play track**
- Release uploads default to `production` instead of `internal` — in the lane (`fastlane/Fastfile`) and in the workflow default (`.gitea/workflows/release.yaml`). Merging a bumped versionName to main is already the human gate, so the manual Console promotion only added delay.
- `docs/RELEASING.md` updated to match, including the escape hatches (`PLAY_TRACK=internal` to stage, `PLAY_RELEASE_STATUS=draft` to hold).
Note: if a `PLAY_TRACK` repo variable is set on Gitea it still wins over the new default — needs checking there.
No issue for this one.
Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de >
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/244
2026-08-27 19:09:04 +02:00
Jean-Luc Makiola
4099f66e91
Translations update from Weblate ( #232 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 7s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/232
2026-08-27 19:08:28 +02:00
49112b11b3
fix(deps): update test dependencies to v6.1.3 ( #202 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/202
2026-08-27 19:07:52 +02:00
1218bb523c
fix(deps): update lifecycleruntime to v2.11.0 ( #203 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 5s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/203
2026-08-27 19:07:29 +02:00
17600a3905
fix(deps): update material3 (alpha) to v1.5.0-alpha26 ( #235 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 7s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/235
2026-08-27 19:07:02 +02:00
Julie
db5104a7d0
Translated using Weblate (Slovak)
...
Currently translated at 32.0% (184 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/sk/
2026-08-27 03:40:53 +00:00
Julie
6306064fc3
Translated using Weblate (Slovak)
...
Currently translated at 25.0% (144 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/sk/
2026-08-26 23:38:37 +00:00
Julie
d5a4761f2c
Translated using Weblate (Slovak)
...
Currently translated at 13.5% (78 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/sk/
2026-08-26 21:23:50 +00:00
Dmitri Gabinski
66d6681798
Translated using Weblate (Belarusian)
...
Currently translated at 24.9% (143 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/be/
2026-08-26 21:23:49 +00:00
Weblate
fb61169656
Update translation files
...
Updated by "Remove blank strings" add-on in Weblate.
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/
2026-08-26 13:57:44 +00:00
Julie
62079fba0b
Added translation using Weblate (Slovak)
2026-08-26 13:57:44 +00:00
Dmitri Gabinski
cc0fc8edc3
Translated using Weblate (Belarusian)
...
Currently translated at 23.8% (137 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/be/
2026-08-26 13:57:43 +00:00
Sup99999
62174fcd53
Translated using Weblate (Arabic)
...
Currently translated at 97.7% (561 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ar/
2026-08-25 16:03:15 +00:00
Dmitri Gabinski
55c1b2ac25
Translated using Weblate (Belarusian)
...
Currently translated at 4.5% (26 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/be/
2026-08-25 02:58:46 +00:00
Sup99999
0ccc610144
Translated using Weblate (Arabic)
...
Currently translated at 95.9% (551 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ar/
2026-08-25 02:58:45 +00:00
Weblate
5d009b7dc0
Update translation files
...
Updated by "Remove blank strings" add-on in Weblate.
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/
2026-08-24 06:55:51 +00:00
Dmitri Gabinski
28924daf02
Added translation using Weblate (Belarusian)
2026-08-24 06:55:51 +00:00
Sup99999
e71fb2a625
Translated using Weblate (Arabic)
...
Currently translated at 92.6% (532 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ar/
2026-08-22 14:29:52 +00:00
SpiritOTHawk
aa5f76fc1b
Translated using Weblate (Russian)
...
Currently translated at 28.2% (162 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ru/
2026-08-22 14:29:52 +00:00
Jean-Luc Makiola
5b099714f6
2.19.3 — Czech, Japanese and Russian in the language picker ( #231 )
...
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 17m33s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m2s
Renovate / renovate (push) Successful in 2m24s
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/231
v2.19.3
2026-08-22 11:18:37 +02:00
163d821d1f
2.19.3 — Czech, Japanese and Russian in the language picker
...
Surface the community translations that landed via Weblate but were never
listed in locales_config.xml. European Portuguese stays out: it has one
translated string.
2026-08-22 11:10:06 +02:00
Jean-Luc Makiola
fe98b1ed66
Translations update from Weblate ( #223 )
...
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 7s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Has been skipped
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Has been skipped
Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/223
2026-08-22 11:03:17 +02:00
James Trivette
c0270ab3a0
Translated using Weblate (Czech)
...
Currently translated at 36.0% (207 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/cs/
2026-08-21 13:13:33 +00:00
James Trivette
6019d6c0b8
Translated using Weblate (Czech)
...
Currently translated at 33.7% (194 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/cs/
2026-08-21 05:51:15 +00:00
James Trivette
19bc5967a4
Translated using Weblate (Czech)
...
Currently translated at 33.6% (193 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/cs/
2026-08-21 05:51:05 +00:00
ame0011
ddab3454bb
Translated using Weblate (Japanese)
...
Currently translated at 13.9% (80 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ja/
2026-08-20 18:48:25 +00:00
ame0011
247c9ee6cd
Translated using Weblate (Japanese)
...
Currently translated at 11.1% (64 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ja/
2026-08-20 16:29:43 +00:00
Bernardo Krzysczak
6be170cae2
Translated using Weblate (Portuguese (Brazil))
...
Currently translated at 100.0% (574 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/pt_BR/
2026-08-20 16:29:42 +00:00
James Trivette
8133584f1e
Translated using Weblate (Czech)
...
Currently translated at 16.3% (94 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/cs/
2026-08-20 09:52:46 +00:00
Weblate
4cdb42afba
Update translation files
...
Updated by "Remove blank strings" add-on in Weblate.
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/
2026-08-20 05:43:16 +00:00
James Trivette
19a4c05e93
Added translation using Weblate (Czech)
2026-08-20 05:43:16 +00:00
ame0011
aba06affbf
Translated using Weblate (Japanese)
...
Currently translated at 9.4% (54 of 574 strings)
Translation: Calendula/Strings
Translate-URL: https://weblate.dev.jeanlucmakiola.de/projects/calendula/strings/ja/
2026-08-20 05:43:16 +00:00