@alteriom/painlessmesh 1.8.6 → 1.8.7
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 +20 -0
- package/README.md +2 -0
- package/RELEASE_GUIDE.md +9 -3
- package/docs/FAQ_VERSION_NUMBERS.md +152 -0
- package/docs/QUICK_REFERENCE_VERSIONING.md +127 -0
- package/docs/VERSION_MANAGEMENT.md +213 -0
- package/docs/releases/ANNOUNCEMENT_v1.8.6.md +63 -0
- package/docs/releases/ANNOUNCEMENT_v1.8.7.md +113 -0
- package/docs/releases/GITHUB_RELEASE_v1.8.6.md +71 -0
- package/docs/releases/GITHUB_RELEASE_v1.8.7.md +90 -0
- package/docs/releases/RELEASE_NOTES_v1.8.6.md +205 -0
- package/docs/releases/RELEASE_NOTES_v1.8.7.md +184 -0
- package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -1
- package/examples/bridge_failover/README.md +11 -0
- package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +6 -1
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/AlteriomPainlessMesh.h +3 -3
- package/src/arduino/wifi.hpp +7 -2
- package/src/painlessMesh.h +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.7] - 2025-11-12
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Bridge Internet Connectivity Detection (Bridge_fallover)** - Fixed incorrect internet status reporting
|
|
15
|
+
- Bridge nodes now properly check for actual Internet connectivity, not just WiFi connection
|
|
16
|
+
- Check verifies both `WiFi.status() == WL_CONNECTED` AND valid gateway IP (not 0.0.0.0)
|
|
17
|
+
- **Before**: Bridge connected to router → reports "Internet: NO" even when router has Internet
|
|
18
|
+
- **After**: Bridge connected to router with valid gateway → correctly reports "Internet: YES"
|
|
19
|
+
- Fixes `hasInternetConnection()` returning false positives on regular nodes
|
|
20
|
+
- Core fix in `src/arduino/wifi.hpp` line 1188-1192
|
|
21
|
+
- Updated bridge_failover/README.md with troubleshooting guidance
|
|
22
|
+
|
|
23
|
+
- **Version Documentation Consistency** - Updated header file version comments to match library version
|
|
24
|
+
- Updated `painlessMesh.h` header comment from version 1.8.4 to 1.8.6
|
|
25
|
+
- Updated `AlteriomPainlessMesh.h` version defines from 1.6.1 to 1.8.6
|
|
26
|
+
- Header file version comments now accurately reflect the current library version
|
|
27
|
+
- Clarified that version comments in headers indicate documentation update, not file-specific versioning
|
|
28
|
+
- Resolves user confusion about whether files have been modified since specific versions
|
|
29
|
+
|
|
10
30
|
## [1.8.6] - 2025-11-12
|
|
11
31
|
|
|
12
32
|
### Fixed
|
package/README.md
CHANGED
|
@@ -595,6 +595,8 @@ These are the message types used by applications built on painlessMesh:
|
|
|
595
595
|
## Getting Help
|
|
596
596
|
|
|
597
597
|
- **[FAQ](docs/troubleshooting/faq.md)** - Common questions and solutions
|
|
598
|
+
- **[Version Numbers FAQ](docs/FAQ_VERSION_NUMBERS.md)** - Understanding version numbers in header files
|
|
599
|
+
- **[Version Management Guide](docs/VERSION_MANAGEMENT.md)** - Complete versioning documentation
|
|
598
600
|
- **[GitHub Issues](https://github.com/Alteriom/painlessMesh/issues)** - Bug reports and feature requests
|
|
599
601
|
- **[Community Forum](https://groups.google.com/forum/#!forum/painlessmesh-user)** - Community support
|
|
600
602
|
- **[API Documentation](http://painlessmesh.gitlab.io/painlessMesh/index.html)** - Generated API docs
|
package/RELEASE_GUIDE.md
CHANGED
|
@@ -13,11 +13,15 @@ This document provides comprehensive instructions for releasing new versions of
|
|
|
13
13
|
# 2. Update CHANGELOG.md with your changes
|
|
14
14
|
# Add your changes under the new version section
|
|
15
15
|
|
|
16
|
-
# 3.
|
|
16
|
+
# 3. Update header file version comments (recommended)
|
|
17
|
+
# Edit src/painlessMesh.h and src/AlteriomPainlessMesh.h
|
|
18
|
+
# Update @version comments to match the new library version
|
|
19
|
+
|
|
20
|
+
# 4. Run the Release Agent to validate readiness
|
|
17
21
|
./scripts/release-agent.sh
|
|
18
22
|
|
|
19
|
-
#
|
|
20
|
-
git add library.properties library.json package.json CHANGELOG.md
|
|
23
|
+
# 5. If all checks pass, commit and trigger release
|
|
24
|
+
git add library.properties library.json package.json CHANGELOG.md src/*.h
|
|
21
25
|
git commit -m "release: v1.7.9 - Brief description"
|
|
22
26
|
git push origin main
|
|
23
27
|
```
|
|
@@ -49,6 +53,8 @@ git push origin main
|
|
|
49
53
|
|
|
50
54
|
### Version Management
|
|
51
55
|
|
|
56
|
+
> **📖 For detailed information about version management, see [VERSION_MANAGEMENT.md](docs/VERSION_MANAGEMENT.md)**
|
|
57
|
+
|
|
52
58
|
**File Consistency**: All three files must have matching versions:
|
|
53
59
|
|
|
54
60
|
```properties
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# FAQ: Version Numbers in Header Files
|
|
2
|
+
|
|
3
|
+
## ❓ Question: Does the version in `painlessMesh.h` mean the file hasn't been altered since that version?
|
|
4
|
+
|
|
5
|
+
### Short Answer
|
|
6
|
+
|
|
7
|
+
**No.** The version comment in header files indicates the library version when the documentation was last reviewed, not when the file was last modified.
|
|
8
|
+
|
|
9
|
+
### Detailed Explanation
|
|
10
|
+
|
|
11
|
+
When you see this in `painlessMesh.h`:
|
|
12
|
+
|
|
13
|
+
```cpp
|
|
14
|
+
/**
|
|
15
|
+
* @file painlessMesh.h
|
|
16
|
+
* @version 1.8.7
|
|
17
|
+
* @date 2025-11-12
|
|
18
|
+
*/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This means:
|
|
22
|
+
- ✅ The library version is 1.8.7
|
|
23
|
+
- ✅ The header documentation was reviewed as of version 1.8.7
|
|
24
|
+
- ❌ It does NOT mean the file hasn't changed since 1.8.7
|
|
25
|
+
|
|
26
|
+
### Why This Can Be Confusing
|
|
27
|
+
|
|
28
|
+
During active development, code files may be modified in multiple releases, but documentation comments might not be updated every time. This led to the situation where:
|
|
29
|
+
|
|
30
|
+
- `library.properties` showed version 1.8.6
|
|
31
|
+
- `library.json` showed version 1.8.6
|
|
32
|
+
- `package.json` showed version 1.8.6
|
|
33
|
+
- But `painlessMesh.h` header comment still showed 1.8.4
|
|
34
|
+
|
|
35
|
+
This created confusion about whether the file had been modified in versions 1.8.5 and 1.8.6.
|
|
36
|
+
|
|
37
|
+
### How to Find When a File Was Last Modified
|
|
38
|
+
|
|
39
|
+
Use Git to see the actual modification history:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# See all commits that modified a file
|
|
43
|
+
git log --oneline -- src/painlessMesh.h
|
|
44
|
+
|
|
45
|
+
# See when a file was last modified
|
|
46
|
+
git log -1 --format="%ai %an" -- src/painlessMesh.h
|
|
47
|
+
|
|
48
|
+
# See detailed changes to a file
|
|
49
|
+
git log -p -- src/painlessMesh.h
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Where to Find the Official Library Version
|
|
53
|
+
|
|
54
|
+
The official library version is always defined in these three files (and they must match):
|
|
55
|
+
|
|
56
|
+
1. **`library.properties`** - Arduino Library Manager
|
|
57
|
+
```properties
|
|
58
|
+
version=1.8.7
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
2. **`library.json`** - PlatformIO Registry
|
|
62
|
+
```json
|
|
63
|
+
"version": "1.8.7"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
3. **`package.json`** - NPM Package
|
|
67
|
+
```json
|
|
68
|
+
"version": "1.8.7"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Best Practice Going Forward
|
|
72
|
+
|
|
73
|
+
As of version 1.8.7, we've established a best practice:
|
|
74
|
+
|
|
75
|
+
1. **Update header version comments during releases** to keep them synchronized with the library version
|
|
76
|
+
2. **Refer to VERSION_MANAGEMENT.md** for complete versioning guidelines
|
|
77
|
+
3. **Use Git for file history** to track actual modifications
|
|
78
|
+
4. **Check library.properties** for the official version number
|
|
79
|
+
|
|
80
|
+
### Complete Version Management Documentation
|
|
81
|
+
|
|
82
|
+
For comprehensive information about version management in this library, see:
|
|
83
|
+
|
|
84
|
+
**📖 [VERSION_MANAGEMENT.md](VERSION_MANAGEMENT.md)**
|
|
85
|
+
|
|
86
|
+
This document covers:
|
|
87
|
+
- Official version file locations
|
|
88
|
+
- Header comment meanings and purpose
|
|
89
|
+
- How to track file modifications
|
|
90
|
+
- Version update workflow
|
|
91
|
+
- Best practices for contributors
|
|
92
|
+
|
|
93
|
+
## Related Questions
|
|
94
|
+
|
|
95
|
+
### Q: Why were the header versions out of sync?
|
|
96
|
+
|
|
97
|
+
**A:** During rapid development cycles, header documentation comments were not updated every release. We've now established a process to keep them synchronized.
|
|
98
|
+
|
|
99
|
+
### Q: Will this happen again?
|
|
100
|
+
|
|
101
|
+
**A:** We've updated the release process (see RELEASE_GUIDE.md) to include header version updates as a standard step, and created comprehensive documentation to prevent future confusion.
|
|
102
|
+
|
|
103
|
+
### Q: What about other version numbers I see in the code?
|
|
104
|
+
|
|
105
|
+
**A:** If you see version numbers in implementation files (`.cpp`, `.hpp`), those should generally be removed. Version information should only be in:
|
|
106
|
+
- Official version files (library.properties, library.json, package.json)
|
|
107
|
+
- Header documentation comments (as library version references)
|
|
108
|
+
- CHANGELOG.md (for release history)
|
|
109
|
+
|
|
110
|
+
### Q: How do I know if my library is up to date?
|
|
111
|
+
|
|
112
|
+
**A:** Check your installed version against the latest release:
|
|
113
|
+
|
|
114
|
+
**Arduino IDE:**
|
|
115
|
+
```
|
|
116
|
+
Sketch → Include Library → Manage Libraries → Search "AlteriomPainlessMesh"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**PlatformIO:**
|
|
120
|
+
```bash
|
|
121
|
+
pio pkg show alteriom/AlteriomPainlessMesh
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**NPM:**
|
|
125
|
+
```bash
|
|
126
|
+
npm view @alteriom/painlessmesh version
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**GitHub:**
|
|
130
|
+
Visit https://github.com/Alteriom/painlessMesh/releases
|
|
131
|
+
|
|
132
|
+
## Summary
|
|
133
|
+
|
|
134
|
+
| File Location | Purpose | Meaning |
|
|
135
|
+
|---------------|---------|---------|
|
|
136
|
+
| `library.properties` | Official version | **Source of truth** for library version |
|
|
137
|
+
| `library.json` | Official version | **Source of truth** for library version |
|
|
138
|
+
| `package.json` | Official version | **Source of truth** for library version |
|
|
139
|
+
| Header comments (`@version`) | Documentation | Library version when docs were reviewed |
|
|
140
|
+
| Git history (`git log`) | File tracking | **Actual modification history** |
|
|
141
|
+
| `CHANGELOG.md` | Release history | Human-readable version changes |
|
|
142
|
+
|
|
143
|
+
**Remember:** Always check `library.properties` for the official library version, and use `git log` to see actual file modification history.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
**See Also:**
|
|
148
|
+
- [VERSION_MANAGEMENT.md](VERSION_MANAGEMENT.md) - Complete version management guide
|
|
149
|
+
- [RELEASE_GUIDE.md](../RELEASE_GUIDE.md) - Release process documentation
|
|
150
|
+
- [CHANGELOG.md](../CHANGELOG.md) - Release history
|
|
151
|
+
|
|
152
|
+
**Last Updated:** November 12, 2025
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Quick Reference: Version Management
|
|
2
|
+
|
|
3
|
+
## 🎯 Where to Find Version Information
|
|
4
|
+
|
|
5
|
+
| File | Purpose | When to Update |
|
|
6
|
+
|------|---------|----------------|
|
|
7
|
+
| `library.properties` | **Official Arduino version** | Every release |
|
|
8
|
+
| `library.json` | **Official PlatformIO version** | Every release |
|
|
9
|
+
| `package.json` | **Official NPM version** | Every release |
|
|
10
|
+
| `src/painlessMesh.h` | Header documentation | Every release (recommended) |
|
|
11
|
+
| `src/AlteriomPainlessMesh.h` | Version defines | Every release (recommended) |
|
|
12
|
+
| `CHANGELOG.md` | Release history | Every release |
|
|
13
|
+
|
|
14
|
+
## 🚀 Quick Release Checklist
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 1. Bump version
|
|
18
|
+
./scripts/bump-version.sh patch # or minor, major
|
|
19
|
+
|
|
20
|
+
# 2. Update CHANGELOG.md
|
|
21
|
+
# Move [Unreleased] items to new [X.Y.Z] section
|
|
22
|
+
|
|
23
|
+
# 3. Update header files
|
|
24
|
+
# Edit src/painlessMesh.h - update @version comment
|
|
25
|
+
# Edit src/AlteriomPainlessMesh.h - update version defines
|
|
26
|
+
|
|
27
|
+
# 4. Validate
|
|
28
|
+
./scripts/release-agent.sh
|
|
29
|
+
|
|
30
|
+
# 5. Commit and push
|
|
31
|
+
git add library.properties library.json package.json CHANGELOG.md src/*.h
|
|
32
|
+
git commit -m "release: vX.Y.Z - Brief description"
|
|
33
|
+
git push origin main
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 📝 Version Comment Format
|
|
37
|
+
|
|
38
|
+
### In `src/painlessMesh.h`:
|
|
39
|
+
```cpp
|
|
40
|
+
/**
|
|
41
|
+
* @file painlessMesh.h
|
|
42
|
+
* @brief Main header file for Alteriom painlessMesh library
|
|
43
|
+
*
|
|
44
|
+
* @version 1.8.7 // ← Library version
|
|
45
|
+
* @date 2025-11-12 // ← Current date
|
|
46
|
+
*
|
|
47
|
+
* painlessMesh is a user-friendly library...
|
|
48
|
+
*/
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### In `src/AlteriomPainlessMesh.h`:
|
|
52
|
+
```cpp
|
|
53
|
+
/**
|
|
54
|
+
* @brief AlteriomPainlessMesh library version information
|
|
55
|
+
*/
|
|
56
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION "1.8.7"
|
|
57
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION_MAJOR 1
|
|
58
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION_MINOR 8
|
|
59
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION_PATCH 7
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 🔍 Quick Commands
|
|
63
|
+
|
|
64
|
+
### Check current version:
|
|
65
|
+
```bash
|
|
66
|
+
grep "version=" library.properties
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Verify all versions match:
|
|
70
|
+
```bash
|
|
71
|
+
grep -E "version|VERSION" library.properties library.json package.json src/*.h
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### See file modification history:
|
|
75
|
+
```bash
|
|
76
|
+
git log --oneline -- src/painlessMesh.h
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### See last modification date:
|
|
80
|
+
```bash
|
|
81
|
+
git log -1 --format="%ai" -- src/painlessMesh.h
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## ❓ Common Questions
|
|
85
|
+
|
|
86
|
+
**Q: What version is the library?**
|
|
87
|
+
→ Check `library.properties`, line 2
|
|
88
|
+
|
|
89
|
+
**Q: When was a file last modified?**
|
|
90
|
+
→ Use `git log -1 -- path/to/file`
|
|
91
|
+
|
|
92
|
+
**Q: Why is header version different from library.properties?**
|
|
93
|
+
→ Header comments may not have been updated. Trust `library.properties`.
|
|
94
|
+
|
|
95
|
+
**Q: Do I need to update header versions?**
|
|
96
|
+
→ Recommended but not critical. Update during releases.
|
|
97
|
+
|
|
98
|
+
## 📚 Full Documentation
|
|
99
|
+
|
|
100
|
+
For complete information:
|
|
101
|
+
- **[VERSION_MANAGEMENT.md](VERSION_MANAGEMENT.md)** - Complete guide
|
|
102
|
+
- **[FAQ_VERSION_NUMBERS.md](FAQ_VERSION_NUMBERS.md)** - Common questions
|
|
103
|
+
- **[RELEASE_GUIDE.md](../RELEASE_GUIDE.md)** - Release process
|
|
104
|
+
|
|
105
|
+
## 🎓 Key Principles
|
|
106
|
+
|
|
107
|
+
1. **Single Source of Truth**: `library.properties` / `library.json` / `package.json`
|
|
108
|
+
2. **Header Comments**: Documentation only, not source of truth
|
|
109
|
+
3. **Git History**: Actual record of file modifications
|
|
110
|
+
4. **Synchronize on Release**: Keep all versions aligned during releases
|
|
111
|
+
5. **When in Doubt**: Check `library.properties`
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
**Quick Access:**
|
|
116
|
+
```bash
|
|
117
|
+
# View this file
|
|
118
|
+
cat docs/QUICK_REFERENCE_VERSIONING.md
|
|
119
|
+
|
|
120
|
+
# View full guide
|
|
121
|
+
cat docs/VERSION_MANAGEMENT.md
|
|
122
|
+
|
|
123
|
+
# View FAQ
|
|
124
|
+
cat docs/FAQ_VERSION_NUMBERS.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Last Updated:** November 12, 2025
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Version Management in AlteriomPainlessMesh
|
|
2
|
+
|
|
3
|
+
This document explains how versioning works in the AlteriomPainlessMesh library and clarifies common questions about version numbers in different files.
|
|
4
|
+
|
|
5
|
+
## 📋 Version Number Locations
|
|
6
|
+
|
|
7
|
+
The library version is maintained in multiple files across the repository:
|
|
8
|
+
|
|
9
|
+
### 1. **Official Version Files** (Source of Truth)
|
|
10
|
+
|
|
11
|
+
These files define the official library version:
|
|
12
|
+
|
|
13
|
+
- **`library.properties`** - Arduino Library Manager version
|
|
14
|
+
- **`library.json`** - PlatformIO Library Registry version
|
|
15
|
+
- **`package.json`** - NPM package version
|
|
16
|
+
|
|
17
|
+
**All three files must always have the same version number.**
|
|
18
|
+
|
|
19
|
+
### 2. **Header File Version Comments** (Documentation)
|
|
20
|
+
|
|
21
|
+
These are **documentation comments** that indicate when the header file documentation was last updated:
|
|
22
|
+
|
|
23
|
+
- **`src/painlessMesh.h`** - `@version` in header comment
|
|
24
|
+
- **`src/AlteriomPainlessMesh.h`** - `ALTERIOM_PAINLESS_MESH_VERSION` defines
|
|
25
|
+
|
|
26
|
+
**Important:** Version numbers in header file comments reflect the overall library version at the time the header was documented, not file-specific versioning.
|
|
27
|
+
|
|
28
|
+
## ❓ Common Questions
|
|
29
|
+
|
|
30
|
+
### Q: Does the version in `painlessMesh.h` mean the file hasn't changed since that version?
|
|
31
|
+
|
|
32
|
+
**A: No.** The version comment in header files indicates the library version when the header documentation was last reviewed/updated, not the last time the file was modified.
|
|
33
|
+
|
|
34
|
+
**Example:**
|
|
35
|
+
```cpp
|
|
36
|
+
/**
|
|
37
|
+
* @file painlessMesh.h
|
|
38
|
+
* @version 1.8.7
|
|
39
|
+
* @date 2025-11-12
|
|
40
|
+
*/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This means:
|
|
44
|
+
- ✅ The library version is 1.8.7
|
|
45
|
+
- ✅ The header documentation is current as of version 1.8.7
|
|
46
|
+
- ❌ It does NOT mean the file hasn't been modified since 1.8.7
|
|
47
|
+
|
|
48
|
+
### Q: Why might header version comments be out of sync?
|
|
49
|
+
|
|
50
|
+
**A:** During rapid development, header file documentation may not be updated every release. The comments are updated when:
|
|
51
|
+
- Significant API changes are made
|
|
52
|
+
- Documentation requires updating
|
|
53
|
+
- Major version milestones are reached
|
|
54
|
+
- Version consistency review is performed
|
|
55
|
+
|
|
56
|
+
### Q: Which version number should I trust?
|
|
57
|
+
|
|
58
|
+
**A:** Always refer to the official version files:
|
|
59
|
+
1. `library.properties` - Official Arduino version
|
|
60
|
+
2. `library.json` - Official PlatformIO version
|
|
61
|
+
3. `package.json` - Official NPM version
|
|
62
|
+
4. GitHub releases - Tagged release versions
|
|
63
|
+
|
|
64
|
+
Header file comments are for documentation reference only.
|
|
65
|
+
|
|
66
|
+
## 🔄 Version Update Process
|
|
67
|
+
|
|
68
|
+
### When Releasing a New Version:
|
|
69
|
+
|
|
70
|
+
1. **Update Official Version Files** (required)
|
|
71
|
+
```bash
|
|
72
|
+
./scripts/bump-version.sh patch # or minor, major
|
|
73
|
+
```
|
|
74
|
+
This updates: `library.properties`, `library.json`, `package.json`
|
|
75
|
+
|
|
76
|
+
2. **Update CHANGELOG.md** (required)
|
|
77
|
+
- Move items from `[Unreleased]` to new version section
|
|
78
|
+
- Add release date
|
|
79
|
+
|
|
80
|
+
3. **Update Header File Comments** (recommended)
|
|
81
|
+
- Update `@version` in `src/painlessMesh.h`
|
|
82
|
+
- Update version defines in `src/AlteriomPainlessMesh.h`
|
|
83
|
+
|
|
84
|
+
4. **Commit and Tag** (required)
|
|
85
|
+
```bash
|
|
86
|
+
git commit -m "release: vX.Y.Z - Brief description"
|
|
87
|
+
git push origin main
|
|
88
|
+
```
|
|
89
|
+
GitHub Actions will automatically create the tag.
|
|
90
|
+
|
|
91
|
+
## 📝 Version Comment Best Practices
|
|
92
|
+
|
|
93
|
+
### In Header Files:
|
|
94
|
+
|
|
95
|
+
**Good Practice:**
|
|
96
|
+
```cpp
|
|
97
|
+
/**
|
|
98
|
+
* @file painlessMesh.h
|
|
99
|
+
* @brief Main header file for Alteriom painlessMesh library
|
|
100
|
+
*
|
|
101
|
+
* @version 1.8.7
|
|
102
|
+
* @date 2025-11-12
|
|
103
|
+
*
|
|
104
|
+
* painlessMesh is a user-friendly library for creating mesh networks...
|
|
105
|
+
*/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**What This Means:**
|
|
109
|
+
- The library is at version 1.8.7
|
|
110
|
+
- Header documentation was reviewed/updated on 2025-11-12
|
|
111
|
+
- Always synchronized with library version during releases
|
|
112
|
+
|
|
113
|
+
### In Implementation Files:
|
|
114
|
+
|
|
115
|
+
Implementation files (`.cpp`, `.hpp`) typically do not need version comments. Version information in these files can be misleading and is unnecessary since:
|
|
116
|
+
- Git history tracks all changes with timestamps
|
|
117
|
+
- Version is centrally managed in the official version files
|
|
118
|
+
- Per-file versioning creates maintenance overhead
|
|
119
|
+
|
|
120
|
+
## 🎯 Version Management Workflow
|
|
121
|
+
|
|
122
|
+
### Developer Workflow:
|
|
123
|
+
|
|
124
|
+
1. **Check Current Version**
|
|
125
|
+
```bash
|
|
126
|
+
grep "version=" library.properties
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
2. **Make Changes**
|
|
130
|
+
- Implement features/fixes
|
|
131
|
+
- Update documentation as needed
|
|
132
|
+
- Add entries to CHANGELOG.md under `[Unreleased]`
|
|
133
|
+
|
|
134
|
+
3. **Prepare Release**
|
|
135
|
+
```bash
|
|
136
|
+
./scripts/release-agent.sh # Validate release readiness
|
|
137
|
+
./scripts/bump-version.sh patch # Update version
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
4. **Update Documentation**
|
|
141
|
+
- Review and update header file version comments
|
|
142
|
+
- Ensure CHANGELOG.md has the new version section
|
|
143
|
+
- Verify all documentation references are current
|
|
144
|
+
|
|
145
|
+
5. **Release**
|
|
146
|
+
```bash
|
|
147
|
+
git add library.properties library.json package.json CHANGELOG.md src/*.h
|
|
148
|
+
git commit -m "release: v1.8.7 - Brief description"
|
|
149
|
+
git push origin main
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Automated Process:
|
|
153
|
+
|
|
154
|
+
GitHub Actions automatically handles:
|
|
155
|
+
- ✅ Git tag creation
|
|
156
|
+
- ✅ GitHub release with notes
|
|
157
|
+
- ✅ NPM publishing
|
|
158
|
+
- ✅ PlatformIO registry update
|
|
159
|
+
- ✅ Documentation deployment
|
|
160
|
+
|
|
161
|
+
## 🔍 Version History Tracking
|
|
162
|
+
|
|
163
|
+
### To Check File History:
|
|
164
|
+
|
|
165
|
+
Use Git to see actual file modification history:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# See all commits that modified a file
|
|
169
|
+
git log --oneline -- src/painlessMesh.h
|
|
170
|
+
|
|
171
|
+
# See detailed changes to a file
|
|
172
|
+
git log -p -- src/painlessMesh.h
|
|
173
|
+
|
|
174
|
+
# See when a file was last modified
|
|
175
|
+
git log -1 --format="%ai %an" -- src/painlessMesh.h
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### To Check Version History:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# List all version tags
|
|
182
|
+
git tag -l "v*"
|
|
183
|
+
|
|
184
|
+
# See changes in a specific version
|
|
185
|
+
git show v1.8.7
|
|
186
|
+
|
|
187
|
+
# Compare two versions
|
|
188
|
+
git diff v1.8.6..v1.8.7
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## 📚 Related Documentation
|
|
192
|
+
|
|
193
|
+
- **[CHANGELOG.md](../CHANGELOG.md)** - Complete version history with changes
|
|
194
|
+
- **[RELEASE_GUIDE.md](../RELEASE_GUIDE.md)** - Detailed release process
|
|
195
|
+
- **[GitHub Releases](https://github.com/Alteriom/painlessMesh/releases)** - Official release notes
|
|
196
|
+
|
|
197
|
+
## 🎓 Summary
|
|
198
|
+
|
|
199
|
+
**Key Takeaways:**
|
|
200
|
+
|
|
201
|
+
1. **Official version** = `library.properties` / `library.json` / `package.json`
|
|
202
|
+
2. **Header comments** = Documentation reference, not file-specific versions
|
|
203
|
+
3. **Git history** = Actual source of truth for file modifications
|
|
204
|
+
4. **CHANGELOG.md** = Human-readable version history
|
|
205
|
+
5. **GitHub releases** = Tagged versions with release notes
|
|
206
|
+
|
|
207
|
+
**When in doubt:** Check `library.properties` for the official library version, and use `git log` to see actual file modification history.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
**Version Management Process Owner:** @Alteriom
|
|
212
|
+
**Last Updated:** 2025-11-12
|
|
213
|
+
**Document Version:** 1.0
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# 🎉 painlessMesh v1.8.6 Released!
|
|
2
|
+
|
|
3
|
+
We're excited to announce **painlessMesh v1.8.6** - a patch release that fixes a critical bridge failover issue.
|
|
4
|
+
|
|
5
|
+
## 🔧 What's Fixed
|
|
6
|
+
|
|
7
|
+
**Bridge Auto-Election** - Meshes now automatically elect a bridge when all nodes start without a designated initial bridge. Previously, the network would remain bridgeless indefinitely in this scenario.
|
|
8
|
+
|
|
9
|
+
### The Problem
|
|
10
|
+
```
|
|
11
|
+
--- Bridge Status ---
|
|
12
|
+
I am bridge: NO
|
|
13
|
+
Internet available: NO
|
|
14
|
+
Known bridges: 0
|
|
15
|
+
No primary bridge available! ❌
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### The Solution
|
|
19
|
+
After a 60-second startup grace period, the mesh automatically detects the absence of a bridge and triggers an election. The node with the best WiFi signal (RSSI) becomes the bridge. ✅
|
|
20
|
+
|
|
21
|
+
## 🚀 Key Features
|
|
22
|
+
|
|
23
|
+
- **Automatic Recovery** - No manual intervention needed
|
|
24
|
+
- **Smart Timing** - 60s grace period for network stabilization
|
|
25
|
+
- **Randomized Delays** - Prevents election conflicts
|
|
26
|
+
- **Fully Backward Compatible** - Existing setups work unchanged
|
|
27
|
+
|
|
28
|
+
## 📦 Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# PlatformIO
|
|
32
|
+
pio pkg update alteriom/AlteriomPainlessMesh@^1.8.6
|
|
33
|
+
|
|
34
|
+
# NPM
|
|
35
|
+
npm update @alteriom/painlessmesh
|
|
36
|
+
|
|
37
|
+
# Arduino Library Manager
|
|
38
|
+
Search for "AlteriomPainlessMesh" and update
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 🎯 Perfect For
|
|
42
|
+
|
|
43
|
+
✅ Dynamic mesh networks with changing topologies
|
|
44
|
+
✅ IoT deployments requiring automatic bridge recovery
|
|
45
|
+
✅ Development environments without pre-configured bridges
|
|
46
|
+
✅ Fault-tolerant systems needing zero-touch setup
|
|
47
|
+
|
|
48
|
+
## 🙏 Thanks
|
|
49
|
+
|
|
50
|
+
Special thanks to **@woodlist** for reporting the issue and providing detailed logs!
|
|
51
|
+
|
|
52
|
+
## 📚 Learn More
|
|
53
|
+
|
|
54
|
+
- 📖 [Full Release Notes](https://github.com/Alteriom/painlessMesh/blob/main/docs/releases/RELEASE_NOTES_v1.8.6.md)
|
|
55
|
+
- 🔗 [GitHub Release](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.6)
|
|
56
|
+
- 📝 [Changelog](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)
|
|
57
|
+
- 💻 [Bridge Failover Example](https://github.com/Alteriom/painlessMesh/tree/main/examples/bridge_failover)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
**Upgrade today and enjoy seamless bridge failover! 🎊**
|
|
62
|
+
|
|
63
|
+
#painlessMesh #ESP32 #ESP8266 #IoT #MeshNetwork #Arduino #Alteriom
|