Skip to content

Commit 23ed764

Browse files
committed
[green] publish consistent Android open-testing availability
Replace obsolete invited internal-testing claims across README, homepage, app installation, tutorial setup and search/social metadata. Keep the official Google Play URL and QR payload, preserve historical artifact provenance, and refresh the affected sitemap entries. Validation: npm run check (346 tests, both builds, zero audit findings); 42 publication tests; Markdown links; no-leak; SPDX; git diff --check. Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 8348661 commit 23ed764

16 files changed

Lines changed: 193 additions & 87 deletions

File tree

‎README.md‎

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ telemetry.
2121
- Official example collection: [PyBLE-dev/examples](https://github.com/PyBLE-dev/examples)
2222
- iPad external beta:
2323
[join with TestFlight](https://testflight.apple.com/join/yU4e8s6d)
24-
- Android invited testing: [see the app page](https://pyble.dev/app)
24+
- Android 0.2.0 published for open testing:
25+
[get PyBLE on Google Play](https://play.google.com/store/apps/details?id=dev.pyble.pyble)
2526
- License: [MIT](LICENSE)
2627

2728
<p align="center">
@@ -75,13 +76,20 @@ and asks separately before overwriting existing files. Import never creates a
7576
remote folder hierarchy, opens an editor document, or runs downloaded code.
7677

7778
The current App source version is `0.2.0+8`; App and firmware versions are
78-
independent. iPad testing uses TestFlight, and Android distribution follows
79-
the testing access shown on the [App page](https://pyble.dev/app). The
79+
independent. The published Android version is `0.2.0`, available through
80+
[Google Play open testing](https://play.google.com/store/apps/details?id=dev.pyble.pyble).
81+
iPad testing continues through TestFlight. The
82+
[App page](https://pyble.dev/app) provides both installation links and QR codes.
83+
Google Play determines account, country, device, and testing availability;
84+
open testing is a beta channel, not a production-track release.
85+
86+
The [publication review](docs/testing/website/android-open-testing-2026-09-25.md)
87+
records the current Android availability. The earlier
8088
[Google Play build-8 handoff](docs/testing/google-play/0.2.0-build-8.md)
81-
records prepared artifacts and their exact source; preparation does not
82-
establish a live store release or mean those earlier artifacts contain later
83-
connection-lifecycle fixes. Both platforms share the same Flutter source and
84-
app test gates. The iOS/iPadOS project minimum is 15.
89+
records prepared artifacts and their exact source. The store's public version
90+
does not establish its installed build/source identity or mean those earlier
91+
artifacts contain later connection-lifecycle fixes. Both platforms share the
92+
same Flutter source and app test gates. The iOS/iPadOS project minimum is 15.
8593

8694
### Firmware
8795

@@ -168,9 +176,12 @@ shared conformance corpus, documentation, and CI atomically.
168176

169177
## Try PyBLE
170178

171-
1. Install the iPad beta from
172-
[TestFlight](https://testflight.apple.com/join/yU4e8s6d), or build the
173-
Flutter app locally.
179+
1. Install PyBLE 0.2.0 for Android open testing from
180+
[Google Play](https://play.google.com/store/apps/details?id=dev.pyble.pyble),
181+
or install the iPad external beta from
182+
[TestFlight](https://testflight.apple.com/join/yU4e8s6d). The
183+
[App page](https://pyble.dev/app) has links and QR codes for both platforms.
184+
You can also build the Flutter app locally.
174185
2. Open [pyble.dev/flash](https://pyble.dev/flash) in a supported desktop
175186
Chromium browser. Confirm that the published v0.6.1 release is selected,
176187
then choose only the exact profile matching the board and memory topology.

‎docs/ROADMAP.md‎

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,19 @@ v0.7.0 remains non-normative and requires separate maintainer approval.
1111
## Available now
1212

1313
- iPad external beta through TestFlight
14+
- Android PyBLE 0.2.0 published for
15+
[Google Play open testing](https://play.google.com/store/apps/details?id=dev.pyble.pyble),
16+
subject to Play's account, country, device, and testing availability
1417
- PBLE/1 editing, run/stop, console, and file workflows over BLE
1518
- Offline Blockly with beginner GPIO and NeoPixel examples
1619
- The published firmware v0.6.1 covers five exact profiles: four ESP
1720
Web Serial installers and the verified Pico 2 W UF2/manual-BOOTSEL path.
1821
Publication follows the owner's qualification confirmation, recorded in the
1922
[owner confirmation](https://pyble.dev/firmware-v0.6.1-owner-confirmation.md).
2023
Incomplete automated evidence is preserved unchanged; the qualified v0.6.0
21-
release remains a separate historical baseline.
24+
release remains a separate historical baseline. The original qualification
25+
tracker [#24](https://github.com/PyBLE-dev/PyBLE/issues/24) was closed as
26+
superseded on 2026-09-13; its incomplete checklist is not marked completed.
2227
- Guided [tutorials](https://pyble.dev/learn) with reviewed Lenovo captures,
2328
the [firmware functional reference](https://pyble.dev/features), and the
2429
separate [official example collection](https://github.com/PyBLE-dev/examples)
@@ -27,14 +32,15 @@ v0.7.0 remains non-normative and requires separate maintainer approval.
2732
## Near term
2833

2934
- Continue the app 0.2.0 beta train; source is currently `0.2.0+8`. The
30-
[prepared build-8 handoff](testing/google-play/0.2.0-build-8.md) is not proof
31-
of store publication or validation of subsequent source changes.
32-
- Reconcile the original automated qualification tracker
33-
[#24](https://github.com/PyBLE-dev/PyBLE/issues/24) with the recorded
34-
owner-confirmed v0.6.1 publication without inventing missing measurements.
35+
[Android publication review](testing/website/android-open-testing-2026-09-25.md)
36+
records live open-testing availability. The
37+
[prepared build-8 handoff](testing/google-play/0.2.0-build-8.md) remains a
38+
source-specific historical record, not validation of subsequent source
39+
changes in the installed store app.
3540
- Review the proposed v0.7.0 Reliable Projects scope before implementation.
3641
- Expand user-facing setup, recovery, and board-specific wiring guidance
37-
- Open and document the Android beta distribution path
42+
- Gather Android open-testing feedback and improve installation and recovery
43+
guidance
3844
- Convert remaining pre-public planning references into focused GitHub issues
3945
- Improve automated app-to-board integration coverage
4046

‎docs/specifications/google-play-release.md‎

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,40 @@
22

33
# Google Play open-testing preparation
44

5-
Status: candidate preparation, 10 September 2026. This contract supplements
5+
Status: historical candidate preparation, 10 September 2026; publication status
6+
updated 25 September 2026. This contract supplements
67
the [app distribution requirements](App/specs.md#9-build-versioning--distribution--bld)
78
and [ADR-0044](../decisions/0044-start-app-v020-beta-train-at-build-5.md).
89

9-
The owner has reported that open testing is available for the existing Play
10-
application. Preparation does not imply a submitted or approved release.
10+
At preparation time, the owner reported that the open-testing track was
11+
available for the existing Play application. That preparation alone did not
12+
establish a submitted or approved release.
13+
14+
## Published status — 25 September 2026
15+
16+
The owner confirms that PyBLE **0.2.0** is now published on Google Play for
17+
Android **open testing**. The official
18+
[listing](https://play.google.com/store/apps/details?id=dev.pyble.pyble)
19+
identifies SciLabPro and describes open testing for this version. The
20+
[publication review](../testing/website/android-open-testing-2026-09-25.md)
21+
records the primary-source check.
22+
23+
Current README and website copy MUST reflect this live open-testing status,
24+
as specified by [website §3.1](website.md#31-app-beta-distribution). Google Play
25+
determines account, country, device, and testing availability. Do not infer a
26+
production-track release, worldwide availability, or the installed artifact's
27+
exact version code/source from the public version alone. Keep the official
28+
listing as the public link; no signed-in opt-in workflow is asserted verified.
29+
30+
The preparation, artifact identities, and remaining historical checklists
31+
below retain their original scope. Publication does not retroactively certify
32+
unrecorded Console decisions, hardware evidence, or later source changes.
1133

1234
## Candidate identity
1335

14-
The next candidate is **0.2.0 (8)**, owned by `app/pubspec.yaml`, for production
15-
package `dev.pyble.pyble`. Build 5 remains a historical handoff; retained local
16-
builds 6 and 7 must not be relabelled or replaced. The automated app-version
36+
The 10 September candidate is **0.2.0 (8)**, owned by `app/pubspec.yaml`, for
37+
production package `dev.pyble.pyble`. Build 5 remains a historical handoff;
38+
retained local builds 6 and 7 must not be relabelled or replaced. The automated app-version
1739
contract must bind build 8 to base version 0.2.0, PBLE/1 HELLO, and the existing
1840
GitHub User-Agent. If Play Console has already consumed code 8 or higher,
1941
increase this declaration and the version contract before rebuilding.
@@ -58,10 +80,12 @@ any stale golden requiring a reviewed update. Physical release-candidate BLE
5880
checks and iOS distribution parity remain separate release gates; an emulator
5981
or historical engineering report does not close them.
6082

61-
Keep the public website's existing testing status until open testing is
62-
actually available. Console declarations, reviewer arrangements, upload,
63-
review submission and rollout remain explicit handoff steps. This preparation
64-
does not authorize sending tester messages or publishing a production release.
83+
At the preparation handoff, the public website's testing status was to remain
84+
unchanged until open testing became available. The dated publication status
85+
above now governs current public copy. Console declarations, reviewer
86+
arrangements, upload, review submission and rollout remain explicit handoff
87+
steps. This preparation does not authorize sending tester messages or
88+
publishing a production release.
6589

6690
## Official references
6791

‎docs/specifications/website.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ Compatibility copy MUST distinguish platform scope from current support:
125125
It MUST NOT imply that Bluetooth hardware or stock MicroPython alone is enough,
126126
or promise that every eligible board has a firmware image today.
127127

128-
### 3.1 App distribution
128+
### 3.1 App beta distribution
129129

130130
The current app channels, verified on 2026-09-25, are:
131131

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<!-- SPDX-License-Identifier: MIT -->
2+
<!-- Part of PyBLE (https://pyble.dev) — see /LICENSE. -->
3+
4+
# Android open-testing publication review — 2026-09-25
5+
6+
## Observed status
7+
8+
The project owner confirms that PyBLE is published on Google Play. Current
9+
first-party README and website copy still described an invited Android
10+
internal test, while the public store listing described open testing.
11+
12+
The official [Google Play listing](https://play.google.com/store/apps/details?id=dev.pyble.pyble)
13+
was retrieved over HTTPS on 2026-09-25 with English/US presentation parameters
14+
(`hl=en&gl=US`). It returned HTTP 200 and identified **SciLabPro**, app version
15+
**0.2.0**, and release notes stating **“Open testing for PyBLE 0.2.0.”** The
16+
package is `dev.pyble.pyble`. This primary-source result supports the
17+
owner-confirmed publication and supersedes the invited internal-testing copy.
18+
19+
The [AppAgg entry](https://appagg.com/android/education/pyble-micropython-ide-44135975.html?hl=en)
20+
also lists version 0.2.0 and the same open-testing release notes, with a
21+
2026-09-16 listing date. It is corroborating third-party indexing, not proof of
22+
the exact rollout date or Play Console configuration.
23+
24+
## Current publication contract
25+
26+
- Describe Android as **PyBLE 0.2.0 published on Google Play for open testing**.
27+
- Keep iPad described as the external TestFlight beta.
28+
- Link directly to the existing official Google Play listing and encode the
29+
same destination in the neutral `/google-play/pyble-google-play-qr.svg` asset.
30+
- Keep README, home, `/app`, metadata, setup guidance, and current distribution
31+
documentation consistent. Remove the invitation requirement from current
32+
Android installation guidance.
33+
- Google Play determines account, country, device, and testing availability.
34+
Open testing does not establish a production-track release or universal
35+
availability.
36+
37+
The candidate opt-in endpoint redirected to Google sign-in. No signed-in
38+
enrollment or on-device installation was verified in this review. The public
39+
listing remains the link; no inferred opt-in destination is introduced.
40+
41+
## Source and evidence boundaries
42+
43+
The repository's App source version remains `0.2.0+8`. The public app version
44+
`0.2.0` does not establish the installed store artifact's version code, source
45+
commit, or inclusion of later connection-lifecycle fixes. The
46+
[build-8 handoff](../google-play/0.2.0-build-8.md) and original submission
47+
materials remain historical preparation records. Firmware versions and
48+
qualification evidence remain independent of the app distribution channel.
49+
50+
This record documents availability and the coordinated content contract. It
51+
does not attest a deployment, signed-in Play Console state, installed app
52+
binary, or hardware-validation result. Search engines control when indexed
53+
snippets refresh after updated pages are published.

‎tests/publication/test_public_claims.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ def test_current_public_surfaces_agree_on_v061_publication(self) -> None:
182182
"v0.7.0",
183183
near_term,
184184
)
185-
self.assertIn("automated qualification", near_term)
185+
self.assertIn("closed as superseded on 2026-09-13", available)
186+
self.assertIn("incomplete checklist is not marked completed", available)
186187

187188
def test_readme_distinguishes_app_source_from_store_availability(self) -> None:
188189
firmware = markdown_section(self.readme, "What works")

‎tools/web/DEPLOYMENT.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ Review at least:
3939
- home at phone, portrait-tablet, landscape-tablet, and desktop widths;
4040
- home and metadata clearly separate the capability-defined MicroPython + BLE
4141
platform vision from the targets validated by the current release;
42-
- `/app`, including the current iPad external-beta and Android internal-test
43-
destinations, scannable local QR images, visible fallback addresses,
44-
invited-account restriction, and links to firmware and support;
42+
- home, `/app`, and setup guidance identify the iPad external beta and published
43+
Android PyBLE 0.2.0 Google Play open test consistently, including page and
44+
social descriptions; verify the official `dev.pyble.pyble` listing link,
45+
scannable local QR images, visible fallback addresses, Play availability
46+
guidance, and links to firmware and support;
4547
- `/privacy`, including the effective date and public contact address;
4648
- `/support`, including the public contact address;
4749
- `/flash`, confirming the install button is still disabled unless the

‎tools/web/README.md‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,20 @@ introduce a second page source or an application backend.
3434
| Route | Purpose |
3535
| ----------- | --------------------------------------------------------------------------- |
3636
| `/` | Product story, verified capabilities, platform vision, and current targets |
37-
| `/app` | Stable app landing page for iPad and Android testing channels |
37+
| `/app` | iPad TestFlight beta and published Android Google Play open-testing links |
3838
| `/privacy` | Separate app and website privacy disclosures |
3939
| `/support` | Beta quick start, troubleshooting, and report checklist |
4040
| `/flash` | Fail-closed Web Serial installer, exact profiles, and recovery |
4141
| `/features` | Release-bound firmware architecture, operations, profiles, limits, evidence |
4242
| `/learn` | Ordered tutorial hub, compatibility legend, and learning tracks |
4343

44+
Android PyBLE 0.2.0 is published for Google Play open testing. Home, `/app`,
45+
their metadata, and setup guidance share this status; iPad remains an external
46+
TestFlight beta. The official Android listing uses package `dev.pyble.pyble`.
47+
Both the direct link and local `/google-play/pyble-google-play-qr.svg` QR code
48+
use `https://play.google.com/store/apps/details?id=dev.pyble.pyble`. Play
49+
determines account, country, device, and testing availability.
50+
4451
The ten statically authored tutorials are `/learn/setup`,
4552
`/learn/first-program`, `/learn/files`, `/learn/github-import`,
4653
`/learn/blocks`, `/learn/examples`, `/learn/hardware`,

tools/web/public/google-play/pyble-google-play-internal-test-qr.svg renamed to tools/web/public/google-play/pyble-google-play-qr.svg

File renamed without changes.

‎tools/web/public/manifest.webmanifest‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "PyBLE — Python over Bluetooth Low Energy",
33
"short_name": "PyBLE",
4-
"description": "A free, open-source, tablet-first IDE for MicroPython boards with compatible Bluetooth Low Energy agent firmware.",
4+
"description": "PyBLE is a free, open-source MicroPython IDE over Bluetooth Low Energy. Available on Google Play open testing for Android and TestFlight for iPad.",
55
"start_url": "/",
66
"display": "standalone",
77
"background_color": "#F4F7FF",

0 commit comments

Comments
 (0)