@alteriom/painlessmesh 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.0.1] - 2026-09-07
11
+
12
+ A packaging and documentation release. **No library behaviour changed**: the
13
+ mesh, routing, gateway, failover and OTA code of 2.0.1 is 2.0.0's, and the only
14
+ edit under `src/` is the version macro. It exists to repair two defects in what
15
+ 2.0.0 *shipped*, both of which cost a user time before they ever compile
16
+ anything.
17
+
18
+ ### Fixed
19
+
20
+ - **The installation instructions shipped in 2.0.0 name a PlatformIO package
21
+ that has no 2.0.0.** The README, user guide and documentation site gave
22
+ `alteriom/AlteriomPainlessMesh`, and that registry owner stops at 1.10.0 — its
23
+ account is not one this project can publish from. Every automated release
24
+ since 1.7.6 went out under `sparck75`, which is now what the documentation
25
+ names. **Name the owner in `lib_deps`**: the bare name `AlteriomPainlessMesh`
26
+ matches both owners and PlatformIO warns rather than choosing.
27
+
28
+ ```ini
29
+ lib_deps =
30
+ sparck75/AlteriomPainlessMesh@^2.0.0
31
+ ```
32
+
33
+ - **The v2.0.0 GitHub release carries no library archive.** This repository
34
+ publishes immutable releases, so the workflow's upload step — which ran after
35
+ the release was created — was refused with HTTP 422. The job failed before its
36
+ release decision, which also skipped the npm, GitHub Packages and PlatformIO
37
+ jobs; those three were published by hand. The archive is now attached in the
38
+ same call that creates the release, and the decision to publish is taken
39
+ before any step that can fail, so a failed upload can no longer suppress the
40
+ publications.
41
+
42
+ - **PlatformIO publication went under the token's account rather than the
43
+ organisation.** `pio pkg publish` files a package under the account unless
44
+ `--owner` names the owner, and the workflow never passed it — which is how the
45
+ duplicate ownership above arose in the first place. It now passes `--owner`,
46
+ checks the version against that owner's own version table (the previous check
47
+ read a `Version:` line `pio pkg show` never prints), publishes the release
48
+ tag's sources rather than whichever branch was dispatched, and treats an
49
+ already-listed version as success instead of a failure.
50
+
51
+ - **`scripts/validate-release.sh` reported a version mismatch that was not
52
+ there.** Without `jq` it fell back to a grep that matches every `"version"`
53
+ line in `library.json`, dependencies included, so the value it compared was
54
+ multi-line. It takes the first match now — the top-level one. CI was never
55
+ affected; it has `jq`.
56
+
57
+ ### Upgrading
58
+
59
+ Nothing in the library behaves differently, so upgrading from 2.0.0 is optional.
60
+ Take it if you install through PlatformIO, or if you want the release archive
61
+ attached to the GitHub release. Everything in the 2.0.0 entry below still
62
+ applies, including its *Before you upgrade* section.
63
+
10
64
  ## [2.0.0] - 2026-09-07
11
65
 
12
66
  painlessMesh 2.0 is a major release. It adds per-message delivery
@@ -317,6 +371,11 @@ processes scan results from the loop for that reason (see the ESP32 entry).
317
371
  every PR like the other twenty.
318
372
  - `keywords.txt` now lists the bridge, gateway, failover, queue and capacity
319
373
  API so the Arduino IDE highlights it.
374
+ - **PlatformIO package owner.** 2.0.0 is published as `sparck75/AlteriomPainlessMesh`,
375
+ the owner every automated release since 1.7.6 went under. The registry also
376
+ holds `alteriom/AlteriomPainlessMesh`, which stops at 1.10.0: its account is
377
+ not one the project can publish from. Name the owner in `lib_deps`; the bare
378
+ name matches both.
320
379
 
321
380
  ### Added (post-review series)
322
381
 
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Release](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml)
12
12
  [![GitHub release](https://img.shields.io/github/v/release/Alteriom/painlessMesh?label=version)](https://github.com/Alteriom/painlessMesh/releases)
13
13
  [![NPM Version](https://img.shields.io/npm/v/@alteriom/painlessmesh?label=npm)](https://www.npmjs.com/package/@alteriom/painlessmesh)
14
- [![PlatformIO Registry](https://badges.registry.platformio.org/packages/alteriom/library/AlteriomPainlessMesh.svg)](https://registry.platformio.org/libraries/alteriom/AlteriomPainlessMesh)
14
+ [![PlatformIO Registry](https://badges.registry.platformio.org/packages/sparck75/library/AlteriomPainlessMesh.svg)](https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh)
15
15
 
16
16
  </div>
17
17
 
@@ -410,11 +410,11 @@ git clone https://github.com/Alteriom/painlessMesh.git AlteriomPainlessMesh
410
410
 
411
411
  ### PlatformIO
412
412
 
413
- The library is published on the [PlatformIO registry](https://registry.platformio.org/libraries/alteriom/AlteriomPainlessMesh) as `alteriom/AlteriomPainlessMesh`:
413
+ The library is published on the [PlatformIO registry](https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh) as `sparck75/AlteriomPainlessMesh`. The registry also lists an `alteriom/AlteriomPainlessMesh` that stops at 1.10.0; its owner account is not one the project can publish from, so 2.0.0 and later live under `sparck75`, which has carried every automated release since 1.7.6. Name the owner in `lib_deps`, since the bare name matches both:
414
414
 
415
415
  ```ini
416
416
  lib_deps =
417
- alteriom/AlteriomPainlessMesh@^2.0.0
417
+ sparck75/AlteriomPainlessMesh@^2.0.0
418
418
  ```
419
419
 
420
420
  ### Dependencies
@@ -596,9 +596,11 @@ These are the message types used by applications built on painlessMesh:
596
596
  - **Event Coordination** - Synchronized displays, distributed processing
597
597
  - **Bridge Networks** - Connect mesh to WiFi/Internet/MQTT - [📖 Bridge Guide](BRIDGE_TO_INTERNET.md)
598
598
 
599
- ## Latest Release: v2.0.0 (September 7, 2026)
599
+ ## Latest Release: v2.0.1 (September 7, 2026)
600
600
 
601
- **Delivery confirmation, a unified send path, and a mesh that holds together on real hardware**
601
+ **A packaging fix over 2.0.0 — no library behaviour changed.** 2.0.0's installation instructions named a PlatformIO package that has no 2.0.0 (`alteriom/…` stops at 1.10.0; releases go out under `sparck75`), and its GitHub release carries no library archive because the upload was refused by an immutable release. Both are fixed; upgrading from 2.0.0 is optional.
602
+
603
+ **2.0.0 — delivery confirmation, a unified send path, and a mesh that holds together on real hardware**
602
604
 
603
605
  - `sendSingle()` and `sendBroadcast()` accept a delivery callback — it fires with `delivered=true` and the round-trip latency on acknowledgment, or `delivered=false` on timeout — and a `SendOptions` struct that carries a priority and a callback in one call. Priority is kept across hops.
604
606
  - Thirty-odd defects in gateway failover, channel following, routing and the station scan, every one found in the serial logs of a six-family hardware rig and fixed there: a bridge that stops says so, the mesh follows an elected bridge to its channel and treats it as home, a node is in one place in every neighbour's tree, a dead connection is not a route, a stale scan does not consume a live one.
package/RELEASE_GUIDE.md CHANGED
@@ -21,7 +21,12 @@ the version commit reaches `main`.
21
21
  workflow owns tags and publication.
22
22
 
23
23
  The workflow tags only when the push to `main` carries a version-file
24
- change or a head commit whose message starts with `release:`. When the
24
+ change or a head commit whose message starts with `release:`. The
25
+ repository publishes immutable releases: a release takes its assets and
26
+ notes when it is created and cannot be edited afterwards, so a failed
27
+ publication is repaired by `manual-publish.yml` (npm, GitHub Packages) and
28
+ `platformio-publish.yml`, both dispatched with the tag, not by re-running
29
+ the release workflow. When the
25
30
  version metadata was bumped earlier in the cycle (as for 2.0.0), merge the
26
31
  release pull request with a commit titled `release: vX.Y.Z` — a squash or
27
32
  merge commit with that title — or the push is ignored.
@@ -9,7 +9,7 @@ platform = espressif32
9
9
  board = esp32dev
10
10
  framework = arduino
11
11
  lib_deps =
12
- alteriom/AlteriomPainlessMesh
12
+ sparck75/AlteriomPainlessMesh
13
13
  bblanchon/ArduinoJson@^7.0.0
14
14
  monitor_speed = 115200
15
15
 
@@ -18,6 +18,6 @@ platform = espressif8266
18
18
  board = nodemcuv2
19
19
  framework = arduino
20
20
  lib_deps =
21
- alteriom/AlteriomPainlessMesh
21
+ sparck75/AlteriomPainlessMesh
22
22
  bblanchon/ArduinoJson@^7.0.0
23
23
  monitor_speed = 115200
package/library.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "type": "git",
7
7
  "url": "https://github.com/Alteriom/painlessMesh"
8
8
  },
9
- "version": "2.0.0",
9
+ "version": "2.0.1",
10
10
  "frameworks": [
11
11
  "arduino"
12
12
  ],
@@ -1,5 +1,5 @@
1
1
  name=Alteriom PainlessMesh
2
- version=2.0.0
2
+ version=2.0.1
3
3
  author=Coopdis,Scotty Franzyshen,Edwin van Leeuwen,Germán Martín,Maximilian Schwarz,Doanh Doanh,Alteriom
4
4
  maintainer=Alteriom
5
5
  sentence=A painless way to setup a mesh with ESP8266 and ESP32 devices with Alteriom extensions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alteriom/painlessmesh",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It handles routing and network management automatically, so you can focus on your application. The library uses JSON-based messaging and syncs time across all nodes, making it ideal for coordinated behaviour like synchronized light displays or sensor networks reporting to a central node.",
5
5
  "keywords": [
6
6
  "arduino",
@@ -29,10 +29,10 @@
29
29
  /**
30
30
  * @brief AlteriomPainlessMesh library version information
31
31
  */
32
- #define ALTERIOM_PAINLESS_MESH_VERSION "2.0.0"
32
+ #define ALTERIOM_PAINLESS_MESH_VERSION "2.0.1"
33
33
  #define ALTERIOM_PAINLESS_MESH_VERSION_MAJOR 2
34
34
  #define ALTERIOM_PAINLESS_MESH_VERSION_MINOR 0
35
- #define ALTERIOM_PAINLESS_MESH_VERSION_PATCH 0
35
+ #define ALTERIOM_PAINLESS_MESH_VERSION_PATCH 1
36
36
 
37
37
  /**
38
38
  * @brief Library description and usage information