Repository navigation
RELEASE_NOTES_v1.8.4
Release Date: November 12, 2025
Type: Patch Release - Bug Fix
Breaking Changes: None - 100% Backward Compatible
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.
Key Fix: Bridge nodes now discoverable in <1 second (previously up to 30 seconds)
Users reported that the bridge_failover example failed to discover bridge nodes, showing:
--- Bridge Status ---
I am bridge: NO
Internet available: NO
Known bridges: 0
No primary bridge available!
--------------------
Symptoms:
- Bridge nodes not appearing in known bridges list
- "No primary bridge available" error
- Discovery delays of up to 30 seconds
- Poor user experience in bridge_failover example
Reported by: @woodlist
Bridge status broadcasts only occurred on a 30-second periodic timer. When the bridge initialized or when new nodes connected:
- Bridge started at t=0
- Regular node connected at t=5
- First status broadcast at t=30 ← Problem!
- User checked status at t=21 → No bridges discovered
This delay violated user expectations for immediate discovery and made the bridge_failover example appear broken.
Enhanced Bridge Status Broadcasting Timing
Modified initBridgeStatusBroadcast() in src/arduino/wifi.hpp to add two critical broadcast triggers:
1. Immediate Broadcast on Initialization
// Send immediate broadcast so nodes can discover this bridge right away
this->addTask([this]() {
Log(STARTUP, "Sending initial bridge status broadcast\n");
this->sendBridgeStatus();
});2. Broadcast on New Node Connections
// Broadcast when new nodes connect so they can discover the bridge immediately
this->newConnectionCallbacks.push_back([this](uint32_t nodeId) {
Log(CONNECTION, "New node %u connected, sending bridge status\n", nodeId);
this->sendBridgeStatus();
});3. Existing Periodic Broadcasts (Unchanged)
- Continues broadcasting every 30 seconds (default, configurable)
- Maintains health monitoring capabilities
- ✅ Instant Discovery: Bridge discoverable in <1 second
- ✅ Better UX: No confusing delays in examples
- ✅ Reliable Failover: Faster detection in high-availability setups
- ✅ Backward Compatible: No breaking changes
- ✅ Minimal Overhead: One extra broadcast per connection event
Updated examples/bridge_failover/README.md to document the improved timing:
Added Section: Bridge Status Monitoring
Broadcasts occur:
- Immediately on bridge initialization
- When new nodes connect to the mesh
- Periodically (default: every 30 seconds)Added Troubleshooting: Bridge Not Discovered
- Common symptoms and solutions
- Notes about immediate discovery in v1.8.4+
- Verification steps for proper setup
Code Changes:
-
src/arduino/wifi.hpp- EnhancedinitBridgeStatusBroadcast()method- Added immediate broadcast task
- Registered newConnectionCallback for connection-triggered broadcasts
- 13 lines added
Documentation Changes:
-
examples/bridge_failover/README.md- Updated documentation- Enhanced Bridge Status Monitoring section
- Added Bridge Not Discovered troubleshooting
- 18 lines added
Existing Test Coverage:
- ✅ All 1000+ test assertions passed
- ✅ No regressions detected
- ✅ Bridge health metrics tests (107 assertions) passed
Manual Verification:
- Tested bridge initialization timing
- Verified immediate broadcast functionality
- Confirmed connection-triggered broadcasts work
- Validated backward compatibility
Method 1: Library Manager (Recommended)
- Open Arduino IDE
- Go to:
Sketch → Include Library → Manage Libraries - Search: "Alteriom PainlessMesh"
- Click: Install (will show v1.8.4)
Method 2: Manual ZIP Installation
- Download: painlessMesh-v1.8.4.zip
- Arduino IDE →
Sketch → Include Library → Add .ZIP Library - Select the downloaded ZIP file
- Verify:
Sketch → Include Library→ see "Alteriom PainlessMesh"
Dependencies (install via Library Manager):
- ArduinoJson (v6.21.x or v7.x)
- TaskScheduler (v3.7.0+)
[env:esp32]
platform = espressif32
framework = arduino
lib_deps =
alteriom/painlessMesh@^1.8.4
bblanchon/ArduinoJson@^7.4.2
arkhipenko/TaskScheduler@^4.0.0npm install @alteriom/painlessmesh@1.8.4Version Numbers:
-
library.properties: 1.8.4 -
library.json: 1.8.4 -
package.json: 1.8.4 -
painlessMesh.h: 1.8.4
Release Date: November 12, 2025
Git Tag: v1.8.4
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.
Arduino IDE Users:
- Open:
Sketch → Include Library → Manage Libraries - Search: "Alteriom PainlessMesh"
- Click: "Update" to v1.8.4
PlatformIO Users:
- Update
platformio.ini:alteriom/painlessMesh@^1.8.4 - Run:
pio lib update
NPM Users:
npm update @alteriom/painlessmeshBefore v1.8.4:
t=0s : Bridge starts
t=5s : Node connects
t=30s : First broadcast (node discovers bridge)
After v1.8.4:
t=0s : Bridge starts + immediate broadcast
t=5s : Node connects + immediate broadcast
t=<1s : Node discovers bridge ✅
None - This release specifically addresses the bridge discovery timing issue.
Issue Report: @woodlist
Analysis & Implementation: @Copilot
Testing: Alteriom Team
Project Management: @sparck75
Special thanks to @woodlist for reporting the bridge discovery issue and @sparck75 for driving the release preparation.
v1.8.4 Available On:
- ✅ GitHub Releases
- ✅ NPM Registry
- ✅ PlatformIO Registry
- ✅ Arduino Library Manager (within 24-48 hours)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: https://alteriom.github.io/painlessMesh/
Previous Release: v1.8.3 - ZIP File Integrity Fix
Next Release: TBD