Files
agendula/docs
Jean-Luc Makiola fdbc236ab4 docs(sync): bring SYNC.md in line with owning the store
The document was written against the vendored provider and still said the
storage question was settled that way. Owning the store answered several
of its open questions and deleted others outright, so the corrections are
marked inline the way the rest of the file marks them, rather than
quietly rewritten.

Closed: the Local->Synced migration (account_id is a nullable FK, so
attaching an account is an UPDATE), the recurring-completion model (the
store writes model (a), RECURRENCE-ID overrides sharing the master's
UID), the Auto Backup / cleanUpLists data-loss path, and the lib-recur
version trap. Phase 0's UIDs-at-creation and backup safety are shipped.
The provider-mechanism table is kept as External-mode history rather than
deleted — that code still runs in OpenTasks and tasks.org.

Effort restated: 11.5-15 weeks minus the 2.5-4 owning the store removes,
so roughly 8-11. Also states plainly at the top that no sync code exists
and that ICalendarWriter is the export half of the mapper only.
2026-09-04 15:53:01 +02:00
..

Agendula — documentation

Agendula is a Material 3 Expressive task app for Android. It carries its own task store — the dmfs task provider vendored under our own authority — so it is complete and local-first with nothing else installed; an external provider (OpenTasks / tasks.org, synced by DAVx5 / SmoothSync / DecSync) is a user choice rather than a requirement, and our own CalDAV sync is the 1.x arc. Sibling to Calendula. See the top-level ../README.md for the project pitch.

Index

Doc What it covers
ARCHITECTURE.md How Agendula is built today — layers, the data seam, provider resolution, the reminder engine, DI, build/tooling, manifest. Start here to work on the code.
ROADMAP.md Status and what's next — milestones (M0M6 + Posture B), what's done, open decisions, how to build/verify.
STORAGE-AND-SYNC.md Where task data lives — the decision to ship our own provider, the storage modes, permissions, distribution, and the dead ends. Supersedes PLAN.md on storage.
SYNC.md How data reaches a server — the CalDAV sync adapter: the VTODO ↔ TaskContract mapper, Nextcloud sign-in, the engine, libraries and their licenses. Step 5 of STORAGE-AND-SYNC.md.
STORAGE-DECISION.md Keep the vendored provider, or build our own? The measured cost of both. Decided: build our own.
OWN-STORE.md Agendula's own Room store — the schema, recurrence design, migration off the vendored provider, and the six-phase plan that deletes :provider. Supersedes the "keep the provider" position in STORAGE-AND-SYNC.md.
PLAN.md The original implementation plan and design rationale — the A-now-B-later thesis, what transfers from Calendula, the locked decisions. The "why".
RELEASING.md How to cut a release — the git-tag-as-source-of-truth flow, CI jobs, F-Droid repo, required secrets.
../provider/PROVENANCE.md What the vendored :provider module is, where it came from, and every deviation from upstream dmfs.

Also: ../CHANGELOG.md (Keep a Changelog format; tag sections feed the release notes).

How the docs relate

  • PLAN is the original design decisions (the "why"), left as the historical record. On storage it is superseded by STORAGE-AND-SYNC.
  • STORAGE-AND-SYNC and SYNC are the standing decision documents: the first settles where data lives, the second how it syncs. Both record rejected alternatives on purpose, so decisions don't get relitigated.
  • ARCHITECTURE is the current shape of the code (kept in sync with the source as it grows).
  • ROADMAP is the moving status layer (update as milestones land).
  • RELEASING is the operational runbook.