@alteriom/painlessmesh 1.7.6 → 1.7.8

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.
Files changed (38) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/README.md +96 -14
  3. package/RELEASE_GUIDE.md +36 -0
  4. package/docs/API_DESIGN_GUIDELINES.md +414 -0
  5. package/docs/BOOLEAN_NAMING_CONVENTION.md +235 -0
  6. package/docs/MQTT_BRIDGE_COMMANDS.md +10 -10
  7. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +1 -1
  8. package/docs/MQTT_SCHEMA_COMPLIANCE.md +57 -2
  9. package/docs/PHASE1_GUIDE.md +1 -1
  10. package/docs/alteriom/overview.md +25 -2
  11. package/docs/architecture/plugin-system.md +1 -1
  12. package/docs/archive/RELEASE_SUMMARY.md +1 -1
  13. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +389 -0
  14. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +391 -0
  15. package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +794 -0
  16. package/docs/wiki/API-Reference.md +2 -2
  17. package/docs/wiki/Complete-Documentation.md +1 -1
  18. package/examples/alteriom/README.md +150 -4
  19. package/examples/alteriom/alteriom.ino +1 -1
  20. package/examples/alteriom/alteriom_sensor_package.hpp +914 -4
  21. package/examples/alteriomImproved/alteriom_sensor_package.hpp +1 -1
  22. package/examples/alteriomImproved/improved_sensor_node.ino +1 -1
  23. package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +796 -0
  24. package/examples/alteriomMetricsHealth/metrics_health_node.ino +418 -0
  25. package/examples/alteriomMetricsHealth/platformio.ini +26 -0
  26. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +1 -1
  27. package/examples/alteriomPhase1/phase1_features.ino +2 -2
  28. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +1 -1
  29. package/examples/alteriomSensorNode/alteriom_sensor_node.ino +1 -1
  30. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +1 -1
  31. package/examples/bridge/enhanced_mqtt_bridge.hpp +610 -0
  32. package/examples/bridge/enhanced_mqtt_bridge_example.ino +226 -0
  33. package/examples/meshCommandNode/alteriom_sensor_package.hpp +1 -1
  34. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +1 -1
  35. package/examples/mqttTopologyTest/mqttTopologyTest.ino +5 -1
  36. package/library.json +1 -1
  37. package/library.properties +1 -1
  38. package/package.json +2 -2
@@ -36,7 +36,7 @@ Target Node → Mesh Network → Gateway Bridge → MQTT Broker → Web Applicat
36
36
 
37
37
  | Direction | Package Type | Purpose |
38
38
  |-----------|--------------|---------|
39
- | MQTT → Mesh | CommandPackage (201) | Control device, request data |
39
+ | MQTT → Mesh | CommandPackage (400) | Control device, request data |
40
40
  | Mesh → MQTT | StatusPackage (202) | Report device status |
41
41
  | Mesh → MQTT | SensorPackage (200) | Sensor data reports |
42
42
  | Mesh → MQTT | EnhancedStatusPackage (203) | Detailed health metrics |
@@ -74,7 +74,7 @@ Target Node → Mesh Network → Gateway Bridge → MQTT Broker → Web Applicat
74
74
  | Command ID | Name | Description | Parameters |
75
75
  |------------|------|-------------|------------|
76
76
  | 200 | GET_STATUS | Request basic status | None |
77
- | 201 | GET_METRICS | Request performance metrics | None |
77
+ | 400 | GET_METRICS | Request performance metrics | None |
78
78
  | 202 | GET_DIAGNOSTICS | Request detailed diagnostics | None |
79
79
  | 210 | START_MONITORING | Begin continuous monitoring | `interval_ms` (uint32_t) |
80
80
  | 211 | STOP_MONITORING | Stop continuous monitoring | None |
@@ -155,7 +155,7 @@ alteriom/mesh/{mesh_id}/events # Real-time mesh state change events
155
155
 
156
156
  ## Command Definitions
157
157
 
158
- ### CommandPackage Structure (Type 201)
158
+ ### CommandPackage (Type 400)
159
159
 
160
160
  Defined in `examples/alteriom/alteriom_sensor_package.hpp`:
161
161
 
@@ -167,7 +167,7 @@ public:
167
167
  uint32_t commandId = 0; // Unique command tracking ID
168
168
  TSTRING parameters = ""; // JSON-encoded parameters
169
169
 
170
- CommandPackage() : SinglePackage(201) {}
170
+ CommandPackage() : SinglePackage(400) {}
171
171
  };
172
172
  ```
173
173
 
@@ -235,7 +235,7 @@ The gateway bridge is implemented in `examples/bridge/mqtt_command_bridge.hpp` a
235
235
  Mesh nodes implement command handlers in `examples/alteriom/mesh_command_node.ino`:
236
236
 
237
237
  1. **Command Reception**
238
- - Listen for CommandPackage (Type 201)
238
+ - Listen for CommandPackage (Type 400)
239
239
  - Parse command and parameters
240
240
  - Execute appropriate action
241
241
 
@@ -354,7 +354,7 @@ The mesh topology system provides real-time visibility into the structure and he
354
354
 
355
355
  ```json
356
356
  {
357
- "type": 201,
357
+ "type": 400,
358
358
  "command": 300,
359
359
  "targetDevice": 0,
360
360
  "commandId": 12345,
@@ -525,7 +525,7 @@ client.loop_forever()
525
525
 
526
526
  ```json
527
527
  {
528
- "type": 201,
528
+ "type": 400,
529
529
  "command": 10,
530
530
  "targetDevice": 123456,
531
531
  "commandId": 1001,
@@ -554,7 +554,7 @@ client.loop_forever()
554
554
 
555
555
  ```json
556
556
  {
557
- "type": 201,
557
+ "type": 400,
558
558
  "command": 100,
559
559
  "targetDevice": 0,
560
560
  "commandId": 2001,
@@ -594,7 +594,7 @@ All nodes respond with their configuration on respective `mesh/config/<nodeId>`
594
594
 
595
595
  ```json
596
596
  {
597
- "type": 201,
597
+ "type": 400,
598
598
  "command": 200,
599
599
  "targetDevice": 123456,
600
600
  "commandId": 3001,
@@ -673,7 +673,7 @@ def on_connect(client, userdata, flags, rc):
673
673
 
674
674
  # Send LED control command
675
675
  command = {
676
- "type": 201,
676
+ "type": 400,
677
677
  "command": 10,
678
678
  "targetDevice": 123456,
679
679
  "commandId": int(time.time() * 1000),
@@ -172,7 +172,7 @@ const client = mqtt.connect('mqtt://192.168.1.100:1883');
172
172
 
173
173
  // Send LED control command
174
174
  const command = {
175
- type: 201,
175
+ type: 400,
176
176
  command: 10,
177
177
  targetDevice: 123456,
178
178
  commandId: Date.now(),
@@ -6,10 +6,65 @@ The painlessMesh library is compliant with the **@alteriom/mqtt-schema** specifi
6
6
 
7
7
  ## Schema Package
8
8
 
9
- - **Package:** `@alteriom/mqtt-schema` v0.5.0 (latest)
9
+ - **Package:** `@alteriom/mqtt-schema` v0.7.2 (latest)
10
10
  - **Registry:** npm (https://www.npmjs.com/package/@alteriom/mqtt-schema)
11
11
  - **Documentation:** https://github.com/Alteriom/alteriom-mqtt-schema
12
- - **Release:** v0.5.0 includes mesh topology and event schemas!
12
+ - **Release:** v0.7.2 includes sensor metrics and enhanced message types!
13
+
14
+ ## v0.7.2 Schema Alignment
15
+
16
+ ### Message Type Codes (Faster Classification)
17
+
18
+ The schema now includes standardized message type codes for 90% faster message classification:
19
+
20
+ **Standard Schema Codes:**
21
+ - **200:** SENSOR_DATA - Sensor telemetry readings
22
+ - **201:** SENSOR_HEARTBEAT - Sensor presence/health
23
+ - **202:** SENSOR_STATUS - Sensor status change
24
+ - **203:** SENSOR_INFO - Sensor identification and capabilities (v0.7.2+)
25
+ - **204:** SENSOR_METRICS - Sensor health and performance metrics (v0.7.2+)
26
+ - **300:** GATEWAY_INFO - Gateway identification
27
+ - **301:** GATEWAY_METRICS - Gateway health metrics
28
+ - **302:** GATEWAY_DATA - Gateway telemetry (v0.7.2+)
29
+ - **303:** GATEWAY_HEARTBEAT - Gateway presence (v0.7.2+)
30
+ - **304:** GATEWAY_STATUS - Gateway status (v0.7.2+)
31
+ - **400:** COMMAND - Device control command
32
+ - **401:** COMMAND_RESPONSE - Command execution result
33
+ - **500:** FIRMWARE_STATUS - Firmware update status
34
+ - **600:** MESH_NODE_LIST - Mesh node inventory
35
+ - **601:** MESH_TOPOLOGY - Mesh network topology
36
+ - **602:** MESH_ALERT - Mesh network alert
37
+ - **603:** MESH_BRIDGE - Mesh protocol bridge (v0.7.1+)
38
+ - **604:** MESH_STATUS - Mesh status (v0.7.2+)
39
+ - **605:** MESH_METRICS - Mesh-level metrics (v0.7.2+)
40
+ - **700:** DEVICE_CONFIG - Device configuration management
41
+
42
+ **painlessMesh Mesh-Specific Codes (600+ range):**
43
+ - **600:** MeshNodeListPackage → MESH_NODE_LIST (v1.7.7+)
44
+ - **601:** MeshTopologyPackage → MESH_TOPOLOGY (v1.7.7+)
45
+ - **602:** MeshAlertPackage → MESH_ALERT (v1.7.7+)
46
+ - **603:** MeshBridgePackage → MESH_BRIDGE (v1.7.7+)
47
+ - **604:** EnhancedStatusPackage → MESH_STATUS (v1.7.7+)
48
+ - **605:** HealthCheckPackage → MESH_METRICS (v1.7.7+)
49
+
50
+ **painlessMesh Schema-Aligned Codes:**
51
+ - **200:** SensorPackage → SENSOR_DATA ✓
52
+ - **202:** StatusPackage → SENSOR_STATUS ✓
53
+ - **204:** MetricsPackage → SENSOR_METRICS ✓ (aligns with v0.7.2+)
54
+ - **400:** CommandPackage → COMMAND ✓ (moved from 201 in v1.7.7 for full schema compliance)
55
+
56
+ All painlessMesh packages now include the optional `message_type` field for optimal performance.
57
+
58
+ ### Mesh Bridge Schema (Type 603)
59
+
60
+ New schema for bridging painlessMesh protocol to MQTT, enabling standardized mesh protocol integration.
61
+
62
+ **Key Features:**
63
+ - Native painlessMesh message encapsulation
64
+ - Support for SINGLE, BROADCAST, and other mesh message types
65
+ - RSSI, hop count, and timing information
66
+ - Optional payload decoding for MQTT v1 messages
67
+ - Multiple mesh protocol support (painlessMesh, ESP-NOW, BLE Mesh, etc.)
13
68
 
14
69
  ---
15
70
 
@@ -194,7 +194,7 @@ The `alertFlags` field uses bit flags for different alert conditions:
194
194
  | Type | Package Name | Description |
195
195
  |------|--------------|-------------|
196
196
  | 200 | SensorPackage | Environmental sensor data |
197
- | 201 | CommandPackage | Device control commands |
197
+ | 400 | CommandPackage | Device control commands |
198
198
  | 202 | StatusPackage | Basic status (original) |
199
199
  | **203** | **EnhancedStatusPackage** | **Comprehensive status (Phase 1)** |
200
200
 
@@ -36,7 +36,7 @@ mesh.sendPackage(&sensor);
36
36
  - Greenhouse automation
37
37
  - Industrial sensor networks
38
38
 
39
- ### CommandPackage (Type 201)
39
+ ### CommandPackage (Type 400)
40
40
  For sending control commands to specific devices.
41
41
 
42
42
  ```cpp
@@ -155,7 +155,7 @@ Alteriom uses reserved type ID range 200-299:
155
155
  ```cpp
156
156
  enum AlteriomTypes {
157
157
  ALTERIOM_SENSOR = 200, // SensorPackage
158
- ALTERIOM_COMMAND = 201, // CommandPackage
158
+ ALTERIOM_COMMAND = 400, // CommandPackage
159
159
  ALTERIOM_STATUS = 202, // StatusPackage
160
160
  // 203-299 reserved for future Alteriom packages
161
161
  };
@@ -498,11 +498,34 @@ public:
498
498
  3. **Validate under memory pressure**
499
499
  4. **Test with maximum expected node count**
500
500
 
501
+ ## Code Conventions
502
+
503
+ ### Boolean Field Naming
504
+
505
+ Alteriom packages follow a consistent naming convention for boolean fields to improve code clarity:
506
+
507
+ - **`*Set` suffix**: Configuration data has been provided (e.g., `deviceSecretSet`)
508
+ - **`*Enabled` suffix**: Feature is currently active (e.g., `displayEnabled`)
509
+ - **`is*` prefix or `*Connected`**: Current runtime state (e.g., `mqttConnected`)
510
+
511
+ See [Boolean Naming Convention](../BOOLEAN_NAMING_CONVENTION.md) for complete guidelines.
512
+
513
+ ### Time Field Naming
514
+
515
+ Time-based configuration fields follow a dual-unit convention:
516
+
517
+ - **Internal storage**: Always milliseconds (e.g., `sensorReadInterval`)
518
+ - **JSON serialization**: Both milliseconds (`_ms`) and seconds (`_s`) variants
519
+ - **JSON deserialization**: Read from milliseconds (`_ms`) variant
520
+
521
+ See package header documentation for complete details.
522
+
501
523
  ## Next Steps
502
524
 
503
525
  - Learn about [Sensor Packages](sensor-packages.md) in detail
504
526
  - Explore [Command System](command-system.md) implementation
505
527
  - Study [Status Monitoring](status-monitoring.md) patterns
528
+ - Review [Boolean Naming Convention](../BOOLEAN_NAMING_CONVENTION.md) guidelines
506
529
  - See [Tutorial Examples](../tutorials/sensor-networks.md) for hands-on practice
507
530
 
508
531
  The Alteriom extensions provide a solid foundation for building robust IoT applications with painlessMesh. They demonstrate production-ready patterns while remaining flexible enough to adapt to your specific needs.
@@ -155,7 +155,7 @@ enum CustomTypes {
155
155
  // Alteriom types: 200+ (for Alteriom extensions)
156
156
  enum AlteriomTypes {
157
157
  ALTERIOM_SENSOR = 200,
158
- ALTERIOM_COMMAND = 201,
158
+ ALTERIOM_COMMAND = 400,
159
159
  ALTERIOM_STATUS = 202
160
160
  };
161
161
  ```
@@ -72,7 +72,7 @@ All original functionality from the upstream library is maintained:
72
72
 
73
73
  ### Enhanced Packages
74
74
  - **SensorPackage** (Type 200): Environmental monitoring with temperature, humidity, pressure, battery levels
75
- - **CommandPackage** (Type 201): Device control and automation commands
75
+ - **CommandPackage (Type 400): Device control and automation commands
76
76
  - **StatusPackage** (Type 202): Health monitoring and system status reporting
77
77
 
78
78
  ### Additional Features
@@ -0,0 +1,389 @@
1
+ # painlessMesh v1.7.6 Release Checklist
2
+
3
+ **Release Date:** October 19, 2025
4
+ **Release Type:** Critical Bug Fix
5
+ **Git Commit:** c17384a
6
+ **Git Tag:** v1.7.6
7
+
8
+ ---
9
+
10
+ ## ✅ Completed Steps
11
+
12
+ ### Code Implementation
13
+ - [x] Removed `src/painlessmesh/scheduler_queue.hpp` (30 lines deleted)
14
+ - [x] Removed `src/painlessmesh/scheduler_queue.cpp` (70 lines deleted)
15
+ - [x] Updated `src/painlessmesh/mesh.hpp` (removed queue includes and initialization)
16
+ - [x] Created comprehensive unit test `test/catch/catch_scheduler_queue_removal.cpp` (200+ lines)
17
+
18
+ ### Version Updates
19
+ - [x] Updated `library.json` version: 1.7.5 → 1.7.6
20
+ - [x] Updated `library.properties` version: 1.7.5 → 1.7.6
21
+ - [x] Updated `package.json` version: 1.7.5 → 1.7.6
22
+
23
+ ### Documentation
24
+ - [x] Updated `CHANGELOG.md` with v1.7.6 section
25
+ - [x] Created `docs/releases/RELEASE_PLAN_v1.7.6.md` (850+ lines)
26
+ - [x] Created `docs/releases/RELEASE_SUMMARY_v1.7.6.md` (comprehensive release notes)
27
+ - [x] Created `docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md` (historical reference)
28
+ - [x] Updated `README.md` with v1.7.6 information
29
+
30
+ ### Git Operations
31
+ - [x] Staged all changes (`git add -A`)
32
+ - [x] Committed with detailed message (commit c17384a)
33
+ - [x] Created annotated tag v1.7.6
34
+ - [x] Pushed to GitHub (`git push origin main --tags`)
35
+
36
+ ### Statistics
37
+ - **Files Changed:** 12 files
38
+ - **Insertions:** +2046 lines
39
+ - **Deletions:** -131 lines
40
+ - **Net:** +1915 lines (mostly documentation and tests)
41
+
42
+ ---
43
+
44
+ ## 🔄 Manual Steps Required
45
+
46
+ ### 1. Create GitHub Release
47
+
48
+ **URL:** https://github.com/Alteriom/painlessMesh/releases/new
49
+
50
+ **Release Details:**
51
+ - **Tag:** v1.7.6 (select existing tag)
52
+ - **Title:** `v1.7.6 - Critical Compilation Fix`
53
+ - **Set as latest release:** ✅ Checked
54
+
55
+ **Release Description Template:**
56
+
57
+ ```markdown
58
+ # v1.7.6 - Critical Compilation Fix
59
+
60
+ 🚨 **URGENT**: If you are using v1.7.4 or v1.7.5, upgrade immediately. Those versions fail to compile.
61
+
62
+ ## What's Fixed
63
+
64
+ ✅ **Compilation Failure** - Fixed "_task_request_t was not declared" error
65
+ ✅ **ESP32 Support** - All ESP32 builds now compile successfully
66
+ ✅ **ESP8266 Support** - All ESP8266 builds now compile successfully
67
+ ✅ **FreeRTOS Stability** - Maintained ~85% crash reduction on ESP32
68
+
69
+ ## What Changed
70
+
71
+ This release removes the thread-safe scheduler queue that was causing compilation failures:
72
+
73
+ - **Removed**: `scheduler_queue.hpp` and `scheduler_queue.cpp`
74
+ - **Simplified**: `mesh.hpp` initialization code
75
+ - **Maintained**: Semaphore timeout fix for FreeRTOS crash protection
76
+
77
+ ## Why This Fix
78
+
79
+ The thread-safe scheduler queue required `_TASK_THREAD_SAFE` macro, but:
80
+ - This macro conflicts with `_TASK_STD_FUNCTION` in TaskScheduler v4.0.x
81
+ - painlessMesh **requires** `_TASK_STD_FUNCTION` for lambda callbacks
82
+ - The queue code was disabled but still trying to compile
83
+ - Result: Type definitions were missing, causing compilation errors
84
+
85
+ ## Upgrade Instructions
86
+
87
+ ### PlatformIO
88
+ ```ini
89
+ [env:your_board]
90
+ lib_deps =
91
+ https://github.com/Alteriom/painlessMesh.git#v1.7.6
92
+ ```
93
+
94
+ ### Arduino IDE
95
+ Update through Library Manager: **AlteriomPainlessMesh v1.7.6**
96
+
97
+ ### NPM
98
+ ```bash
99
+ npm update @alteriom/painlessmesh
100
+ ```
101
+
102
+ ## Performance
103
+
104
+ - ✅ ESP32 crash rate: ~5-8% (down from 30-40%)
105
+ - ✅ Crash reduction: ~85% via semaphore timeout increase
106
+ - ✅ No performance impact vs v1.7.2
107
+ - ✅ Full lambda and std::function support maintained
108
+
109
+ ## Testing
110
+
111
+ - ✅ 710+ unit tests passing
112
+ - ✅ All 19 examples compile successfully
113
+ - ✅ ESP32 and ESP8266 platforms verified
114
+ - ✅ CI/CD pipeline passing
115
+
116
+ ## Breaking Changes
117
+
118
+ **None** - This is a pure bug fix release.
119
+
120
+ ## Known Limitations
121
+
122
+ - ESP32 crash protection is ~85% effective (not 95-98% as originally targeted)
123
+ - Thread-safe scheduler queue feature removed (may return in v1.8.0)
124
+ - Requires TaskScheduler v4.1+ for future thread-safe re-implementation
125
+
126
+ ## Documentation
127
+
128
+ 📋 [Complete Release Notes](https://github.com/Alteriom/painlessMesh/blob/main/docs/releases/RELEASE_SUMMARY_v1.7.6.md)
129
+ 📖 [CHANGELOG](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)
130
+ 📋 [Implementation Plan](https://github.com/Alteriom/painlessMesh/blob/main/docs/releases/RELEASE_PLAN_v1.7.6.md)
131
+ 🐛 [Compilation Issues (Resolved)](https://github.com/Alteriom/painlessMesh/blob/main/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md)
132
+
133
+ ---
134
+
135
+ **Release Date**: October 19, 2025
136
+ **Build Status**: ✅ All tests passing
137
+ **Upgrade Priority**: 🚨 CRITICAL for v1.7.4/v1.7.5 users
138
+ ```
139
+
140
+ **Action:** Copy the template above and create the release on GitHub.
141
+
142
+ ---
143
+
144
+ ### 2. Publish NPM Package
145
+
146
+ **Prerequisites:**
147
+ - NPM account with publish access
148
+ - Logged in to NPM (`npm whoami` to verify)
149
+
150
+ **Commands:**
151
+
152
+ ```bash
153
+ # 1. Verify login
154
+ npm whoami
155
+
156
+ # 2. (Optional) Test package creation
157
+ npm pack
158
+
159
+ # 3. Publish to NPM
160
+ npm publish --access public
161
+
162
+ # 4. Verify publication
163
+ npm view @alteriom/painlessmesh version
164
+ # Should show: 1.7.6
165
+ ```
166
+
167
+ **NPM Package URL:** https://www.npmjs.com/package/@alteriom/painlessmesh
168
+
169
+ **Checklist:**
170
+ - [ ] Logged in to NPM
171
+ - [ ] Package built successfully
172
+ - [ ] Published to NPM registry
173
+ - [ ] Version 1.7.6 visible on npmjs.com
174
+ - [ ] Installation tested: `npm install @alteriom/painlessmesh@1.7.6`
175
+
176
+ ---
177
+
178
+ ### 3. Monitor PlatformIO Registry
179
+
180
+ **URL:** https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh
181
+
182
+ **Update Process:**
183
+ - **Automatic:** PlatformIO scans GitHub releases every 24 hours
184
+ - **Expected:** v1.7.6 should appear within 24 hours of GitHub Release
185
+ - **Manual Trigger (if needed):** `pio pkg publish .`
186
+
187
+ **Checklist:**
188
+ - [ ] Wait 24 hours after GitHub Release
189
+ - [ ] Verify v1.7.6 appears on registry
190
+ - [ ] Test installation: `pio pkg install --library "AlteriomPainlessMesh@1.7.6"`
191
+ - [ ] Verify example compilation
192
+
193
+ ---
194
+
195
+ ### 4. Monitor Arduino Library Manager
196
+
197
+ **Update Process:**
198
+ - **Automatic:** Arduino syncs from `library.properties` in GitHub releases
199
+ - **Expected:** v1.7.6 should appear within 24-48 hours
200
+ - **No manual action required**
201
+
202
+ **Verification:**
203
+ - [ ] Wait 24-48 hours after GitHub Release
204
+ - [ ] Open Arduino IDE Library Manager
205
+ - [ ] Search for "AlteriomPainlessMesh"
206
+ - [ ] Verify v1.7.6 is available
207
+ - [ ] Test installation and example compilation
208
+
209
+ ---
210
+
211
+ ## 📊 Success Criteria
212
+
213
+ ### Immediate (Within 1 Hour)
214
+ - [ ] GitHub Release published successfully
215
+ - [ ] NPM package published and available
216
+ - [ ] CI/CD pipeline status: Green
217
+
218
+ ### First 24 Hours
219
+ - [ ] Zero compilation error reports on GitHub Issues
220
+ - [ ] PlatformIO registry updated to v1.7.6
221
+ - [ ] Positive community feedback (if any)
222
+ - [ ] No critical bugs discovered
223
+
224
+ ### First Week
225
+ - [ ] Arduino Library Manager synced to v1.7.6
226
+ - [ ] ESP32 crash reports show ~5-8% rate (not increasing)
227
+ - [ ] No regression reports from users
228
+ - [ ] CI/CD continues to pass
229
+
230
+ ---
231
+
232
+ ## 🔍 Monitoring Tasks
233
+
234
+ ### GitHub Issues
235
+ Monitor for:
236
+ - Compilation errors (should be zero)
237
+ - Runtime crashes (should be ~5-8% on ESP32)
238
+ - Breaking API changes (should be none)
239
+ - Documentation issues
240
+
241
+ ### CI/CD Pipeline
242
+ Check that:
243
+ - All tests continue to pass
244
+ - ESP32 examples compile
245
+ - ESP8266 examples compile
246
+ - No new lint errors
247
+
248
+ ### Community Feedback
249
+ Watch for:
250
+ - User reports of successful upgrades
251
+ - Questions about migration
252
+ - Feature requests for v1.8.0
253
+ - Reports of improved stability
254
+
255
+ ---
256
+
257
+ ## 🚨 Rollback Plan
258
+
259
+ If critical issues are discovered:
260
+
261
+ ### Immediate (Within 1 Hour)
262
+ 1. **Advise users to downgrade:**
263
+ ```ini
264
+ lib_deps = https://github.com/Alteriom/painlessMesh.git#v1.7.2
265
+ ```
266
+
267
+ 2. **Mark GitHub Release as pre-release** (if possible)
268
+
269
+ ### Short-term (Within 24 Hours)
270
+ 1. **Revert commit:**
271
+ ```bash
272
+ git revert c17384a
273
+ git push origin main
274
+ ```
275
+
276
+ 2. **Delete tag:**
277
+ ```bash
278
+ git tag -d v1.7.6
279
+ git push origin :refs/tags/v1.7.6
280
+ ```
281
+
282
+ 3. **Unpublish NPM package** (if within 72 hours):
283
+ ```bash
284
+ npm unpublish @alteriom/painlessmesh@1.7.6
285
+ ```
286
+
287
+ ### Medium-term (Within 1 Week)
288
+ 1. Investigate root cause of rollback
289
+ 2. Prepare hotfix v1.7.7
290
+ 3. Re-test thoroughly
291
+ 4. Re-release with fixes
292
+
293
+ **Rollback Criteria:**
294
+ - Compilation failures reported
295
+ - Critical functionality broken
296
+ - Crash rate increases significantly
297
+ - Data corruption or security issues
298
+
299
+ ---
300
+
301
+ ## 📝 Communication
302
+
303
+ ### GitHub Discussions (Optional)
304
+
305
+ **Post announcement in Discussions:**
306
+
307
+ **Title:** `v1.7.6 Released - Critical Compilation Fix`
308
+
309
+ **Body:**
310
+ ```markdown
311
+ Hi everyone! 👋
312
+
313
+ We've just released **v1.7.6**, which is a critical emergency fix for compilation issues in v1.7.4 and v1.7.5.
314
+
315
+ ## 🚨 If you're on v1.7.4 or v1.7.5
316
+
317
+ **Please upgrade immediately.** Those versions fail to compile with the error:
318
+ ```
319
+ '_task_request_t' was not declared
320
+ ```
321
+
322
+ ## ✅ What's Fixed
323
+
324
+ - ESP32 and ESP8266 now compile successfully
325
+ - Removed problematic thread-safe queue code
326
+ - Maintained ~85% FreeRTOS crash reduction
327
+ - Zero breaking changes to API
328
+
329
+ ## 📦 How to Upgrade
330
+
331
+ **PlatformIO:**
332
+ ```ini
333
+ lib_deps = https://github.com/Alteriom/painlessMesh.git#v1.7.6
334
+ ```
335
+
336
+ **Arduino IDE:** Update through Library Manager
337
+
338
+ **NPM:** `npm update @alteriom/painlessmesh`
339
+
340
+ ## 📚 Documentation
341
+
342
+ - [Release Notes](https://github.com/Alteriom/painlessMesh/releases/tag/v1.7.6)
343
+ - [Full CHANGELOG](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)
344
+
345
+ Thanks for your patience, and apologies for the broken releases! 🙏
346
+ ```
347
+
348
+ ---
349
+
350
+ ## 📋 Post-Release Checklist
351
+
352
+ ### Day 1 (October 19, 2025)
353
+ - [ ] GitHub Release created
354
+ - [ ] NPM package published
355
+ - [ ] CI/CD verified green
356
+ - [ ] No immediate issues reported
357
+
358
+ ### Day 2 (October 20, 2025)
359
+ - [ ] PlatformIO registry check
360
+ - [ ] GitHub Issues monitored
361
+ - [ ] Community feedback reviewed
362
+
363
+ ### Week 1 (October 19-26, 2025)
364
+ - [ ] Arduino Library Manager verified
365
+ - [ ] No critical bugs reported
366
+ - [ ] Crash rate statistics collected
367
+ - [ ] Plan v1.8.0 roadmap
368
+
369
+ ---
370
+
371
+ ## 🎯 Next Steps
372
+
373
+ ### Immediate
374
+ 1. Create GitHub Release (use template above)
375
+ 2. Publish NPM package
376
+ 3. Monitor CI/CD pipeline
377
+
378
+ ### Future (v1.8.0 Planning)
379
+ 1. Monitor TaskScheduler updates for v4.1+
380
+ 2. Collect user feedback on v1.7.6
381
+ 3. Evaluate thread-safe queue re-implementation
382
+ 4. Consider alternative FreeRTOS fixes
383
+
384
+ ---
385
+
386
+ **Release Manager:** Alteriom Development Team
387
+ **Completion Status:** Automated steps complete, manual steps pending
388
+ **Estimated Time for Manual Steps:** 30 minutes
389
+ **Priority:** HIGH - Users are waiting for working version