@alteriom/painlessmesh 1.8.2 → 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/README.md +74 -11
- package/RELEASE_GUIDE.md +57 -16
- package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +331 -0
- package/docs/features/DIAGNOSTICS_API.md +534 -0
- package/docs/getting-started/arduino-manual-install.md +313 -0
- package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +340 -0
- package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +213 -0
- package/docs/implementation/BRIDGE_STATUS_FEATURE.md +635 -0
- package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +232 -0
- package/docs/implementation/IMPLEMENTATION_COMPLETE.md +228 -0
- package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +325 -0
- package/docs/implementation/IMPLEMENTATION_SUMMARY.md +316 -0
- package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +405 -0
- package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +520 -0
- package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +392 -0
- package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +391 -0
- package/docs/internal/ISSUE_65_VERIFICATION.md +947 -0
- package/docs/internal/ISSUE_66_CLOSURE.md +249 -0
- package/docs/internal/ISSUE_66_STATUS.md +316 -0
- package/docs/internal/PR_SUMMARY.md +315 -0
- package/docs/internal/REVIEW_SUMMARY.md +332 -0
- package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +163 -0
- package/docs/releases/QUICK_START_RELEASES.md +113 -0
- package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +331 -0
- package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +309 -0
- package/docs/releases/RELEASE_NOTES_v1.8.0.md +685 -0
- package/docs/releases/RELEASE_NOTES_v1.8.1.md +221 -0
- package/docs/releases/RELEASE_NOTES_v1.8.2.md +421 -0
- package/docs/releases/RELEASE_NOTES_v1.8.3.md +292 -0
- package/docs/releases/RELEASE_NOTES_v1.8.4.md +277 -0
- package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +229 -0
- package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +197 -0
- package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +110 -0
- package/docs/troubleshooting/station-reconnection-issues.md +172 -0
- package/examples/bridge_failover/README.md +17 -1
- package/examples/priority/README.md +274 -0
- package/examples/priority/priority_basic_example.ino +115 -0
- package/examples/priority/priority_with_queue.ino +249 -0
- package/examples/routing_demo/README.md +172 -0
- package/examples/routing_demo/routing_demo.ino +102 -0
- package/library.json +1 -1
- package/library.properties +3 -3
- package/package.json +1 -1
- package/src/arduino/wifi.hpp +62 -16
- package/src/painlessMesh.h +15 -0
- package/src/painlessMeshSTA.cpp +7 -1
- package/src/painlessmesh/buffer.hpp +218 -37
- package/src/painlessmesh/connection.hpp +21 -1
- package/src/painlessmesh/mesh.hpp +253 -19
- package/src/painlessmesh/router.hpp +31 -0
|
@@ -0,0 +1,292 @@
|
|
|
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
|
|
@@ -0,0 +1,277 @@
|
|
|
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
|