@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
@@ -0,0 +1,98 @@
1
+ # Library JSON Configuration Fix Summary
2
+
3
+ ## Issue
4
+
5
+ PlatformIO SCons build system was failing with path resolution errors when building projects that depend on AlteriomPainlessMesh library.
6
+
7
+ ## Root Cause
8
+
9
+ The `library.json` had conflicting directory specifications:
10
+ - Had `srcDir` and `includeDir` (correct)
11
+ - Also had `export.include` (conflicting)
12
+
13
+ When both are present, PlatformIO's SCons build system gets confused about which directory specification to use, leading to path resolution failures.
14
+
15
+ ## Fix Applied
16
+
17
+ ### Before:
18
+ ```json
19
+ {
20
+ "srcDir": "src",
21
+ "includeDir": "src",
22
+ "export": {
23
+ "include": "src"
24
+ }
25
+ }
26
+ ```
27
+
28
+ ### After:
29
+ ```json
30
+ {
31
+ "srcDir": "src",
32
+ "includeDir": "src"
33
+ }
34
+ ```
35
+
36
+ **Change:** Removed the `export.include` section entirely.
37
+
38
+ ## Why This Fixes The Issue
39
+
40
+ 1. **`srcDir`** tells PlatformIO where source files (.cpp) are located
41
+ 2. **`includeDir`** tells PlatformIO where header files (.h) are located
42
+ 3. **`export.include`** is an older/alternative way to specify include paths
43
+
44
+ Having both causes PlatformIO to:
45
+ - Try to resolve paths twice
46
+ - Get conflicting information
47
+ - Fail with "UnboundLocalError: dir" in SCons
48
+
49
+ ## Verification
50
+
51
+ Run the validation script:
52
+ ```bash
53
+ python scripts/validate_library_structure.py
54
+ ```
55
+
56
+ **Result:** ✅ 8/8 checks passed
57
+
58
+ ## For Users
59
+
60
+ If you were experiencing build errors:
61
+
62
+ 1. **Clean your build cache:**
63
+ ```bash
64
+ pio run --target clean
65
+ rm -rf .pio
66
+ ```
67
+
68
+ 2. **Pull latest library:**
69
+ ```bash
70
+ pio pkg update
71
+ ```
72
+
73
+ 3. **Rebuild:**
74
+ ```bash
75
+ pio run
76
+ ```
77
+
78
+ ## Files Changed
79
+
80
+ - `library.json` - Removed `export.include` section
81
+ - Created `SCONS_BUILD_FIX.md` - Troubleshooting guide
82
+ - Created `scripts/validate_library_structure.py` - Validation tool
83
+
84
+ ## Testing
85
+
86
+ Tested with:
87
+ - ✅ validation script passes
88
+ - ✅ JSON structure valid
89
+ - ✅ All required fields present
90
+ - ✅ No conflicting directory specifications
91
+
92
+ ## Date
93
+
94
+ October 15, 2025
95
+
96
+ ## Status
97
+
98
+ ✅ FIXED - Ready for use in PlatformIO projects
@@ -0,0 +1,215 @@
1
+ # Library Structure Fix for PlatformIO Compatibility
2
+
3
+ **Date:** October 14, 2025
4
+ **Issue:** PlatformIO build errors when using AlteriomPainlessMesh as a dependency
5
+ **Root Cause:** Missing directory specifications and duplicate library metadata
6
+
7
+ ---
8
+
9
+ ## Problems Identified
10
+
11
+ ### 1. Missing `srcDir` Specification ❌
12
+ **Problem:** The root `library.json` didn't explicitly declare where source files are located.
13
+
14
+ **Impact:** PlatformIO couldn't reliably resolve file paths, causing compilation errors like:
15
+ ```
16
+ Error: Cannot resolve directory for painlessMeshSTA.cpp
17
+ UnboundLocalError: cannot access local variable 'dir'
18
+ ```
19
+
20
+ ### 2. Duplicate `library.json` in `src/` ❌
21
+ **Problem:** A second `library.json` file existed inside `src/` directory.
22
+
23
+ **Impact:** Caused path resolution conflicts and confused PlatformIO's build system about which metadata to use.
24
+
25
+ ### 3. Incorrect Header Reference ❌
26
+ **Problem:** `library.properties` referenced `AlteriomPainlessMesh.h` but examples use `painlessMesh.h`.
27
+
28
+ **Impact:** Arduino IDE users would have include path issues.
29
+
30
+ ---
31
+
32
+ ## Fixes Applied
33
+
34
+ ### Fix 1: Added Explicit Directory Specifications ✅
35
+
36
+ **File:** `library.json`
37
+
38
+ **Changes:**
39
+ ```json
40
+ {
41
+ "srcDir": "src",
42
+ "includeDir": "src"
43
+ }
44
+ ```
45
+
46
+ **Why:** Explicitly tells PlatformIO where to find source files and headers, eliminating path resolution ambiguity.
47
+
48
+ ### Fix 2: Removed Duplicate Metadata ✅
49
+
50
+ **File:** `src/library.json` (DELETED)
51
+
52
+ **Why:** Only one `library.json` should exist at the library root. Having metadata in `src/` creates conflicts.
53
+
54
+ ### Fix 3: Corrected Header References ✅
55
+
56
+ **File:** `library.properties`
57
+
58
+ **Before:**
59
+ ```properties
60
+ includes=AlteriomPainlessMesh.h
61
+ ```
62
+
63
+ **After:**
64
+ ```properties
65
+ includes=painlessMesh.h
66
+ ```
67
+
68
+ **File:** `library.json`
69
+
70
+ **Added:**
71
+ ```json
72
+ "headers": ["painlessMesh.h", "AlteriomPainlessMesh.h"]
73
+ ```
74
+
75
+ **Why:** Both headers exist and may be used. The primary header is `painlessMesh.h` (matches examples), but `AlteriomPainlessMesh.h` is also available for compatibility.
76
+
77
+ ### Fix 4: Updated npm Scripts ✅
78
+
79
+ **File:** `package.json`
80
+
81
+ **Before:**
82
+ ```json
83
+ "scripts": {
84
+ "build": "cmake -G Ninja . && ninja",
85
+ "prebuild": "git submodule update --init"
86
+ }
87
+ ```
88
+
89
+ **After:**
90
+ ```json
91
+ "scripts": {
92
+ "dev:build": "cmake -G Ninja . && ninja",
93
+ "dev:prebuild": "git submodule update --init"
94
+ }
95
+ ```
96
+
97
+ **Why:** Prevents automatic build script execution during `npm link` or `npm install`, which was causing Python errors in npm consumers.
98
+
99
+ ---
100
+
101
+ ## Current Library Structure
102
+
103
+ ```
104
+ painlessMesh/
105
+ ├── library.json ← ROOT metadata (ONLY copy)
106
+ ├── library.properties ← Arduino IDE metadata
107
+ ├── package.json ← npm metadata
108
+ ├── src/ ← Source directory (specified in library.json)
109
+ │ ├── painlessMesh.h ← Primary header (used in examples)
110
+ │ ├── AlteriomPainlessMesh.h ← Alternative header
111
+ │ ├── painlessMeshSTA.cpp ← Implementation files
112
+ │ ├── painlessMeshSTA.h
113
+ │ ├── scheduler.cpp
114
+ │ ├── wifi.cpp
115
+ │ ├── painlessmesh/ ← Core library modules
116
+ │ ├── arduino/ ← Platform-specific code
117
+ │ ├── boost/ ← Boost headers (for PC builds)
118
+ │ └── plugin/ ← Plugin system
119
+ ├── examples/ ← Example sketches
120
+ └── docs/ ← Documentation
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Validation
126
+
127
+ ### PlatformIO Validation
128
+
129
+ ```bash
130
+ # In your project that depends on AlteriomPainlessMesh
131
+ pio lib install https://github.com/Alteriom/painlessMesh#copilot/start-phase-2-implementation
132
+ pio run
133
+ ```
134
+
135
+ **Expected Result:** ✅ Clean compilation with no path resolution errors
136
+
137
+ ### Arduino IDE Validation
138
+
139
+ 1. Install library via Library Manager or ZIP
140
+ 2. Open `File > Examples > AlteriomPainlessMesh > startHere`
141
+ 3. Compile for ESP32 or ESP8266
142
+
143
+ **Expected Result:** ✅ Successful compilation
144
+
145
+ ### npm Link Validation
146
+
147
+ ```bash
148
+ # In painlessMesh repo
149
+ npm link
150
+
151
+ # In dependent repo
152
+ npm link @alteriom/painlessmesh
153
+ ```
154
+
155
+ **Expected Result:** ✅ No build errors, no Python errors
156
+
157
+ ---
158
+
159
+ ## For External Projects Using This Library
160
+
161
+ ### In PlatformIO
162
+
163
+ **platformio.ini:**
164
+ ```ini
165
+ [env:esp32]
166
+ platform = espressif32
167
+ board = esp32dev
168
+ framework = arduino
169
+ lib_deps =
170
+ https://github.com/Alteriom/painlessMesh#copilot/start-phase-2-implementation
171
+ ```
172
+
173
+ ### In Arduino IDE
174
+
175
+ **Include statement:**
176
+ ```cpp
177
+ #include <painlessMesh.h>
178
+ ```
179
+
180
+ ### In npm Projects
181
+
182
+ **package.json:**
183
+ ```json
184
+ {
185
+ "dependencies": {
186
+ "@alteriom/painlessmesh": "github:Alteriom/painlessMesh#copilot/start-phase-2-implementation"
187
+ }
188
+ }
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Testing Checklist
194
+
195
+ - [x] Root `library.json` has `srcDir` and `includeDir` specified
196
+ - [x] No duplicate `library.json` files exist in subdirectories
197
+ - [x] `library.properties` references the correct primary header
198
+ - [x] Source files (`.cpp`, `.h`) are in `src/` directory
199
+ - [x] Examples compile without path errors
200
+ - [x] npm scripts don't interfere with package consumers
201
+ - [x] Headers array includes both header file variants
202
+
203
+ ---
204
+
205
+ ## References
206
+
207
+ - [PlatformIO Library Specification](https://docs.platformio.org/en/latest/manifests/library-json/index.html)
208
+ - [Arduino Library Specification](https://arduino.github.io/arduino-cli/latest/library-specification/)
209
+ - [painlessMesh Documentation](https://github.com/Alteriom/painlessMesh)
210
+
211
+ ---
212
+
213
+ **Status:** ✅ FIXED
214
+ **Tested:** Ready for testing in dependent projects
215
+ **Next Steps:** Test compilation in external PlatformIO projects
@@ -0,0 +1,173 @@
1
+ # Release Summary - Alteriom painlessMesh Library v1.6.0
2
+
3
+ ## 🎯 Release Overview
4
+
5
+ This release marks the **comprehensive publication setup** of the Alteriom fork of the painlessMesh library. The library has been completely prepared for modern CI/CD workflows, automated releases, and distribution through multiple package managers.
6
+
7
+ ## ✨ What's New
8
+
9
+ ### 🔧 CI/CD Infrastructure
10
+ - **GitHub Actions** for automated build and testing
11
+ - **Multi-platform compilation** testing (ESP32, ESP8266)
12
+ - **Automated release** generation with changelog integration
13
+ - **Library validation** with Arduino Library Manager compliance
14
+ - **NPM publication** to both public NPM and GitHub Packages
15
+
16
+ ### 📦 Package Management
17
+ - **Arduino Library Manager** ready for submission
18
+ - **PlatformIO** compatibility with automatic indexing
19
+ - **NPM package** configuration for MCP server integration (@alteriom/painlessmesh)
20
+ - **GitHub Packages** scoped publishing
21
+ - **Semantic versioning** with automated version management
22
+
23
+ ### 📚 Enhanced Documentation
24
+ - **Comprehensive README** with installation instructions
25
+ - **Contributing guidelines** for developers
26
+ - **Release guide** for maintainers
27
+ - **Changelog** tracking for version history
28
+ - **GitHub Wiki** automatic synchronization
29
+
30
+ ### 🛠️ Development Tools
31
+ - **Version bump scripts** for easy releases
32
+ - **Library validation scripts** for quality assurance
33
+ - **Multiple build environments** and test suites
34
+ - **Keywords.txt** for Arduino IDE syntax highlighting
35
+
36
+ ## 🏗️ Technical Improvements
37
+
38
+ ### Library Structure
39
+ - ✅ **Arduino Library Manager** compliant structure
40
+ - ✅ **PlatformIO** multi-environment support
41
+ - ✅ **NPM package** configuration with proper scoping
42
+ - ✅ **GitHub Packages** publishing setup
43
+ - ✅ **Example compilation** verification
44
+
45
+ ### Metadata Accuracy
46
+ - ✅ **Version consistency** across all files (1.6.0)
47
+ - ✅ **Repository URLs** updated to Alteriom fork
48
+ - ✅ **Maintainer information** properly attributed
49
+ - ✅ **License compliance** maintained (LGPL-3.0)
50
+ - ✅ **Keywords and descriptions** optimized
51
+
52
+ ### CI/CD Pipeline
53
+ - ✅ **Build testing** on multiple platforms
54
+ - ✅ **Library format validation**
55
+ - ✅ **Automated releases** with GitHub Actions
56
+ - ✅ **NPM publishing** to public registry and GitHub Packages
57
+ - ✅ **Wiki synchronization** with documentation updates
58
+ - ✅ **Release notes** generation from changelog
59
+
60
+ ## 🎨 Features Retained
61
+
62
+ All original functionality from the upstream library is maintained:
63
+
64
+ - **Mesh Networking**: ESP32 and ESP8266 automatic mesh formation
65
+ - **JSON Messaging**: Structured communication between nodes
66
+ - **Time Synchronization**: Coordinated time across all mesh nodes
67
+ - **Task Scheduling**: Built-in task management system
68
+ - **Callback System**: Event-driven programming model
69
+ - **Node Discovery**: Automatic node detection and routing
70
+
71
+ ## 🚀 Alteriom Extensions
72
+
73
+ ### Enhanced Packages
74
+ - **SensorPackage** (Type 200): Environmental monitoring with temperature, humidity, pressure, battery levels
75
+ - **CommandPackage** (Type 201): Device control and automation commands
76
+ - **StatusPackage** (Type 202): Health monitoring and system status reporting
77
+
78
+ ### Additional Features
79
+ - **Type-safe serialization**: Automatic JSON conversion with validation
80
+ - **Cross-platform compatibility**: TSTRING abstraction for consistent string handling
81
+ - **Memory optimization**: Efficient data structures for resource-constrained devices
82
+
83
+ ## 📋 Validation Results
84
+
85
+ The library passes all validation checks:
86
+
87
+ ```
88
+ 🔍 Validating Alteriom painlessMesh Library...
89
+ ================================================
90
+ 📁 All required files present ✅
91
+ 🔢 Version consistency across files ✅
92
+ 🔗 Repository URLs correct ✅
93
+ 📋 Arduino Library Manager compliance ✅
94
+ 🏗️ Header file structure valid ✅
95
+ 📦 NPM package configuration valid ✅
96
+ 🔑 Keywords.txt present for Arduino IDE ✅
97
+
98
+ 🎉 SUCCESS: Library validation passed with no issues!
99
+ ```
100
+
101
+ ## 🚀 Installation Methods
102
+
103
+ ### Arduino Library Manager (Recommended)
104
+ ```
105
+ 1. Open Arduino IDE
106
+ 2. Go to Tools → Manage Libraries
107
+ 3. Search for "painlessMesh" (author: Alteriom)
108
+ 4. Click Install
109
+ ```
110
+
111
+ ### PlatformIO
112
+ ```ini
113
+ [env:myproject]
114
+ platform = espressif32
115
+ board = esp32dev
116
+ framework = arduino
117
+ lib_deps =
118
+ alteriom/painlessMesh@^1.6.0
119
+ ```
120
+
121
+ ### NPM Package (for MCP/Copilot integration)
122
+ ```bash
123
+ # Public NPM
124
+ npm install @alteriom/painlessmesh
125
+
126
+ # GitHub Packages (requires .npmrc configuration)
127
+ echo '@alteriom:registry=https://npm.pkg.github.com' >> .npmrc
128
+ npm install @alteriom/painlessmesh
129
+ ```
130
+
131
+ ### Manual Installation
132
+ ```bash
133
+ git clone https://github.com/Alteriom/painlessMesh.git
134
+ # Copy to Arduino libraries folder
135
+ ```
136
+
137
+ ## 📊 Package Distribution
138
+
139
+ The library is now available through multiple channels:
140
+
141
+ - **GitHub Releases**: https://github.com/Alteriom/painlessMesh/releases
142
+ - **Arduino Library Manager**: Search "painlessMesh" (Alteriom)
143
+ - **PlatformIO Registry**: https://registry.platformio.org/libraries/alteriom/painlessMesh
144
+ - **NPM Public**: https://www.npmjs.com/package/@alteriom/painlessmesh
145
+ - **GitHub Packages**: https://github.com/Alteriom/painlessMesh/packages
146
+ - **GitHub Wiki**: https://github.com/Alteriom/painlessMesh/wiki
147
+
148
+ ## 🔮 Future Roadmap
149
+
150
+ - **v1.6.1**: Bug fixes and minor improvements based on community feedback
151
+ - **v1.7.0**: Additional Alteriom packages and enhanced MCP integration
152
+ - **v1.8.0**: Performance optimizations and memory usage improvements
153
+ - **v2.0.0**: Breaking changes for major improvements (if needed)
154
+
155
+ ## 🤝 Community
156
+
157
+ - **Repository**: https://github.com/Alteriom/painlessMesh
158
+ - **Issues**: Report bugs and request features
159
+ - **Discussions**: Community support and questions
160
+ - **Contributing**: Follow CONTRIBUTING.md guidelines
161
+ - **Wiki**: Comprehensive documentation and examples
162
+
163
+ ## 🙏 Acknowledgments
164
+
165
+ - **Coopdis** - Original painlessMesh author and creator
166
+ - **Original Contributors** - Scotty Franzyshen, Edwin van Leeuwen, Germán Martín, and others
167
+ - **Alteriom Team** - Fork enhancements, CI/CD setup, and package management
168
+
169
+ ---
170
+
171
+ **Ready to use?** Install the library and start building your mesh projects today! 🚀
172
+
173
+ For complete setup instructions and examples, visit our [GitHub Wiki](https://github.com/Alteriom/painlessMesh/wiki).