Product-name mentions → Tane; backup-file extension .tanemaki → .tane; website tanemaki.app → tane.comunes.org. Etymology-bearing docs (README, VISION, PLAN, CLAUDE, intros) handled separately.
71 lines
2.7 KiB
Markdown
71 lines
2.7 KiB
Markdown
# 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/<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`).
|
|
|
|
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`).
|
|
|
|
## 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).
|