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.
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.
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
TaskContractprovider — 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. Seedocs/ROADMAP.mdfor status,docs/ARCHITECTURE.mdfor how it's built, anddocs/PLAN.mdfor 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.
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.