Files
Jean-Luc Makiolaandmakiolaj dd08c035df
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Renovate / renovate (push) Successful in 54s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 21m44s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 55s
Release 1.1.0 (#51)
Agendula 1.1.0. Merging this triggers the release pipeline (F-Droid, Codeberg, Play) and mints the v1.1.0 tag.

- Tags, synced as CATEGORIES (#35)
- Saved filters, also usable in the Tasks widget (#47)
- Offline flavor without sync or network, published to Codeberg only (#39)
- New Today, Up next, Lists and Week widgets; widgets can show several lists
- Synced lists can be renamed and deleted
- All-day tasks no longer land a day off west of UTC in smart lists and filters

versionName 1.1.0 / versionCode 1010099. CHANGELOG has the 1.1.0 section, and What's New is written for en-US, en-GB, de-DE, pt-BR, plus new fr-FR and ar.

After the tag lands, fdroiddata!49998 needs a 1.1.0 build entry with gradle: full.

Closes #35, closes #39, closes #47

Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de>
Reviewed-on: https://codeberg.org/jlmakiola/agendula/pulls/51
2026-10-10 15:06:07 +02:00
..
2026-10-10 15:06:07 +02:00

Official F-Droid submission

de.jeanlucmakiola.agendula.yml is the fdroiddata recipe for the official F-Droid repo. Same model as Calendula: F-Droid rebuilds each tag from source, checks it is byte-identical to our signed APK (Binaries), and publishes our binary, so official and self-hosted installs share a signature and update each other. A version that doesn't reproduce is skipped, never published wrong.

Verified (2026-09-24)

  • From-source rebuild matches the distributed APK. v0.4.0 rebuilt from its tag against the published agendula_v0.4.0.apk: 136 of 140 entries identical. The other four were datastore's libdatastore_shared_counter.so, stripped only because the local host had an NDK and CI doesn't. Fixed with jniLibs { keepDebugSymbols += "**/*.so" }; the rebuild now ships them byte-identical to the published APK. 1.0.0 is the first release with it.
  • Signing block is clean: v2 signature + verity padding, no dependency metadata. fdroid scanner finds no non-free classes and no extra blocks.
  • All dependencies are FOSS (no Play Services, Firebase or analytics). Crash reports are shown to the user and only sent by hand.
  • Committed version equals the tag-derived one, so the pipeline's versionCode pin is a no-op and F-Droid building the tag as-is matches.
  • floret-kit is pinned to a tagged commit on its Codeberg main, so the submodules: true checkout resolves from a clean clone.
  • App signing cert SHA-256 (AllowedAPKSigningKeys) read from the published APK: 097946b3…af120. Agendula's own key, not Calendula's.

scripts/check_reproducible_release.sh guards all of the above on every PR.

Listing

Nothing listing-related goes in the recipe. F-Droid harvests fastlane/metadata/android/<locale>/ from the tagged source, the same tree Play is fed from: title, descriptions, icon, feature graphic, screenshots and changelogs/<versionCode>.txt. title.txt becomes the app name per locale.

Status

Submitted as fdroiddata!49998 on 2026-09-24. Its CI rebuilt v1.0.0 and verified it against our published APK ("compared built binary to supplied reference binary successfully").

The file here is a copy of the submitted recipe. fdroiddata's copy is the one that counts; after the merge F-Droid picks up new vX.Y.Z tags on its own (AutoUpdateMode), so there is no per-release work there. Beta tags (vX.Y.Z-beta.N) don't match UpdateCheckMode: Tags ^v[0-9.]+$, so betas stay off the official repo; keep that pattern if the recipe ever changes. Only a change to the recipe itself (a new submodule, a build flag) needs an MR, pinned to a full commit hash, never a tag.

⚠️ Product flavors (from 1.1.0). The app now has full and offline flavors, and gradle: - yes would build both. The first build entry for a flavored version must say gradle: - full, and AutoUpdateMode copies the last entry forward, so it is a one-time recipe MR before that tag lands. The offline flavor is not submitted to F-Droid.

The recipe says License: MIT; :dav is vendored MPL-2.0 (dav/PROVENANCE.md). If the reviewer asks, change it to MIT AND MPL-2.0.