# Releasing Tane (manual, no CI yet) Block 1 ships as a self-contained Android app (desktop builds also work). There is no release pipeline yet — this page is the by-hand checklist. ## Versioning - Semantic version in [`apps/app_seeds/pubspec.yaml`](../apps/app_seeds/pubspec.yaml) as `MAJOR.MINOR.PATCH+BUILD` (e.g. `0.1.0+1`). Flutter maps `+BUILD` to Android `versionCode` and the rest to `versionName`. - Record every user-visible change in [`../CHANGELOG.md`](../CHANGELOG.md) and add a matching per-locale note under `apps/app_seeds/fastlane/metadata/android//changelogs/.txt`. ## Android signing (one-time) Release builds sign with your own keystore when a **gitignored** `apps/app_seeds/android/key.properties` exists; without it they fall back to debug keys (so contributors can still `flutter run --release`). 1. Create a keystore (keep it and its passwords safe — losing it means you can never update the app under the same identity): ```bash keytool -genkey -v -keystore ~/tane-release.jks \ -keyalg RSA -keysize 4096 -validity 10000 -alias tane ``` 2. Create `apps/app_seeds/android/key.properties` (never commit it): ```properties storeFile=/home/you/tane-release.jks storePassword=… keyAlias=tane keyPassword=… ``` ## Build the beta by hand ```bash cd apps/app_seeds dart run slang # i18n (if strings changed) dart run build_runner build --delete-conflicting-outputs # Drift (if schema changed) flutter test # must be green flutter build apk --release # or: flutter build appbundle --release ``` The APK lands at `apps/app_seeds/build/app/outputs/flutter-apk/app-release.apk`. ## Store metadata F-Droid / Fastlane-style metadata lives under `apps/app_seeds/fastlane/metadata/android/`. Descriptions are derived from [`intro.md`](intro.md); icon and splash are generated by `flutter_launcher_icons` / `flutter_native_splash` (see `pubspec.yaml`). ## Legal & Play compliance (before any store submission) - The privacy policy must be live at `https://tane.comunes.org/legal/privacy` (sources in [`legal/`](legal/README.md)) — Play Console requires the URL. - Fill the Data Safety form and the UGC/content-rating questionnaires from the answer sheet in [`legal/internal/play-compliance.md`](legal/internal/play-compliance.md). - The in-app requirements (community-rules acceptance on market entry, report and block) ship with the app; keep them working — Play's UGC policy review looks for them. ## Manual smoke test before shipping Automated tests cover behaviour; a release build still gets a human pass on a real device (the one place we allow manual testing — it validates the packaged artifact, it does not replace tests): 1. Cold start → intro carousel → home. 2. Quick-add a seed with a photo; it appears in the list. 3. Mark a lot to share; the "I share" filter and printable catalog appear. 4. Save a backup, then restore it (and test the recovery sheet + code on a second install). 5. Switch language (es / en / pt); check an RTL locale if the device offers one. ## Not in this release CI, Play Store automation, web builds (SQLCipher is unavailable on web), and the whole social layer (Block 2).