@alteriom/painlessmesh 1.8.15 โ†’ 1.9.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.
Files changed (208) hide show
  1. package/BRIDGE_TO_INTERNET.md +229 -0
  2. package/CHANGELOG.md +101 -1
  3. package/CONTRIBUTING.md +79 -0
  4. package/README.md +69 -144
  5. package/docs/README.md +1 -0
  6. package/docs/api/shared-gateway.md +1207 -0
  7. package/examples/bridge_failover/README.md +113 -0
  8. package/examples/bridge_failover/bridge_failover.ino +38 -4
  9. package/examples/sharedGateway/README.md +235 -0
  10. package/examples/{meshCommandNode โ†’ sharedGateway}/platformio.ini +3 -2
  11. package/examples/sharedGateway/sharedGateway.ino +303 -0
  12. package/library.json +3 -22
  13. package/library.properties +1 -1
  14. package/package.json +3 -6
  15. package/src/arduino/wifi.hpp +504 -4
  16. package/src/painlessmesh/gateway.hpp +2120 -0
  17. package/src/painlessmesh/mesh.hpp +1034 -6
  18. package/src/painlessmesh/message_tracker.hpp +311 -0
  19. package/src/painlessmesh/protocol.hpp +6 -0
  20. package/DOCUMENTATION_INDEX.md +0 -146
  21. package/RELEASE_NOTES_1.8.15.md +0 -160
  22. package/RELEASE_READINESS_PLAN.md +0 -323
  23. package/TESTING_WITH_SIMULATOR.md +0 -259
  24. package/docs/API_DESIGN_GUIDELINES.md +0 -414
  25. package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
  26. package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
  27. package/docs/BRIDGE_FAILOVER.md +0 -512
  28. package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
  29. package/docs/BRIDGE_INITIALIZATION_FALLBACK.md +0 -357
  30. package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
  31. package/docs/CREATE_MISSING_RELEASES.md +0 -321
  32. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
  33. package/docs/FAQ_VERSION_NUMBERS.md +0 -152
  34. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
  35. package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
  36. package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
  37. package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
  38. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
  39. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
  40. package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
  41. package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
  42. package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
  43. package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
  44. package/docs/PHASE1_GUIDE.md +0 -349
  45. package/docs/PHASE2_GUIDE.md +0 -543
  46. package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
  47. package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
  48. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
  49. package/docs/SIMULATOR_TESTING.md +0 -408
  50. package/docs/VERSION_MANAGEMENT.md +0 -213
  51. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
  52. package/docs/archive/FEATURE_PROPOSALS.md +0 -337
  53. package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
  54. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
  55. package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
  56. package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
  57. package/docs/archive/RELEASE_SUMMARY.md +0 -173
  58. package/docs/archive/SCONS_BUILD_FIX.md +0 -313
  59. package/docs/archive/TRIGGER_RELEASE.md +0 -280
  60. package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
  61. package/docs/archive/ota-and-status-enhancements.md +0 -911
  62. package/docs/archive/ota-status-architecture-diagrams.md +0 -658
  63. package/docs/archive/ota-status-quick-reference.md +0 -284
  64. package/docs/design/.gitkeep +0 -1
  65. package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
  66. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
  67. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
  68. package/docs/development/DOCKER_TESTING.md +0 -196
  69. package/docs/development/PLATFORMIO_USAGE.md +0 -180
  70. package/docs/development/TESTING_SUMMARY.md +0 -126
  71. package/docs/development/contributing.md +0 -301
  72. package/docs/development/documentation.md +0 -583
  73. package/docs/features/DIAGNOSTICS_API.md +0 -534
  74. package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
  75. package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
  76. package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
  77. package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
  78. package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
  79. package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
  80. package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
  81. package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
  82. package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
  83. package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
  84. package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
  85. package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
  86. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
  87. package/docs/improvements/README.md +0 -212
  88. package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
  89. package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
  90. package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
  91. package/docs/internal/ISSUE_66_STATUS.md +0 -316
  92. package/docs/internal/PR_SUMMARY.md +0 -315
  93. package/docs/internal/REVIEW_SUMMARY.md +0 -332
  94. package/docs/multi-bridge-setup.md +0 -1025
  95. package/docs/platformio-publishing.md +0 -255
  96. package/docs/platformio-setup-summary.md +0 -121
  97. package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
  98. package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
  99. package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
  100. package/docs/releases/FEATURE_HISTORY.md +0 -543
  101. package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
  102. package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
  103. package/docs/releases/PATCH_v1.7.2.md +0 -262
  104. package/docs/releases/PATCH_v1.7.3.md +0 -262
  105. package/docs/releases/PATCH_v1.7.4.md +0 -219
  106. package/docs/releases/PHASE1_SUMMARY.md +0 -246
  107. package/docs/releases/PHASE2_SUMMARY.md +0 -499
  108. package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
  109. package/docs/releases/QUICK_START_RELEASES.md +0 -113
  110. package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
  111. package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
  112. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
  113. package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
  114. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
  115. package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
  116. package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
  117. package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
  118. package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
  119. package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
  120. package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
  121. package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
  122. package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
  123. package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
  124. package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
  125. package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
  126. package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
  127. package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
  128. package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
  129. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
  130. package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
  131. package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
  132. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
  133. package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
  134. package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
  135. package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
  136. package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
  137. package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
  138. package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
  139. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
  140. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
  141. package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
  142. package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
  143. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
  144. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
  145. package/docs/troubleshooting/common-architecture-mistakes.md +0 -438
  146. package/docs/troubleshooting/internet-access-faq.md +0 -299
  147. package/docs/troubleshooting/station-reconnection-issues.md +0 -172
  148. package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
  149. package/docs/wiki/API-Reference.md +0 -246
  150. package/docs/wiki/Complete-Documentation.md +0 -123
  151. package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
  152. package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
  153. package/examples/alteriomImproved/platformio.ini +0 -32
  154. package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
  155. package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
  156. package/examples/alteriomMetricsHealth/platformio.ini +0 -26
  157. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
  158. package/examples/alteriomPhase1/phase1_features.ino +0 -242
  159. package/examples/alteriomPhase1/platformio.ini +0 -26
  160. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
  161. package/examples/alteriomPhase2/phase2_features.ino +0 -186
  162. package/examples/alteriomPhase2/platformio.ini +0 -26
  163. package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
  164. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
  165. package/examples/alteriomSensorNode/platformio.ini +0 -26
  166. package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
  167. package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
  168. package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
  169. package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
  170. package/examples/bridge/mesh_event_publisher.hpp +0 -253
  171. package/examples/bridge/mesh_topology_reporter.hpp +0 -303
  172. package/examples/bridge/mqtt_command_bridge.hpp +0 -459
  173. package/examples/bridge/mqtt_status_bridge.hpp +0 -519
  174. package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
  175. package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
  176. package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
  177. package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
  178. package/examples/diagnosticsExample/platformio.ini +0 -26
  179. package/examples/echoNode/echoNode.ino +0 -33
  180. package/examples/echoNode/platformio.ini +0 -26
  181. package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
  182. package/examples/meshCommandNode/meshCommandNode.ino +0 -265
  183. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
  184. package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
  185. package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
  186. package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
  187. package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
  188. package/examples/mqttCommandBridge/platformio.ini +0 -27
  189. package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
  190. package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
  191. package/examples/mqttStatusBridge/platformio.ini +0 -27
  192. package/examples/mqttTopologyTest/README.md +0 -467
  193. package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
  194. package/examples/mqttTopologyTest/platformio.ini +0 -27
  195. package/examples/multi_bridge/README.md +0 -346
  196. package/examples/multi_bridge/primary_bridge.ino +0 -108
  197. package/examples/multi_bridge/regular_node.ino +0 -141
  198. package/examples/multi_bridge/secondary_bridge.ino +0 -123
  199. package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
  200. package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
  201. package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
  202. package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
  203. package/examples/queued_alarms/README.md +0 -390
  204. package/examples/queued_alarms/queued_alarms.ino +0 -265
  205. package/examples/routing_demo/README.md +0 -172
  206. package/examples/routing_demo/routing_demo.ino +0 -102
  207. package/examples/rtcIntegration/README.md +0 -294
  208. package/examples/rtcIntegration/rtcIntegration.ino +0 -210
@@ -1,239 +0,0 @@
1
- # Release Notes: v1.8.10
2
-
3
- **Release Date**: November 18, 2025
4
- **Type**: Patch Release (Bug Fix)
5
-
6
- ---
7
-
8
- ## ๐ŸŽฏ Overview
9
-
10
- Version 1.8.10 is a focused patch release that fixes a critical bridge discovery issue where newly connected nodes were not reliably receiving bridge status information. This release improves the reliability of bridge-to-node communication in mesh networks.
11
-
12
- ---
13
-
14
- ## ๐Ÿ› Bug Fixes
15
-
16
- ### Bridge Status Discovery - Direct Messaging
17
-
18
- **Issue**: Newly connected nodes were not reliably receiving bridge status broadcasts, causing delays or failures in bridge discovery.
19
-
20
- **Root Cause Analysis**:
21
- - Broadcast messages (`routing=2`) were not reaching newly connected nodes consistently
22
- - Time synchronization (NTP) operations were interfering with bridge discovery timing
23
- - Broadcast routing tables may not be fully established immediately after a node connects to the mesh
24
- - This led to nodes reporting "No primary bridge available" despite bridges being active
25
-
26
- **Solution Implemented**:
27
- - Changed bridge status delivery mechanism from broadcast to direct single message
28
- - Bridge now sends status directly to newly connected nodes using `sendSingle()` (routing=1)
29
- - Minimal 500ms delay added for connection stability before sending status
30
- - Direct targeted delivery ensures the message reaches the new node reliably
31
- - Time sync operations no longer interfere with critical bridge discovery
32
-
33
- **Technical Details**:
34
- - **File Modified**: `src/arduino/wifi.hpp`
35
- - **Location**: Line ~809 in `initBridgeStatusBroadcast()`
36
- - **Change**: Modified `newConnectionCallback` to use `sendSingle(nodeId, ...)` instead of `sendBroadcast(...)`
37
- - **Routing Mode**: Changed from `routing=2` (broadcast) to `routing=1` (single destination)
38
-
39
- **Impact**:
40
- - โœ… Nodes discover bridges immediately (within 500ms) after connecting
41
- - โœ… Eliminates "No primary bridge available" errors for newly connected nodes
42
- - โœ… More reliable mesh network initialization
43
- - โœ… Better handling of nodes joining/rejoining the mesh
44
- - โœ… Reduced dependency on broadcast routing table convergence
45
-
46
- **Backward Compatibility**:
47
- - โœ… No API changes
48
- - โœ… Internal delivery mechanism improved
49
- - โœ… All existing code continues to work without modification
50
- - โœ… No breaking changes to bridge status packet format
51
-
52
- **Related Issues**:
53
- - Resolves GitHub issue #135 "The latest fix does not work"
54
-
55
- ---
56
-
57
- ## ๐Ÿ“ฆ What's Included
58
-
59
- ### Core Changes
60
- - **Bridge Discovery**: Enhanced reliability for newly connected nodes
61
- - **Message Delivery**: Direct messaging replaces broadcast for critical status updates
62
- - **Connection Stability**: Added minimal delay for connection stabilization
63
-
64
- ### Files Modified
65
- - `src/arduino/wifi.hpp` - Bridge status delivery mechanism
66
- - `library.properties` - Version update to 1.8.10
67
- - `library.json` - Version update to 1.8.10
68
- - `package.json` - Version update to 1.8.10
69
- - `src/painlessMesh.h` - Header version and date update
70
- - `src/AlteriomPainlessMesh.h` - Version defines update
71
- - `CHANGELOG.md` - Release entry added
72
-
73
- ---
74
-
75
- ## ๐Ÿš€ Upgrade Guide
76
-
77
- ### Installation
78
-
79
- **Arduino Library Manager**:
80
- ```
81
- Search for "Alteriom PainlessMesh" and update to v1.8.10
82
- ```
83
-
84
- **PlatformIO**:
85
- ```ini
86
- lib_deps = alteriom/AlteriomPainlessMesh@^1.8.10
87
- ```
88
-
89
- **NPM**:
90
- ```bash
91
- npm install @alteriom/painlessmesh@1.8.10
92
- ```
93
-
94
- ### Migration from v1.8.9
95
-
96
- **No changes required!** This is a drop-in replacement for v1.8.9.
97
-
98
- - โœ… All existing bridge code works unchanged
99
- - โœ… All existing node code works unchanged
100
- - โœ… No API modifications
101
- - โœ… No configuration changes needed
102
-
103
- Simply update the library version and redeploy.
104
-
105
- ---
106
-
107
- ## ๐Ÿงช Testing Recommendations
108
-
109
- After upgrading to v1.8.10, test these scenarios:
110
-
111
- ### 1. **New Node Connection Test**
112
- ```cpp
113
- // Expected behavior:
114
- // - Node connects to mesh
115
- // - Receives bridge status within 500ms
116
- // - No "No primary bridge available" errors
117
- ```
118
-
119
- ### 2. **Bridge Discovery Test**
120
- ```cpp
121
- // Expected behavior:
122
- // - Multiple nodes connecting simultaneously
123
- // - All nodes discover bridge reliably
124
- // - Fast discovery regardless of NTP sync activity
125
- ```
126
-
127
- ### 3. **Bridge Failover Test**
128
- ```cpp
129
- // Expected behavior:
130
- // - Bridge disconnects
131
- // - New bridge elected
132
- // - All nodes discover new bridge within 500ms
133
- ```
134
-
135
- ### 4. **Network Rejoin Test**
136
- ```cpp
137
- // Expected behavior:
138
- // - Node loses connection and reconnects
139
- // - Bridge status received immediately on rejoin
140
- // - No discovery delays
141
- ```
142
-
143
- ---
144
-
145
- ## ๐ŸŽฏ Recommendations
146
-
147
- ### Who Should Upgrade
148
-
149
- **Immediate Upgrade Recommended**:
150
- - โœ… Systems with frequent node connections/disconnections
151
- - โœ… Networks experiencing bridge discovery delays
152
- - โœ… Deployments with NTP time synchronization enabled
153
- - โœ… Multi-bridge mesh networks
154
- - โœ… Production systems requiring fast startup
155
-
156
- **Can Upgrade at Convenience**:
157
- - Networks with stable connections and infrequent joins
158
- - Single-bridge setups without time sync
159
- - Development/testing environments
160
-
161
- ### Deployment Strategy
162
-
163
- **Low-Risk Deployment**:
164
- 1. Test in development environment first
165
- 2. Deploy to one bridge node
166
- 3. Monitor for 24 hours
167
- 4. Roll out to remaining nodes
168
-
169
- **Zero-Downtime Deployment**:
170
- - Bridge nodes can be updated one at a time
171
- - Regular nodes can be updated in batches
172
- - No mesh network restart required
173
-
174
- ---
175
-
176
- ## ๐Ÿ“Š Performance Characteristics
177
-
178
- ### Resource Usage
179
- - **Memory Impact**: Negligible (no additional allocations)
180
- - **CPU Impact**: Minimal (one additional `sendSingle()` per connection)
181
- - **Network Traffic**: Slightly reduced (targeted delivery vs broadcast)
182
-
183
- ### Timing Improvements
184
- - **Before v1.8.10**: Bridge discovery could take up to 30 seconds (periodic broadcast interval)
185
- - **After v1.8.10**: Bridge discovery within 500ms of connection
186
-
187
- ### Network Efficiency
188
- - **Broadcast Method**: Message sent to all nodes (even if not needed)
189
- - **Direct Method**: Message sent only to newly connected node (more efficient)
190
-
191
- ---
192
-
193
- ## ๐Ÿ” Known Issues
194
-
195
- ### None
196
-
197
- This release has no known issues. The fix has been tested and validated.
198
-
199
- ### Reporting Issues
200
-
201
- If you encounter any problems with v1.8.10, please report them:
202
- - **GitHub Issues**: https://github.com/Alteriom/painlessMesh/issues
203
- - **Include**: Library version, platform (ESP32/ESP8266), and detailed description
204
- - **Attach**: Serial logs and minimal reproduction code if possible
205
-
206
- ---
207
-
208
- ## ๐Ÿ™ Acknowledgments
209
-
210
- Special thanks to the community members who reported and helped diagnose the bridge discovery issue, particularly:
211
- - GitHub user who reported issue #135
212
-
213
- ---
214
-
215
- ## ๐Ÿ“š Additional Resources
216
-
217
- - **Documentation**: https://alteriom.github.io/painlessMesh/
218
- - **API Reference**: https://alteriom.github.io/painlessMesh/#/api/doxygen
219
- - **Examples**: https://alteriom.github.io/painlessMesh/#/tutorials/basic-examples
220
- - **Bridge Failover Guide**: `examples/bridge_failover/README.md`
221
- - **Changelog**: `CHANGELOG.md`
222
- - **Release Guide**: `RELEASE_GUIDE.md`
223
-
224
- ---
225
-
226
- ## ๐Ÿ”œ Coming in Future Releases
227
-
228
- Stay tuned for upcoming features:
229
- - Enhanced bridge load balancing
230
- - Advanced mesh diagnostics
231
- - Additional monitoring packages
232
- - Performance optimizations
233
-
234
- ---
235
-
236
- **Released**: November 18, 2025
237
- **Version**: 1.8.10
238
- **Type**: Patch (Bug Fix)
239
- **Compatibility**: 100% backward compatible with v1.8.9
@@ -1,213 +0,0 @@
1
- # Release Notes: painlessMesh v1.8.9
2
-
3
- **Release Date**: November 12, 2025
4
- **GitHub**: [Alteriom/painlessMesh](https://github.com/Alteriom/painlessMesh)
5
- **Tag**: v1.8.9
6
-
7
- ---
8
-
9
- ## ๐ŸŽฏ Summary
10
-
11
- Version 1.8.9 fixes critical bridge self-registration issues that prevented bridge nodes from properly tracking themselves in status broadcasts and coordination messages. This resolves the "Known bridges: 0" error reported by @woodlist and improves multi-bridge coordination reliability.
12
-
13
- ---
14
-
15
- ## ๐Ÿ› Critical Fixes
16
-
17
- ### Bridge Self-Registration (Type 610 & 613)
18
-
19
- **Problem**: Bridge nodes were not tracking themselves in their own bridge lists and coordination maps, causing:
20
- - Bridge reporting "Known bridges: 0" despite being active
21
- - "No primary bridge available!" errors
22
- - Multi-bridge priority selection failures
23
-
24
- **Root Cause**: Mesh networks don't loop broadcasts back to sender by design. Nodes receive broadcasts from others but not their own messages, requiring explicit local state management.
25
-
26
- **Solutions Implemented**:
27
-
28
- #### 1. Bridge Status Broadcasting (Type 610)
29
- - Added immediate self-registration in `initBridgeStatusBroadcast()` (line ~746)
30
- - Bridge calls `updateBridgeStatus()` with own nodeId right after initialization
31
- - Added self-update in `sendBridgeStatus()` (line ~1192)
32
- - Bridge updates own status before each broadcast
33
- - **Result**: Bridge now appears in its own `knownBridges` list from the start
34
-
35
- #### 2. Bridge Coordination (Type 613)
36
- - Added self-registration in `initBridgeCoordination()` (line ~803)
37
- - Bridge adds own priority: `bridgePriorities[this->nodeId] = bridgePriority`
38
- - Added priority self-update in `sendBridgeCoordination()` (line ~869)
39
- - Bridge updates own priority before each broadcast
40
- - **Result**: Primary bridge selection works correctly with all bridge priorities
41
-
42
- **Impact**:
43
- - โœ… Bridge correctly reports "Known bridges: 1" (or more)
44
- - โœ… Multi-bridge setups properly select primary bridge
45
- - โœ… Bridge failover more reliable with complete tracking
46
- - โœ… Self-tracking pattern consistent across periodic broadcasts
47
-
48
- **Files Modified**: `src/arduino/wifi.hpp`
49
-
50
- ---
51
-
52
- ## ๐Ÿ”ง Build System
53
-
54
- ### Docker Compiler Change
55
- - Switched from clang++ to g++ in Dockerfile
56
- - Resolves template instantiation crashes during Docker builds
57
- - Build verification confirms successful compilation
58
-
59
- **Files Modified**: `Dockerfile`
60
-
61
- ---
62
-
63
- ## ๐Ÿ“š Documentation
64
-
65
- ### Comprehensive Broadcast Analysis
66
- Added `COMPREHENSIVE_BROADCAST_ANALYSIS.md` with:
67
- - Full analysis of all 4 broadcast message types (610, 611, 612, 613)
68
- - Self-tracking requirements for Type 610 (STATUS) and 613 (COORDINATION)
69
- - Confirmation that Type 611 (ELECTION) already implements correct pattern
70
- - Confirmation that Type 612 (TAKEOVER) doesn't require self-tracking
71
- - Pattern guidelines for future broadcast implementations
72
-
73
- ---
74
-
75
- ## ๐Ÿ”ฌ Technical Details
76
-
77
- ### Broadcast Message Types Analyzed
78
-
79
- | Type | Name | Purpose | Self-Tracking | Status |
80
- |------|------|---------|---------------|---------|
81
- | 610 | BRIDGE_STATUS | Periodic health heartbeat | โœ… Required | โœ… Fixed |
82
- | 611 | BRIDGE_ELECTION | Candidate announcement | โœ… Required | โœ… Already correct |
83
- | 612 | BRIDGE_TAKEOVER | Role change notification | โŒ Not needed | โœ… No issue |
84
- | 613 | BRIDGE_COORDINATION | Priority broadcasting | โœ… Required | โœ… Fixed |
85
-
86
- ### Before vs After
87
-
88
- **Before Fix**:
89
- ```
90
- Bridge Node Output:
91
- Known bridges: 0
92
- No primary bridge available!
93
- Bridge priority: (missing from map)
94
- ```
95
-
96
- **After Fix**:
97
- ```
98
- Bridge Node Output:
99
- Known bridges: 1
100
- Primary bridge: 123456 (this node)
101
- Bridge priority: 100 (correctly tracked)
102
- ```
103
-
104
- ---
105
-
106
- ## ๐Ÿš€ Upgrade Instructions
107
-
108
- ### For Existing Users
109
-
110
- 1. **Update Library**:
111
- ```bash
112
- # Arduino Library Manager
113
- Update "Alteriom PainlessMesh" to v1.8.9
114
-
115
- # PlatformIO
116
- lib_deps = AlteriomPainlessMesh@^1.8.9
117
-
118
- # NPM
119
- npm install @alteriom/painlessmesh@1.8.9
120
- ```
121
-
122
- 2. **Rebuild and Deploy**:
123
- - No code changes required in your sketches
124
- - Fixes are automatic in the library
125
- - Rebuild and upload to all bridge nodes
126
-
127
- 3. **Verify Fix**:
128
- - Enable logging: `mesh.setDebugMsgTypes(ERROR | CONNECTION)`
129
- - Check bridge status: `mesh.getBridges()` should return count >= 1
130
- - Bridge node should log "Known bridges: 1" or more
131
-
132
- ### Breaking Changes
133
- **None** - This release is fully backward compatible.
134
-
135
- ---
136
-
137
- ## ๐Ÿงช Testing
138
-
139
- ### Validation Performed
140
- - โœ… Standalone compilation test with g++
141
- - โœ… Code review of all 4 broadcast message types
142
- - โœ… Pattern validation across entire codebase
143
- - โœ… Version consistency check across all package files
144
-
145
- ### Recommended Testing
146
- After upgrading, test these scenarios:
147
-
148
- 1. **Single Bridge**: Deploy and verify bridge reports "Known bridges: 1"
149
- 2. **Multi-Bridge**: Verify primary selection works with all priorities tracked
150
- 3. **Failover**: Disconnect primary bridge, verify secondary promotion works
151
- 4. **Auto-Election**: Test election with no pre-designated bridge
152
-
153
- ---
154
-
155
- ## ๐Ÿ“– Related Issues
156
-
157
- - Resolves: @woodlist GitHub issue - "Known bridges: 0" despite active bridge
158
- - Related: Bridge failover improvements (v1.8.6)
159
- - Related: Bridge discovery timing (v1.8.4)
160
-
161
- ---
162
-
163
- ## ๐Ÿ“ฆ Version Information
164
-
165
- ### Updated Files
166
- - โœ… `library.properties` โ†’ 1.8.9
167
- - โœ… `library.json` โ†’ 1.8.9
168
- - โœ… `package.json` โ†’ 1.8.9
169
- - โœ… `src/painlessMesh.h` โ†’ 1.8.9
170
- - โœ… `src/AlteriomPainlessMesh.h` โ†’ 1.8.9
171
- - โœ… `CHANGELOG.md` โ†’ Entry added for 1.8.9
172
-
173
- ### Package Hashes
174
- Will be generated automatically during release process.
175
-
176
- ---
177
-
178
- ## ๐Ÿ‘ฅ Contributors
179
-
180
- - **Alteriom Team** - Core development and maintenance
181
- - **@woodlist** - Issue reporting and testing
182
- - **GitHub Copilot** - Code analysis and documentation
183
-
184
- ---
185
-
186
- ## ๐Ÿ“ Next Steps
187
-
188
- 1. **Create Git Tag**: `git tag -a v1.8.9 -m "release: v1.8.9 - Bridge self-registration fixes"`
189
- 2. **Push Tag**: `git push origin v1.8.9`
190
- 3. **GitHub Release**: Create release from tag with these notes
191
- 4. **Publish Packages**:
192
- - Arduino Library Manager (automatic)
193
- - PlatformIO (automatic)
194
- - NPM: `npm publish`
195
-
196
- ---
197
-
198
- ## ๐Ÿ“„ License
199
-
200
- LGPL-3.0 - See [LICENSE](LICENSE) file for details
201
-
202
- ---
203
-
204
- ## ๐Ÿ”— Links
205
-
206
- - **Repository**: https://github.com/Alteriom/painlessMesh
207
- - **Documentation**: https://alteriom.github.io/painlessMesh/
208
- - **Issues**: https://github.com/Alteriom/painlessMesh/issues
209
- - **NPM Package**: https://www.npmjs.com/package/@alteriom/painlessmesh
210
-
211
- ---
212
-
213
- *For detailed technical analysis, see [COMPREHENSIVE_BROADCAST_ANALYSIS.md](COMPREHENSIVE_BROADCAST_ANALYSIS.md)*