Jean-Luc Makiola 7940134381 docs: settle the storage and sync direction
Replaces the "Posture B = bundle OpenTasks under org.dmfs.tasks" working
notes (never committed) with the decided direction: Agendula gets its own
identity all the way down — its own bundled provider under its own
authority, its own sync adapter, and a user-chosen storage mode.

Squatting org.dmfs.tasks is out. The decisive reason is structural rather
than aesthetic: content-provider authorities are what a sync engine
resolves, but Android account visibility is keyed by package name, so a
bundled provider masquerading as OpenTasks could see zero accounts — and
the dmfs provider prunes task lists whose account has gone away. That is a
silent data-loss bug invisible to both sides. Owning the namespace makes it
impossible by construction. Play adds a second veto: a duplicate authority
or permission name is a failed install for anyone with OpenTasks.

Also records: vendoring the Apache-2.0 provider in-tree (JitPack and Maven
Central both verified dead ends), the three storage modes, staged
permissions split by runtime vs install-time, what belongs in floret-kit
rather than here, and the F-Droid + Play constraints to build for from day
one.

ARCHITECTURE.md §7 and the ProviderResolver KDoc still describe the old
Posture B and need a follow-up edit; ROADMAP.md and PLAN.md remain stale
pending their own pass.
2026-08-02 17:54:51 +02:00

Agendula

A modern Material 3 Expressive task app for Android.
Reads, writes, and reminds — on top of an existing tasks provider, with no own sync stack.

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 is a pure front-end over the OpenTasks TaskContract provider — the store that DAVx5 (and SmoothSync, DecSync, …) syncs your CalDAV VTODO tasks into. No own database, no reinvented sync.

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.)

Status: data layer done, UI in progress. The full non-visual stack over the TaskContract provider — provider resolution, live-updating reads, writes, smart-list filtering, and a self-scheduled reminder engine — is built and unit-tested. The Material 3 Expressive screens are now being built on top, one at a time. See docs/ROADMAP.md for status, docs/ARCHITECTURE.md for how it's built, and docs/PLAN.md for the A-now-B-later design rationale.

Sync sources (by design)

Agendula works with anything that writes to the tasks 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.

Description
A modern Material 3 Expressive task app for Android — sibling to Calendula, over the OpenTasks provider.
Readme MIT 1.1 MiB
v0.2.0 Latest
2026-06-27 19:27:17 +00:00
Languages
Kotlin 96.3%
Shell 2.8%
Python 0.9%