@alteriom/painlessmesh 1.8.14 → 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 +89 -1
  3. package/CONTRIBUTING.md +79 -0
  4. package/README.md +70 -143
  5. package/docs/README.md +1 -0
  6. package/docs/api/shared-gateway.md +1207 -0
  7. package/docs/troubleshooting/common-issues.md +28 -0
  8. package/docs/troubleshooting/faq.md +113 -12
  9. package/examples/basic/test/simulator/CMakeLists.txt +40 -0
  10. package/examples/basic/test/simulator/README.md +149 -0
  11. package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
  12. package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
  13. package/examples/bridge/bridge.ino +17 -4
  14. package/examples/bridge_failover/README.md +81 -0
  15. package/examples/bridge_failover/bridge_failover.ino +51 -6
  16. package/examples/sharedGateway/README.md +235 -0
  17. package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
  18. package/examples/sharedGateway/sharedGateway.ino +303 -0
  19. package/library.json +3 -22
  20. package/library.properties +1 -1
  21. package/package.json +3 -3
  22. package/src/arduino/wifi.hpp +380 -13
  23. package/src/painlessmesh/gateway.hpp +2120 -0
  24. package/src/painlessmesh/mesh.hpp +1034 -6
  25. package/src/painlessmesh/message_tracker.hpp +311 -0
  26. package/src/painlessmesh/protocol.hpp +6 -0
  27. package/DOCUMENTATION_INDEX.md +0 -146
  28. package/docs/API_DESIGN_GUIDELINES.md +0 -414
  29. package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
  30. package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
  31. package/docs/BRIDGE_FAILOVER.md +0 -512
  32. package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
  33. package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
  34. package/docs/CREATE_MISSING_RELEASES.md +0 -321
  35. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
  36. package/docs/FAQ_VERSION_NUMBERS.md +0 -152
  37. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
  38. package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
  39. package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
  40. package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
  41. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
  42. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
  43. package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
  44. package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
  45. package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
  46. package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
  47. package/docs/PHASE1_GUIDE.md +0 -349
  48. package/docs/PHASE2_GUIDE.md +0 -543
  49. package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
  50. package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
  51. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
  52. package/docs/VERSION_MANAGEMENT.md +0 -213
  53. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
  54. package/docs/archive/FEATURE_PROPOSALS.md +0 -337
  55. package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
  56. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
  57. package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
  58. package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
  59. package/docs/archive/RELEASE_SUMMARY.md +0 -173
  60. package/docs/archive/SCONS_BUILD_FIX.md +0 -313
  61. package/docs/archive/TRIGGER_RELEASE.md +0 -280
  62. package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
  63. package/docs/archive/ota-and-status-enhancements.md +0 -911
  64. package/docs/archive/ota-status-architecture-diagrams.md +0 -658
  65. package/docs/archive/ota-status-quick-reference.md +0 -284
  66. package/docs/design/.gitkeep +0 -1
  67. package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
  68. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
  69. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
  70. package/docs/development/DOCKER_TESTING.md +0 -196
  71. package/docs/development/PLATFORMIO_USAGE.md +0 -180
  72. package/docs/development/TESTING_SUMMARY.md +0 -126
  73. package/docs/development/contributing.md +0 -301
  74. package/docs/development/documentation.md +0 -583
  75. package/docs/features/DIAGNOSTICS_API.md +0 -534
  76. package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
  77. package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
  78. package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
  79. package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
  80. package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
  81. package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
  82. package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
  83. package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
  84. package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
  85. package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
  86. package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
  87. package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
  88. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
  89. package/docs/improvements/README.md +0 -212
  90. package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
  91. package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
  92. package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
  93. package/docs/internal/ISSUE_66_STATUS.md +0 -316
  94. package/docs/internal/PR_SUMMARY.md +0 -315
  95. package/docs/internal/REVIEW_SUMMARY.md +0 -332
  96. package/docs/multi-bridge-setup.md +0 -1025
  97. package/docs/platformio-publishing.md +0 -255
  98. package/docs/platformio-setup-summary.md +0 -121
  99. package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
  100. package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
  101. package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
  102. package/docs/releases/FEATURE_HISTORY.md +0 -543
  103. package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
  104. package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
  105. package/docs/releases/PATCH_v1.7.2.md +0 -262
  106. package/docs/releases/PATCH_v1.7.3.md +0 -262
  107. package/docs/releases/PATCH_v1.7.4.md +0 -219
  108. package/docs/releases/PHASE1_SUMMARY.md +0 -246
  109. package/docs/releases/PHASE2_SUMMARY.md +0 -499
  110. package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
  111. package/docs/releases/QUICK_START_RELEASES.md +0 -113
  112. package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
  113. package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
  114. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
  115. package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
  116. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
  117. package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
  118. package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
  119. package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
  120. package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
  121. package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
  122. package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
  123. package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
  124. package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
  125. package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
  126. package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
  127. package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
  128. package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
  129. package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
  130. package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
  131. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
  132. package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
  133. package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
  134. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
  135. package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
  136. package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
  137. package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
  138. package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
  139. package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
  140. package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
  141. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
  142. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
  143. package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
  144. package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
  145. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
  146. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
  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 -96
  197. package/examples/multi_bridge/regular_node.ino +0 -141
  198. package/examples/multi_bridge/secondary_bridge.ino +0 -111
  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