@@ -23,12 +23,21 @@ release is published (un-drafted) when a build is promoted to closed or higher.
2323| ** stable** | Production | published, marked * Latest* | ✅ Yes |
2424| ** open** beta | Beta (Open) | published prerelease, tag ` vX.Y.Z-open.N ` | ✅ Yes |
2525| ** closed** beta | Alpha (Closed) | published prerelease, tag ` vX.Y.Z-closed.N ` | ✅ Yes |
26-
27- Only ** one** test build is "live" on GitHub at a time: as a build is promoted,
28- its release object moves forward (its tag changes from ` -closed.N ` to ` -open.N `
29- to the clean production tag). So a ` -closed ` /` -open ` build is installable only
30- while it is currently parked in that channel — once promoted onward, the old
31- channel tag no longer has a release.
26+ | ** snapshot** | — (not on Play) | rolling prerelease, tag ` snapshot ` | ✅ Yes |
27+
28+ Only ** one** promoted test build is "live" on GitHub at a time: as a build is
29+ promoted, its release object moves forward (its tag changes from ` -closed.N ` to
30+ ` -open.N ` to the clean production tag). So a ` -closed ` /` -open ` build is
31+ installable only while it is currently parked in that channel — once promoted
32+ onward, the old channel tag no longer has a release.
33+
34+ ** Snapshot** is different: it's an automated debug build of the latest commit on
35+ ` main ` , rebuilt and re-published under the single moving ` snapshot ` tag on every
36+ push. It never goes to Play. Because debug builds use a ` .debug ` application-ID
37+ suffix (` com.geeksville.mesh.fdroid.debug ` / ` com.geeksville.mesh.google.debug ` )
38+ and the debug signing key, a snapshot installs as its ** own separate app** — it
39+ sits alongside a Play/stable/beta install, so the uninstall-first warning above
40+ does ** not** apply to it.
3241
3342## Setup
3443
@@ -60,14 +69,34 @@ channel tag no longer has a release.
6069- ** Filter release titles by regular expression:** ` -closed\. `
6170- ** Filter APKs by regular expression:** see [ Picking the APK] ( #picking-the-apk )
6271
63- ### Bleeding edge (newest test build, any channel)
72+ ### Bleeding edge (newest promoted test build, any channel)
6473
6574- ** Include prereleases:** on
66- - * (no release-title filter) *
75+ - ** Filter release titles by regular expression: ** ` -(closed|open)\. `
6776- ** Filter APKs by regular expression:** see [ Picking the APK] ( #picking-the-apk )
6877
69- Obtainium installs the newest published prerelease — whatever is currently in
70- open or closed.
78+ Obtainium installs the newest promoted prerelease — whatever is currently in
79+ open or closed. The title filter is required to skip the always-newer ` snapshot `
80+ prerelease; without it Obtainium would follow snapshot instead.
81+
82+ ### Snapshot (latest commit on ` main ` )
83+
84+ - ** Include prereleases:** on
85+ - ** Filter release titles by regular expression:** ` ^Snapshot `
86+ - ** Filter APKs by regular expression:** debug-signed names, see below
87+
88+ Follows ` main ` directly — updates on every push. These are ** debug builds**
89+ (` .debug ` package, debug key), so they install as a separate app and won't
90+ disturb a stable/beta install. The APKs are named ` …-debug-<versionCode>.apk `
91+ (not ` -release.apk ` ), so use debug-suffixed filters:
92+
93+ | You want | Regex |
94+ | ---| ---|
95+ | Google flavor, most phones (arm64) | ` google-arm64-v8a-debug-\d+\.apk ` |
96+ | fdroid flavor, most phones (arm64) | ` fdroid-arm64-v8a-debug-\d+\.apk ` |
97+ | fdroid flavor, one-size-fits-all | ` fdroid-universal-debug-\d+\.apk ` |
98+
99+ Snapshot releases attach only the debug APKs — no ` .aab ` or desktop installers.
71100
72101> ** If your channel filter finds nothing:** when no build is parked in that
73102> exact channel, the title filter matches no current release (old channel tags
0 commit comments