@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.
- package/CHANGELOG.md +58 -4
- package/README.md +17 -3
- package/docs/README.md +62 -10
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +166 -0
- package/docs/archive/LIBRARY_JSON_FIX.md +98 -0
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -0
- package/docs/archive/RELEASE_SUMMARY.md +173 -0
- package/docs/archive/SCONS_BUILD_FIX.md +313 -0
- package/docs/archive/TRIGGER_RELEASE.md +280 -0
- package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -0
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +71 -0
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -0
- package/docs/development/DOCKER_TESTING.md +196 -0
- package/docs/development/PLATFORMIO_USAGE.md +180 -0
- package/docs/development/TESTING_SUMMARY.md +126 -0
- package/docs/development/contributing.md +301 -0
- package/docs/development/documentation.md +583 -0
- package/docs/improvements/FUTURE_PROPOSALS.md +1016 -0
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -0
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -0
- package/docs/improvements/README.md +171 -46
- package/docs/releases/FEATURE_HISTORY.md +543 -0
- package/docs/releases/PATCH_v1.7.3.md +262 -0
- package/docs/releases/PHASE1_SUMMARY.md +246 -0
- package/docs/releases/PHASE2_SUMMARY.md +499 -0
- package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -0
- package/docs/troubleshooting/debugging.md +455 -0
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/painlessmesh/router.hpp +35 -19
- /package/docs/{improvements → archive}/FEATURE_PROPOSALS.md +0 -0
- /package/docs/{improvements → archive}/PHASE1_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/PHASE2_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/ota-and-status-enhancements.md +0 -0
- /package/docs/{improvements → archive}/ota-status-architecture-diagrams.md +0 -0
- /package/docs/{improvements → archive}/ota-status-quick-reference.md +0 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Contributing to painlessMesh
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to the Alteriom painlessMesh library!
|
|
4
|
+
|
|
5
|
+
## Quick Links
|
|
6
|
+
|
|
7
|
+
- **[Main Contributing Guide](../../CONTRIBUTING.md)** - Complete contribution guidelines
|
|
8
|
+
- **[Documentation Guide](documentation.md)** - How to contribute to documentation
|
|
9
|
+
- **[Code Style Guide](ARDUINO_COMPLIANCE_SUMMARY.md)** - Arduino library standards
|
|
10
|
+
- **[Testing Guide](TESTING_SUMMARY.md)** - Testing infrastructure and practices
|
|
11
|
+
- **[Docker Testing](DOCKER_TESTING.md)** - Containerized testing environment
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
There are many ways to contribute to painlessMesh:
|
|
16
|
+
|
|
17
|
+
### 🐛 Report Bugs
|
|
18
|
+
|
|
19
|
+
Found a bug? [Open an issue](https://github.com/Alteriom/painlessMesh/issues/new) with:
|
|
20
|
+
|
|
21
|
+
- Hardware (ESP32/ESP8266 model)
|
|
22
|
+
- Library version
|
|
23
|
+
- Minimal code to reproduce
|
|
24
|
+
- Expected vs actual behavior
|
|
25
|
+
- Debug output
|
|
26
|
+
|
|
27
|
+
### 💡 Suggest Features
|
|
28
|
+
|
|
29
|
+
Have an idea? [Start a discussion](https://github.com/Alteriom/painlessMesh/discussions/new) or open an issue with:
|
|
30
|
+
|
|
31
|
+
- Clear use case
|
|
32
|
+
- Proposed API/interface
|
|
33
|
+
- Implementation considerations
|
|
34
|
+
- Compatibility impact
|
|
35
|
+
|
|
36
|
+
### 📝 Improve Documentation
|
|
37
|
+
|
|
38
|
+
Documentation improvements are always welcome:
|
|
39
|
+
|
|
40
|
+
- Fix typos or unclear explanations
|
|
41
|
+
- Add examples and tutorials
|
|
42
|
+
- Improve API documentation
|
|
43
|
+
- Translate documentation
|
|
44
|
+
|
|
45
|
+
See the [Documentation Guide](documentation.md) for details.
|
|
46
|
+
|
|
47
|
+
### 🔧 Submit Code
|
|
48
|
+
|
|
49
|
+
Contributing code:
|
|
50
|
+
|
|
51
|
+
1. **Fork** the repository
|
|
52
|
+
2. **Create a branch**: `git checkout -b feature/my-feature`
|
|
53
|
+
3. **Make changes**: Follow our code style
|
|
54
|
+
4. **Test**: Run the test suite
|
|
55
|
+
5. **Commit**: Use descriptive commit messages
|
|
56
|
+
6. **Push**: `git push origin feature/my-feature`
|
|
57
|
+
7. **Pull Request**: Describe your changes
|
|
58
|
+
|
|
59
|
+
### ✅ Code Quality Standards
|
|
60
|
+
|
|
61
|
+
All code contributions should:
|
|
62
|
+
|
|
63
|
+
- Follow Arduino library guidelines
|
|
64
|
+
- Include tests where applicable
|
|
65
|
+
- Compile without warnings on ESP32 and ESP8266
|
|
66
|
+
- Include comments for complex logic
|
|
67
|
+
- Update documentation as needed
|
|
68
|
+
|
|
69
|
+
### 🧪 Testing
|
|
70
|
+
|
|
71
|
+
Before submitting:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Build tests
|
|
75
|
+
cmake -G Ninja .
|
|
76
|
+
ninja
|
|
77
|
+
|
|
78
|
+
# Run tests
|
|
79
|
+
run-parts --regex catch_ bin/
|
|
80
|
+
|
|
81
|
+
# Test Arduino examples
|
|
82
|
+
# Use Arduino IDE or PlatformIO to verify examples compile
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See [Testing Guide](TESTING_SUMMARY.md) for comprehensive testing instructions.
|
|
86
|
+
|
|
87
|
+
## Development Workflow
|
|
88
|
+
|
|
89
|
+
### Setting Up Development Environment
|
|
90
|
+
|
|
91
|
+
**Required Tools:**
|
|
92
|
+
|
|
93
|
+
- Git
|
|
94
|
+
- CMake 3.10+
|
|
95
|
+
- Ninja build system
|
|
96
|
+
- GCC/Clang compiler
|
|
97
|
+
- Arduino IDE or PlatformIO
|
|
98
|
+
|
|
99
|
+
**Optional Tools:**
|
|
100
|
+
|
|
101
|
+
- Docker (for containerized testing)
|
|
102
|
+
- Python 3.6+ (for scripts)
|
|
103
|
+
- Node.js (for npm package development)
|
|
104
|
+
|
|
105
|
+
**Clone and Build:**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git clone https://github.com/Alteriom/painlessMesh.git
|
|
109
|
+
cd painlessMesh
|
|
110
|
+
|
|
111
|
+
# Initialize submodules
|
|
112
|
+
git submodule update --init
|
|
113
|
+
|
|
114
|
+
# Build
|
|
115
|
+
cmake -G Ninja .
|
|
116
|
+
ninja
|
|
117
|
+
|
|
118
|
+
# Run tests
|
|
119
|
+
run-parts --regex catch_ bin/
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Branch Naming
|
|
123
|
+
|
|
124
|
+
Use descriptive branch names:
|
|
125
|
+
|
|
126
|
+
- `feature/broadcast-ota` - New features
|
|
127
|
+
- `fix/memory-leak` - Bug fixes
|
|
128
|
+
- `docs/mqtt-guide` - Documentation
|
|
129
|
+
- `refactor/clean-api` - Code improvements
|
|
130
|
+
- `test/coverage-boost` - Test additions
|
|
131
|
+
|
|
132
|
+
### Commit Messages
|
|
133
|
+
|
|
134
|
+
Follow conventional commits:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
type(scope): brief description
|
|
138
|
+
|
|
139
|
+
Longer explanation if needed.
|
|
140
|
+
|
|
141
|
+
Fixes #123
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Types:**
|
|
145
|
+
|
|
146
|
+
- `feat`: New feature
|
|
147
|
+
- `fix`: Bug fix
|
|
148
|
+
- `docs`: Documentation
|
|
149
|
+
- `style`: Code style (formatting)
|
|
150
|
+
- `refactor`: Code refactoring
|
|
151
|
+
- `test`: Tests
|
|
152
|
+
- `chore`: Build/tooling
|
|
153
|
+
|
|
154
|
+
**Examples:**
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
feat(ota): add broadcast OTA distribution
|
|
158
|
+
|
|
159
|
+
Implements chunk-based OTA distribution across mesh network
|
|
160
|
+
with 98% traffic reduction for large meshes.
|
|
161
|
+
|
|
162
|
+
Fixes #42
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
fix(mqtt): correct topic sanitization
|
|
167
|
+
|
|
168
|
+
Node IDs with special characters were causing MQTT
|
|
169
|
+
subscription failures. Now properly escapes characters.
|
|
170
|
+
|
|
171
|
+
Fixes #56
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Platform-Specific Considerations
|
|
175
|
+
|
|
176
|
+
### ESP32
|
|
177
|
+
|
|
178
|
+
- Memory: ~320KB RAM available
|
|
179
|
+
- Use PSRAM where available
|
|
180
|
+
- Test with WiFi library v2.0.0+
|
|
181
|
+
- Consider dual-core implications
|
|
182
|
+
|
|
183
|
+
### ESP8266
|
|
184
|
+
|
|
185
|
+
- Memory: ~80KB RAM (limited!)
|
|
186
|
+
- Be extra careful with memory allocation
|
|
187
|
+
- Test with Arduino Core 3.0.0+
|
|
188
|
+
- Avoid large stack allocations
|
|
189
|
+
|
|
190
|
+
## Code Style
|
|
191
|
+
|
|
192
|
+
### C++ Style
|
|
193
|
+
|
|
194
|
+
- Use 2-space indentation
|
|
195
|
+
- Opening braces on same line
|
|
196
|
+
- Use `camelCase` for functions
|
|
197
|
+
- Use `PascalCase` for classes
|
|
198
|
+
- Use `UPPER_CASE` for constants
|
|
199
|
+
|
|
200
|
+
### Arduino Conventions
|
|
201
|
+
|
|
202
|
+
- Provide `.ino` examples
|
|
203
|
+
- Use `setup()` and `loop()` pattern
|
|
204
|
+
- Include helpful Serial output
|
|
205
|
+
- Add comments explaining hardware setup
|
|
206
|
+
|
|
207
|
+
### Header Guards
|
|
208
|
+
|
|
209
|
+
```cpp
|
|
210
|
+
#ifndef PAINLESSMESH_FEATURE_HPP
|
|
211
|
+
#define PAINLESSMESH_FEATURE_HPP
|
|
212
|
+
|
|
213
|
+
// Code here
|
|
214
|
+
|
|
215
|
+
#endif // PAINLESSMESH_FEATURE_HPP
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Pull Request Process
|
|
219
|
+
|
|
220
|
+
### Before Submitting
|
|
221
|
+
|
|
222
|
+
- [ ] Code compiles on ESP32 and ESP8266
|
|
223
|
+
- [ ] Tests pass
|
|
224
|
+
- [ ] Documentation updated
|
|
225
|
+
- [ ] Examples updated (if API changed)
|
|
226
|
+
- [ ] CHANGELOG.md updated
|
|
227
|
+
- [ ] No merge conflicts with main
|
|
228
|
+
|
|
229
|
+
### PR Template
|
|
230
|
+
|
|
231
|
+
```markdown
|
|
232
|
+
## Description
|
|
233
|
+
What does this PR do?
|
|
234
|
+
|
|
235
|
+
## Motivation
|
|
236
|
+
Why is this change needed?
|
|
237
|
+
|
|
238
|
+
## Changes
|
|
239
|
+
- Changed X to Y
|
|
240
|
+
- Added Z feature
|
|
241
|
+
- Fixed W bug
|
|
242
|
+
|
|
243
|
+
## Testing
|
|
244
|
+
How was this tested?
|
|
245
|
+
|
|
246
|
+
## Checklist
|
|
247
|
+
- [ ] Code compiles without warnings
|
|
248
|
+
- [ ] Tests pass
|
|
249
|
+
- [ ] Documentation updated
|
|
250
|
+
- [ ] Examples work
|
|
251
|
+
- [ ] CHANGELOG updated
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Review Process
|
|
255
|
+
|
|
256
|
+
1. **Automated checks** run (build, tests, linting)
|
|
257
|
+
2. **Maintainer review** (usually within 1 week)
|
|
258
|
+
3. **Feedback** addressed
|
|
259
|
+
4. **Approval** and merge
|
|
260
|
+
|
|
261
|
+
## Community Guidelines
|
|
262
|
+
|
|
263
|
+
### Be Respectful
|
|
264
|
+
|
|
265
|
+
- Be kind and courteous
|
|
266
|
+
- Accept constructive criticism
|
|
267
|
+
- Focus on the issue, not the person
|
|
268
|
+
- Help others learn
|
|
269
|
+
|
|
270
|
+
### Communication Channels
|
|
271
|
+
|
|
272
|
+
- **GitHub Issues** - Bug reports and feature requests
|
|
273
|
+
- **GitHub Discussions** - Questions and ideas
|
|
274
|
+
- **Pull Requests** - Code contributions
|
|
275
|
+
|
|
276
|
+
## Getting Help
|
|
277
|
+
|
|
278
|
+
Stuck? Need help contributing?
|
|
279
|
+
|
|
280
|
+
- Check the [FAQ](../troubleshooting/faq.md)
|
|
281
|
+
- Ask in [Discussions](https://github.com/Alteriom/painlessMesh/discussions)
|
|
282
|
+
- Review [existing PRs](https://github.com/Alteriom/painlessMesh/pulls)
|
|
283
|
+
- Read the [complete contributing guide](../../CONTRIBUTING.md)
|
|
284
|
+
|
|
285
|
+
## License
|
|
286
|
+
|
|
287
|
+
By contributing, you agree that your contributions will be licensed under the LGPL-3.0 License.
|
|
288
|
+
|
|
289
|
+
See [LICENSE](../../LICENSE) for details.
|
|
290
|
+
|
|
291
|
+
## Thank You! 🎉
|
|
292
|
+
|
|
293
|
+
Your contributions make painlessMesh better for everyone. We appreciate your time and effort!
|
|
294
|
+
|
|
295
|
+
## See Also
|
|
296
|
+
|
|
297
|
+
- [Main Contributing Guide](../../CONTRIBUTING.md) - Complete guidelines
|
|
298
|
+
- [Documentation Guide](documentation.md) - Documentation standards
|
|
299
|
+
- [Testing Guide](TESTING_SUMMARY.md) - Testing practices
|
|
300
|
+
- [Release Guide](../../RELEASE_GUIDE.md) - Release process
|
|
301
|
+
- [Code of Conduct](../../CODE_OF_CONDUCT.md) - Community standards (if exists)
|