Release prep v0.4.0 — F-Droid readiness, launcher icon, PL/UK strings#1
Release prep v0.4.0 — F-Droid readiness, launcher icon, PL/UK strings#1RomanTsisyk wants to merge 1 commit into
Conversation
Pre-flight pass to make the v0.4.0 release credible to public-interest
grant reviewers and downstream packagers. No feature code changes —
only release infrastructure, metadata and documentation.
Build & signing
- Unify applicationId and namespace on eu.eurostat.app (previously
diverged as eu.eustats.app / eu.eurostat.app).
- Bump versionCode 1 → 40 and versionName 0.1.0 → 0.4.0 to match the
phase-4 state already described in README and CHANGELOG.
- Wire release signing config that reads keystore.properties when
present and falls back to the debug keystore for contributors and
the F-Droid build server. keystore.properties was already in
.gitignore.
- :composeApp:assembleRelease succeeds — APK is 4 MB (R8 minify on)
with SHA-256 8c3246d1eb1249e2c7411f2e93bc10883b53a33017f3f33299dc3c195f6f4beb.
App-side polish
- Adaptive launcher icon (mipmap-anydpi-v26) with vector foreground
and #003399 EU-blue background, plus legacy mipmap PNGs at mdpi,
hdpi, xhdpi, xxhdpi and xxxhdpi for pre-API-26 devices.
- Expand strings.xml from one string to ~25 covering nav tabs,
module names, common UI verbs, source attribution and disclaimer.
- Add values-pl and values-uk translations of the same strings so
the localization claim in the README is credible at runtime.
- Pin resourceConfigurations to en, pl, uk in composeApp/build.gradle.kts
to keep AAB / split APKs from bundling unused locales.
F-Droid readiness
- fastlane/metadata/android/{en-US,pl,uk}/ — title, short and full
descriptions, 1024×500 feature graphic, 512×512 icon, nine phone
screenshots, changelogs/40.txt per locale.
- metadata/eu.eurostat.app.yml — F-Droid build recipe ready for the
fdroiddata merge request once v0.4.0 is tagged upstream.
- docs/FDROID.md — user-facing install guide and review-process FAQ.
Documentation
- CHANGELOG.md (Keep a Changelog 1.1.0 / SemVer) with retroactive
0.1 → 0.4 entries and an Unreleased section pointing at the v1.0
roadmap.
- docs/RELEASING.md — maintainer workflow for cutting a release,
including keystore generation, fdroiddata MR steps and CI notes.
- README — five status badges (license, latest release, CI build,
KMP, F-Droid), Install table covering F-Droid / GitHub release /
desktop / iOS, and a Sustainability & Governance section
documenting funding model, distribution plan, maintainer
succession, decision making and the no-telemetry invariant.
- Replaced the TODO header in iosApp/iosApp.xcodeproj/project.pbxproj
with a clearer explanation that the placeholder is intentional and
pointing at iosApp/setup-ios.sh and iosApp/README.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6de0a1a17e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - versionName: 0.4.0 | ||
| versionCode: 40 | ||
| commit: v0.4.0 | ||
| subdir: composeApp |
There was a problem hiding this comment.
Run F-Droid build from the Gradle root
With this subdir, F-Droid will execute the Gradle build from composeApp/ rather than the repository root; I checked fdroidserver's Gradle path handling and it sets the working directory to build_dir/subdir before running assembleRelease. This repo's settings.gradle.kts and build-logic live at the root, and composeApp/build.gradle.kts uses the convention plugin plus projects.* sibling modules, so starting Gradle inside composeApp/ cannot resolve the build for the fdroiddata submission. Omit subdir and point output at composeApp/build/... instead.
Useful? React with 👍 / 👎.
Summary
Pre-flight pass to make the v0.4.0 release credible to public-interest grant reviewers (NLnet NGI Zero Commons) and downstream packagers (F-Droid). No feature code changes — only release infrastructure, metadata and documentation.
The branch is built and tested:
./gradlew :composeApp:assembleReleasesucceeds in ~1 min producing a 4 MB R8-minified APK;:testpasses oncore-jsonstat,core-common,feature-population,feature-tradeandfeature-science.What changed
Build & signing
applicationIdandnamespaceoneu.eurostat.app(previously diverged aseu.eustats.app/eu.eurostat.app).versionCode1 → 40 andversionName0.1.0 → 0.4.0 to match the phase-4 state already described in README and CHANGELOG.keystore.propertieswhen present, falls back to the debug keystore otherwise so contributors and the F-Droid build server can produce installable APKs without ceremony.keystore.propertieswas already in.gitignore.App-side polish
mipmap-anydpi-v26) with vector foreground and#003399EU-blue background — three white ascending bars + a yellow EU-star — plus legacy mipmap PNGs at mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi for pre-API-26 devices.strings.xmlfrom one string to ~25 covering nav tabs, module names, common UI verbs, source attribution and disclaimer.values-pl/andvalues-uk/translations of the same strings so the localization claim in the README is credible at runtime.resourceConfigurationstoen, pl, ukso AAB / split APKs don't bundle unused locales.F-Droid readiness
fastlane/metadata/android/{en-US,pl,uk}/— title, short and full descriptions, 1024×500 feature graphic, 512×512 icon, nine phone screenshots (one per module),changelogs/40.txtper locale.metadata/eu.eurostat.app.yml— F-Droid build recipe ready for thefdroiddatamerge request oncev0.4.0is tagged upstream.docs/FDROID.md— user-facing install guide and review-process FAQ.Documentation
CHANGELOG.md(Keep a Changelog 1.1.0 / SemVer) with retroactive 0.1 → 0.4 entries and an Unreleased section pointing at the v1.0 roadmap.docs/RELEASING.md— maintainer workflow for cutting a release, including keystore generation, fdroiddata MR steps and CI notes.README— five status badges (license, latest release, CI build, KMP, F-Droid), Install table covering F-Droid / GitHub release / desktop / iOS, and a Sustainability & Governance section addressing funding model, distribution plan, maintainer succession, decision making and the no-telemetry invariant.iosApp/iosApp.xcodeproj/project.pbxprojwith a clearer explanation that the placeholder is intentional and pointing atiosApp/setup-ios.sh+iosApp/README.md.What is intentionally not in this PR
NEXT_STEPS.md.BottomTabDestination.Overviewto a real screen is grant-period work..gitignore; will be generated locally perdocs/RELEASING.mdbefore thev0.4.0tag is cut.Verification
./gradlew :composeApp:assembleRelease— succeeds, APK = 4.0 MB, SHA-2568c3246d1eb1249e2c7411f2e93bc10883b53a33017f3f33299dc3c195f6f4beb.unzip -l.unzip -p resources.arsc | strings | grep Oficjalne../gradlew :core-jsonstat:test :core-common:test :feature-{population,trade,science}:test— green.Suggested merge + release flow
master.git tag -a v0.4.0 -m "EU Stats Multiplatform v0.4.0"andgit push origin v0.4.0.gh release create v0.4.0 composeApp/build/outputs/apk/release/composeApp-release.apk --title "v0.4.0" --notes-file <(awk '/## \[0.4.0\]/{flag=1;next}/## \[/{flag=0}flag' CHANGELOG.md).metadata/eu.eurostat.app.yml.🤖 Generated with Claude Code