• v2.7.0 d20d446cbe

    v2.7.0
    All checks were successful
    CI / ci (push) Successful in 5m48s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 7m40s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 5s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 5m44s
    Stable

    makiolaj released this 2026-06-18 14:24:35 +00:00 | 7 commits to main since this release

    Added

    • Share a single event as an .ics file from the event detail screen — hands a
      standard calendar file to any app via the system share sheet.
    • Back up your local (device-only) calendars: Settings → Calendars → Export as
      .ics file writes every event of your on-device calendars to a file you
      choose. Local calendars aren't synced anywhere, so this is their only backup.
    • Open or share an .ics file into Calendula: a single event opens the create
      form prefilled for review, while a file with many events (e.g. a backup) opens
      a bulk import — pick a calendar and import them all. Re-importing a backup
      won't create duplicates (events are matched by their unique identifier), and
      anything Calendula can't represent (changed recurring occurrences, guest
      lists) is reported rather than silently dropped.

    Fixed

    • All-day events that cover a single day (e.g. a birthday) no longer show up on
      the following day as well — in the day, week and month views or on the event
      detail screen. The extra day came from interpreting the all-day date range in
      the device's time zone instead of UTC.
    • Fixed the app crashing immediately on every launch in the optimized release
      build: release code-shrinking (R8) was stripping a database class the
      home-screen widget framework needs, so the app died at startup before showing
      anything. Added the missing keep rule.
    Downloads
  • v2.6.0 64d0a89b28

    v2.6.0
    All checks were successful
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 5s
    CI / ci (push) Successful in 9m33s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 7m2s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 7m43s
    Stable

    makiolaj released this 2026-06-18 10:38:58 +00:00 | 14 commits to main since this release

    Added

    • App language can now be set from Android's system per-app language settings
      (Android 13+), in addition to the in-app picker in Settings — and the app is
      set up so further languages can be added by community translators

    Fixed

    • Changing the app language in Settings now takes effect immediately; the
      picker previously had no effect
    Downloads
  • v2.5.0 5e6defd4c7

    v2.5.0
    All checks were successful
    CI / ci (push) Successful in 12m38s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 2m19s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 10m1s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 8s
    Stable

    makiolaj released this 2026-06-17 13:33:58 +00:00 | 22 commits to main since this release

    Added

    • Home-screen widgets (two of them): an "Upcoming" agenda widget — a scrolling
      list of the next month of events grouped under day headers, with refresh and
      "New event" buttons — and a month-grid widget showing the full month with
      today highlighted, connected multi-day event bars, and prev/next/today
      navigation. Both reuse the in-app grouping and layout so they match the app
      exactly, respect your hidden-calendar choices, and refresh automatically when
      the calendar changes or the day rolls over. Tapping a day opens that day;
      tapping an event opens its details
    • App shortcut: long-press the Calendula icon for a "New event" action that
      jumps straight into the create-event form
    • Agenda view — a fourth top-level view alongside Month/Week/Day: a
      forward-looking list of upcoming events grouped under "Today"/"Tomorrow"/date
      headers, reachable from the view switcher
    • Jump to date — a "Jump to date" row in the navigation drawer opens a date
      picker and moves the active view (Month/Week/Day/Agenda) to the chosen day
    Downloads
  • v2.4.0 b62f097392

    v2.4.0
    All checks were successful
    CI / ci (push) Successful in 9m20s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 9m22s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 2m3s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 7s
    Stable

    makiolaj released this 2026-06-17 06:55:16 +00:00 | 27 commits to main since this release

    Added

    • Per-event colors: give a single event its own color, instead of always
      inheriting its calendar's. Add the new "Color" field from "More fields" in
      the event form. On calendars that publish their own color set — such as
      Google — you pick from that calendar's palette, so the color is stored
      with the event and shows correctly on every synced device. On local
      calendars you pick from Calendula's palette. "Reset" returns an event to
      its calendar's color
    • A new "Allow colors on unsupported calendars" setting (New event form,
      off by default) extends per-event colors to calendars that publish no
      color set of their own (some CalDAV). Such a color is kept on the device
      and may be dropped or overwritten on that calendar's next sync — a
      limitation of those calendars, called out plainly in the setting and on
      the color picker
    Downloads
  • v2.3.0 210ddff8d8

    v2.3.0
    All checks were successful
    CI / ci (push) Successful in 8m2s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 2m1s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 8m44s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 8s
    Stable

    makiolaj released this 2026-06-16 09:44:10 +00:00 | 28 commits to main since this release

    Changed

    • Redesigned Settings around the Material 3 grouped-list pattern: a large
      title that collapses into the toolbar as you scroll, category cards on the
      main screen, and dedicated sub-pages for Appearance, the new-event form, and
      Notifications. The theme, week-start and language pickers now use the app's
      standard option-card dialogs instead of dropdown menus
    • About moved to the top of Settings as a card — app icon, author, and quick
      links to the source code and licence — with the version shown plainly at the
      foot of the list
    • The Calendars screen now uses the same grouped-card layout and collapsing
      title, and each calendar shows a soft pastel-tinted calendar glyph rather
      than a plain colour swatch
    • Redesigned the navigation drawer to match: a branded header, the
      Month / Week / Day switch and your calendars as grouped cards (with the
      active view highlighted), and the whole drawer now scrolls as one
    Downloads
  • v2.2.0 e194da3766

    v2.2.0
    All checks were successful
    CI / ci (push) Successful in 8m53s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 1m59s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 8m57s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 8s
    Stable

    makiolaj released this 2026-06-16 07:49:14 +00:00 | 29 commits to main since this release

    Added

    • Tap an empty slot in the day or week view to create an event there: the
      create form opens prefilled with that day and the tapped hour (snapped to
      the hour, one hour long). Tapping an existing event still opens it
    • Local calendars: create and manage device-only calendars that live
      entirely on this phone — no account, no sync — from a new "Calendars"
      screen in Settings. Give each a name, a colour, and an optional
      description; rename, recolour, or delete them later. Useful when you want
      a calendar without setting up an account
    • The Calendars screen also lists your synced calendars (DAVx5, ICSx5, …)
      grouped by account, each with a "Manage" button that opens the app the
      calendar actually comes from, plus an "Add account" shortcut to the
      system account settings. Calendula never touches a synced calendar's
      server itself — that stays with its own app

    Changed

    • Colour swatches in the calendar editor now preview the soft, pastel tone
      a calendar is actually drawn with, instead of a bright raw colour
    • The calendar editor reuses the event form's field and button styling for
      a consistent look
    Downloads
  • v2.1.0 15fb76005c

    v2.1.0
    All checks were successful
    CI / ci (push) Successful in 8m30s
    Release — F-Droid repo + Gitea release / ci (push) Successful in 2m3s
    Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 8m57s
    Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 8s
    Stable

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

    Added

    • The month view now shows real events in each day instead of coloured
      dots: all-day and multi-day events render as continuous bars at the top
      (a multi-day event is one connected bar across the days it spans, not a
      chip per day), with single-day timed events as filled pills beneath.
      Up to three rows show per day, then a "+N" dot indicator for the rest.
      Each day keeps a rounded surface background, matching the week and day
      views; today is marked with a filled circle on its number
    • The slide-out panel now has a "View" section to switch between Month,
      Week, and Day, mirroring the top-bar switcher pill — tapping a view
      selects it and closes the drawer. The current view is highlighted

    Fixed

    • Typing in the event title, location, and description fields no longer
      makes the cursor jump around: the form state's round-trip to the UI was
      hopping to a background dispatcher, so the text field saw a lagging value
      while typing. Only the calendar/preferences reads stay off the main
      thread now; the keystroke path is synchronous again
    Downloads