-
v2.18.0
StableAll checks were successfulreleased this
2026-07-31 20:31:34 +00:00 | 2 commits to main since this releaseAdded
- A new event no longer always lasts an hour. Settings → New event form →
Default duration sets how long one opens, and each calendar may keep its own
length underneath — 8 hours for the calendar you keep work shifts in, 30
minutes for the one you book calls in. A calendar without its own length
follows the default, switching calendars mid-form re-stretches the event, and
setting an end time by hand keeps it. An event another app hands over with only
a start gets the default too; one that names its own end — an.icsfile, a
duplicate — keeps that length. All-day events are unaffected ([#54]). - Week and day view can be set to show more or less of the day at once, under
Settings → Views → Week & day → Hour height. Fit whole day sizes an
hour to your screen so all 24 hours are visible without scrolling — on a tall
phone the old fixed spacing showed only about half a day, so appointments
could sit below the fold all week. Compact and Comfortable are fixed steps
either side of the previous spacing, which stays the default. Both views share
the setting ([#56]). - Week and day view can be pinched with two fingers to set the hour height
directly, anywhere between and beyond the named steps. The time under your
fingers stays put as it zooms, so you keep your place in the day. A pinched
height is remembered and appears as Custom in the Hour height setting, so
tapping a named step there takes you back to it ([#56]).
Changed
- The date in the top bar is now the way to jump: tapping the month, week or day
title opens the same date picker the sidebar's Jump to date offers, seeded
on whatever the bar is naming. A drop-down caret marks it as tappable. The
sidebar entry stays where it is ([#57]). - A reminder in the status bar is now Calendula's own mark — the calendar with
the bloom — instead of the generic calendar glyph it shared with the system's
date surfaces and every other calendar app. The status bar draws that icon as
a plain silhouette, so its shape is the only thing that could tell them apart
([#83]). - Event blocks now only draw text they can draw whole. One too short for a full
line shows no title rather than a sliced one, a block that cannot fit both its
title and its time keeps the title, and a block too narrow to hold more than a
syllable stays on one ellipsised line instead of stacking letters down the
block. Tapping and the spoken description are unchanged ([#56]). - Calendar colours are reworked so text on an event is always readable. They
were shaped by a brightness setting that does not match what the eye sees, so
whether a block got dark or light text depended on which hue you happened to
pick — an orange calendar took dark text while a red one beside it took light
— and colours landing in between were hard to read either way. Each colour now
keeps its hue and is moved clear of that middle: most become deep blocks with
light text, while naturally pale colours such as yellow stay pale and take
dark text, rather than being forced into a muddy brown. Dots, stripes and
icons are tuned separately from blocks, so they stay visible against the
background instead of sharing a colour meant to sit behind text. The setting
is now called Harmonise calendar colours; turning it off still shows the
raw colours from your calendar source ([#21], [#36]).
Fixed
- The back gesture closes the sidebar instead of the app. With the drawer open,
swiping back left Calendula altogether rather than putting the sidebar away
([#114]). - The sidebar lines up. "Calendula", "View" and "Calendars" now share the left
edge of the rows under them, and the view, jump-to-date, Settings and calendar
rows sit on one vertical axis instead of each icon finding its own — the same
alignment the Settings screens use ([#114]). - The status- and navigation-bar icons follow Calendula's own light/dark choice.
Setting the app dark while the system stayed light — or the other way round —
left the clock and battery drawn for the system's theme, so they could sit
near-invisible against the app's own bar ([#70]).
Downloads
- A new event no longer always lasts an hour. Settings → New event form →
-
v2.17.1
StableSome checks failedreleased this
2026-07-30 20:52:55 +00:00 | 9 commits to main since this releaseAdded
- Settings → Calendars now says what is different about a calendar instead of
leaving you to guess. Ones you can only view — a subscribed calendar, a
calendar shared with you read-only — are marked Read-only ([#76]). - Calendars your device isn't syncing are marked Not synced, moved to the
bottom of their account and left without a switch. None of their events are on
the device, so the switch they used to have could not have shown you anything
— the calendar simply looked broken. They are no longer offered when you pick
a calendar for a new or an imported event either: an event saved there would
never reach the account. Whether an account syncs a calendar stays that
account's own app's decision ([#78]). - The birthday and anniversary calendars Calendula fills from your contacts are
marked Filled from your contacts, which is why they can't be picked for a
new event: anything you put there would be removed again on the next sync.
Deleting one is held back while special dates are switched on — Calendula
would simply create it again — and the calendar's editor says so; turn the
feature off under Settings → Special dates and the delete works as usual
([#76]). - The calendar picker in the event form and in the .ics import screen now ends
with a "Missing a calendar?" row that opens Settings → Calendars, where
those marks then explain why a calendar isn't offered ([#76]). - The agenda widget's text size is yours to set. Settings → Widgets & tiles →
Agenda widget size offers Small, Medium, Large and Extra large, replacing the guess
the widget used to make from its own measurements. Small is what it looks like
today, so nothing changes until you turn it up ([#51]). - A repeating event now shows you its next few dates, not just a description of
the rule. Both the preset list and the custom recurrence picker carry a
Next: line — "Next: 30 Jul, 6 Aug, 13 Aug" — under the rule they would
save. A phrase like "monthly" on the 31st, or "every 2 weeks on Mon & Fri",
can mean something other than it sounds like, and only the dates say so. A
rule that can never fire says that instead ([#69]). - The event visibility options now say who they affect. Public, Private
and Confidential each carry a line about what other people on a shared
calendar see — the part the four words on their own leave out ([#69]).
Changed
- Settings has been reorganised so each setting sits where you would look for
it. One long undifferentiated list is now three labelled groups — Look &
behaviour, Data, and App — whose rows open sub-screens and say what they do
rather than only naming themselves. Appearance, Views, New event form,
Notifications and the new Widgets & tiles are separate screens now, so the
settings for a calendar view are no longer mixed in with the ones for the
app's colours or for the home-screen widgets ([#69]). - Settings that are hard to picture from their name now show you what they do.
The week-start picker rearranges a real month grid as you choose, the
past-events setting previews a sample agenda day for Show, Dim and Hide, the
font pickers set a specimen line in the face you are choosing, and the Agenda
range options carry the dates each one actually covers. Options that follow
the system additionally name which way they currently fall ([#69]). - Backup & restore is now its own Settings entry instead of living inside
the calendar manager, where it was easy to miss — keeping a copy of your
calendars is a different question from which calendars you have. The calendar
manager keeps a row pointing to it, and nothing about how backup or automatic
backup works has changed ([#69]). - Calendula's source code now lives on Codeberg, where its issues already
were. The Source code and License links in Settings → About point
there, so reporting a bug and reading the code no longer land on two different
sites. Nothing about the app itself changes, and the F-Droid repository is
unaffected.
Fixed
-
A month-grid widget stays a month grid, and draws all seven days again. Since
2.16.0 a placed month widget could redraw itself as the agenda widget a little
after any change to your events, and could draw only about four day columns
with the last one cut off part-way through. Both came from the release build
merging the two widgets into a single class, so Android could no longer tell
which of them a widget on your home screen was — and the month grid was handed
the wrong widget's measurements to lay its columns out against ([#89], [#103]). -
The back gesture on Settings → Views returns to Settings instead of
leaving Settings altogether and dropping you on the calendar. Special dates
did the same ([#81]). -
The dots standing in for the events that didn't fit a day in the month view
now dim with everything else when Dim completed events is on. A past day
with four or more events kept its last events at full strength while the rest
faded ([#79]). -
Two accounts that happen to share a name — a Google account and a DAVx5
account for the same address, say — are no longer merged into one group.
They were listed together in Settings → Calendars and in the drawer's filter,
which also meant the group's source icon and its "manage in app" button could
send you to the wrong app, "toggle all" spanned both accounts at once, and
collapsing one collapsed the other. Where a name really is shared, each group
now names the app it comes from ([#77]). -
In the month view's Split style, the new-event button now starts on the
day you have selected. It always started on today, whichever day was selected
and listed below the grid ([#87]). -
Search results now show an all-day event's real date. West of UTC — anywhere in
the Americas, say — a search hit was dated one day early, disagreeing with the
day the month, week and agenda views file the same event under ([#82]). -
Reminders no longer depend on Android telling Calendula when they are due.
Calendula now works out each reminder's time itself and sets its own alarm for
it. On some phones — Samsung's among them — the system's calendar storage never
sends the signal a calendar app is meant to wake up on, and no amount of
battery or notification settings helps: the reminder is simply never announced.
None of that is visible from inside an app that waits to be told, which is why
it took a second pass to find ([#75]).Reminders also survive things that used to lose them quietly. After a restart
or an app update Calendula re-arms its alarms, and a reminder whose moment
passed while the phone was off still arrives, as long as the event has not
ended yet. -
All-day reminders now arrive at the time you chose in Settings →
Notifications, on every occurrence. A yearly birthday could drift an hour
either way depending on daylight saving, and all-day reminders on calendars
from an account fired in the middle of the night instead of in the morning
([#75]). -
Reminders now arrive for every calendar you have switched on. A calendar that
was hidden at system level — switched off in another calendar app, or never
switched on after being added — still showed its events and listed their
reminders in Calendula, but never notified: Android only schedules reminder
alarms for calendars marked visible, and Calendula kept its own separate
on/off list that had no say in it. There is now one switch: Settings →
Calendars turns a calendar on or off for the whole device, so what you see
and what reminds you can no longer disagree ([#75]).Calendars you had switched off in Calendula are switched off here too on first
launch. Calendars that were already off — hidden in another calendar app, or
never switched on after being added — stay off, and Calendula says so once
rather than quietly switching them on for every app on your device; you can
turn any of them back on in Settings → Calendars.If you gave Calendula read-only access to your calendars, the switch still
works: your choice is kept in the app until it can be written.The drawer's filter is unchanged and still app-only: hiding a calendar there
tidies your view without silencing its reminders.
Downloads
- Settings → Calendars now says what is different about a calendar instead of
-
v2.16.0
Stablereleased this
2026-07-24 20:09:05 +00:00 | 26 commits to main since this releaseAdded
-
Choose how the month view is laid out. A new Month view style setting
(Settings → Views) offers three ways to read a month, each shown with a
preview of the layout it produces:- Pages — what you have today: one month at a time, swiped sideways.
- Continuous — scroll up and down through the weeks without a break
between months. Because the weeks run on unbroken, no month is cut off and
no day appears twice, where paging repeats a boundary week at the end of one
month and the start of the next. The 1st of each month names itself so you
always know where you are, and the title bar keeps up as you scroll ([#38]). - Split — a compact grid showing coloured dots for the days that have
something on them, with the day you tap listed in full underneath. Tap the
date above the list to open the whole day ([#53]).
The Agenda view is untouched by this and stays available in all three styles —
the split layout lists a single day, while Agenda remains a rolling multi-day
window with its own range settings. -
Give an event its own time zone. A new Time zone field (under "more
fields" in the event form) pins an event to a specific zone, so a call set for
8:00 AM in New York stays 8:00 AM in New York wherever you open it — and keeps
tracking that zone across daylight-saving changes instead of drifting an hour.
The form edits the event in its own zone and shows the local equivalent under
the times ("2:00 PM – 3:00 PM your time"); the event's details keep your local
time first and note the original beneath it, so both are always clear. Pick a
zone from a full-screen picker with your device zone and recent choices on top,
searching by city ("new york"), IANA id ("europe/berlin"), or abbreviation
("CEST") to gather every matching zone at once. All-day events stay
date-anchored and carry no zone, as before ([#31]). -
Put the "jump to today" button in the toolbar. A new Today button in
toolbar setting (Settings → Appearance, off by default) swaps the floating
button that fades into the corner while you're away from today for a permanent
today icon in the top bar — always there, on today or not, matching the
familiar calendar-app pattern. Leave it off to keep the floating button as
before ([#60]). -
Choose what Calendula calls itself on your home screen. A new App name
setting (Settings → Appearance) switches the launcher label between
Calendula and Calendar, for launchers that can't rename apps
themselves. Pick from a full-screen chooser that previews both names as
launcher marks; the change applies at once ([#44]). -
Calendula now speaks Arabic, laid out right-to-left, and its French and
Italian translations have been brought up to date — thanks to the community
translators on Weblate. Pick a language under Settings → Language (or leave it
on the system default).
Changed
- Dates in the Month, Week and Day title bars now follow your language and
region instead of one hardcoded layout. Every date was rendered in a fixed
German-style order with a trailing dot on the day number, whatever your
settings: US English showed "Fri, 17. Jul 2026" where it should read
"Fri, Jul 17". The Agenda view already formatted correctly, so the two
disagreed about the same date. All four views now share one formatter, and the
day/month order, the separators and the ordinal all come from your locale —
so English-in-Germany reads "Fri, 17 Jul" and English-in-the-US "Fri, Jul 17",
each correct for where you are ([#60]). - The title bar drops the year while you're in the current one — "July" rather
than "July 2026". The year reappears the moment you page out of the current
year, which is when it tells you something you didn't already know. - The Week view's title now names the month instead of spelling out the day range.
"24. Jun – 31. Jun" restated the day numbers already printed in the column
headers right below it, in the widest string in the bar. A week that straddles
two months keeps the outgoing month until it is fully gone ([#60]). - The custom recurrence picker has been redesigned and tightened up. As you
build a rule — "every 2 weeks on Mon & Wed, until a date" — the live summary
now describes exactly what will be saved rather than a near-copy that could
drift from it, the amount fields accept being left blank (reading as their
shown default instead of greying out OK), and the read-out no longer jumps
around as you tap weekdays ([#42]).
Fixed
- An all-day event no longer shows up again the day after it happened. In time
zones east of UTC, an all-day event — a birthday, say — set for one day also
appeared under the next day's heading in the Agenda (and the agenda widget),
because all-day events are anchored to UTC midnight and the following day's
window reached back across that boundary and pulled the event forward onto
"today". Each all-day event now lists only on the day it actually falls on
([#65]). - A multi-day event now shows under every day it spans in the Agenda, not just
its first day, so a trip or a multi-day booking appears on each day it covers. - The "Upcoming" agenda widget now scales its text and rows to the size you give
it. Previously it was laid out once for the smallest size and simply stretched
when enlarged, so the text stayed small no matter how big you made the widget.
Now a bigger widget gets bigger, more readable type and roomier rows, while the
default size looks exactly as before — no new setting; it follows the size you
already chose ([#51]). - Calendula now appears under other apps' "Add to calendar" / "Save to calendar"
actions. Some apps (e.g. DB Navigator) fire the widely-used "insert event"
intent with the singularvnd.android.cursor.item/eventtype, which Calendula
didn't advertise — so it was left out of the chooser, and if it was your only
calendar app the save silently did nothing. It now accepts that form, plus the
INSERT_OR_EDITaction, and opens the new event prefilled for review ([#74]). - Opening a
.ics/.vcsfile now works even when another app hands it over
mislabelled as a generic download (application/octet-stream), as some mail
clients, browsers and file managers do — Calendula recognises it by its file
extension instead of relying on the declared type ([#74]). - A recurrence end date no longer lands a day late. West of UTC, setting a rule
to end "until" a given day could save and show the day after the one picked;
the end date now reads back as chosen ([#42]). - The status- and navigation-bar icons stay legible over full-screen pickers in
dark theme. They could render dark-on-dark — a near-invisible black clock
against the dark picker — instead of switching to light ([#70]).
Downloads
-
-
v2.15.0
Stablereleased this
2026-07-15 19:04:18 +00:00 | 144 commits to main since this releaseAdded
- Show raw calendar colours. Calendula normally softens each calendar and event
colour toward a theme-fitting pastel so harsh sync colours read well on both
light and dark; a new Soften calendar colours setting (Settings → Design,
on by default) lets you turn that off and paint the exact colours your calendar
source publishes — matching DAVx5/CalDAV and other calendar apps. Thanks to
@leonp5 for the report ([#36]). - Readable titles on dark event colours. An event bar's title now shows in white
on a dark colour and near-black on a light one, chosen automatically from the
colour's brightness, so a deep blue or purple event is legible at a glance in
the busy Week and Month views instead of dark-on-dark. This applies whether or
not colours are softened. Thanks to @ptab for the suggestion ([#21]). - A custom snooze duration. The Snooze duration setting (Settings →
Notifications) gains a Custom… option next to the minute presets: pick any
amount and switch between minutes and hours, so a snoozed reminder comes back
after exactly the delay you want instead of only a preset one ([#40]). - Move an event to another calendar. When editing an existing event, the
calendar row is now tappable — pick a different calendar and saving moves the
event across, instead of having to delete it and recreate it elsewhere.
Recurring series move as a whole, keeping their individually-edited and
cancelled occurrences, and any reminders and guests come along too. A calendar
can't simply be reassigned underneath an event, so Calendula recreates it on
the target and removes the original — the same approach other calendar apps
take. Thanks to @prismplex for the suggestion ([#39]). - Open an event straight into the edit form from another app. Calendula already
answered the "new event" and "open this event" hand-offs from other apps and
widgets; it now also answers the "edit this event" one, so an assistant, task
app, or widget can send an existing event to Calendula and land on its edit
screen rather than the read-only details. A hand-off with no event attached
opens the same prefilled create form as "new event". Calendula also recognises
a couple more file labels the same calendar data arrives under (.vcs
vCalendar files and theapplication/icstype), so opening or sharing those
into Calendula works too. - Keep today at the top of the agenda. A new Always show today setting
(Settings → Agenda, on by default) anchors today as the first entry in both the
Agenda screen and its home-screen widget even once nothing is left today —
under today's header a "No more events today" note appears — so the first
events you see are clearly today's rather than a future day's. Turn it off to
keep the agenda purely upcoming. Thanks to @ptab for the suggestion ([#35]). - Duplicate an event. The event details now carry a Duplicate action that
opens the editor pre-filled with a copy of the event as a new, unsaved one, so
a one-off like a shift or an appointment can be recreated by just changing the
day and time instead of re-typing every field. The copy keeps the original's
time, and its title, location, notes, colour, guests and reminders come along;
it's saved as its own single event (any repeat is left off — add one in the
editor if you want it). Duplicate works from read-only calendars too, dropping
the copy into a writable one. Thanks to @internet-rando for the suggestion
([#52]). - French and Polish, in early form. Calendula has started speaking French and
Polish, both contributed as community translations through
Calendula's Weblate.
They are partway there, so untranslated parts still show in English until they
fill out — you can already pick either under Settings → Language or in Android's
per-app language settings. Thanks to Thomas Tref (French) and Bazyli Cyran
(Polish) for getting them started; help finishing them is very welcome.
Fixed
- Reminders for events on another day no longer read as if they were today. A
reminder fired ahead of time — say, the day before — used to show only the
event's time, making it look like it was happening now. The notification now
says which day: Tomorrow or Yesterday, the weekday for another day this
week, or the date for anything further out. Thanks to @moonj for the report
([#46]). - Agenda dates now read in your locale's format. The agenda's range bar and its
day headers used a fixed day-month-year layout — and the range span even mixed
two orders (e.g. "15 Jul – Aug 13, 2026") — instead of following your language's
conventions. Dates across the agenda and its widget now use your locale's own
field order, matching the rest of the app. The range bar also no longer repeats
the range's name from the selector button beside it, showing just the dates. - Calendar gutters line up with the menu button. The Month view's week-number
column, and the Week and Day views' hour labels, sat a few pixels left of the
hamburger menu above them; they now line up with it. In Month view the day
cells also sit squarely under their weekday letters.
Downloads
- Show raw calendar colours. Calendula normally softens each calendar and event
-
v2.14.1
Stablereleased this
2026-07-13 13:56:22 +00:00 | 178 commits to main since this releaseFixed
- Deleting one occurrence of a repeating event no longer breaks the series.
Choosing "This event" when deleting an occurrence of a recurring event could
wipe out every other occurrence while leaving the one you deleted behind as
a stale, still-tappable ghost — and deleting it again brought the series back.
A single-occurrence delete now removes exactly that occurrence and leaves the
rest of the series untouched, and the deleted occurrence disappears from the
grid straight away. This holds on every kind of calendar, including the
on-device ones Calendula keeps for contact birthdays and anniversaries, where
the series is a yearly repeat. Thanks to @moonj for the report ([#47]). - Tapping an event in a third-party widget opens it in Calendula. v2.13.1 taught
Calendula to answer the "new event" hand-off from other apps and widgets; now
it also answers the "open this event" one, so tapping an existing event in a
widget such as Todo Agenda offers Calendula and lands on that event's details.
Thanks to @bushrang3r for the report ([#48]). - Events created from other apps get your default reminder. An event handed over
by another app or widget — Google Maps' "add to calendar", the Todo Agenda
widget's "+" — opened with no reminder at all, ignoring the default set in
Settings. It now starts with your default reminder, the same as an event you
create in Calendula. An event opened from an.icsfile is treated differently,
because the file has its own say: Calendula keeps whatever reminders it carries
(including none at all) and asks you once whether to apply your default instead
— it never quietly overrides the file. If you have no default set, it doesn't
ask ([#49]). - A tidy colour picker on CalDAV calendars. For calendars synced by a CalDAV
app (such as DAVx5), the event colour picker showed every colour the account
publishes — nearly 150 swatches in alphabetical order, many of them
duplicates or near-identical shades. The picker now shows only visually
distinct colours, arranged as a rainbow; near-duplicate shades and the
washed-out neutrals are folded away so no two swatches look alike. Picked
colours still sync exactly as before, and calendars with hand-picked
palettes (like Google's) are unaffected. Thanks to @ptab for the report
([#22]).
Downloads
- Deleting one occurrence of a repeating event no longer breaks the series.
-
v2.14.0
Stablereleased this
2026-07-07 14:51:14 +00:00 | 197 commits to main since this releaseAdded
- Restore events from a backup file. The backup section of Settings can now read
events back in from an.icsfile, not just write one out: pick a file,
choose which calendar to import into, and Calendula adds the events — skipping
any that are already there and telling you how many it skipped. Export gained a
per-calendar selector at the same time, so you can back up just the calendars
you pick instead of everything at once ([#32]). - Week numbers in Month view. A new Week numbers setting (off by default)
adds a slim gutter down the left of the Month grid showing the calendar-week
number for each row, sized to match the day cells. Handy if you plan or refer
to dates by week number ([#25]). - Tap a date header to open that day. In Week and Agenda view, tapping a date
header now opens that date in Day view — the same drill-in that Month view and
the agenda widget already offered, so every view behaves the same way. It makes
jumping to a specific day quicker: switch to Week, swipe to the week you want,
then tap the date to open it. Thanks to @ptab for the suggestion ([#37]). - An early Simplified Chinese translation. Calendula has started speaking
Simplified Chinese, contributed as a community translation through
Calendula's Weblate.
It is still an early effort, so many parts of the app show in English until it
fills out — you can already pick it under Settings → Language or in Android's
per-app language settings. Thanks to
zh-cn for getting it
started; help finishing it is very welcome.
Changed
- Long event titles wrap in the edit screen. When editing an event, a long title
now wraps onto multiple lines instead of being clipped to a single line, so you
can see and edit the whole thing ([#33]).
Downloads
- Restore events from a backup file. The backup section of Settings can now read
-
v2.13.1
Stablereleased this
2026-07-06 15:50:30 +00:00 | 237 commits to main since this releaseAdded
- Create events from other apps and widgets. Calendula now registers the
standard "insert event" intent (ACTION_INSERTon the calendar events type),
so other apps and home-screen widgets — such as the Todo Agenda widget — can
hand off to Calendula to create a new event. It opens the new-event form
prefilled with whatever they passed (title, start/end time, all-day, location,
description, recurrence), and picks your last-used or first writable calendar.
Thanks to @dschuermann for the suggestion ([#30]).
Fixed
- Some recurring events could not be opened. Events in a series that started
before 1970 — for example yearly birthdays or anniversaries synced over CalDAV
— showed "Something went wrong" instead of opening, because their stored start
time is a negative value that was wrongly treated as invalid. They now open
normally and appear in search again. A related case (an event whose stored end
precedes its start) is now kept and openable instead of failing the same way.
Thanks to @dschuermann for the report ([#34]). - The time picker now follows your 24-hour setting. With Calendula set to
24-hour time, the clock dial for choosing an event's start and end time still
showed AM/PM instead of a 24-hour dial; it now matches your setting (and the
same fix applies to the all-day reminder time in Settings). Thanks to
@abrossimow for the report ([#27]).
Downloads
- Create events from other apps and widgets. Calendula now registers the
-
v2.13.0
Stablereleased this
2026-07-03 14:57:02 +00:00 | 257 commits to main since this releaseAdded
- Calendula now speaks Spanish and Italian. Both arrived as community
translations through Calendula's Weblate
— a huge thank you to
kikerw for the Spanish
translation and to
corrent for the Italian
one! Pick your language under Settings → Language or in Android's per-app
language settings. Strings added in this very release may still show in
English until the translations catch up. Want Calendula in your language?
Translating happens entirely in the browser — every contribution is welcome. - See your contacts' birthdays and anniversaries in your calendar. A new,
optional feature (Settings → Contact special dates) mirrors your contacts'
birthdays, anniversaries and other dates into local "Birthdays",
"Anniversaries" and "Other dates" calendars that stay in sync as your contacts
change. Each is a normal local calendar, so you set its colour, visibility and
reminders the usual way — new birthdays even start with a reminder a week before
and on the day. The title format is yours to customise ({name},{year}).
This is the first feature to use the contacts permission: it is requested only
when you turn the feature on, everything stays on your device (Calendula has no
internet access), and your contacts are only ever read, never changed. Thanks
to @moonj for the suggestion ([#15]). - Set more than one default reminder per calendar. A calendar's default
reminders — and the global defaults under Settings → Notifications — can now
hold several lead times instead of just one, so new events can start with, say,
a reminder a week before and one on the day. The reminder pickers are now
multi-select; per-calendar overrides can still inherit the global default or
turn reminders off entirely. Thanks to @moonj for the suggestion ([#14]). - Widget headers now open the app. Tapping the month/year title on the month
widget opens the app on the month view, and tapping the "Upcoming" title on
the agenda widget opens it on your default view — so there's a one-tap way
back into the app that lands where you'd expect, instead of only through a day
or event. On the month widget, tapping anywhere on a day — not just the small
date number — now opens that day, and the "today" button snaps the grid back
to the current month in place. Thanks to @rgz46vic and @ptab for the
suggestions ([#18], [#20]). - Make Calendula's text your own. Settings → Appearance gains Headings font
and Body font pickers: keep the system default, choose a bundled face
(Atkinson Hyperlegible, Lora, JetBrains Mono — each previewed in its own
face), or load any.ttf/.otffile from your device, independently per
role. Font size and colour stay with Android's accessibility scaling and the
app theme, as discussed on the issue. Thanks to @abrossimow for the
suggestion ([#19]). - Choose what the view-switch button cycles through. Settings → Appearance now
lets you pick which views the top-right quick-switch button rotates between
and drag them into your preferred order; views you switch off stay reachable
from the navigation menu, which can be reordered the same way. Thanks to
@abrossimow for the suggestion ([#24]).
Fixed
- Month widget arrows and "today" button work again. On release builds the
prev/next-month arrows and the jump-to-today control on the month widget did
nothing when tapped — code shrinking had stripped the tap handlers behind
them. They respond again. Thanks to @rgz46vic for the report ([#18]). - Disabled calendars no longer notify. Reminders for events in a calendar you
have disabled (Settings → Calendars) are now suppressed instead of still
popping up — matching how a disabled calendar's events already stay hidden
everywhere else in the app ([#17]). - Editing a single occurrence of a recurring event works again. Choosing Only
this event and saving a change to one event in a repeating series silently
did nothing — the change was rejected and the edit form simply reappeared with
nothing applied. The edited occurrence is now stored correctly, so the change
lands on just that one event and leaves the rest of the series untouched
([#16]). - Every calendar can be picked when creating an event. The event editor's
calendar picker was a fixed-height dialog, so with many calendars anything
past the first nine or so was simply unreachable. It is now a full-screen,
scrollable list grouped by account, with each calendar's colour shown.
Thanks to @dschuermann for the report ([#29]).
Downloads
- Calendula now speaks Spanish and Italian. Both arrived as community
-
v2.12.0
Stablereleased this
2026-06-28 20:52:17 +00:00 | 345 commits to main since this releaseAdded
- See past events your way. Two new settings change how events that have already
ended are shown. Past events (Settings → Appearance → Agenda) lets the
agenda — both in the app and the home-screen "Upcoming" widget — keep them as
usual, dim them, or hide them from the list entirely. Dim completed events
(Settings → Appearance) separately fades finished events in the month and week
views. Both are off by default, an event only counts as finished once it has
actually ended (events still in progress are never dimmed), and the lists
update on their own as the day goes on. Thanks to @ptab for the suggestion
([#12]).
Changed
- Readable titles on overlapping events. In the week and day views, events that
overlap split a day into slim columns where the title used to be clipped to a
character or two. The title now wraps across as many lines as the block can
fit, and the time is hidden on those narrow blocks so the name can fill the
space — so you can tell events apart without opening each one. Thanks to @ptab
for the suggestion ([#13]).
Downloads
- See past events your way. Two new settings change how events that have already
-
v2.11.2
Stablereleased this
2026-06-28 11:03:52 +00:00 | 354 commits to main since this releaseAdded
- Jump straight to typing a title. When you start a new event, Calendula now puts
the cursor in the title field and opens the keyboard right away, so you can type
the name without an extra tap. It's on by default and only affects creating an
event — editing never grabs focus — and a new Focus title on new event
switch (Settings → New event form) turns it off. Thanks to @abrossimow for the
suggestion ([#10]).
Downloads
- Jump straight to typing a title. When you start a new event, Calendula now puts