@alteriom/painlessmesh 1.7.2 → 1.7.3

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +58 -4
  2. package/README.md +17 -3
  3. package/docs/README.md +62 -10
  4. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +166 -0
  5. package/docs/archive/LIBRARY_JSON_FIX.md +98 -0
  6. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -0
  7. package/docs/archive/RELEASE_SUMMARY.md +173 -0
  8. package/docs/archive/SCONS_BUILD_FIX.md +313 -0
  9. package/docs/archive/TRIGGER_RELEASE.md +280 -0
  10. package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -0
  11. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +71 -0
  12. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -0
  13. package/docs/development/DOCKER_TESTING.md +196 -0
  14. package/docs/development/PLATFORMIO_USAGE.md +180 -0
  15. package/docs/development/TESTING_SUMMARY.md +126 -0
  16. package/docs/development/contributing.md +301 -0
  17. package/docs/development/documentation.md +583 -0
  18. package/docs/improvements/FUTURE_PROPOSALS.md +1016 -0
  19. package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -0
  20. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -0
  21. package/docs/improvements/README.md +171 -46
  22. package/docs/releases/FEATURE_HISTORY.md +543 -0
  23. package/docs/releases/PATCH_v1.7.3.md +262 -0
  24. package/docs/releases/PHASE1_SUMMARY.md +246 -0
  25. package/docs/releases/PHASE2_SUMMARY.md +499 -0
  26. package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -0
  27. package/docs/troubleshooting/debugging.md +455 -0
  28. package/library.json +1 -1
  29. package/library.properties +1 -1
  30. package/package.json +1 -1
  31. package/src/painlessmesh/router.hpp +35 -19
  32. /package/docs/{improvements → archive}/FEATURE_PROPOSALS.md +0 -0
  33. /package/docs/{improvements → archive}/PHASE1_IMPLEMENTATION.md +0 -0
  34. /package/docs/{improvements → archive}/PHASE2_IMPLEMENTATION.md +0 -0
  35. /package/docs/{improvements → archive}/ota-and-status-enhancements.md +0 -0
  36. /package/docs/{improvements → archive}/ota-status-architecture-diagrams.md +0 -0
  37. /package/docs/{improvements → archive}/ota-status-quick-reference.md +0 -0
package/CHANGELOG.md CHANGED
@@ -19,6 +19,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
 
20
20
  - TBD
21
21
 
22
+ ## [1.7.3] - 2025-10-16
23
+
24
+ ### Fixed
25
+
26
+ - **Router Memory Safety**: Replaced dangerous escalating memory allocation workaround with safe pre-calculated capacity
27
+ - Removed static `baseCapacity` variable that grew indefinitely (512B → 20KB)
28
+ - Implemented single-allocation strategy with pre-calculated capacity based on message size and nesting depth
29
+ - Added 8KB safety cap to protect ESP8266 devices from OOM crashes
30
+ - Support for both ArduinoJson v6 and v7 with version-aware capacity calculation
31
+
32
+ ### Performance
33
+
34
+ - **Small messages (50B)**: +512B predictable overhead (vs. variable 512B-20KB in v1.7.0)
35
+ - **Medium messages (500B)**: -3596B saved by eliminating retry allocations
36
+ - **Large messages (2KB)**: -17KB saved by preventing escalation to 20KB
37
+
38
+ ### Added
39
+
40
+ - **Tests**: New comprehensive memory safety test suite (`test/catch/catch_router_memory.cpp`)
41
+ - Simple message parsing tests
42
+ - Deeply nested JSON structure tests (10+ levels)
43
+ - Oversized message handling tests
44
+ - Predictable capacity allocation verification
45
+ - 14 new assertions, all passing
46
+
47
+ ### Documentation
48
+
49
+ - **CODE_REFACTORING_RECOMMENDATIONS.md**: Comprehensive code analysis document with 8 prioritized refactoring recommendations (P0-P3)
50
+ - **PATCH_v1.7.3.md**: Complete release notes with before/after comparison, performance metrics, and migration guide
51
+
52
+ ### Technical Details
53
+
54
+ - Fixes issue #521: ArduinoJson copy constructor segmentation fault workaround
55
+ - All 710+ test assertions passing across 18 test suites
56
+ - Docker-based testing on Linux x86_64 with CMake + Ninja
57
+
22
58
  ## [1.7.2] - 2025-10-15
23
59
 
24
60
  ### Fixed
@@ -26,7 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
26
62
  - **NPM Configuration**: Updated `.npmrc` to use public NPM registry instead of GitHub Packages
27
63
  - **Dependencies**: Moved `@alteriom/mqtt-schema` back to `devDependencies` now that it's publicly available
28
64
  - **Automated Releases**: Fixed npm install failures during automated release workflow
29
- - **Package Availability**: Package now accessible at https://www.npmjs.com/package/@alteriom/mqtt-schema
65
+ - **Package Availability**: Package now accessible at <https://www.npmjs.com/package/@alteriom/mqtt-schema>
30
66
 
31
67
  ## [1.7.1] - 2025-10-15
32
68
 
@@ -52,6 +88,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
52
88
  #### Phase 2: Broadcast OTA & MQTT Status Bridge
53
89
 
54
90
  **Broadcast OTA Distribution**
91
+
55
92
  - ✨ **Broadcast Mode OTA**: True mesh-wide firmware distribution with ~98% network traffic reduction for 50+ node meshes
56
93
  - 📡 **Parallel Updates**: All nodes receive firmware chunks simultaneously instead of sequential unicast
57
94
  - ⚡ **Performance**: ~50x faster for 50-node mesh, ~100x faster for 100-node mesh
@@ -60,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
60
97
  - 📊 **Scalability**: Efficiently handles 50-100+ node meshes with minimal overhead
61
98
 
62
99
  **MQTT Status Bridge**
100
+
63
101
  - 🌉 **Professional Monitoring**: Complete MQTT bridge for publishing mesh status to monitoring tools
64
102
  - 📈 **Multiple Topics**: Publishes topology, metrics, alerts, and per-node status
65
103
  - 🔗 **Tool Integration**: Ready for Grafana, InfluxDB, Prometheus, Home Assistant, Node-RED
@@ -157,14 +195,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
157
195
  ### ⚙️ Configuration Changes
158
196
 
159
197
  **library.json**
198
+
160
199
  - Added `"srcDir": "src"` for explicit source directory
161
200
  - Added `"includeDir": "src"` for explicit include directory
162
201
  - Removed conflicting `"export": {"include": "src"}` section
163
202
 
164
203
  **library.properties**
204
+
165
205
  - Updated `includes=painlessMesh.h` (was AlteriomPainlessMesh.h)
166
206
 
167
207
  **package.json**
208
+
168
209
  - Renamed `build` → `dev:build` (prevents auto-execution)
169
210
  - Renamed `prebuild` → `dev:prebuild` (prevents auto-execution)
170
211
  - Updated to @alteriom/mqtt-schema v0.5.0
@@ -172,6 +213,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
172
213
  ### 📊 Performance Improvements
173
214
 
174
215
  **Broadcast OTA Performance**
216
+
175
217
  - **Network Traffic**: 90% reduction (10 nodes), 98% reduction (50 nodes), 99% reduction (100 nodes)
176
218
  - **Update Speed**: ~N times faster (parallel vs sequential)
177
219
  - **Example**: 150-chunk firmware to 50 nodes
@@ -180,6 +222,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
180
222
  - **Savings: 98% (7,350 transmissions)**
181
223
 
182
224
  **Memory Impact**
225
+
183
226
  - Broadcast OTA: +2-5KB per node (chunk tracking)
184
227
  - MQTT Bridge: +5-8KB (root node only)
185
228
  - Minimal overhead for ESP32, acceptable for ESP8266
@@ -205,6 +248,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
205
248
  **No migration required** for existing code. To adopt new features:
206
249
 
207
250
  **Enable Broadcast OTA:**
251
+
208
252
  ```cpp
209
253
  // Before (v1.6.x)
210
254
  mesh.offerOTA(role, hw, md5, parts, false, false, true);
@@ -215,6 +259,7 @@ mesh.offerOTA(role, hw, md5, parts, false, true, true);
215
259
  ```
216
260
 
217
261
  **Add MQTT Status Bridge:**
262
+
218
263
  ```cpp
219
264
  #include "examples/bridge/mqtt_status_bridge.hpp"
220
265
 
@@ -277,8 +322,8 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
277
322
  - Release validation with multi-file version consistency
278
323
  - **Arduino IDE Support**: Added keywords.txt for syntax highlighting
279
324
  - **Distribution Documentation**: Complete guides for all publication channels
280
- - RELEASE_SUMMARY.md template for release notes
281
- - TRIGGER_RELEASE.md for step-by-step release instructions
325
+ - docs/archive/RELEASE_SUMMARY.md template for release notes (archived)
326
+ - docs/archive/TRIGGER_RELEASE.md for step-by-step release instructions (archived, see RELEASE_GUIDE.md)
282
327
  - Enhanced RELEASE_GUIDE.md with comprehensive publication workflow
283
328
  - **Version Management**: Enhanced bump-version script
284
329
  - Updates all three version files simultaneously (library.properties, library.json, package.json)
@@ -286,6 +331,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
286
331
  - Clear instructions for NPM and GitHub Packages publication
287
332
 
288
333
  ### Changed
334
+
289
335
  - **Library Name**: Updated from "Painless Mesh" to "Alteriom PainlessMesh" for Arduino Library Manager
290
336
  - **Release Process**: Streamlined to support multiple package managers
291
337
  - Single commit with "release:" prefix triggers full publication pipeline
@@ -301,6 +347,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
301
347
  - Troubleshooting guides for each distribution channel
302
348
 
303
349
  ### Fixed
350
+
304
351
  - **NPM Publishing**: Fixed registry configuration issues that prevented NPM publication
305
352
  - **GitHub Pages**: Improved workflow to handle cases where Pages is not configured
306
353
  - **PlatformIO Build**: Fixed include paths in improved_sensor_node.ino example
@@ -311,6 +358,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
311
358
  ## [1.6.0] - 2025-09-29
312
359
 
313
360
  ### Added
361
+
314
362
  - Enhanced Alteriom-specific package documentation and examples
315
363
  - Updated repository URLs and metadata for Alteriom fork
316
364
  - Improved release process documentation
@@ -319,11 +367,13 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
319
367
  - Comprehensive Alteriom package documentation and quick start guide
320
368
 
321
369
  ### Changed
370
+
322
371
  - Migrated from deprecated `actions/create-release@v1` to GitHub CLI for releases
323
372
  - Updated library.properties and library.json to reflect Alteriom ownership
324
373
  - Enhanced package descriptions to highlight Alteriom extensions
325
374
 
326
375
  ### Fixed
376
+
327
377
  - Fixed deprecated GitHub Actions in release workflow
328
378
  - Corrected undefined variable references in upload workflow steps
329
379
  - Updated repository URLs from GitLab to GitHub in library files
@@ -331,6 +381,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
331
381
  ## [1.5.6] - Current Release
332
382
 
333
383
  ### Features
384
+
334
385
  - painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices
335
386
  - Automatic routing and network management
336
387
  - JSON-based messaging system
@@ -339,16 +390,19 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
339
390
  - Sensor network patterns for IoT applications
340
391
 
341
392
  ### Platforms Supported
393
+
342
394
  - ESP32 (espressif32)
343
395
  - ESP8266 (espressif8266)
344
396
 
345
397
  ### Dependencies
398
+
346
399
  - ArduinoJson ^7.4.2
347
400
  - TaskScheduler ^3.8.5
348
401
  - AsyncTCP ^3.4.7 (ESP32)
349
402
  - ESPAsyncTCP ^2.0.0 (ESP8266)
350
403
 
351
404
  ### Alteriom Extensions
405
+
352
406
  - SensorPackage for environmental monitoring
353
407
  - CommandPackage for device control
354
408
  - StatusPackage for health monitoring
@@ -378,4 +432,4 @@ This project follows [Semantic Versioning](https://semver.org/):
378
432
  - **MINOR** version when you add functionality in a backwards compatible manner
379
433
  - **PATCH** version when you make backwards compatible bug fixes
380
434
 
381
- Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
435
+ Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
package/README.md CHANGED
@@ -7,7 +7,8 @@
7
7
  [![CI/CD Pipeline](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml)
8
8
  [![Documentation](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml)
9
9
  [![Release](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml)
10
- [![GitHub release](https://img.shields.io/github/release/Alteriom/painlessMesh.svg)](https://github.com/Alteriom/painlessMesh/releases)
10
+ [![GitHub release](https://img.shields.io/github/v/release/Alteriom/painlessMesh?label=version)](https://github.com/Alteriom/painlessMesh/releases)
11
+ [![NPM Version](https://img.shields.io/npm/v/@alteriom/painlessmesh?label=npm)](https://www.npmjs.com/package/@alteriom/painlessmesh)
11
12
  [![PlatformIO Registry](https://badges.registry.platformio.org/packages/alteriom/library/painlessMesh.svg)](https://registry.platformio.org/libraries/alteriom/painlessMesh)
12
13
  [![Arduino Library Manager](https://img.shields.io/badge/Arduino-Library%20Manager-blue.svg)](https://www.arduino.cc/reference/en/libraries/alteriompainlessmesh/)
13
14
 
@@ -33,12 +34,14 @@ All packages provide type-safe serialization, automatic JSON conversion, and mes
33
34
  #### 🚀 Phase 2 Features (v1.7.0+)
34
35
 
35
36
  **Broadcast OTA Distribution**
37
+
36
38
  - 📡 **98% Network Traffic Reduction** for 50+ node meshes
37
39
  - ⚡ **Parallel Firmware Updates** - All nodes receive simultaneously
38
40
  - 🔄 **Backward Compatible** - Single parameter enables broadcast mode
39
41
  - 📊 **Scales to 100+ Nodes** efficiently
40
42
 
41
43
  **MQTT Status Bridge**
44
+
42
45
  - 🌉 **Professional Monitoring** - Grafana, InfluxDB, Prometheus integration
43
46
  - 📈 **Real-Time Topology** - Complete mesh visualization over MQTT
44
47
  - 🎯 **Production Ready** - Enterprise IoT and commercial deployments
@@ -56,10 +59,12 @@ The MQTT bridge enables bidirectional communication between MQTT brokers and mes
56
59
  - **Event Notifications** - Track node connections, disconnections, and mesh topology changes
57
60
 
58
61
  **Documentation:**
62
+
59
63
  - 📖 [MQTT Bridge Commands Reference](docs/MQTT_BRIDGE_COMMANDS.md) - Complete command API documentation
60
64
  - 🔧 [OTA Commands Reference](docs/OTA_COMMANDS_REFERENCE.md) - Over-the-air firmware updates
61
65
 
62
66
  **Examples:**
67
+
63
68
  - 🌉 [MQTT Command Bridge](examples/mqttCommandBridge/mqttCommandBridge.ino) - Gateway bridge with bidirectional MQTT-mesh routing
64
69
  - 📡 [Mesh Command Node](examples/alteriom/mesh_command_node.ino) - Node that receives and handles MQTT commands
65
70
 
@@ -178,6 +183,7 @@ void receivedCallback(uint32_t from, String& msg) {
178
183
  ## Key Features
179
184
 
180
185
  ### Core Features
186
+
181
187
  - **🔄 Automatic Mesh Formation** - Nodes discover and connect automatically
182
188
  - **📡 Self-Healing Network** - Adapts when nodes join/leave
183
189
  - **⏰ Time Synchronization** - Coordinated actions across all nodes
@@ -187,6 +193,7 @@ void receivedCallback(uint32_t from, String& msg) {
187
193
  - **🛡️ Memory Efficient** - Optimized for resource-constrained devices
188
194
 
189
195
  ### Advanced Features (v1.7.0+)
196
+
190
197
  - **📡 Broadcast OTA** - Efficient firmware distribution for large meshes (50-100+ nodes)
191
198
  - **🌉 MQTT Bridge** - Professional monitoring with Grafana/InfluxDB/Prometheus
192
199
  - **📊 Topology Visualization** - D3.js, Cytoscape.js, Node-RED examples
@@ -210,6 +217,7 @@ void receivedCallback(uint32_t from, String& msg) {
210
217
  ## Development
211
218
 
212
219
  ### Building from Source
220
+
213
221
  ```bash
214
222
  git clone https://github.com/Alteriom/painlessMesh.git
215
223
  cd painlessMesh
@@ -220,6 +228,7 @@ run-parts --regex catch_ bin/ # Run tests
220
228
  ```
221
229
 
222
230
  ### Requirements
231
+
223
232
  - **ESP32/ESP8266**: Arduino Core 2.0.0+
224
233
  - **Dependencies**: ArduinoJson 6.x, TaskScheduler 3.x
225
234
  - **Development**: CMake, Ninja, Boost (for desktop testing)
@@ -229,12 +238,14 @@ run-parts --regex catch_ bin/ # Run tests
229
238
  painlessMesh features a state-of-the-art automated CI/CD pipeline:
230
239
 
231
240
  **🔄 Continuous Integration:**
241
+
232
242
  - Automated builds on gcc/clang with strict warnings
233
243
  - Cross-platform testing (Arduino CLI, PlatformIO)
234
244
  - Code quality and formatting validation
235
245
  - Comprehensive test suite execution
236
246
 
237
247
  **🚀 Automated Releases:**
248
+
238
249
  - Semantic versioning with automated tagging
239
250
  - GitHub Releases with changelog generation
240
251
  - Library package distribution
@@ -242,6 +253,7 @@ painlessMesh features a state-of-the-art automated CI/CD pipeline:
242
253
  - Arduino Library Manager & PlatformIO Registry integration
243
254
 
244
255
  **📋 Release Management:**
256
+
245
257
  ```bash
246
258
  # Bump version and prepare release
247
259
  ./scripts/bump-version.sh patch # or minor, major
@@ -321,16 +333,19 @@ You can tip me using ko-fi:
321
333
  - **[❓ FAQ](https://alteriom.github.io/painlessMesh/#/troubleshooting/faq)** - Frequently asked questions
322
334
 
323
335
  **📖 Tutorials & Examples:**
336
+
324
337
  - **[Basic Examples](docs/tutorials/basic-examples.md)** - Essential patterns and techniques
325
338
  - **[Custom Packages](docs/tutorials/custom-packages.md)** - Type-safe message handling
326
339
  - **[Sensor Networks](docs/tutorials/sensor-networks.md)** - IoT sensor network patterns
327
340
 
328
341
  **🚀 Alteriom Extensions:**
342
+
329
343
  - **[Alteriom Overview](docs/alteriom/overview.md)** - Production-ready IoT packages
330
344
  - **[Sensor Packages](docs/alteriom/sensor-packages.md)** - Environmental monitoring
331
345
  - **[Command System](docs/alteriom/command-system.md)** - Device control and automation
332
346
 
333
347
  **🔧 Troubleshooting:**
348
+
334
349
  - **[Common Issues](docs/troubleshooting/common-issues.md)** - Solutions to frequent problems
335
350
  - **[FAQ](docs/troubleshooting/faq.md)** - Frequently asked questions
336
351
  - **[Debugging Guide](docs/troubleshooting/debugging.md)** - Tools and techniques
@@ -467,8 +482,7 @@ Note: The mesh must be on the same WiFi channel as the AP.
467
482
  Change the internal log level. List of types defined in Logger.hpp:
468
483
  ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE
469
484
 
470
-
471
- # Funding
485
+ # Funding
472
486
 
473
487
  Most development of painlessMesh has been done as a hobby, but some specific features have been funded by the companies listed below:
474
488
 
package/docs/README.md CHANGED
@@ -1,62 +1,114 @@
1
- # painlessMesh Documentation
1
+ # 📚 AlteriomPainlessMesh Documentation
2
2
 
3
- Welcome to the comprehensive documentation for painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library that automatically handles routing and network management.
3
+ Welcome to the comprehensive documentation for the Alteriom fork of painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library with advanced OTA updates, MQTT integration, and structured IoT packages.
4
4
 
5
- ## Documentation Structure
5
+ ## 🌟 What's New in Alteriom Fork
6
+
7
+ - **Broadcast OTA Distribution** - 98% network traffic reduction for large meshes
8
+ - **MQTT Status Bridge** - Enterprise monitoring integration (Grafana, InfluxDB)
9
+ - **Structured Packages** - SensorPackage, CommandPackage, StatusPackage
10
+ - **Enhanced CI/CD** - Automated releases to NPM, PlatformIO, Arduino Library Manager
11
+
12
+ ## 📖 Documentation Structure
6
13
 
7
14
  ### Getting Started
15
+
8
16
  - [Quick Start Guide](getting-started/quickstart.md) - Get up and running in minutes
9
17
  - [Installation](getting-started/installation.md) - Detailed installation instructions
10
18
  - [First Mesh Network](getting-started/first-mesh.md) - Your first working mesh
11
19
 
12
20
  ### Architecture & Design
21
+
13
22
  - [Mesh Architecture](architecture/mesh-architecture.md) - How painlessMesh works internally
14
23
  - [Plugin System](architecture/plugin-system.md) - Understanding the plugin architecture
15
24
  - [Message Routing](architecture/routing.md) - Message routing algorithms and strategies
16
25
  - [Time Synchronization](architecture/time-sync.md) - Mesh-wide time synchronization
17
26
 
18
27
  ### API Reference
28
+
19
29
  - [Core API](api/core-api.md) - Main painlessMesh class methods
20
30
  - [Plugin API](api/plugin-api.md) - Creating custom packages and plugins
21
31
  - [Configuration](api/configuration.md) - Configuration options and constants
22
32
  - [Callbacks](api/callbacks.md) - Event handling and callbacks
23
33
 
24
34
  ### Tutorials & Examples
35
+
25
36
  - [Basic Examples](tutorials/basic-examples.md) - Simple mesh networking examples
26
37
  - [Custom Packages](tutorials/custom-packages.md) - Creating your own message types
27
38
  - [Sensor Networks](tutorials/sensor-networks.md) - Building IoT sensor networks
28
39
  - [Bridge Applications](tutorials/bridge-apps.md) - Connecting mesh to external networks
29
40
 
30
41
  ### Alteriom Extensions
42
+
31
43
  - [Alteriom Overview](alteriom/overview.md) - Alteriom-specific functionality
32
44
  - [Sensor Packages](alteriom/sensor-packages.md) - Environmental sensor data handling
33
45
  - [Command System](alteriom/command-system.md) - Device command and control
34
46
  - [Status Monitoring](alteriom/status-monitoring.md) - Device health and diagnostics
35
47
 
48
+ ### 📡 MQTT Integration
49
+
50
+ - **[MQTT Bridge Commands](MQTT_BRIDGE_COMMANDS.md)** - Complete MQTT command API
51
+ - **[MQTT Bridge Implementation](MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md)** - Implementation details
52
+ - **[MQTT Schema Compliance](MQTT_SCHEMA_COMPLIANCE.md)** - Schema validation
53
+ - **[OTA Commands Reference](OTA_COMMANDS_REFERENCE.md)** - OTA update commands
54
+ - **[Mesh Topology Guide](MESH_TOPOLOGY_GUIDE.md)** - Topology reporting over MQTT
55
+
36
56
  ### Advanced Topics
57
+
37
58
  - [Performance Optimization](advanced/performance.md) - Optimizing mesh performance
38
59
  - [Memory Management](advanced/memory.md) - Managing ESP8266/ESP32 memory constraints
39
60
  - [Security Considerations](advanced/security.md) - Securing your mesh network
40
61
  - [OTA Updates](advanced/ota.md) - Over-the-air firmware updates in mesh
41
62
 
42
63
  ### Troubleshooting
64
+
43
65
  - [Common Issues](troubleshooting/common-issues.md) - Solutions to frequent problems
44
66
  - [Debugging Guide](troubleshooting/debugging.md) - Tools and techniques for debugging
45
67
  - [FAQ](troubleshooting/faq.md) - Frequently asked questions
46
68
  - [Network Issues](troubleshooting/network-issues.md) - Connectivity and mesh topology problems
47
69
 
48
70
  ### Development
71
+
49
72
  - [Contributing](development/contributing.md) - How to contribute to painlessMesh
50
73
  - [Building & Testing](development/building.md) - Development environment setup
51
74
  - [Documentation](development/documentation.md) - Contributing to documentation
52
75
  - [Release Process](development/releases.md) - Understanding releases and versioning
76
+ - **[Docker Testing](development/DOCKER_TESTING.md)** - Containerized testing environment
77
+ - **[Testing Summary](development/TESTING_SUMMARY.md)** - Complete test suite overview
78
+ - **[Arduino Compliance](development/ARDUINO_COMPLIANCE_SUMMARY.md)** - Arduino Library Manager standards
79
+ - **[PlatformIO Usage](development/PLATFORMIO_USAGE.md)** - PlatformIO integration guide
80
+
81
+ ### 📦 Releases & Changelogs
82
+
83
+ - **[Feature History](releases/FEATURE_HISTORY.md)** - ⭐ Consolidated Phase 1 & 2 development history
84
+ - **[Release Notes v1.7.0](releases/RELEASE_NOTES_1.7.0.md)** - Detailed v1.7.0 release notes
85
+ - **[CHANGELOG](../CHANGELOG.md)** - Complete version history
86
+ - **[RELEASE_GUIDE](../RELEASE_GUIDE.md)** - Maintainer release process
87
+ - [Phase 1 Details](releases/PHASE1_SUMMARY.md) - v1.6.x detailed summary (archived)
88
+ - [Phase 2 Details](releases/PHASE2_SUMMARY.md) - v1.7.x detailed summary (archived)
89
+
90
+ ### 🗂️ Core Documentation (Root)
91
+
92
+ - **[Main README](../README.md)** - Project overview and quick start
93
+ - **[CONTRIBUTING](../CONTRIBUTING.md)** - Contribution guidelines
94
+ - **[LICENSE](../LICENSE)** - LGPL-3.0 license terms
95
+
96
+ ### 🗃️ Historical & Archive
97
+
98
+ - **[Archive](archive/)** - Historical bug fixes and obsolete documentation
99
+ - Bug fix documentation (SCONS, VECTOR, LIBRARY fixes)
100
+ - Legacy deployment guides
101
+ - Superseded release documentation
102
+
103
+ ### 🚀 Improvements & Enhancements
53
104
 
54
- ### Improvements & Proposals
55
- - [Library Improvements](improvements/README.md) - Overview of performance and security enhancements
56
- - **[Feature Proposals: OTA & Status](improvements/FEATURE_PROPOSALS.md)** 🆕 - Comprehensive proposals for OTA distribution and mesh status monitoring
57
- - [Full Analysis](improvements/ota-and-status-enhancements.md) - Detailed exploration of 10+ enhancement options
58
- - [Quick Reference](improvements/ota-status-quick-reference.md) - TL;DR with decision guides
59
- - [Architecture Diagrams](improvements/ota-status-architecture-diagrams.md) - Visual diagrams of each option
105
+ - **[Improvements Overview](improvements/README.md)** - Complete guide to library enhancements
106
+ - **[OTA & Status Enhancements](improvements/OTA_STATUS_ENHANCEMENTS.md)** 📋 - Complete reference for all options
107
+ - Phase 1 (v1.6.x): Compressed OTA + Enhanced Status
108
+ - Phase 2 (v1.7.0): Broadcast OTA + MQTT Bridge
109
+ - 📋 Phase 3 (Future): Progressive rollout, P2P distribution, real-time telemetry
110
+ - **[Implementation History](improvements/IMPLEMENTATION_HISTORY.md)** 🔧 - Technical details for Phases 1-2
111
+ - **[Future Proposals](improvements/FUTURE_PROPOSALS.md)** 🚀 - Phase 3+ roadmap and specifications
60
112
 
61
113
  ## Quick Links
62
114
 
@@ -75,4 +127,4 @@ Welcome to the comprehensive documentation for painlessMesh - a user-friendly ES
75
127
 
76
128
  ---
77
129
 
78
- This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.
130
+ This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.
@@ -0,0 +1,166 @@
1
+ # GitHub Pages Deployment Guide
2
+
3
+ This guide explains how to deploy the Docusaurus documentation site to GitHub Pages.
4
+
5
+ ## 🚀 Deployment Steps
6
+
7
+ ### 1. Enable GitHub Pages
8
+
9
+ 1. Go to your repository on GitHub: `https://github.com/Alteriom/painlessMesh`
10
+ 2. Click **Settings** tab
11
+ 3. Scroll down to **Pages** section
12
+ 4. Under **Source**, select **GitHub Actions**
13
+ 5. Save the changes
14
+
15
+ ### 2. Commit and Push Changes
16
+
17
+ ```bash
18
+ # Add all changes
19
+ git add .
20
+
21
+ # Commit the Docusaurus setup
22
+ git commit -m "feat: Add Docusaurus documentation site
23
+
24
+ - Replace basic HTML generation with modern Docusaurus
25
+ - Add GitHub Actions workflow for automated deployment
26
+ - Include Alteriom package documentation
27
+ - Integrate Doxygen API docs with user guides
28
+ - Enable responsive design and built-in search
29
+
30
+ Closes: Documentation modernization initiative"
31
+
32
+ # Push to trigger deployment
33
+ git push origin main
34
+ ```
35
+
36
+ ### 3. Monitor Deployment
37
+
38
+ 1. Go to **Actions** tab in your repository
39
+ 2. Watch the **Documentation** workflow run
40
+ 3. When complete, your site will be available at:
41
+ - **URL**: `https://alteriom.github.io/painlessMesh/`
42
+
43
+ ## 🛠️ Local Development
44
+
45
+ ### Start Development Server
46
+
47
+ ```bash
48
+ cd website
49
+ npm start
50
+ ```
51
+
52
+ Visit: `http://localhost:3000/painlessMesh/`
53
+
54
+ ### Build for Production
55
+
56
+ ```bash
57
+ cd website
58
+ npm run build
59
+ ```
60
+
61
+ ### Test Production Build
62
+
63
+ ```bash
64
+ cd website
65
+ npm run serve
66
+ ```
67
+
68
+ ## 📁 Documentation Structure
69
+
70
+ ```
71
+ website/
72
+ ├── docs/ # Main documentation
73
+ │ ├── intro.md # Homepage content
74
+ │ ├── getting-started/ # Installation & quickstart
75
+ │ ├── api/ # API reference
76
+ │ ├── alteriom/ # Alteriom extensions
77
+ │ ├── tutorials/ # Usage examples
78
+ │ ├── architecture/ # Technical details
79
+ │ ├── advanced/ # Advanced topics
80
+ │ └── troubleshooting/ # Help & FAQ
81
+ ├── static/ # Static assets
82
+ │ └── api/ # Doxygen API docs (auto-generated)
83
+ ├── docusaurus.config.ts # Main configuration
84
+ └── sidebars.ts # Navigation structure
85
+ ```
86
+
87
+ ## 🔄 Workflow Overview
88
+
89
+ The GitHub Actions workflow:
90
+
91
+ 1. **Checkout** repository code
92
+ 2. **Setup Node.js** for Docusaurus
93
+ 3. **Install Doxygen** for API documentation
94
+ 4. **Generate API docs** using existing Doxygen config
95
+ 5. **Install dependencies** for Docusaurus
96
+ 6. **Integrate Doxygen** output with Docusaurus
97
+ 7. **Build site** for production
98
+ 8. **Deploy** to GitHub Pages
99
+
100
+ ## 🎯 Benefits Over Previous System
101
+
102
+ | Feature | Old System | **New Docusaurus** |
103
+ |---------|------------|-------------------|
104
+ | **Search** | ❌ None | ✅ Built-in Algolia search |
105
+ | **Mobile** | ❌ Poor responsive | ✅ Perfect mobile experience |
106
+ | **Navigation** | ❌ Manual links | ✅ Auto-generated sidebar |
107
+ | **Performance** | ❌ Slow page loads | ✅ Single-page app speed |
108
+ | **Maintenance** | ❌ Manual HTML generation | ✅ Pure Markdown workflow |
109
+ | **Link validation** | ❌ Broken links undetected | ✅ Automatic validation |
110
+ | **Versioning** | ❌ Not supported | ✅ Multiple library versions |
111
+ | **API integration** | ❌ Separate Doxygen site | ✅ Seamless integration |
112
+
113
+ ## 🔧 Customization
114
+
115
+ ### Adding New Pages
116
+
117
+ 1. Create `.md` files in appropriate `docs/` subdirectory
118
+ 2. Update `sidebars.ts` to include in navigation
119
+ 3. Commit and push - automatic deployment
120
+
121
+ ### Modifying Branding
122
+
123
+ Edit `docusaurus.config.ts`:
124
+ - `title`: Site title
125
+ - `tagline`: Site description
126
+ - `favicon`: Icon file
127
+ - `themeConfig.navbar`: Navigation menu
128
+ - `themeConfig.footer`: Footer content
129
+
130
+ ### Custom Styling
131
+
132
+ Edit `src/css/custom.css` for custom styles and branding.
133
+
134
+ ## 🚨 Troubleshooting
135
+
136
+ ### Build Fails
137
+
138
+ 1. Check **Actions** tab for error details
139
+ 2. Verify all referenced files exist in sidebars
140
+ 3. Ensure Markdown syntax is valid
141
+
142
+ ### Pages Not Deploying
143
+
144
+ 1. Verify **GitHub Pages** is set to **GitHub Actions**
145
+ 2. Check repository permissions
146
+ 3. Ensure workflow has **Pages write** permission
147
+
148
+ ### Links Broken
149
+
150
+ 1. Use relative paths: `../other-page`
151
+ 2. Verify file extensions: `.md` files become `.html`
152
+ 3. Check sidebar configuration matches file structure
153
+
154
+ ## 📞 Support
155
+
156
+ For issues with:
157
+ - **Docusaurus**: See [Docusaurus docs](https://docusaurus.io/)
158
+ - **GitHub Actions**: Check workflow logs in Actions tab
159
+ - **Content**: Create issues in repository
160
+
161
+ ## 🎉 Next Steps
162
+
163
+ 1. **Enable search**: Configure Algolia search index
164
+ 2. **Add analytics**: Integrate Google Analytics
165
+ 3. **Custom domain**: Set up custom domain if desired
166
+ 4. **Content migration**: Move remaining docs from `/docs` folder