Main-push canaries previously went to Play internal; tags to production. Two changes:
Canary → open testing (beta). Public opt-in via https://play.google.com/apps/testing/io.unom.punktfunk, no 100-tester email-list cap. The trade-off is documented in the workflow header: open testing passes Google review (hours–days) where internal was review-free (minutes) — the win is reach, not speed.
Canary → closed testing (alpha) as well. Closed testing has been dry since 2026-08-01: production access let tags skip alpha, stranding its testers on the last pre-access build. play-upload.py gains a repeatable --also-track flag; the extra track PUT shares the upload's Play edit, so one commit and one review cover both tracks and they can never disagree about which canary is current. An --also-track duplicating --track/--promote-from is refused (the second PUT would silently win).
Also: android-promote.yml's from_track default follows the canary from alpha to beta, and the Android README now carries the public opt-in link.
Before the first canary lands: the open-testing track needs one-time Play Console setup (enable + pick countries). Closed testers resume updating automatically; the old internal email list stops receiving canaries and should join via the public link.
Main-push canaries previously went to Play `internal`; tags to `production`. Two changes:
1. **Canary → open testing (`beta`).** Public opt-in via https://play.google.com/apps/testing/io.unom.punktfunk, no 100-tester email-list cap. The trade-off is documented in the workflow header: open testing passes Google review (hours–days) where internal was review-free (minutes) — the win is reach, not speed.
2. **Canary → closed testing (`alpha`) as well.** Closed testing has been dry since 2026-08-01: production access let tags skip `alpha`, stranding its testers on the last pre-access build. `play-upload.py` gains a repeatable `--also-track` flag; the extra track PUT shares the upload's Play edit, so one commit and one review cover both tracks and they can never disagree about which canary is current. An `--also-track` duplicating `--track`/`--promote-from` is refused (the second PUT would silently win).
Also: `android-promote.yml`'s `from_track` default follows the canary from `alpha` to `beta`, and the Android README now carries the public opt-in link.
Before the first canary lands: the open-testing track needs one-time Play Console setup (enable + pick countries). Closed testers resume updating automatically; the old internal email list stops receiving canaries and should join via the public link.
Main-push canaries now land on the open-testing track: public opt-in
link, no tester-list cap. Trade-off documented in the workflow header:
open testing goes through Google review (hours/days), where internal
was review-free (minutes). android-promote's from_track default follows
the canary to beta.
Closed testing went dry on 2026-08-01 when tags started publishing
straight to production instead of alpha — its testers have been pinned
to the last pre-access build since. Canaries now assign the same
versionCode to beta (open) AND alpha (closed) via play-upload.py's new
repeatable --also-track flag: both PUTs share one Play edit, so one
commit and one review cover both tracks and they can never disagree
about which canary is current. Tags still go to production only.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Main-push canaries previously went to Play
internal; tags toproduction. Two changes:Canary → open testing (
beta). Public opt-in via https://play.google.com/apps/testing/io.unom.punktfunk, no 100-tester email-list cap. The trade-off is documented in the workflow header: open testing passes Google review (hours–days) where internal was review-free (minutes) — the win is reach, not speed.Canary → closed testing (
alpha) as well. Closed testing has been dry since 2026-08-01: production access let tags skipalpha, stranding its testers on the last pre-access build.play-upload.pygains a repeatable--also-trackflag; the extra track PUT shares the upload's Play edit, so one commit and one review cover both tracks and they can never disagree about which canary is current. An--also-trackduplicating--track/--promote-fromis refused (the second PUT would silently win).Also:
android-promote.yml'sfrom_trackdefault follows the canary fromalphatobeta, and the Android README now carries the public opt-in link.Before the first canary lands: the open-testing track needs one-time Play Console setup (enable + pick countries). Closed testers resume updating automatically; the old internal email list stops receiving canaries and should join via the public link.