• v2.18.0
    All checks were successful
    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 13m15s
    Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m34s
    Stable

    gitea-actions released this 2026-07-31 20:31:34 +00:00 | 2 commits to main since this release

    Added

    • 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 .ics file, 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
  • v2.17.1
    Some checks failed
    Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 9s
    Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 14m0s
    Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Failing after 1m5s
    Stable

    gitea-actions released this 2026-07-30 20:52:55 +00:00 | 9 commits to main since this release

    Added

    • 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
  • v2.16.0
    All checks were successful
    Release — F-Droid repo + Gitea/Codeberg release / detect (push) Successful in 6s
    Release — F-Droid repo + Gitea/Codeberg release / release (push) Successful in 12m59s
    Stable

    makiolaj released this 2026-07-24 20:09:05 +00:00 | 26 commits to main since this release

    Added

    • 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 singular vnd.android.cursor.item/event type, 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_EDIT action, and opens the new event prefilled for review ([#74]).
    • Opening a .ics/.vcs file 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
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 6s
    Release — F-Droid repo + Gitea release / release (push) Successful in 13m40s
    Stable

    makiolaj released this 2026-07-15 19:04:18 +00:00 | 144 commits to main since this release

    Added

    • 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 the application/ics type), 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
  • v2.14.1
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 6s
    Release — F-Droid repo + Gitea release / release (push) Successful in 8m5s
    Stable

    makiolaj released this 2026-07-13 13:56:22 +00:00 | 178 commits to main since this release

    Fixed

    • 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 .ics file 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
  • v2.14.0
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 5s
    Release — F-Droid repo + Gitea release / release (push) Successful in 8m51s
    Stable

    makiolaj released this 2026-07-07 14:51:14 +00:00 | 197 commits to main since this release

    Added

    • Restore events from a backup file. The backup section of Settings can now read
      events back in from an .ics file, 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
  • v2.13.1
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 6s
    Release — F-Droid repo + Gitea release / release (push) Successful in 7m3s
    Stable

    makiolaj released this 2026-07-06 15:50:30 +00:00 | 237 commits to main since this release

    Added

    • Create events from other apps and widgets. Calendula now registers the
      standard "insert event" intent (ACTION_INSERT on 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
  • v2.13.0
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 5s
    Release — F-Droid repo + Gitea release / release (push) Successful in 11m16s
    Renovate / renovate (push) Successful in 1m12s
    Stable

    makiolaj released this 2026-07-03 14:57:02 +00:00 | 257 commits to main since this release

    Added

    • 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/.otf file 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
  • v2.12.0
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 4s
    Release — F-Droid repo + Gitea release / release (push) Successful in 10m22s
    Renovate / renovate (push) Successful in 1m9s
    Stable

    makiolaj released this 2026-06-28 20:52:17 +00:00 | 345 commits to main since this release

    Added

    • 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
  • v2.11.2
    All checks were successful
    Release — F-Droid repo + Gitea release / detect (push) Successful in 4s
    Release — F-Droid repo + Gitea release / release (push) Successful in 10m29s
    Stable

    makiolaj released this 2026-06-28 11:03:52 +00:00 | 354 commits to main since this release

    Added

    • 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