The Codeberg publish has never once succeeded — 0.2.1, 0.2.2, 0.3.0, 0.3.1 and 0.3.2 all failed, and 0.3.0 was published by hand. Neither previous fix could have worked, because the cause isn't in this file: ref writes to jlmakiola/agendula on Codeberg fail. A tag push returns "cannot lock references" and POST /tags returns an empty-bodied 500, while the identical calls succeed on jlmakiola/calendula with the same token. Creating a release mints a tag, so it inherited the same failure. Attaching a release to a tag that is ALREADY there needs no ref write and returns 201. So split the responsibility the way it should have been: the push mirror owns delivering the tag, this step only attaches to it. Poll for the tag, then POST with no target_commitish so the API attaches rather than resolves a commit and mints one. If the tag never lands, fail with a pointer at the mirror instead of trying to create it. Drop continue-on-error. It reported green across five releases that never published, which is how 0.3.1's crash fix reached F-Droid while the Codeberg and Obtainium users who hit the crash got nothing. Tested against the live API before committing (unlike its predecessors): tag-present attaches 201, tag-absent exits 1 with the diagnostic. Note this does not by itself restore publishing — the mirror cannot write the v0.3.2 tag either, so Codeberg must repair the repo's ref store first. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
License
MIT — see LICENSE.