@@ -5,61 +5,105 @@ are released independently from this monorepo.
55
66## Unreleased
77
8- - Admitted the characterized Waveshare single-page largest-block transient
9- with a fixed ` 98304 ` heap floor in a second-replacement qualification era
10- (ADR-0039), with byte-identity-conditioned carry-forward of already-passed
11- physical evidence; no firmware bytes changed.
12- - Established ` PyBLE-dev/PyBLE ` as the canonical public monorepo.
13- - Added public contributor, security, architecture, protocol, and validation
14- documentation.
8+ These app, website, and repository-source changes do not designate a new app
9+ or firmware release. The qualified firmware release remains v0.6.0, built from
10+ its annotated tag rather than from the newer branch tip.
1511
16- ### App and website source
12+ ### App source
1713
1814- Added fail-closed Android upload signing and signed App Bundle CI contracts,
19- plus the invited Google Play internal-test link and QR alongside TestFlight
20- on ` pyble.dev ` .
21- - Added an independent ` /privacy ` policy and stable ` /app ` landing page.
15+ while retaining invited Google Play testing as distinct from a public Play
16+ release.
2217- Extended every Blocks GPIO surface to accept explicit bounded MicroPython
2318 pin names such as ` LED ` while preserving numeric GPIOs, offline operation,
2419 and the app's board-neutral architecture.
20+ - Hardened the Android WebView integration path so a named-pin edit made after
21+ preview is re-read from the live field before generated-code assertions.
22+
23+ ### Website and repository source
24+
25+ - Established ` PyBLE-dev/PyBLE ` as the canonical public monorepo and added
26+ contributor, security, architecture, protocol, and validation documentation.
27+ - Added an independent ` /privacy ` policy and stable ` /app ` landing page, with
28+ invited Android testing and public TestFlight presented as distinct channels.
2529- Patched the remediable website PostCSS/Nanoid dependency chain and bounded
2630 the remaining build-only ` image-size ` advisory behind a static-deploy and
2731 no-metadata-image-route contract until an upstream fix exists.
32+ - Made publication CI fetch the complete source history required by
33+ ancestry-routed firmware gates, and made the RP2 runtime-closure fixture
34+ hermetic instead of depending on a retained local archive.
35+ - Made RP2 builds report a missing or mismatched pinned Arm toolchain before
36+ evaluating the nested source graph, while preserving fail-closed source
37+ validation once the compiler is present.
38+ - Corrected two C3 ADR links for the public repository layout.
39+
40+ ## Website deployment — 2026-08-22
41+
42+ - Activated the validated v0.6.0 release descriptor on ` pyble.dev ` , so the
43+ home, flash, and support surfaces derive their current five-profile status
44+ from the selected immutable release instead of hard-coded board copy.
45+ - Kept the exact-board Waveshare presentation separate from the lean generic
46+ S3 profile and retained the real-hardware image on the flash page.
47+ - Published the firmware release notes, checksums, recovery instructions,
48+ license inventory, and exact profile artifacts under ` /firmware/v0.6.0/ ` .
49+
50+ ## Firmware 0.6.0 — 2026-08-21
51+
52+ _ Firmware release only. The app is versioned independently and remains
53+ ` 0.1.0+2 ` in this source tree._
54+
55+ - Published and deployed the qualified five-profile release at
56+ [ pyble.dev/flash] ( https://pyble.dev/flash ) : ` esp32-4mb ` ,
57+ ` esp32-s3-n16r8 ` , ` waveshare-esp32-s3-lcd-147b ` , ` esp32-c3-4mb ` , and
58+ ` rpi-pico2-w ` .
59+ - Completed the exact-byte qualification matrix: all five HIL rows passed,
60+ including install and recovery, PBLE/1 workflows, run/stop and console
61+ behavior, filesystem reliability, fixed resource and timing limits, and app
62+ operation on iPadOS and Android.
63+ - Provisioned the four ESP profiles through ESP Web Serial. Pico 2 W uses a
64+ verified UF2 download followed by a manual BOOTSEL copy; it is not a Web
65+ Serial target.
66+ - Added qualified ESP32-C3 revision v0.3-or-newer support for the exact 4 MiB
67+ profile and qualified Raspberry Pi Pico 2 W support through the portable
68+ frozen-Python RP2 agent.
69+ - Kept ` esp32-s3-n16r8 ` lean and board-neutral while giving the exact
70+ Waveshare B-version profile its ST7789 runtime and fresh-install splash with
71+ persistent disable.
72+ - Hardened response delivery, VM and run lifecycle, STOP and soft-reboot
73+ ordering, filesystem concurrency, and console flow across the ESP and RP2
74+ ports.
75+ - Bound the immutable release to annotated tag ` firmware-v0.6.0 ` , PyBLE source
76+ ` 0c7230d6708797c241160ba71fbd37e6b22f180a ` , MicroPython v1.28.0 and
77+ ESP-IDF v5.5.1, agent ` 0.6.0 ` , protocol ` PBLE/1 ` , and zero upstream patches.
78+ - Published schema-4 metadata with SHA-256
79+ ` c2940281a14feddb55c48de15ac18087e9317d1b7130e514fab5a209b046a1e6 `
80+ and independently hashed artifacts, notices, release notes, and recovery
81+ instructions.
82+ - Admitted the characterized Waveshare single-page largest-block transient
83+ with the fixed ` 98304 ` heap floor defined by ADR-0039; firmware bytes stayed
84+ unchanged while the final qualification policy was corrected.
2885
29- ### Firmware 0.6.0 source integration
30-
31- - Abandoned the unpublished local ` firmware-v0.6.0 ` candidate at ` 719b211… `
32- after the C3 stateless-PHY/post-OI receipt and fixed performance-contract
33- amendments. Version 0.6.0 and its atomic five-profile scope are retained for
34- a source-era-routed replacement; all candidate/HIL gates restart before any
35- tag is pushed or release is published.
36- - Added the ` rpi-pico2-w ` portable frozen-Python agent port, its isolated RP2
37- build plane, and pinned Arm GNU toolchain input alongside the four existing
38- ESP build variants.
39- - Recorded successful pre-GP2 Pico 2 W BLE/app operation and physical onboard
40- LED actuation as engineering evidence. Pico remains absent from public
41- release metadata and the web installer until its complete GP2 matrix passes.
42- - Reserved a new source identity instead of reusing the earlier ` 0.5.1 `
43- Waveshare/ESP candidate version; all publishable artifacts require fresh
44- version-bound build, provenance, resource, recovery, and HIL evidence.
45-
46- ### Firmware 0.5.1 source candidate — 2026-08-03
47-
48- - Defined the independently selected ` waveshare-esp32-s3-lcd-147b `
49- provisioning profile for the exact ESP32-S3-LCD-1.47B B-version board with
50- 16 MiB flash and 8 MiB Octal PSRAM.
51- - Specified its exact-board-only ST7789 MicroPython runtime, bounded boot
52- companion, app QR, persistent splash opt-out, and dedicated display/HIL
53- qualification contract. An erased exact-board installation defaults the
54- splash on; stored ` 0 ` remains an explicit opt-out.
55- - Kept ` esp32-s3-n16r8 ` lean and board-neutral: its image contract contains no
56- Waveshare pin map, TFT driver, companion, QR, splash hook, or display-only
57- readiness seam.
58- - Expanded the candidate source/build contract to four variants over the three
59- initial ESP32-family targets. No new exact bytes or public profile are
60- qualified by this documentation change; reproducible builds, license audit,
61- and independent final-candidate HIL remain required for all three candidate
62- release profiles, while ESP32-C3 remains deferred.
86+ ## Firmware 0.5.1 — 2026-08-03
87+
88+ - Published the qualified three-profile release for ` esp32-4mb ` , the lean
89+ ` esp32-s3-n16r8 ` , and the separate exact-board
90+ ` waveshare-esp32-s3-lcd-147b ` profile.
91+ - Made the Waveshare PyBLE splash the fresh-install default while preserving a
92+ stored opt-out; kept its ST7789 runtime and board pin map out of the generic
93+ S3 image.
94+ - Bound the release to annotated tag ` firmware-v0.5.1 ` , source
95+ ` bab472131f0a71c5c4a7efc689eab266189a1896 ` , MicroPython v1.28.0, and
96+ ESP-IDF v5.5.1. ESP32-C3 and Pico 2 W were not included in this release.
97+
98+ ## Firmware 0.5.0 — 2026-08-03
99+
100+ - Published the first qualified three-profile bundle, adding the exact
101+ Waveshare ESP32-S3-LCD-1.47B B-version profile alongside the two generic ESP
102+ profiles.
103+ - Added its isolated ST7789 MicroPython runtime and opt-in splash without
104+ adding board-specific display code to ` esp32-s3-n16r8 ` .
105+ - Bound the release to annotated tag ` firmware-v0.5.0 ` and source
106+ ` 4ac661e610a00207246bc9e9863d96085e77854f ` .
63107
64108## Firmware 0.4.2 — 2026-07-31
65109
@@ -95,7 +139,7 @@ are released independently from this monorepo.
95139
96140The pre-publication development history is intentionally archived outside this
97141repository. Public development starts from the audited source snapshot.
98- Firmware 0.4.1 therefore remains a legacy pre-publication release; its source
142+ Firmware 0.4.1 therefore remains a legacy pre-publication release: its source
99143is present here, but its original commit identifier is not part of the public
100- history. The next firmware release will rebuild and requalify from a public
101- commit.
144+ history. Later firmware entries identify the annotated public source tag and
145+ exact commit used for their immutable artifacts .
0 commit comments