@alteriom/painlessmesh 1.8.6 → 1.8.8

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 CHANGED
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.8.8] - 2025-11-12
11
+
12
+ ### Fixed
13
+
14
+ - **Bridge Internet Connectivity Detection (Mobile Hotspot Compatibility)** - Fixed false negative with mobile hotspots
15
+ - Changed internet detection from checking gateway IP to checking local IP address
16
+ - Gateway IP may not be immediately available after connection, especially with mobile hotspots
17
+ - Some networks (mobile tethering) may not provide gateway IP via DHCP at all
18
+ - **Before**: Bridge connected to mobile hotspot → gets local IP → reports "Internet: NO" (gateway IP not available)
19
+ - **After**: Bridge connected to mobile hotspot → gets local IP → correctly reports "Internet: YES"
20
+ - Having a valid local IP + WiFi connected status is sufficient to indicate internet access
21
+ - Enhanced logging to show WiFi status, local IP, and gateway IP for better debugging
22
+ - Core fix in `src/arduino/wifi.hpp` line 1189-1191
23
+ - Improves upon 1.8.7 gateway IP check which didn't work with all network types
24
+ - Resolves issue where bridge connects successfully but still reports no internet
25
+ - Fixes Alteriom/painlessMesh#129
26
+
27
+ ## [1.8.7] - 2025-11-12
28
+
29
+ ### Fixed
30
+
31
+ - **Bridge Internet Connectivity Detection (Bridge_fallover)** - Fixed incorrect internet status reporting
32
+ - Bridge nodes now properly check for actual Internet connectivity, not just WiFi connection
33
+ - Check verifies both `WiFi.status() == WL_CONNECTED` AND valid gateway IP (not 0.0.0.0)
34
+ - **Before**: Bridge connected to router → reports "Internet: NO" even when router has Internet
35
+ - **After**: Bridge connected to router with valid gateway → correctly reports "Internet: YES"
36
+ - Fixes `hasInternetConnection()` returning false positives on regular nodes
37
+ - Core fix in `src/arduino/wifi.hpp` line 1188-1192
38
+ - Updated bridge_failover/README.md with troubleshooting guidance
39
+
40
+ - **Version Documentation Consistency** - Updated header file version comments to match library version
41
+ - Updated `painlessMesh.h` header comment from version 1.8.4 to 1.8.6
42
+ - Updated `AlteriomPainlessMesh.h` version defines from 1.6.1 to 1.8.6
43
+ - Header file version comments now accurately reflect the current library version
44
+ - Clarified that version comments in headers indicate documentation update, not file-specific versioning
45
+ - Resolves user confusion about whether files have been modified since specific versions
46
+
10
47
  ## [1.8.6] - 2025-11-12
11
48
 
12
49
  ### 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. Run the Release Agent to validate readiness
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
- # 4. If all checks pass, commit and trigger release
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