Release 1.0.0 (#20)
First stable release. Merging this bumps versionName to 1.0.0 and triggers the release pipeline (F-Droid, Codeberg, Play). **App** - CalDAV sync built in, with Agendula's own task store; OpenTasks / tasks.org stay available and can be copied over in Settings → Storage - repeating tasks, several reminders per task, lists managed in the app, iCalendar import/export, widget and Quick Settings tile - a list can be kept out of the smart lists (#18) and gets its own notification channel (#17) - duplicate a task with its subtasks (#16) - HTML descriptions shown as plain text (#15) - relative day words in reminder notifications (#14) - asks for exact-alarm access instead of claiming USE_EXACT_ALARM, and re-arms reminders when that access changes **Release plumbing** - floret-kit bumped to v0.4.0; the old pin was never pushed, so a clean clone couldn't check out the submodule. 0.4.0 drops CrashConfig.issueTitle (crash issues are always filed in English) - prebuilt .so files ship unstripped, so the build no longer depends on whether an NDK is installed; now checked by check_reproducible_release.sh - official F-Droid recipe in docs/fdroid-official/, to submit to fdroiddata once v1.0.0 is tagged - Google Play: fastlane uploads the AAB and every locale's What's New after the F-Droid release; a separate listing lane pushes text and graphics from the fastlane tree, which CI now checks against Play's limits - store listing: title "Agendula: Tasks" in every locale, icon, feature graphic, screenshots and 1.0.0 changelogs in en-US, en-GB, de-DE and pt-BR crash_report_issue_title is now unused but stays until Weblate removes the translated copies. Closes #14, closes #15, closes #16, closes #17, closes #18 Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de> Reviewed-on: https://codeberg.org/jlmakiola/agendula/pulls/20
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 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.
|
||||
|
||||
## Submitting
|
||||
|
||||
After `v1.0.0` is tagged and `agendula_v1.0.0.apk` is live on the self-hosted
|
||||
repo:
|
||||
|
||||
1. Fork `https://gitlab.com/fdroid/fdroiddata`, copy the recipe to
|
||||
`metadata/de.jeanlucmakiola.agendula.yml`.
|
||||
2. `fdroid readmeta && fdroid lint de.jeanlucmakiola.agendula`, then
|
||||
`fdroid build -v -l de.jeanlucmakiola.agendula` to rebuild and verify.
|
||||
3. Open the merge request. Later versions are picked up from new `vX.Y.Z` tags
|
||||
(`AutoUpdateMode`), so there is no per-release work in fdroiddata.
|
||||
|
||||
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`.
|
||||
@@ -0,0 +1,44 @@
|
||||
# Draft fdroiddata recipe for the OFFICIAL F-Droid repository. Submitted as
|
||||
# metadata/de.jeanlucmakiola.agendula.yml in fdroiddata; see README.md here.
|
||||
# Not the self-hosted control file (that is ../../fdroid-metadata/).
|
||||
#
|
||||
# Reproducible build + developer-signed binary: F-Droid rebuilds from source,
|
||||
# compares against our APK from `Binaries`, and on a match publishes OUR binary,
|
||||
# so official and self-hosted installs share one signature.
|
||||
|
||||
Categories:
|
||||
- Task
|
||||
License: MIT
|
||||
AuthorName: Jean-Luc Makiola
|
||||
SourceCode: https://codeberg.org/jlmakiola/agendula
|
||||
IssueTracker: https://codeberg.org/jlmakiola/agendula/issues
|
||||
Translation: https://weblate.dev.jeanlucmakiola.de/engage/agendula/
|
||||
Changelog: https://codeberg.org/jlmakiola/agendula/src/branch/main/CHANGELOG.md
|
||||
Donate: https://ko-fi.com/jeanlucmakiola
|
||||
|
||||
AutoName: Agendula
|
||||
|
||||
RepoType: git
|
||||
Repo: https://codeberg.org/jlmakiola/agendula.git
|
||||
Binaries: https://apps.dev.jeanlucmakiola.de/dev/fdroid/repo/agendula_v%v.apk
|
||||
|
||||
# 1.0.0 is the first release that carries every reproducibility fix
|
||||
# (scripts/check_reproducible_release.sh); 0.x releases strip datastore's .so
|
||||
# files host-dependently and won't verify. submodules: floret-kit is an
|
||||
# included build. No key.properties on the buildserver, so the release build
|
||||
# comes out unsigned, which is what F-Droid compares.
|
||||
Builds:
|
||||
- versionName: 1.0.0
|
||||
versionCode: 10000
|
||||
commit: v1.0.0
|
||||
subdir: app
|
||||
submodules: true
|
||||
gradle:
|
||||
- yes
|
||||
|
||||
AllowedAPKSigningKeys: 097946b32c375a8cc81fcdf1985d601c06134b29613d9d8632f59178085af120
|
||||
|
||||
AutoUpdateMode: Version
|
||||
UpdateCheckMode: Tags ^v[0-9.]+$
|
||||
CurrentVersion: 1.0.0
|
||||
CurrentVersionCode: 10000
|
||||
Reference in New Issue
Block a user