fix(release): update stale Play whatsnew to 0.4.10; correct runbook (#128)
The Play publish workflow uses distribution/whatsnew/whatsnew-en-US (its whatsNewDirectory), NOT the fastlane changelogs/*.txt (those feed F-Droid). That file was stale at v0.4.7 — so 0.4.8/0.4.9/0.4.10 all shipped to the internal track with outdated release notes. Updated it to 0.4.10 (<500 chars). Also corrected PUBLISHING.md, which I'd previously written wrong: (a) app.json android.versionCode is overridden by CI (github.run_number+100), so 0.4.10's real Play versionCode is 142, not the app.json value — hand-bumping it is pointless for Play; (b) Play release notes live in distribution/whatsnew, not fastlane changelogs. Discovered while promoting 0.4.10 (the Console showed versionCode 142, not the app.json 37). Claude-Session: https://claude.ai/code/session_01T12AhSnQVrSxNnvwfCx2z6 Co-authored-by: engineer <engineer@macbookpro.lan> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -44,16 +44,17 @@ It builds an AAB (Android App Bundle), signs it with the release keystore, and u
|
|||||||
|
|
||||||
## Releasing (proven runbook)
|
## Releasing (proven runbook)
|
||||||
|
|
||||||
1. Bump `version` in `package.json` **and** `app.json`, and `android.versionCode` in `app.json` (must be higher than the current Play build). Add a changelog at `fastlane/metadata/android/en-US/changelogs/<versionCode>.txt`. Merge to `main`.
|
1. Bump `version` in `package.json` **and** `app.json` (`expo.version`). Do **not** bother hand-bumping `android.versionCode` for Play — the publish workflow overrides it with `github.run_number + 100` at build time (so the Play `versionCode` is e.g. `142`, unrelated to the number in `app.json`; that field only matters for local/other builds).
|
||||||
2. Tag the release: `git tag -a vX.Y.Z <sha> -m "..." && git push origin vX.Y.Z`. This triggers the publish workflow → **internal** track.
|
2. Update the **Play** release notes in `distribution/whatsnew/whatsnew-en-US` (single file, applied to the build being uploaded; **max 500 chars**). This — not the `fastlane/metadata/android/en-US/changelogs/*.txt` files — is what the Play publish uses (`whatsNewDirectory` in the workflow). The fastlane `changelogs/*.txt` files feed **F-Droid**, not Play; keep them for F-Droid but don't expect Play to read them. Merge to `main`.
|
||||||
3. Verify the publish run is green, then confirm the build on the internal track.
|
3. Tag the release: `git tag -a vX.Y.Z <sha> -m "..." && git push origin vX.Y.Z`. This triggers the publish workflow → **internal** track.
|
||||||
4. **Promote to production** (see below).
|
4. Verify the publish run is green, then confirm the build on the internal track. Note its real Play `versionCode` (run_number+100) — that's what you promote, not the `app.json` number.
|
||||||
|
5. **Promote to production** (see below).
|
||||||
|
|
||||||
## Promoting to production
|
## Promoting to production
|
||||||
|
|
||||||
Production is **not** published by CI by default — the service account is scoped to the internal track only, which is intentional (a human gate before a build reaches all users).
|
Production is **not** published by CI by default — the service account is scoped to the internal track only, which is intentional (a human gate before a build reaches all users).
|
||||||
|
|
||||||
- **Recommended — Play Console:** Production → Create release → **Add from library** → select the `versionCode` already uploaded to internal → review → roll out. No rebuild.
|
- **Recommended — Play Console:** Production → Create release → **Add from library** → select the build by its **versionName** (e.g. `0.4.10`) and confirm its `versionCode` (the run_number-derived one, e.g. `142` — not the `app.json` number) → review → roll out. If the "What's new" field is empty, paste from `distribution/whatsnew/whatsnew-en-US`. No rebuild.
|
||||||
- **Fully automated (optional):** grant the CI service account **"Release to production"** for this app in Play Console → Users & permissions, then run the workflow's `workflow_dispatch` with `track=production`, `status=completed`. **Without that permission the production dispatch fails with `The caller does not have permission` after building** — so don't dispatch `track=production` until the service account has been granted production access.
|
- **Fully automated (optional):** grant the CI service account **"Release to production"** for this app in Play Console → Users & permissions, then run the workflow's `workflow_dispatch` with `track=production`, `status=completed`. **Without that permission the production dispatch fails with `The caller does not have permission` after building** — so don't dispatch `track=production` until the service account has been granted production access.
|
||||||
|
|
||||||
## Fastlane (Alternative)
|
## Fastlane (Alternative)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
v0.4.7 — Reconnecting banner + push notifications for approvals
|
v0.4.10 — Try it instantly, plus reliability & security fixes
|
||||||
|
|
||||||
See a live status banner when your server connection drops ("Reconnecting...") and a confirmation when it recovers. Agent approval requests and questions now send an OS push notification when the app is in the background. Privacy improvements: URL credential scrubbing is now covered by automated tests.
|
New: tap "Try a demo" to see OpenCode in action with no server needed. Clearer setup explaining the app connects to a computer running "opencode serve". Security: "Require Biometric to Open" now re-locks whenever the app is backgrounded, and editing a connection's password now saves. Plus more reliable notifications and fixes for disappearing messages, the session view, and a stuck spinner after a network drop.
|
||||||
|
|||||||
Reference in New Issue
Block a user