makiolaj a6a4287000 build: pin floret-kit at v0.3.0
The submodule sat nine commits past v0.2.1, on a bare `main` commit. Naming
the pin was meant to be a fresh tag on our side; it turned out v0.3.0 had
already been cut upstream and our pin was fourteen commits behind it —
e047a2b is an ancestor of the tag, so this moves forward onto a released
version rather than sideways.

What it brings, all in `components` (core-time, core-reminders, core-locale,
core-crash and identity are untouched): a navigation slot, full-bleed content
and scrolling actions for the onboarding shell, step progress for the
onboarding scaffold, long-press and styled text on a grouped row, a per-option
summary slot on OptionPicker, AboutCard joining a grouped list, and
GroupedListInset exported.

Agendula uses none of the new surface yet, so this is a pin move rather than a
feature: nothing in `app/` changed, and nothing had to. Verified from a clean
build — 152 unit tests green, lint identical to before the bump (88 issues,
same categories), floret-kit's own test suite green, and the R8 `releaseTest`
APK assembles.

The onboarding shell is the one place to look on a device: our
`ReminderOnboardingScreen` and `OnboardingHero` build on `Onboarding.kt`,
which is where 146 of the changed lines are. It compiles unchanged, but
"compiles" and "still lays out the way it did" are different claims, and the
device pass this release already owes is where the second one gets settled.
2026-09-21 13:52:31 +02:00
2026-09-04 14:09:25 +02:00

Agendula

A modern Material 3 Expressive task app for Android.
Keeps your tasks on your device, or on top of a tasks provider you already use. Open standards, no account required.

CI Android 10+ Kotlin + Compose Material 3 Expressive MIT License

Agendula is the task-list sibling to Calendula. Where Calendula is a pure front-end over Android's CalendarContract, Agendula keeps its own store, designed around RFC 5545's VTODO — the same tasks DAVx5 (and SmoothSync, DecSync, …) sync out of your CalDAV server. It can also read and write a tasks provider you already have, for anyone already syncing that way.

The name rhymes with its sibling on purpose: Agendula is agenda — Latin for “things to be done” — given Calendula's -ula ending. Calendula keeps your days; Agendula keeps your to-dos. (A Calendula flower head is botanically a cluster of many small florets — so the two apps are florets of one bloom.)

Where your tasks live — your choice

Where Sync Needs
On your device (default) Agendula's own database none yet — CalDAV sync of our own is planned nothing. No account, no permissions, no other app
In a provider you already use OpenTasks or tasks.org whatever syncs it for you — DAVx5 and friends that app installed, and its read/write permission

Agendula's own store is an ordinary app database — nothing is published to other apps, so there is no authority to clash over and no permission to grant. It coexists with OpenTasks rather than replacing it: installing one never breaks the other, and if you already sync through a provider, that keeps working exactly as it did.

Switching between the two moves nothing — each store keeps its own tasks — so Settings → Storage asks before it switches, and offers to copy a provider's tasks into Agendula's own store when you want to move over. The copy is taken once and the originals stay where they are; it is not an ongoing sync in either direction.

Recurring tasks are expanded per RFC 5545, and everything the schema does not model is round-tripped verbatim rather than dropped — so passing your tasks through Agendula does not quietly lose fields a server sent.

Your tasks are exportable as standard iCalendar .ics files at any time, because data you can't take with you isn't really yours.

Status: backend complete, UI catching up. Storage, reads and writes, smart-list filtering, a self-scheduled reminder engine, and export are built and unit-tested. The Material 3 Expressive screens are being built on top, one at a time — the storage-mode picker and export screen are not there yet. See docs/ROADMAP.md for status, docs/ARCHITECTURE.md for how it's built, and docs/STORAGE-AND-SYNC.md for why storage works the way it does.

Sync sources (by design)

In external-provider mode Agendula works with anything that writes to that provider — DAVx5 (CalDAV), SmoothSync, CalDAV-Sync, DecSync CC, or any Android sync adapter — because it builds on the provider, not on any one sync app. Google Tasks / Microsoft To Do are out of scope by design (proprietary; they would mean owning a sync stack). Open standards — CalDAV / iCalendar / DecSync — are the lane.

Translations

Agendula ships in English so far, and would like not to. Translations are managed on a self-hosted Weblate, and partial ones are fine — an untranslated string simply falls back to English.

→ Help translate Agendula

No coding needed: register on the Weblate server, pick (or request) a language, and translate the strings in your browser. You can also reach this link in the app from the top of Settings → App language.

License

MIT — see LICENSE.

S
Description
A modern Material 3 Expressive task app for Android — sibling to Calendula, over the OpenTasks provider.
Readme MIT
3.9 MiB
v1.0.0
Latest
2026-09-24 20:09:02 +00:00
Languages
Kotlin 98.3%
Python 1%
Shell 0.6%
Ruby 0.1%