@alteriom/painlessmesh 1.8.15 → 1.9.0

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 +61 -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 +81 -0
  8. package/examples/bridge_failover/bridge_failover.ino +35 -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 +342 -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,292 +0,0 @@
1
- # Release Notes: AlteriomPainlessMesh v1.8.3
2
-
3
- **Release Date:** November 11, 2025
4
- **Type:** Patch Release - Bug Fix
5
- **Breaking Changes:** None - 100% Backward Compatible
6
-
7
- ---
8
-
9
- ## 🎯 Executive Summary
10
-
11
- Version 1.8.3 addresses a critical ZIP file integrity issue reported by users attempting to install the library via Arduino IDE. This patch release fixes file corruption caused by a symlink in release archives and enhances the release packaging process.
12
-
13
- **Key Fix:** Arduino IDE installation now works correctly with clean ZIP packages
14
-
15
- ---
16
-
17
- ## 🐛 Bug Fix: Arduino IDE ZIP Installation (Issue #89)
18
-
19
- ### Problem
20
-
21
- Users reported ZIP file corruption when attempting to install AlteriomPainlessMesh via Arduino IDE's "Add .ZIP Library" feature:
22
- - Arduino IDE crashed during installation
23
- - ZIP file reported as corrupted or unreadable
24
- - Installation hung indefinitely
25
- - Manual extraction failed
26
-
27
- **Reported by:** @woodlist
28
-
29
- ### Root Cause
30
-
31
- The `_codeql_detected_source_root` symlink (automatically created by GitHub Actions CodeQL scanner) was being included in release archives. This circular symlink caused:
32
- - ZIP file corruption during archive creation
33
- - Arduino IDE crashes when parsing the malformed archive
34
- - Installation failures across all platforms
35
-
36
- ### Solution
37
-
38
- **1. Removed Problematic Symlink**
39
- - Deleted `_codeql_detected_source_root` symlink from repository
40
- - Added to `.gitignore` to prevent automatic recreation by CodeQL
41
-
42
- **2. Enhanced Release Packaging**
43
- - Added comprehensive `.gitattributes` export-ignore rules
44
- - Excludes development files from Git-based archives
45
- - Reduces package size and improves cleanliness
46
-
47
- **3. Improved Archive Structure**
48
- - ZIP packages now contain only essential library files
49
- - Package size reduced from 840K to 420K (50% reduction)
50
- - Cleaner structure improves Arduino IDE compatibility
51
-
52
- ### Files Excluded from Archives
53
-
54
- The following development files are now excluded via `.gitattributes export-ignore`:
55
-
56
- **Development Directories:**
57
- - `.github/` - GitHub Actions workflows and configurations
58
- - `scripts/` - Build and release automation scripts
59
- - `test/` - Unit tests and test infrastructure
60
- - `docs/`, `docs-website/`, `docsify-site/`, `doxygen/` - Documentation sources
61
- - `website/`, `extras/`, `paypal/` - Website and miscellaneous files
62
-
63
- **Build & Configuration:**
64
- - `CMakeLists.txt`, `ninja.build`, `.ninja*` - Build system files
65
- - `docker-compose.yml`, `Dockerfile`, `docker-test.ps1` - Docker configurations
66
- - `autotest.sh`, `run-tests.sh` - Testing scripts
67
- - `mcp-server.json`, `copilot-agents.json` - Development tools
68
-
69
- **Package Management:**
70
- - `.npmignore`, `.npmrc`, `package-lock.json` - NPM-specific files
71
-
72
- ### What's Included in ZIP Packages
73
-
74
- Clean, Arduino-ready packages now contain:
75
- - ✅ `src/` - Library source code
76
- - ✅ `examples/` - Example sketches
77
- - ✅ `library.properties` - Arduino library metadata
78
- - ✅ `README.md` - Getting started guide
79
- - ✅ `LICENSE` - License information
80
- - ✅ `CHANGELOG.md` - Version history
81
- - ✅ `keywords.txt` - Arduino syntax highlighting
82
-
83
- ---
84
-
85
- ## 📝 Documentation Enhancement (Issue #89)
86
-
87
- ### Version Timestamp in Header File
88
-
89
- Added comprehensive version documentation to `painlessMesh.h` main header file as requested by @woodlist:
90
-
91
- ```cpp
92
- /**
93
- * @file painlessMesh.h
94
- * @brief Main header file for Alteriom painlessMesh library
95
- *
96
- * @version 1.8.3
97
- * @date 2025-11-11
98
- *
99
- * painlessMesh is a user-friendly library for creating mesh networks with
100
- * ESP8266 and ESP32 devices. This Alteriom fork includes additional packages
101
- * for sensor data, device commands, and status monitoring.
102
- *
103
- * For the latest version and updates, visit:
104
- * https://github.com/Alteriom/painlessMesh
105
- */
106
- ```
107
-
108
- **Benefits:**
109
- - Version information visible when browsing source code
110
- - Release date provides temporal context
111
- - Repository URL helps users find updates
112
- - Improves library discoverability and documentation
113
-
114
- ---
115
-
116
- ## 📦 Installation Instructions
117
-
118
- ### Arduino IDE (Recommended)
119
-
120
- **Method 1: Library Manager (Recommended)**
121
- 1. Open Arduino IDE
122
- 2. Go to: `Sketch → Include Library → Manage Libraries`
123
- 3. Search: "Alteriom PainlessMesh"
124
- 4. Click: Install
125
-
126
- **Method 2: Manual ZIP Installation (Now Fixed!)**
127
- 1. Download: [painlessMesh-v1.8.3.zip](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3)
128
- 2. Arduino IDE → `Sketch → Include Library → Add .ZIP Library`
129
- 3. Select the downloaded ZIP file
130
- 4. Wait for installation to complete
131
- 5. Verify: `Sketch → Include Library` → see "Alteriom PainlessMesh"
132
-
133
- **Dependencies** (install separately via Library Manager):
134
- - ArduinoJson (v6.21.x or v7.x)
135
- - TaskScheduler (v3.7.0+)
136
-
137
- ### PlatformIO
138
-
139
- ```ini
140
- [env:esp32]
141
- platform = espressif32
142
- framework = arduino
143
- lib_deps =
144
- alteriom/painlessMesh@^1.8.3
145
- bblanchon/ArduinoJson@^7.4.2
146
- arkhipenko/TaskScheduler@^4.0.0
147
- ```
148
-
149
- ### NPM
150
-
151
- ```bash
152
- npm install @alteriom/painlessmesh@1.8.3
153
- ```
154
-
155
- ---
156
-
157
- ## 🔍 Verification
158
-
159
- ### Build & Test Results
160
-
161
- ✅ **Build Verification**
162
- - All 110 targets compiled successfully
163
- - No compiler warnings or errors
164
- - ESP32, ESP8266, and ESP32-C6 platform support verified
165
-
166
- ✅ **Test Suite**
167
- - 1000+ test assertions passed
168
- - No regressions detected
169
- - All existing functionality working correctly
170
-
171
- ✅ **Release Validation**
172
- - Release agent: 20/20 checks passed
173
- - Version consistency verified across all files
174
- - CHANGELOG entry complete with fix details
175
- - No breaking changes detected
176
-
177
- ### ZIP Package Verification
178
-
179
- Created and verified `painlessMesh-v1.8.3.zip`:
180
-
181
- ```
182
- ✅ Package Size: 420K (clean, optimized)
183
- ✅ Structure: Clean, Arduino-compatible
184
- ✅ Contents: Only essential library files
185
- ✅ No Symlinks: Verified absent
186
- ✅ No Test Files: Excluded correctly
187
- ✅ No .github/: Excluded correctly
188
- ✅ No scripts/: Excluded correctly
189
- ✅ Installation: Tested successfully in Arduino IDE
190
- ```
191
-
192
- **Archive Contents Summary:**
193
- ```
194
- painlessMesh/
195
- ├── src/ # Library source (1.2MB)
196
- ├── examples/ # Example sketches (45 examples)
197
- ├── library.properties # Arduino metadata
198
- ├── README.md # Getting started guide
199
- ├── LICENSE # LGPL-3.0 license
200
- ├── CHANGELOG.md # Version history
201
- └── keywords.txt # Syntax highlighting
202
- ```
203
-
204
- ---
205
-
206
- ## 📊 Version Information
207
-
208
- **Version Numbers:**
209
- - `library.properties`: 1.8.3
210
- - `library.json`: 1.8.3
211
- - `package.json`: 1.8.3
212
- - `painlessMesh.h`: 1.8.3
213
-
214
- **Release Date:** November 11, 2025
215
-
216
- **Git Tag:** `v1.8.3`
217
-
218
- ---
219
-
220
- ## 🔄 Upgrade Guide
221
-
222
- ### From v1.8.2 to v1.8.3
223
-
224
- **No Code Changes Required** - This is a bug fix release affecting only packaging and installation.
225
-
226
- **Arduino IDE Users:**
227
- 1. Remove old version: `Sketch → Include Library → Manage Libraries`
228
- 2. Search "Alteriom PainlessMesh"
229
- 3. Click "Update" or "Install" for v1.8.3
230
-
231
- **PlatformIO Users:**
232
- 1. Update `platformio.ini`: `alteriom/painlessMesh@^1.8.3`
233
- 2. Run: `pio lib update`
234
-
235
- **NPM Users:**
236
- ```bash
237
- npm update @alteriom/painlessmesh
238
- ```
239
-
240
- **Manual Installation Users:**
241
- - Download new ZIP from [Releases](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3)
242
- - Install via Arduino IDE → Add .ZIP Library
243
-
244
- ---
245
-
246
- ## 🐛 Known Issues
247
-
248
- None - This release specifically addresses the ZIP file integrity issue.
249
-
250
- ---
251
-
252
- ## 🙏 Credits
253
-
254
- **Issue Report:** @woodlist
255
- **Root Cause Analysis:** @sparck75, @Copilot
256
- **Fix Implementation:** @Copilot
257
- **Testing:** Alteriom Team
258
-
259
- Special thanks to @woodlist for the detailed bug report and patience during investigation.
260
-
261
- ---
262
-
263
- ## 📚 Documentation
264
-
265
- - **📖 [Full Documentation](https://alteriom.github.io/painlessMesh/)**
266
- - **🔧 [API Reference](https://alteriom.github.io/painlessMesh/#/api/doxygen)**
267
- - **📝 [Examples](https://alteriom.github.io/painlessMesh/#/tutorials/basic-examples)**
268
- - **🚀 [Release Guide](https://github.com/Alteriom/painlessMesh/blob/main/RELEASE_GUIDE.md)**
269
- - **📋 [CHANGELOG](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)**
270
-
271
- ---
272
-
273
- ## 🔗 Distribution Channels
274
-
275
- **v1.8.3 Available On:**
276
- - ✅ [GitHub Releases](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3)
277
- - ✅ [NPM Registry](https://www.npmjs.com/package/@alteriom/painlessmesh)
278
- - ✅ [PlatformIO Registry](https://registry.platformio.org/libraries/alteriom/painlessMesh)
279
- - ✅ [Arduino Library Manager](https://www.arduino.cc/reference/en/libraries/alteriompainlessmesh/) (within 24-48 hours)
280
-
281
- ---
282
-
283
- ## 📞 Support
284
-
285
- - **Issues:** [GitHub Issues](https://github.com/Alteriom/painlessMesh/issues)
286
- - **Discussions:** [GitHub Discussions](https://github.com/Alteriom/painlessMesh/discussions)
287
- - **Documentation:** [https://alteriom.github.io/painlessMesh/](https://alteriom.github.io/painlessMesh/)
288
-
289
- ---
290
-
291
- **Previous Release:** [v1.8.2 - Multi-Bridge Coordination & Message Queue](RELEASE_NOTES_v1.8.2.md)
292
- **Next Release:** TBD
@@ -1,277 +0,0 @@
1
- # Release Notes: AlteriomPainlessMesh v1.8.4
2
-
3
- **Release Date:** November 12, 2025
4
- **Type:** Patch Release - Bug Fix
5
- **Breaking Changes:** None - 100% Backward Compatible
6
-
7
- ---
8
-
9
- ## 🎯 Executive Summary
10
-
11
- Version 1.8.4 addresses a timing issue in bridge status broadcasting that caused discovery delays in the bridge_failover example. This patch release ensures bridge nodes are immediately discoverable when they come online or when new nodes join the mesh.
12
-
13
- **Key Fix:** Bridge nodes now discoverable in <1 second (previously up to 30 seconds)
14
-
15
- ---
16
-
17
- ## 🐛 Bug Fix: Bridge Discovery Timing (Issue #108)
18
-
19
- ### Problem
20
-
21
- Users reported that the `bridge_failover` example failed to discover bridge nodes, showing:
22
- ```
23
- --- Bridge Status ---
24
- I am bridge: NO
25
- Internet available: NO
26
- Known bridges: 0
27
- No primary bridge available!
28
- --------------------
29
- ```
30
-
31
- **Symptoms:**
32
- - Bridge nodes not appearing in known bridges list
33
- - "No primary bridge available" error
34
- - Discovery delays of up to 30 seconds
35
- - Poor user experience in bridge_failover example
36
-
37
- **Reported by:** @woodlist
38
-
39
- ### Root Cause
40
-
41
- Bridge status broadcasts only occurred on a 30-second periodic timer. When the bridge initialized or when new nodes connected:
42
- 1. Bridge started at t=0
43
- 2. Regular node connected at t=5
44
- 3. **First status broadcast at t=30** ← Problem!
45
- 4. User checked status at t=21 → No bridges discovered
46
-
47
- This delay violated user expectations for immediate discovery and made the bridge_failover example appear broken.
48
-
49
- ### Solution
50
-
51
- **Enhanced Bridge Status Broadcasting Timing**
52
-
53
- Modified `initBridgeStatusBroadcast()` in `src/arduino/wifi.hpp` to add two critical broadcast triggers:
54
-
55
- **1. Immediate Broadcast on Initialization**
56
- ```cpp
57
- // Send immediate broadcast so nodes can discover this bridge right away
58
- this->addTask([this]() {
59
- Log(STARTUP, "Sending initial bridge status broadcast\n");
60
- this->sendBridgeStatus();
61
- });
62
- ```
63
-
64
- **2. Broadcast on New Node Connections**
65
- ```cpp
66
- // Broadcast when new nodes connect so they can discover the bridge immediately
67
- this->newConnectionCallbacks.push_back([this](uint32_t nodeId) {
68
- Log(CONNECTION, "New node %u connected, sending bridge status\n", nodeId);
69
- this->sendBridgeStatus();
70
- });
71
- ```
72
-
73
- **3. Existing Periodic Broadcasts (Unchanged)**
74
- - Continues broadcasting every 30 seconds (default, configurable)
75
- - Maintains health monitoring capabilities
76
-
77
- ### Benefits
78
-
79
- - ✅ **Instant Discovery:** Bridge discoverable in <1 second
80
- - ✅ **Better UX:** No confusing delays in examples
81
- - ✅ **Reliable Failover:** Faster detection in high-availability setups
82
- - ✅ **Backward Compatible:** No breaking changes
83
- - ✅ **Minimal Overhead:** One extra broadcast per connection event
84
-
85
- ---
86
-
87
- ## 📝 Documentation Updates
88
-
89
- ### Bridge Failover Example README
90
-
91
- Updated `examples/bridge_failover/README.md` to document the improved timing:
92
-
93
- **Added Section: Bridge Status Monitoring**
94
- ```markdown
95
- Broadcasts occur:
96
- - Immediately on bridge initialization
97
- - When new nodes connect to the mesh
98
- - Periodically (default: every 30 seconds)
99
- ```
100
-
101
- **Added Troubleshooting: Bridge Not Discovered**
102
- - Common symptoms and solutions
103
- - Notes about immediate discovery in v1.8.4+
104
- - Verification steps for proper setup
105
-
106
- ---
107
-
108
- ## 🔍 Technical Details
109
-
110
- ### Files Modified
111
-
112
- **Code Changes:**
113
- - `src/arduino/wifi.hpp` - Enhanced `initBridgeStatusBroadcast()` method
114
- - Added immediate broadcast task
115
- - Registered newConnectionCallback for connection-triggered broadcasts
116
- - 13 lines added
117
-
118
- **Documentation Changes:**
119
- - `examples/bridge_failover/README.md` - Updated documentation
120
- - Enhanced Bridge Status Monitoring section
121
- - Added Bridge Not Discovered troubleshooting
122
- - 18 lines added
123
-
124
- ### Testing
125
-
126
- **Existing Test Coverage:**
127
- - ✅ All 1000+ test assertions passed
128
- - ✅ No regressions detected
129
- - ✅ Bridge health metrics tests (107 assertions) passed
130
-
131
- **Manual Verification:**
132
- - Tested bridge initialization timing
133
- - Verified immediate broadcast functionality
134
- - Confirmed connection-triggered broadcasts work
135
- - Validated backward compatibility
136
-
137
- ---
138
-
139
- ## 📦 Installation Instructions
140
-
141
- ### Arduino IDE
142
-
143
- **Method 1: Library Manager (Recommended)**
144
- 1. Open Arduino IDE
145
- 2. Go to: `Sketch → Include Library → Manage Libraries`
146
- 3. Search: "Alteriom PainlessMesh"
147
- 4. Click: Install (will show v1.8.4)
148
-
149
- **Method 2: Manual ZIP Installation**
150
- 1. Download: [painlessMesh-v1.8.4.zip](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.4)
151
- 2. Arduino IDE → `Sketch → Include Library → Add .ZIP Library`
152
- 3. Select the downloaded ZIP file
153
- 4. Verify: `Sketch → Include Library` → see "Alteriom PainlessMesh"
154
-
155
- **Dependencies** (install via Library Manager):
156
- - ArduinoJson (v6.21.x or v7.x)
157
- - TaskScheduler (v3.7.0+)
158
-
159
- ### PlatformIO
160
-
161
- ```ini
162
- [env:esp32]
163
- platform = espressif32
164
- framework = arduino
165
- lib_deps =
166
- alteriom/painlessMesh@^1.8.4
167
- bblanchon/ArduinoJson@^7.4.2
168
- arkhipenko/TaskScheduler@^4.0.0
169
- ```
170
-
171
- ### NPM
172
-
173
- ```bash
174
- npm install @alteriom/painlessmesh@1.8.4
175
- ```
176
-
177
- ---
178
-
179
- ## 📊 Version Information
180
-
181
- **Version Numbers:**
182
- - `library.properties`: 1.8.4
183
- - `library.json`: 1.8.4
184
- - `package.json`: 1.8.4
185
- - `painlessMesh.h`: 1.8.4
186
-
187
- **Release Date:** November 12, 2025
188
-
189
- **Git Tag:** `v1.8.4`
190
-
191
- ---
192
-
193
- ## 🔄 Upgrade Guide
194
-
195
- ### From v1.8.3 to v1.8.4
196
-
197
- **No Code Changes Required** - This is a bug fix release for bridge timing. Your existing code will work without modification and benefit from faster bridge discovery automatically.
198
-
199
- **Arduino IDE Users:**
200
- 1. Open: `Sketch → Include Library → Manage Libraries`
201
- 2. Search: "Alteriom PainlessMesh"
202
- 3. Click: "Update" to v1.8.4
203
-
204
- **PlatformIO Users:**
205
- 1. Update `platformio.ini`: `alteriom/painlessMesh@^1.8.4`
206
- 2. Run: `pio lib update`
207
-
208
- **NPM Users:**
209
- ```bash
210
- npm update @alteriom/painlessmesh
211
- ```
212
-
213
- ### Expected Behavior Changes
214
-
215
- **Before v1.8.4:**
216
- ```
217
- t=0s : Bridge starts
218
- t=5s : Node connects
219
- t=30s : First broadcast (node discovers bridge)
220
- ```
221
-
222
- **After v1.8.4:**
223
- ```
224
- t=0s : Bridge starts + immediate broadcast
225
- t=5s : Node connects + immediate broadcast
226
- t=<1s : Node discovers bridge ✅
227
- ```
228
-
229
- ---
230
-
231
- ## 🐛 Known Issues
232
-
233
- None - This release specifically addresses the bridge discovery timing issue.
234
-
235
- ---
236
-
237
- ## 🙏 Credits
238
-
239
- **Issue Report:** @woodlist
240
- **Analysis & Implementation:** @Copilot
241
- **Testing:** Alteriom Team
242
- **Project Management:** @sparck75
243
-
244
- Special thanks to @woodlist for reporting the bridge discovery issue and @sparck75 for driving the release preparation.
245
-
246
- ---
247
-
248
- ## 📚 Documentation
249
-
250
- - **📖 [Full Documentation](https://alteriom.github.io/painlessMesh/)**
251
- - **🔧 [API Reference](https://alteriom.github.io/painlessMesh/#/api/doxygen)**
252
- - **📝 [Examples](https://alteriom.github.io/painlessMesh/#/tutorials/basic-examples)**
253
- - **🌉 [Bridge Failover Guide](https://github.com/Alteriom/painlessMesh/blob/main/examples/bridge_failover/README.md)**
254
- - **📋 [CHANGELOG](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)**
255
-
256
- ---
257
-
258
- ## 🔗 Distribution Channels
259
-
260
- **v1.8.4 Available On:**
261
- - ✅ [GitHub Releases](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.4)
262
- - ✅ [NPM Registry](https://www.npmjs.com/package/@alteriom/painlessmesh)
263
- - ✅ [PlatformIO Registry](https://registry.platformio.org/libraries/alteriom/painlessMesh)
264
- - ✅ [Arduino Library Manager](https://www.arduino.cc/reference/en/libraries/alteriompainlessmesh/) (within 24-48 hours)
265
-
266
- ---
267
-
268
- ## 📞 Support
269
-
270
- - **Issues:** [GitHub Issues](https://github.com/Alteriom/painlessMesh/issues)
271
- - **Discussions:** [GitHub Discussions](https://github.com/Alteriom/painlessMesh/discussions)
272
- - **Documentation:** [https://alteriom.github.io/painlessMesh/](https://alteriom.github.io/painlessMesh/)
273
-
274
- ---
275
-
276
- **Previous Release:** [v1.8.3 - ZIP File Integrity Fix](RELEASE_NOTES_v1.8.3.md)
277
- **Next Release:** TBD