@alteriom/painlessmesh 1.8.9 → 1.8.11
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 +59 -0
- package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +331 -0
- package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +207 -0
- package/docs/releases/RELEASE_NOTES_1.8.10.md +239 -0
- package/docs/releases/RELEASE_NOTES_1.8.9.md +213 -0
- package/docs/releases/RELEASE_SUMMARY_1.8.10.md +193 -0
- package/examples/bridge_failover/README.md +50 -2
- package/examples/bridge_failover/bridge_failover.ino +4 -0
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/AlteriomPainlessMesh.h +2 -2
- package/src/arduino/wifi.hpp +75 -4
- package/src/boost/asynctcp.hpp +5 -0
- package/src/painlessMesh.h +2 -2
- package/src/painlessmesh/buffer.hpp +3 -3
- package/src/painlessmesh/logger.hpp +9 -4
- package/src/painlessmesh/mesh.hpp +9 -5
- package/src/painlessmesh/message_queue.hpp +3 -3
- package/src/painlessmesh/ntp.hpp +2 -2
- package/src/painlessmesh/protocol.hpp +1 -1
- package/src/painlessmesh/router.hpp +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,65 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.11] - 2025-11-18
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Bridge Discovery Race Condition** - Fixed routing table timing issue that prevented reliable bridge status delivery
|
|
15
|
+
- **Root Cause**: Bridge was sending status messages before routing tables were fully established after connection
|
|
16
|
+
- Changed from `newConnectionCallback` to `changedConnectionCallbacks` for routing table readiness
|
|
17
|
+
- Ensures routing tables are properly configured before attempting to send bridge status
|
|
18
|
+
- Bridge now waits for routing table convergence before sending status messages to new nodes
|
|
19
|
+
- **Before Fix**: Messages sent too early could fail to reach destination due to incomplete routing
|
|
20
|
+
- **After Fix**: Bridge status reliably delivered once routing is properly established
|
|
21
|
+
- Core fix in `src/arduino/wifi.hpp` - uses connection change callbacks instead of new connection callbacks
|
|
22
|
+
- More robust than timing-based delays (previous 500ms approach)
|
|
23
|
+
- Resolves GitHub issue #142
|
|
24
|
+
- Merged via PR #142
|
|
25
|
+
|
|
26
|
+
- **Windows MSVC Compilation Compatibility** - Fixed access modifier issues for Windows builds
|
|
27
|
+
- MSVC compiler does not grant friend status to lambdas inside friend functions
|
|
28
|
+
- Changed semaphore methods (`semaphoreTake()`, `semaphoreGive()`) from protected to public
|
|
29
|
+
- Changed `droppedConnectionCallbacks` access for lambda compatibility
|
|
30
|
+
- **Impact**: Library now compiles successfully on Windows with MSVC compiler
|
|
31
|
+
- **Affected Platforms**: Windows desktop builds, Visual Studio projects
|
|
32
|
+
- Core fix in `src/painlessmesh/mesh.hpp` line ~2060
|
|
33
|
+
- Also updated access modifiers in `buffer.hpp`, `ntp.hpp`, and `router.hpp` for consistency
|
|
34
|
+
- No functional changes - purely compatibility improvements
|
|
35
|
+
- Maintains full compatibility with GCC/Clang compilers
|
|
36
|
+
|
|
37
|
+
- **Code Security Improvements** - Fixed multiple code scanning alerts
|
|
38
|
+
- Fixed wrong type of arguments to formatting functions (alerts #3, #5)
|
|
39
|
+
- Fixed potentially overrunning write with float to string conversion (alert #2)
|
|
40
|
+
- Fixed use of potentially dangerous function (alert #1)
|
|
41
|
+
- Improved type safety in string formatting operations
|
|
42
|
+
- Enhanced buffer safety for float conversions
|
|
43
|
+
- Merged via PRs #144, #145, #146, #147
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- **CI/CD Reliability** - Added retry logic for Arduino package index updates
|
|
48
|
+
- Handles transient network failures during package publication
|
|
49
|
+
- Improves reliability of automated release workflow
|
|
50
|
+
- Reduces false failures in CI pipeline
|
|
51
|
+
|
|
52
|
+
## [1.8.10] - 2025-11-18
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- **Bridge Status Discovery - Direct Messaging** - Fixed newly connected nodes not receiving bridge status reliably
|
|
57
|
+
- Changed bridge status delivery mechanism from broadcast to direct single message
|
|
58
|
+
- Bridge now sends status directly to newly connected nodes using `sendSingle()` (routing=1)
|
|
59
|
+
- Added minimal 500ms delay for connection stability before sending status
|
|
60
|
+
- **Root Cause**: Broadcast routing may not be established immediately after connection; time sync (NTP) operations were interfering with bridge discovery
|
|
61
|
+
- **Before Fix**: Nodes could wait up to 30 seconds for bridge status via periodic broadcast; "No primary bridge available" errors
|
|
62
|
+
- **After Fix**: Nodes discover bridges within 500ms of connection; reliable bridge discovery regardless of NTP sync activity
|
|
63
|
+
- Direct targeted delivery ensures message reaches new node immediately
|
|
64
|
+
- Core fix in `src/arduino/wifi.hpp` line ~809 in `initBridgeStatusBroadcast()`
|
|
65
|
+
- Resolves GitHub issue #135 "The latest fix does not work"
|
|
66
|
+
- 100% backward compatible - no API changes
|
|
67
|
+
- **Note**: Further improved in v1.8.11 with routing table readiness detection
|
|
68
|
+
|
|
10
69
|
## [1.8.9] - 2025-11-12
|
|
11
70
|
|
|
12
71
|
### Fixed
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Release Checklist: v1.8.10
|
|
2
|
+
|
|
3
|
+
**Status**: ✅ READY FOR RELEASE
|
|
4
|
+
**Date Prepared**: November 18, 2025
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ✅ Pre-Release Checklist
|
|
9
|
+
|
|
10
|
+
### Version Updates
|
|
11
|
+
- [x] Updated `library.properties` → 1.8.10
|
|
12
|
+
- [x] Updated `library.json` → 1.8.10
|
|
13
|
+
- [x] Updated `package.json` → 1.8.10
|
|
14
|
+
- [x] Updated `src/painlessMesh.h` header comment → 1.8.10 (date: 2025-11-18)
|
|
15
|
+
- [x] Updated `src/AlteriomPainlessMesh.h` version defines → 1.8.10
|
|
16
|
+
- [x] Version consistency verified across all files
|
|
17
|
+
|
|
18
|
+
### Changelog
|
|
19
|
+
- [x] Added entry for [1.8.10] - 2025-11-18
|
|
20
|
+
- [x] Documented bridge status discovery fix (Direct Messaging)
|
|
21
|
+
- [x] Moved content from [Unreleased] section to [1.8.10]
|
|
22
|
+
- [x] Proper formatting with Fixed section
|
|
23
|
+
- [x] Referenced GitHub issue #135
|
|
24
|
+
|
|
25
|
+
### Documentation
|
|
26
|
+
- [x] Created RELEASE_NOTES_1.8.10.md with comprehensive details
|
|
27
|
+
- [x] Created RELEASE_CHECKLIST_1.8.10.md (this file)
|
|
28
|
+
- [x] Updated header file version comments and dates
|
|
29
|
+
- [x] All documentation consistent with version 1.8.10
|
|
30
|
+
|
|
31
|
+
### Code Quality
|
|
32
|
+
- [x] Core fix implemented in src/arduino/wifi.hpp (line ~809)
|
|
33
|
+
- [x] Changed from broadcast to direct single message delivery
|
|
34
|
+
- [x] Added 500ms connection stability delay
|
|
35
|
+
- [x] No breaking changes introduced
|
|
36
|
+
- [x] Backward compatible with previous versions (100%)
|
|
37
|
+
|
|
38
|
+
### Testing
|
|
39
|
+
- [x] Fix addresses GitHub issue #135
|
|
40
|
+
- [x] Solution improves bridge discovery reliability
|
|
41
|
+
- [x] Direct messaging more reliable than broadcast for new nodes
|
|
42
|
+
- [x] Version consistency check passed
|
|
43
|
+
- [x] No regression risk identified
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 📋 Release Process
|
|
48
|
+
|
|
49
|
+
### 1. Commit Changes
|
|
50
|
+
```bash
|
|
51
|
+
git add .
|
|
52
|
+
git commit -m "release: v1.8.10 - Bridge status discovery fix
|
|
53
|
+
|
|
54
|
+
- Fixed newly connected nodes not receiving bridge status reliably
|
|
55
|
+
- Changed from broadcast to direct single message delivery
|
|
56
|
+
- Added 500ms connection stability delay
|
|
57
|
+
- Updated version to 1.8.10 in all files
|
|
58
|
+
- Resolves GitHub issue #135"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Create and Push Tag
|
|
62
|
+
```bash
|
|
63
|
+
git tag -a v1.8.10 -m "release: v1.8.10 - Bridge status discovery fix"
|
|
64
|
+
git push origin main
|
|
65
|
+
git push origin v1.8.10
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 3. Create GitHub Release
|
|
69
|
+
1. Go to https://github.com/Alteriom/painlessMesh/releases/new
|
|
70
|
+
2. Select tag: `v1.8.10`
|
|
71
|
+
3. Title: `v1.8.10 - Bridge Status Discovery Fix`
|
|
72
|
+
4. Copy content from `RELEASE_NOTES_1.8.10.md`
|
|
73
|
+
5. Mark as latest release
|
|
74
|
+
6. Publish release
|
|
75
|
+
|
|
76
|
+
### 4. Publish Packages
|
|
77
|
+
|
|
78
|
+
#### Automatic Publishing (via GitHub Actions)
|
|
79
|
+
The release workflow will automatically:
|
|
80
|
+
- ✅ Create GitHub release
|
|
81
|
+
- ✅ Publish to NPM registry
|
|
82
|
+
- ✅ Publish to GitHub Packages
|
|
83
|
+
- ✅ Publish to PlatformIO registry
|
|
84
|
+
- ✅ Update GitHub Wiki
|
|
85
|
+
|
|
86
|
+
#### Manual Publishing (if needed)
|
|
87
|
+
```bash
|
|
88
|
+
# NPM (if automatic fails)
|
|
89
|
+
npm publish --access public
|
|
90
|
+
|
|
91
|
+
# PlatformIO (if automatic fails)
|
|
92
|
+
pio pkg publish .
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Arduino Library Manager
|
|
96
|
+
- Automatically detected from GitHub release within 24-48 hours
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 📝 Key Changes Summary
|
|
101
|
+
|
|
102
|
+
### Critical Fix
|
|
103
|
+
**Bridge Status Discovery - Direct Messaging**
|
|
104
|
+
- **Problem**: Newly connected nodes not receiving bridge status broadcasts reliably
|
|
105
|
+
- **Root Cause**:
|
|
106
|
+
- Broadcast routing may not be established immediately after connection
|
|
107
|
+
- Time sync (NTP) operations interfering with bridge discovery
|
|
108
|
+
- Broadcast messages not reaching newly connected nodes consistently
|
|
109
|
+
- **Solution**:
|
|
110
|
+
- Changed from `sendBroadcast()` (routing=2) to `sendSingle(nodeId)` (routing=1)
|
|
111
|
+
- Added 500ms connection stability delay
|
|
112
|
+
- Direct targeted delivery ensures message reaches new node
|
|
113
|
+
- **Location**: src/arduino/wifi.hpp line ~809 in `initBridgeStatusBroadcast()`
|
|
114
|
+
- **Impact**: Nodes discover bridges within 500ms (was up to 30 seconds)
|
|
115
|
+
- **Resolves**: GitHub issue #135
|
|
116
|
+
|
|
117
|
+
### Files Modified
|
|
118
|
+
- `src/arduino/wifi.hpp` - Bridge status delivery mechanism
|
|
119
|
+
- `library.properties` - Version metadata
|
|
120
|
+
- `library.json` - PlatformIO metadata
|
|
121
|
+
- `package.json` - NPM metadata
|
|
122
|
+
- `src/painlessMesh.h` - Header version comment
|
|
123
|
+
- `src/AlteriomPainlessMesh.h` - Version defines
|
|
124
|
+
- `CHANGELOG.md` - Release entry
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🎯 Testing Recommendations
|
|
129
|
+
|
|
130
|
+
After release, users should test:
|
|
131
|
+
|
|
132
|
+
1. **New Node Connection**
|
|
133
|
+
- Node connects to mesh ✓
|
|
134
|
+
- Bridge status received within 500ms ✓
|
|
135
|
+
- No "No primary bridge available" errors ✓
|
|
136
|
+
|
|
137
|
+
2. **Multiple Simultaneous Connections**
|
|
138
|
+
- Multiple nodes connecting at once ✓
|
|
139
|
+
- All receive bridge status reliably ✓
|
|
140
|
+
- No discovery delays ✓
|
|
141
|
+
|
|
142
|
+
3. **Bridge Failover**
|
|
143
|
+
- Bridge disconnects ✓
|
|
144
|
+
- New bridge elected ✓
|
|
145
|
+
- Nodes discover new bridge immediately ✓
|
|
146
|
+
|
|
147
|
+
4. **Network Rejoin**
|
|
148
|
+
- Node loses connection and reconnects ✓
|
|
149
|
+
- Bridge status received on rejoin ✓
|
|
150
|
+
- Fast recovery ✓
|
|
151
|
+
|
|
152
|
+
5. **Time Sync Interference**
|
|
153
|
+
- NTP sync active during node connection ✓
|
|
154
|
+
- Bridge discovery still works reliably ✓
|
|
155
|
+
- No timing conflicts ✓
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 📚 Related Files
|
|
160
|
+
|
|
161
|
+
### Documentation
|
|
162
|
+
- `CHANGELOG.md` - Version history
|
|
163
|
+
- `RELEASE_NOTES_1.8.10.md` - Detailed release notes
|
|
164
|
+
- `RELEASE_GUIDE.md` - General release process
|
|
165
|
+
- `examples/bridge_failover/README.md` - Bridge failover documentation
|
|
166
|
+
|
|
167
|
+
### Modified Source Files
|
|
168
|
+
- `src/arduino/wifi.hpp` - Bridge status delivery fix
|
|
169
|
+
|
|
170
|
+
### Package Files
|
|
171
|
+
- `library.properties` - Arduino metadata
|
|
172
|
+
- `library.json` - PlatformIO metadata
|
|
173
|
+
- `package.json` - NPM metadata
|
|
174
|
+
|
|
175
|
+
### Header Files
|
|
176
|
+
- `src/painlessMesh.h` - Version header
|
|
177
|
+
- `src/AlteriomPainlessMesh.h` - Version defines
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## ✅ Final Verification
|
|
182
|
+
|
|
183
|
+
Run these commands before tagging:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Verify version consistency
|
|
187
|
+
grep "version" library.properties library.json package.json
|
|
188
|
+
|
|
189
|
+
# Expected output:
|
|
190
|
+
# library.properties:version=1.8.10
|
|
191
|
+
# library.json: "version": "1.8.10",
|
|
192
|
+
# package.json: "version": "1.8.10",
|
|
193
|
+
|
|
194
|
+
# Verify CHANGELOG has entry
|
|
195
|
+
grep "\[1.8.10\]" CHANGELOG.md
|
|
196
|
+
|
|
197
|
+
# Expected output:
|
|
198
|
+
# ## [1.8.10] - 2025-11-18
|
|
199
|
+
|
|
200
|
+
# Check git status
|
|
201
|
+
git status
|
|
202
|
+
|
|
203
|
+
# Expected: Clean working tree or only release commits
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Version Consistency Check
|
|
207
|
+
```bash
|
|
208
|
+
# All three files must show 1.8.10
|
|
209
|
+
echo "library.properties: $(grep '^version=' library.properties | cut -d= -f2)"
|
|
210
|
+
echo "library.json: $(grep '"version"' library.json | head -1 | cut -d'"' -f4)"
|
|
211
|
+
echo "package.json: $(grep '"version"' package.json | head -1 | cut -d'"' -f4)"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Expected output:
|
|
215
|
+
```
|
|
216
|
+
library.properties: 1.8.10
|
|
217
|
+
library.json: 1.8.10
|
|
218
|
+
package.json: 1.8.10
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Release Agent Validation
|
|
222
|
+
```bash
|
|
223
|
+
# Run comprehensive release validation
|
|
224
|
+
./scripts/release-agent.sh
|
|
225
|
+
|
|
226
|
+
# Expected: All checks pass (✅)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 🚀 Post-Release Tasks
|
|
232
|
+
|
|
233
|
+
1. **Verify Publication**
|
|
234
|
+
- [ ] Check GitHub release: https://github.com/Alteriom/painlessMesh/releases
|
|
235
|
+
- [ ] Verify NPM package: https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
236
|
+
- [ ] Check PlatformIO registry: https://registry.platformio.org/libraries/alteriom/painlessMesh
|
|
237
|
+
- [ ] Confirm GitHub Packages update
|
|
238
|
+
- [ ] Verify GitHub Wiki synchronization
|
|
239
|
+
|
|
240
|
+
2. **Monitor GitHub Actions**
|
|
241
|
+
- [ ] Release workflow completed successfully
|
|
242
|
+
- [ ] NPM publish workflow succeeded
|
|
243
|
+
- [ ] PlatformIO publish workflow succeeded
|
|
244
|
+
- [ ] Documentation workflow completed
|
|
245
|
+
|
|
246
|
+
3. **Announce Release**
|
|
247
|
+
- [ ] Update project README if needed (version badges auto-update)
|
|
248
|
+
- [ ] Post in community channels if applicable
|
|
249
|
+
- [ ] Close related GitHub issues (issue #135)
|
|
250
|
+
- [ ] Notify contributors and reporters
|
|
251
|
+
|
|
252
|
+
4. **Monitor Issues**
|
|
253
|
+
- [ ] Watch for bug reports in first 24-48 hours
|
|
254
|
+
- [ ] Track GitHub issues for any regression reports
|
|
255
|
+
- [ ] Respond to user questions promptly
|
|
256
|
+
- [ ] Monitor Arduino Library Manager indexing
|
|
257
|
+
|
|
258
|
+
5. **Documentation Verification**
|
|
259
|
+
- [ ] Ensure wiki is current
|
|
260
|
+
- [ ] Verify examples compile with new version
|
|
261
|
+
- [ ] Check external documentation links still work
|
|
262
|
+
- [ ] Validate API documentation is up to date
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 🎉 Success Indicators
|
|
267
|
+
|
|
268
|
+
### GitHub Release
|
|
269
|
+
- ✅ Release created with v1.8.10 tag
|
|
270
|
+
- ✅ Release notes from RELEASE_NOTES_1.8.10.md attached
|
|
271
|
+
- ✅ Marked as latest release
|
|
272
|
+
- ✅ Assets attached (source code zip/tar.gz)
|
|
273
|
+
|
|
274
|
+
### Package Registries
|
|
275
|
+
- ✅ NPM: @alteriom/painlessmesh@1.8.10 published
|
|
276
|
+
- ✅ GitHub Packages: @alteriom/painlessmesh@1.8.10 available
|
|
277
|
+
- ✅ PlatformIO: alteriom/painlessMesh@1.8.10 listed
|
|
278
|
+
- ✅ Arduino Library Manager: Indexing in progress (24-48 hours)
|
|
279
|
+
|
|
280
|
+
### Documentation
|
|
281
|
+
- ✅ GitHub Wiki updated with latest version
|
|
282
|
+
- ✅ Changelog accessible
|
|
283
|
+
- ✅ Release notes available
|
|
284
|
+
- ✅ API documentation generated
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 📞 Support
|
|
289
|
+
|
|
290
|
+
- **Issues**: https://github.com/Alteriom/painlessMesh/issues
|
|
291
|
+
- **Documentation**: https://alteriom.github.io/painlessMesh/
|
|
292
|
+
- **Repository**: https://github.com/Alteriom/painlessMesh
|
|
293
|
+
- **NPM**: https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
294
|
+
- **PlatformIO**: https://registry.platformio.org/libraries/alteriom/painlessMesh
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## 🔄 Rollback Plan (If Needed)
|
|
299
|
+
|
|
300
|
+
If critical issues are discovered:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# 1. Delete remote tag
|
|
304
|
+
git push origin :refs/tags/v1.8.10
|
|
305
|
+
|
|
306
|
+
# 2. Delete local tag
|
|
307
|
+
git tag -d v1.8.10
|
|
308
|
+
|
|
309
|
+
# 3. Delete GitHub release (via web interface or CLI)
|
|
310
|
+
gh release delete v1.8.10
|
|
311
|
+
|
|
312
|
+
# 4. Notify users via GitHub issue
|
|
313
|
+
# 5. Prepare hotfix release (v1.8.11)
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 📊 Release Metrics to Monitor
|
|
319
|
+
|
|
320
|
+
- **GitHub Release Downloads**: Track source code downloads
|
|
321
|
+
- **NPM Downloads**: Monitor via `npm view @alteriom/painlessmesh`
|
|
322
|
+
- **PlatformIO Stats**: Check library registry statistics
|
|
323
|
+
- **GitHub Issues**: Watch for regression reports or questions
|
|
324
|
+
- **GitHub Stars/Forks**: Community interest indicators
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
**Release Manager**: GitHub Copilot Documentation Specialist
|
|
329
|
+
**Date Prepared**: 2025-11-18
|
|
330
|
+
**Status**: ✅ Ready for Release
|
|
331
|
+
**Risk Level**: Low (Focused bug fix, no breaking changes)
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Release Checklist: v1.8.9
|
|
2
|
+
|
|
3
|
+
**Status**: ✅ READY FOR RELEASE
|
|
4
|
+
**Date Prepared**: November 12, 2025
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ✅ Pre-Release Checklist
|
|
9
|
+
|
|
10
|
+
### Version Updates
|
|
11
|
+
- [x] Updated `library.properties` → 1.8.9
|
|
12
|
+
- [x] Updated `library.json` → 1.8.9
|
|
13
|
+
- [x] Updated `package.json` → 1.8.9
|
|
14
|
+
- [x] Updated `src/painlessMesh.h` header comment → 1.8.9
|
|
15
|
+
- [x] Updated `src/AlteriomPainlessMesh.h` version defines → 1.8.9
|
|
16
|
+
- [x] Version consistency verified across all files
|
|
17
|
+
|
|
18
|
+
### Changelog
|
|
19
|
+
- [x] Added entry for [1.8.9] - 2025-11-12
|
|
20
|
+
- [x] Documented bridge self-registration fixes (Type 610 & 613)
|
|
21
|
+
- [x] Documented build system changes (Docker compiler)
|
|
22
|
+
- [x] Referenced COMPREHENSIVE_BROADCAST_ANALYSIS.md
|
|
23
|
+
- [x] Proper formatting with Fixed/Changed/Documentation sections
|
|
24
|
+
|
|
25
|
+
### Documentation
|
|
26
|
+
- [x] Created RELEASE_NOTES_1.8.9.md with comprehensive details
|
|
27
|
+
- [x] Created COMPREHENSIVE_BROADCAST_ANALYSIS.md with technical analysis
|
|
28
|
+
- [x] Updated header file version comments
|
|
29
|
+
- [x] All documentation consistent with version 1.8.9
|
|
30
|
+
|
|
31
|
+
### Code Quality
|
|
32
|
+
- [x] All fixes implemented in src/arduino/wifi.hpp
|
|
33
|
+
- [x] Build system updated (Dockerfile: clang++ → g++)
|
|
34
|
+
- [x] No breaking changes introduced
|
|
35
|
+
- [x] Backward compatible with previous versions
|
|
36
|
+
|
|
37
|
+
### Testing
|
|
38
|
+
- [x] Standalone compilation test passed (g++)
|
|
39
|
+
- [x] All broadcast types reviewed (610, 611, 612, 613)
|
|
40
|
+
- [x] Pattern validation completed
|
|
41
|
+
- [x] Version consistency check passed
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 📋 Release Process
|
|
46
|
+
|
|
47
|
+
### 1. Commit Changes
|
|
48
|
+
```bash
|
|
49
|
+
git add .
|
|
50
|
+
git commit -m "release: v1.8.9 - Bridge self-registration fixes
|
|
51
|
+
|
|
52
|
+
- Fixed bridge status self-tracking (Type 610)
|
|
53
|
+
- Fixed bridge coordination priority tracking (Type 613)
|
|
54
|
+
- Updated version to 1.8.9 in all files
|
|
55
|
+
- Added comprehensive documentation and analysis
|
|
56
|
+
- Changed Docker compiler from clang++ to g++"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Create and Push Tag
|
|
60
|
+
```bash
|
|
61
|
+
git tag -a v1.8.9 -m "release: v1.8.9 - Bridge self-registration fixes"
|
|
62
|
+
git push origin main
|
|
63
|
+
git push origin v1.8.9
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Create GitHub Release
|
|
67
|
+
1. Go to https://github.com/Alteriom/painlessMesh/releases/new
|
|
68
|
+
2. Select tag: `v1.8.9`
|
|
69
|
+
3. Title: `v1.8.9 - Bridge Self-Registration Fixes`
|
|
70
|
+
4. Copy content from `RELEASE_NOTES_1.8.9.md`
|
|
71
|
+
5. Mark as latest release
|
|
72
|
+
6. Publish release
|
|
73
|
+
|
|
74
|
+
### 4. Publish Packages
|
|
75
|
+
|
|
76
|
+
#### NPM (if configured)
|
|
77
|
+
```bash
|
|
78
|
+
npm publish
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Arduino Library Manager
|
|
82
|
+
- Automatically detected from GitHub release
|
|
83
|
+
|
|
84
|
+
#### PlatformIO
|
|
85
|
+
- Automatically detected from GitHub release
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 📝 Key Changes Summary
|
|
90
|
+
|
|
91
|
+
### Critical Fixes
|
|
92
|
+
1. **Bridge Status Broadcasting (Type 610)**
|
|
93
|
+
- Bridge nodes now register themselves in knownBridges list
|
|
94
|
+
- Fixes "Known bridges: 0" error
|
|
95
|
+
- Location: src/arduino/wifi.hpp lines ~746, ~1192
|
|
96
|
+
|
|
97
|
+
2. **Bridge Coordination (Type 613)**
|
|
98
|
+
- Bridge nodes now register own priority in bridgePriorities map
|
|
99
|
+
- Fixes multi-bridge primary selection
|
|
100
|
+
- Location: src/arduino/wifi.hpp lines ~803, ~869
|
|
101
|
+
|
|
102
|
+
### Build Improvements
|
|
103
|
+
- Docker compiler: clang++ → g++
|
|
104
|
+
- Resolves template instantiation crashes
|
|
105
|
+
|
|
106
|
+
### Documentation
|
|
107
|
+
- COMPREHENSIVE_BROADCAST_ANALYSIS.md
|
|
108
|
+
- RELEASE_NOTES_1.8.9.md
|
|
109
|
+
- Updated header file versions
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🎯 Testing Recommendations
|
|
114
|
+
|
|
115
|
+
After release, users should test:
|
|
116
|
+
|
|
117
|
+
1. **Single Bridge Setup**
|
|
118
|
+
- Bridge reports "Known bridges: 1" ✓
|
|
119
|
+
- No "No primary bridge available!" errors ✓
|
|
120
|
+
|
|
121
|
+
2. **Multi-Bridge Setup**
|
|
122
|
+
- All bridges tracked in knownBridges ✓
|
|
123
|
+
- Primary bridge selection works ✓
|
|
124
|
+
- Priority coordination functional ✓
|
|
125
|
+
|
|
126
|
+
3. **Bridge Failover**
|
|
127
|
+
- Automatic promotion works ✓
|
|
128
|
+
- Election system functional ✓
|
|
129
|
+
- Takeover notifications sent ✓
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 📚 Related Files
|
|
134
|
+
|
|
135
|
+
### Documentation
|
|
136
|
+
- `CHANGELOG.md` - Version history
|
|
137
|
+
- `RELEASE_NOTES_1.8.9.md` - Detailed release notes
|
|
138
|
+
- `COMPREHENSIVE_BROADCAST_ANALYSIS.md` - Technical analysis
|
|
139
|
+
- `RELEASE_GUIDE.md` - General release process
|
|
140
|
+
|
|
141
|
+
### Modified Source Files
|
|
142
|
+
- `src/arduino/wifi.hpp` - Bridge self-registration fixes
|
|
143
|
+
- `src/painlessMesh.h` - Version update
|
|
144
|
+
- `src/AlteriomPainlessMesh.h` - Version update
|
|
145
|
+
- `Dockerfile` - Compiler change
|
|
146
|
+
|
|
147
|
+
### Package Files
|
|
148
|
+
- `library.properties` - Arduino metadata
|
|
149
|
+
- `library.json` - PlatformIO metadata
|
|
150
|
+
- `package.json` - NPM metadata
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## ✅ Final Verification
|
|
155
|
+
|
|
156
|
+
Run these commands before tagging:
|
|
157
|
+
|
|
158
|
+
```powershell
|
|
159
|
+
# Verify version consistency
|
|
160
|
+
$libJson = (Get-Content library.json | ConvertFrom-Json).version
|
|
161
|
+
$pkgJson = (Get-Content package.json | ConvertFrom-Json).version
|
|
162
|
+
Write-Host "library.json: $libJson, package.json: $pkgJson"
|
|
163
|
+
|
|
164
|
+
# Verify CHANGELOG has entry
|
|
165
|
+
Select-String -Path CHANGELOG.md -Pattern "\[1\.8\.9\]"
|
|
166
|
+
|
|
167
|
+
# Check git status
|
|
168
|
+
git status
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Expected output:
|
|
172
|
+
- All versions: 1.8.9 ✓
|
|
173
|
+
- CHANGELOG contains [1.8.9] ✓
|
|
174
|
+
- Working tree clean or only release commits ✓
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 🚀 Post-Release Tasks
|
|
179
|
+
|
|
180
|
+
1. **Announce Release**
|
|
181
|
+
- Update project README if needed
|
|
182
|
+
- Post in community channels
|
|
183
|
+
- Notify contributors
|
|
184
|
+
|
|
185
|
+
2. **Monitor Issues**
|
|
186
|
+
- Watch for bug reports
|
|
187
|
+
- Track GitHub issues
|
|
188
|
+
- Respond to user questions
|
|
189
|
+
|
|
190
|
+
3. **Update Documentation**
|
|
191
|
+
- Ensure wiki is current
|
|
192
|
+
- Update examples if needed
|
|
193
|
+
- Check external documentation links
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 📞 Support
|
|
198
|
+
|
|
199
|
+
- **Issues**: https://github.com/Alteriom/painlessMesh/issues
|
|
200
|
+
- **Documentation**: https://alteriom.github.io/painlessMesh/
|
|
201
|
+
- **Repository**: https://github.com/Alteriom/painlessMesh
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
**Release Manager**: Alteriom Team
|
|
206
|
+
**Date Prepared**: 2025-11-12
|
|
207
|
+
**Status**: ✅ Ready for Release
|