-
v2.22.5
StableRenovate / renovate (push) Successful in 1m13sRelease — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6sBeta — Codeberg pre-release / detect (push) Successful in 5sBeta — Codeberg pre-release / beta (push) SkippedRelease — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 19m27sRelease — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m2sreleased this
2026-10-07 18:37:06 +00:00 | 0 commits to main since this releaseFixed
- Reopening the app the next morning shows the right day. The month view used to mark yesterday as today and keep the day you picked the evening before selected, so you had to tap today to see its events. Every view now moves on to the new day at midnight and when you come back to the app. A view you browsed to another date stays where it is ([#373]).
Downloads
-
v2.22.4
StableRelease — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 9sRenovate / renovate (push) Successful in 1m57sRelease — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 18m48sRelease — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m19sreleased this
2026-10-07 07:19:23 +00:00 | 2 commits to main since this releaseFixed
- Edits and deletions show up straight away on every phone. On some phones, Samsung among them, an edited, moved or deleted event stayed where it was until the app was restarted, so a second edit could act on an event that had already changed. Calendula now refreshes its views itself after every change, and again when you come back to the app ([#364]).
- The home-screen widgets do less work per update. The month widget loads the months around the one it shows instead of more than two years of events, and the agenda widget only its chosen range. This should help widgets that stayed on "loading" on slower phones ([#363]).
Downloads
-
v2.22.4-beta.1
Pre-Releasereleased this
2026-10-06 17:40:58 +00:00 | 0 commits to main since this releaseBeta of 2.22.4, for testing. It updates in place to later betas and to the stable release. Obtainium only offers betas with Include prereleases switched on; F-Droid and Play never get them.
Fixed
- Edits and deletions show up straight away on every phone. On some phones, Samsung among them, an edited, moved or deleted event stayed where it was until the app was restarted, so a second edit could act on an event that had already changed. Calendula now refreshes its views itself after every change, and again when you come back to the app ([#364]).
- The home-screen widgets do less work per update. The month widget loads the months around the one it shows instead of more than two years of events, and the agenda widget only its chosen range. This should help widgets that stayed on "loading" on slower phones ([#363]).
Downloads
-
v2.22.3
Stablereleased this
2026-10-02 20:27:30 +00:00 | 9 commits to main since this releaseFixed
- 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]).
Downloads
-
v2.22.2
Stablereleased this
2026-10-02 18:53:39 +00:00 | 10 commits to main since this releaseFixed
- 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 usesnl-NL, and CI checks every store locale against the codes Play accepts. The app is unchanged from 2.22.1 ([#359]).
Downloads
- 2.22 reaches Google Play. The Dutch store listing used the locale code
-
v2.22.1
Stablereleased this
2026-10-02 16:58:09 +00:00 | 11 commits to main since this releaseFixed
- Tapping a link in an event's location opens it in the browser instead of a maps app. Links are underlined, as in the description, and tapping the rest of the location still opens maps. A link with a capitalised
Https://, or wrapped in<…>the way Outlook and Teams write them, opens correctly too. When no app can open a link, a short message says so instead of the tap doing nothing ([#357]).
Downloads
- Tapping a link in an event's location opens it in the browser instead of a maps app. Links are underlined, as in the description, and tapping the rest of the location still opens maps. A link with a capitalised
-
v2.22.0
Stablereleased this
2026-10-01 14:33:43 +00:00 | 12 commits to main since this releaseAdded
- Day, Week, and Month all page with a swipeable pager that follows your finger instead of cutting between dates ([#131], [#336]).
- Pages can open the split agenda. Swipe up from a full month to reveal the compact grid and month agenda; tap a day to filter it, then swipe down to return. The transition gives haptic feedback ([#111]).
- A multi-day view shows a configurable number of days side by side, with today in the first column. Set the day count in Settings ([#193]).
- A "Visible hours" setting fits a chosen range of hours to the screen when Day, Week, or the new multi-day view opens; earlier and later hours stay a scroll away ([#322]).
- Timeline views mark events that run outside the visible hours with a coloured edge at the top or bottom, and keep them tappable underneath it ([#188]).
- Week numbers open their week. Tap a week number in the month grid to open Week at that row; Back returns to Month ([#197]).
Changed
- Day, multi-day, and Week share one timeline and morph into each other when you switch views, instead of each view rebuilding its own ([#184]).
- The back gesture previews the view you're returning to and springs back to the current one if you cancel the gesture ([#185]).
- Split view opens with the month's agenda. It starts at today in the current month; tapping a day filters the list, and the filter chip restores the full month. Swiping the list moves by day when filtered and by month otherwise ([#142]).
- Today stands out in the month grid. Its whole cell has a distinct background; tapping Today briefly expands that cell and nudges its neighbours aside ([#241]).
- All-day reminders due today or tomorrow say so instead of spelling out the date ([#308]).
- Store listing in every app language. Google Play and F-Droid show the description in all 16 languages the app ships, and each release publishes the Play listing from the repository ([#285]).
Fixed
- Titles and locations stop growing at 255 characters. Some CalDAV servers (Open-Xchange among them) silently truncate longer values on sync; Calendula now caps them first and shows a counter once you're close ([#331]).
- The "Calendar" launcher alias is translatable. The "App name" setting's alternate label was hard-coded to English regardless of the app's language ([#251]).
- Multi-day events stay above shorter events. Month and Week bars, Split day lists, and Agenda now place multi-day events before one-day all-day events, then timed events; declined events remain last ([#291]).
- Editing one occurrence of a coloured Google series saves again. Saving with "Only this event" kept you on the edit screen without saving anything ([#338]).
Downloads
-
v2.21.0
Stablereleased this
2026-09-24 14:05:23 +00:00 | 38 commits to main since this releaseAdded
- Setup makes sure you have a calendar to write to. A fresh install could
finish onboarding and land on an empty grid with nothing saying why — either
because the device had no calendar at all, or because every calendar it had
was switched off. Setup now covers both: it offers to create a calendar on
this device or to add an account that syncs one, and it lists the calendars
that exist but are switched off so you can turn them back on ([#287]).
Changed
- The month grid gives its days more room. Week numbers are set smaller and
their gutter is measured from the widest number it has to seat instead of
holding a fixed 40dp; event chips spend less of their width on padding; and
the labels in both are tracked more tightly, which is worth roughly a
character per chip ([#189], [#190], [#212], [#213]). - A month day shows as many events as it has height for. The limit was a
flat three at every size, so a tall week row threw away space it could have
filled, while a cramped one drew a third chip its band could not hold and put
the "more" marker below the clip, where nothing showed the day held more at
all. It is measured per week row now, and a tablet or a landscape phone seats
more of them. - Split view no longer pads a short month out to six rows. A five-row month
was handing the day pane a blank row and its gap — a sixth of the grid. The
grid now draws only the rows its month spans and the pane grows into the rest
([#162]).
Fixed
- Short events show their title in week and day view. A block needed 20dp
of height before it drew any title at all, which at fit-the-whole-day put the
cutoff around the half hour. The padding now tapers as the block shrinks, so
a short event keeps its name ([#289]). - A fully zoomed-out timeline sits still. Rounding its height up left it as
much as a pixel per hour taller than the viewport those hours are meant to
fill — some 24px of leftover scroll, enough to bounce off Android's
overscroll stretch ([#290]). - Backup & restore says what is going on instead of coming up blank. It
built its rows straight from the calendar list, so loading, a provider error,
and a device with nothing to export all rendered as an empty page with no
buttons on it ([#304]). - An event with no title reads in your language. It was labelled "(Ohne
Titel)" on every screen but the event's own, whatever language the phone was
set to: the German text was chosen before the translated one could be
([#321]). - A calendar the system gives no name reads in your language. The same
cause, in the calendar lists and pickers — and because the calendar editor
starts from that name, saving such a calendar wrote the German text into it
for real ([#329]).
Downloads
- Setup makes sure you have a calendar to write to. A fresh install could
-
v2.20.4
Stablereleased this
2026-09-20 19:27:49 +00:00 | 39 commits to main since this releaseFixed
- The app no longer reopens the event you last came in on. Opening an event
from a reminder or a home-screen widget made the app return to that same
event on every later launch — and show an error screen once the event had
been deleted. Android hands an app the launch it was started with again each
time it is rebuilt, and Calendula was acting on it every time instead of
once ([#309]). - "Today" works in the agenda again. Scrolling a few days ahead and tapping
today did nothing, because the agenda is browsed by scrolling rather than by
moving its date, and the button only moved the date. It now brings the list
back to today, and it stays offered while the list is scrolled away — before,
it was hidden in exactly the situation it is for ([#305]). - Calendula is filed under "Calendar & Agenda" in the self-hosted repo.
Browsing by category in an F-Droid client set to prefer that repo listed the
app under "Time" instead ([#294]).
Downloads
- The app no longer reopens the event you last came in on. Opening an event
-
v2.20.3
Stablereleased this
2026-09-12 15:20:14 +00:00 | 49 commits to main since this releaseFixed
- A custom agenda range crashed the app in French. Choosing a custom range
for the agenda — or simply typing a number into that field — closed the app on
any phone set to French. The French translation of the "%d days" label was
missing the wording French uses for counts of two and above, and Android has
nothing to fall back on when that particular form is absent, so every value
except one day was affected ([#297], [#298]).
Downloads
- A custom agenda range crashed the app in French. Choosing a custom range