Skip to content

Release prep v0.4.0 — F-Droid readiness, launcher icon, PL/UK strings#1

Open
RomanTsisyk wants to merge 1 commit into
masterfrom
release-prep-v0.4.0
Open

Release prep v0.4.0 — F-Droid readiness, launcher icon, PL/UK strings#1
RomanTsisyk wants to merge 1 commit into
masterfrom
release-prep-v0.4.0

Conversation

@RomanTsisyk

Copy link
Copy Markdown
Owner

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:assembleRelease succeeds in ~1 min producing a 4 MB R8-minified APK; :test passes on core-jsonstat, core-common, feature-population, feature-trade and feature-science.

What changed

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: reads keystore.properties when present, falls back to the debug keystore otherwise so contributors and the F-Droid build server can produce installable APKs without ceremony. keystore.properties was already in .gitignore.

App-side polish

  • Adaptive launcher icon (mipmap-anydpi-v26) with vector foreground and #003399 EU-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.
  • 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 so 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.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 addressing 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 + iosApp/README.md.

What is intentionally not in this PR

  • iOS Xcode wrapper regeneration — needs Xcode locally, tracked as P0-2 in NEXT_STEPS.md.
  • Overview bottom-nav destination — wiring the empty BottomTabDestination.Overview to a real screen is grant-period work.
  • Signed release keystore — committed in .gitignore; will be generated locally per docs/RELEASING.md before the v0.4.0 tag is cut.

Verification

  • ./gradlew :composeApp:assembleRelease — succeeds, APK = 4.0 MB, SHA-256 8c3246d1eb1249e2c7411f2e93bc10883b53a33017f3f33299dc3c195f6f4beb.
  • Adaptive icon + legacy mipmaps verified in APK with unzip -l.
  • PL + UK strings verified in APK with unzip -p resources.arsc | strings | grep Oficjalne.
  • ./gradlew :core-jsonstat:test :core-common:test :feature-{population,trade,science}:test — green.
  • iOS framework link — out of scope (P0-2).
  • On-device smoke test — recommended before tagging; APK is installable from the build outputs.

Suggested merge + release flow

  1. Squash-merge or merge-commit this PR into master.
  2. Locally: git tag -a v0.4.0 -m "EU Stats Multiplatform v0.4.0" and git push origin v0.4.0.
  3. 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).
  4. After tag is up, open the merge request against fdroiddata using metadata/eu.eurostat.app.yml.

🤖 Generated with Claude Code

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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant