- Android release signing reads a gitignored key.properties, falling back to debug keys so contributors can still build --release. - CHANGELOG.md (human, newest-first) + Fastlane/F-Droid metadata (en/es) with descriptions derived from docs/intro.md. - docs/release.md: the by-hand build + manual smoke checklist (no CI yet). - inventory_scale_test guards the list query against N+1 at 3000 varieties.
2.7 KiB
Releasing Tanemaki (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.yamlasMAJOR.MINOR.PATCH+BUILD(e.g.0.1.0+1). Flutter maps+BUILDto AndroidversionCodeand the rest toversionName. - Record every user-visible change in
../CHANGELOG.mdand add a matching per-locale note underapps/app_seeds/fastlane/metadata/android/<locale>/changelogs/<versionCode>.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).
- Create a keystore (keep it and its passwords safe — losing it means you can
never update the app under the same identity):
keytool -genkey -v -keystore ~/tane-release.jks \ -keyalg RSA -keysize 4096 -validity 10000 -alias tane - Create
apps/app_seeds/android/key.properties(never commit it):storeFile=/home/you/tane-release.jks storePassword=… keyAlias=tane keyPassword=…
Build the beta by hand
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; icon and splash are generated by
flutter_launcher_icons / flutter_native_splash (see pubspec.yaml).
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):
- Cold start → intro carousel → home.
- Quick-add a seed with a photo; it appears in the list.
- Mark a lot to share; the "I share" filter and printable catalog appear.
- Save a backup, then restore it (and test the recovery sheet + code on a second install).
- 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).