chore(fdroid): single-source fastlane metadata + reproducible-build prep #21
Reference in New Issue
Block a user
Delete Branch "chore/release-verification-process"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Prep work to dual-publish Calendula to the official F-Droid repo alongside the self-hosted one — same signed binary in both channels (reproducible build + developer-signed via
AllowedAPKSigningKeys), so users migrate with no reinstall.What's here
fastlane/metadata/android/<locale>/(git renames). Official F-Droid harvests it from source; the self-hosted repo regenerates its localized layout from the same tree viascripts/fastlane_to_fdroid_localized.sh(verified byte-identical to the previous metadata).scripts/sync_changelog_to_fastlane.shwrites the currentCHANGELOG.mdsection into the fastlane changelog; the transform carries it across, so one changelog source feeds both channels.release.yamlruns the sync before building metadata;RELEASING.mdupdated.vcsInfo { include = false }on the release build removes AGP's git-metadata file (version-control-info.textproto), the only thing that differed from the distributed APK. End-to-end check vs the publishedcalendula_v2.7.1.apk: every app entry byte-identical; with the fix, 0 non-signature differences. Run-to-run and cross-JDK (17/21) reproducibility also confirmed.docs/fdroid-official/— draft fdroiddata recipe + submission notes.ci.yamlskips the Android build on fastlane-only changes.Verification
vcsInfofix validated (file gone, build otherwise identical).Safe to merge — does not cut a release
versionNameis unchanged (2.7.1, tag exists), sodetectis a no-op on merge. ThevcsInfofix takes effect on the next real release (bump → e.g. v2.7.2), which becomes the first version the official repo can reproduce; point the fdroiddata Builds entry there.🤖 Generated with Claude Code
Make fastlane/metadata/android/ the single source of truth for store listing metadata, consumed directly by the official F-Droid repo and transformed into the self-hosted repo's localized layout at release time. - Move fdroid-metadata/<appid>/<locale>/ -> fastlane/metadata/android/<locale>/ (git-tracked renames: summary->short_description, description->full_description, + title.txt, images/icon.png, images/phoneScreenshots/); keep the app-level .yml control file for the self-hosted `fdroid update`. - Add scripts/fastlane_to_fdroid_localized.sh (fastlane -> F-Droid localized, incl. changelogs) and scripts/sync_changelog_to_fastlane.sh (CHANGELOG.md -> fastlane changelog); verified byte-identical to the previous metadata. - release.yaml: build self-hosted metadata from the fastlane tree and sync the per-version changelog before the transform (one changelog source for both channels). - Disable AGP VCS-info embedding on release builds (vcsInfo { include = false }) so builds reproduce byte-for-byte vs the distributed APK — the only file that otherwise differed (META-INF/version-control-info.textproto). Effective from the next release. - Add docs/fdroid-official/ (draft fdroiddata recipe: reproducible build + AllowedAPKSigningKeys + Binaries + notes). - Repoint README screenshots/icon, update docs/README + RELEASING, and skip the Android build on fastlane-only changes (ci.yaml). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>