@alteriom/painlessmesh 1.6.1
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 +144 -0
- package/LICENSE +674 -0
- package/README.md +434 -0
- package/RELEASE_GUIDE.md +419 -0
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +176 -0
- package/docs/README.md +71 -0
- package/docs/alteriom/overview.md +508 -0
- package/docs/api/core-api.md +607 -0
- package/docs/architecture/mesh-architecture.md +379 -0
- package/docs/architecture/plugin-system.md +517 -0
- package/docs/getting-started/first-mesh.md +410 -0
- package/docs/getting-started/installation.md +275 -0
- package/docs/getting-started/quickstart.md +158 -0
- package/docs/improvements/README.md +69 -0
- package/docs/troubleshooting/common-issues.md +521 -0
- package/docs/troubleshooting/faq.md +473 -0
- package/docs/tutorials/basic-examples.md +718 -0
- package/docs/wiki/API-Reference.md +246 -0
- package/docs/wiki/Complete-Documentation.md +123 -0
- package/examples/alteriom/README.md +82 -0
- package/examples/alteriom/alteriom.ino +186 -0
- package/examples/alteriom/alteriom_sensor_node.ino +184 -0
- package/examples/alteriom/alteriom_sensor_package.hpp +128 -0
- package/examples/alteriom/improved_sensor_node.ino +246 -0
- package/examples/alteriom/platformio.ini +25 -0
- package/examples/basic/basic.ino +66 -0
- package/examples/basic/platformio.ini +25 -0
- package/examples/bridge/bridge.ino +51 -0
- package/examples/bridge/platformio.ini +25 -0
- package/examples/echoNode/echoNode.ino +33 -0
- package/examples/echoNode/platformio.ini +25 -0
- package/examples/logClient/logClient.ino +109 -0
- package/examples/logClient/platformio.ini +25 -0
- package/examples/logServer/logServer.ino +81 -0
- package/examples/logServer/platformio.ini +25 -0
- package/examples/mqttBridge/mqttBridge.ino +118 -0
- package/examples/mqttBridge/platformio.ini +26 -0
- package/examples/namedMesh/namedMesh.ino +97 -0
- package/examples/namedMesh/platformio.ini +25 -0
- package/examples/otaReceiver/otaReceiver.ino +79 -0
- package/examples/otaReceiver/platformio.ini +25 -0
- package/examples/otaSender/nodemcu32s_connections.JPG +0 -0
- package/examples/otaSender/otaSender.ino +151 -0
- package/examples/otaSender/platformio.ini +25 -0
- package/examples/startHere/platformio.ini +25 -0
- package/examples/startHere/startHere.ino +159 -0
- package/examples/webServer/platformio.ini +27 -0
- package/examples/webServer/webServer.ino +89 -0
- package/keywords.txt +49 -0
- package/library.json +34 -0
- package/library.properties +11 -0
- package/package.json +78 -0
- package/src/AlteriomPainlessMesh.h +98 -0
- package/src/arduino/wifi.hpp +365 -0
- package/src/boost/asynctcp.hpp +279 -0
- package/src/painlessMesh.h +70 -0
- package/src/painlessMeshSTA.cpp +236 -0
- package/src/painlessMeshSTA.h +58 -0
- package/src/painlessTaskOptions.h +4 -0
- package/src/painlessmesh/base64.hpp +111 -0
- package/src/painlessmesh/buffer.hpp +229 -0
- package/src/painlessmesh/callback.hpp +91 -0
- package/src/painlessmesh/configuration.hpp +77 -0
- package/src/painlessmesh/connection.hpp +192 -0
- package/src/painlessmesh/layout.hpp +188 -0
- package/src/painlessmesh/logger.hpp +158 -0
- package/src/painlessmesh/memory.hpp +120 -0
- package/src/painlessmesh/mesh.hpp +560 -0
- package/src/painlessmesh/metrics.hpp +323 -0
- package/src/painlessmesh/ntp.hpp +263 -0
- package/src/painlessmesh/ota.hpp +553 -0
- package/src/painlessmesh/plugin.hpp +188 -0
- package/src/painlessmesh/protocol.hpp +813 -0
- package/src/painlessmesh/router.hpp +322 -0
- package/src/painlessmesh/tcp.hpp +71 -0
- package/src/painlessmesh/validation.hpp +239 -0
- package/src/plugin/performance.hpp +214 -0
- package/src/plugin/remote.hpp +64 -0
- package/src/scheduler.cpp +10 -0
- package/src/wifi.cpp +2 -0
package/RELEASE_GUIDE.md
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# painlessMesh Release Guide
|
|
2
|
+
|
|
3
|
+
This document provides comprehensive instructions for releasing new versions of the Alteriom painlessMesh library across all distribution channels.
|
|
4
|
+
|
|
5
|
+
## 🚀 Quick Release Process
|
|
6
|
+
|
|
7
|
+
### Standard Release (Recommended)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 1. Update version using the bump script
|
|
11
|
+
./scripts/bump-version.sh patch # or minor, major
|
|
12
|
+
|
|
13
|
+
# 2. Update CHANGELOG.md with your changes
|
|
14
|
+
# Add your changes under the new version section
|
|
15
|
+
|
|
16
|
+
# 3. Commit and trigger release
|
|
17
|
+
git add library.properties library.json package.json CHANGELOG.md
|
|
18
|
+
git commit -m "release: v1.6.1"
|
|
19
|
+
git push origin main
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**That's it!** GitHub Actions will automatically handle:
|
|
23
|
+
- ✅ Comprehensive testing across platforms
|
|
24
|
+
- ✅ Git tag creation and GitHub release
|
|
25
|
+
- ✅ NPM publishing (public + GitHub Packages)
|
|
26
|
+
- ✅ GitHub Wiki synchronization
|
|
27
|
+
- ✅ Arduino Library Manager package preparation
|
|
28
|
+
- ✅ Release notes generation from changelog
|
|
29
|
+
|
|
30
|
+
## 📋 Distribution Channels
|
|
31
|
+
|
|
32
|
+
### Automatic (Zero Manual Work Required)
|
|
33
|
+
1. **GitHub Releases** - Created with changelog and downloadable packages
|
|
34
|
+
2. **NPM Public Registry** - Published to https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
35
|
+
3. **GitHub Packages** - Published to GitHub's NPM registry (@alteriom/painlessmesh)
|
|
36
|
+
4. **PlatformIO Registry** - Automatically indexed from GitHub releases
|
|
37
|
+
5. **GitHub Wiki** - Documentation synchronized from repository
|
|
38
|
+
|
|
39
|
+
### Semi-Automatic (One-Time Manual Submission)
|
|
40
|
+
6. **Arduino Library Manager** - Submit once, then automatically indexed
|
|
41
|
+
|
|
42
|
+
## 🎯 Detailed Process
|
|
43
|
+
|
|
44
|
+
### Version Management
|
|
45
|
+
|
|
46
|
+
**File Consistency**: All three files must have matching versions:
|
|
47
|
+
|
|
48
|
+
```properties
|
|
49
|
+
# library.properties
|
|
50
|
+
version=1.6.1
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
// library.json
|
|
55
|
+
{
|
|
56
|
+
"version": "1.6.1"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
// package.json
|
|
62
|
+
{
|
|
63
|
+
"version": "1.6.1"
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Semantic Versioning**: Follow [semver.org](https://semver.org/):
|
|
68
|
+
- **MAJOR**: Breaking changes (e.g., 1.6.0 → 2.0.0)
|
|
69
|
+
- **MINOR**: New features, backward compatible (e.g., 1.6.0 → 1.7.0)
|
|
70
|
+
- **PATCH**: Bug fixes, backward compatible (e.g., 1.6.0 → 1.6.1)
|
|
71
|
+
|
|
72
|
+
### Automation Triggers
|
|
73
|
+
|
|
74
|
+
The release workflow triggers on commits to `main` that:
|
|
75
|
+
1. Modify `library.properties`, `library.json`, `package.json`, or `CHANGELOG.md`
|
|
76
|
+
2. Have a commit message starting with `release:`
|
|
77
|
+
|
|
78
|
+
### What Gets Automated
|
|
79
|
+
|
|
80
|
+
#### Testing Pipeline
|
|
81
|
+
- **Desktop builds**: gcc & clang with strict warnings
|
|
82
|
+
- **Arduino CLI**: ESP32 & ESP8266 compilation
|
|
83
|
+
- **PlatformIO**: Cross-platform build validation
|
|
84
|
+
- **Code quality**: Formatting and lint checks
|
|
85
|
+
|
|
86
|
+
#### Release Artifacts
|
|
87
|
+
- **Git tag**: `v1.6.1` format
|
|
88
|
+
- **GitHub Release**: With changelog excerpt
|
|
89
|
+
- **Library package**: `painlessMesh-v1.6.1.zip`
|
|
90
|
+
- **Documentation**: Auto-deployed to GitHub Pages
|
|
91
|
+
|
|
92
|
+
#### NPM Publishing
|
|
93
|
+
- **Public NPM**: Available to anyone via `npm install @alteriom/painlessmesh`
|
|
94
|
+
- **GitHub Packages**: Scoped package for authenticated users
|
|
95
|
+
- **Version consistency**: Verified across all package files
|
|
96
|
+
|
|
97
|
+
#### Wiki Updates
|
|
98
|
+
- **Home Page**: Generated from README.md
|
|
99
|
+
- **API Reference**: Auto-generated documentation
|
|
100
|
+
- **Examples**: Links to repository examples
|
|
101
|
+
- **Installation Guide**: Multi-platform instructions
|
|
102
|
+
|
|
103
|
+
## 📦 NPM Publishing Details
|
|
104
|
+
|
|
105
|
+
### Dual Publishing Strategy
|
|
106
|
+
|
|
107
|
+
Each release publishes to **two NPM registries**:
|
|
108
|
+
|
|
109
|
+
1. **Public NPM** (npmjs.com)
|
|
110
|
+
- Package: `@alteriom/painlessmesh`
|
|
111
|
+
- Installation: `npm install @alteriom/painlessmesh`
|
|
112
|
+
- No authentication required
|
|
113
|
+
|
|
114
|
+
2. **GitHub Packages** (npm.pkg.github.com)
|
|
115
|
+
- Package: `@alteriom/painlessmesh`
|
|
116
|
+
- Installation: Requires `.npmrc` configuration
|
|
117
|
+
- Authentication required for installation
|
|
118
|
+
|
|
119
|
+
### NPM Package Contents
|
|
120
|
+
|
|
121
|
+
The NPM package includes:
|
|
122
|
+
- `src/` - Complete library source code
|
|
123
|
+
- `examples/` - All Arduino examples
|
|
124
|
+
- `docs/` - Documentation files
|
|
125
|
+
- `library.properties` - Arduino metadata
|
|
126
|
+
- `library.json` - PlatformIO metadata
|
|
127
|
+
- Core documentation files (README, LICENSE, CHANGELOG)
|
|
128
|
+
|
|
129
|
+
Excluded from NPM package:
|
|
130
|
+
- Development files (`.github/`, `test/`, `scripts/`)
|
|
131
|
+
- Build artifacts (`bin/`, `build/`)
|
|
132
|
+
- IDE files and OS-specific files
|
|
133
|
+
|
|
134
|
+
## 🛠️ Arduino Library Manager
|
|
135
|
+
|
|
136
|
+
### One-Time Submission Process
|
|
137
|
+
|
|
138
|
+
After your first release, submit to Arduino Library Manager:
|
|
139
|
+
|
|
140
|
+
1. **Go to**: https://github.com/arduino/library-registry
|
|
141
|
+
2. **Create issue** with this template:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Title: Add painlessMesh library
|
|
145
|
+
|
|
146
|
+
Repository URL: https://github.com/Alteriom/painlessMesh
|
|
147
|
+
Release tag: v1.6.1
|
|
148
|
+
Library name: painlessMesh
|
|
149
|
+
Version: 1.6.1
|
|
150
|
+
|
|
151
|
+
This is the Alteriom fork of the painlessMesh library with enhanced
|
|
152
|
+
CI/CD, automated releases, and improved Arduino Library Manager compatibility.
|
|
153
|
+
Includes SensorPackage, CommandPackage, and StatusPackage extensions.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
3. **Monitor** the issue for Arduino team approval
|
|
157
|
+
4. **Future releases** are automatically indexed
|
|
158
|
+
|
|
159
|
+
### Arduino Library Compliance
|
|
160
|
+
|
|
161
|
+
The library meets all Arduino Library Manager requirements:
|
|
162
|
+
- ✅ Correct directory structure
|
|
163
|
+
- ✅ Valid `library.properties` file
|
|
164
|
+
- ✅ Source files in `src/` directory
|
|
165
|
+
- ✅ Examples compile successfully
|
|
166
|
+
- ✅ Consistent version numbering
|
|
167
|
+
- ✅ Open source license (LGPL-3.0)
|
|
168
|
+
|
|
169
|
+
## 📚 GitHub Wiki Management
|
|
170
|
+
|
|
171
|
+
### Automatic Synchronization
|
|
172
|
+
|
|
173
|
+
Wiki pages are automatically updated on each release:
|
|
174
|
+
|
|
175
|
+
- **Home** - From README.md
|
|
176
|
+
- **Release-Guide** - From RELEASE_GUIDE.md
|
|
177
|
+
- **Changelog** - From CHANGELOG.md
|
|
178
|
+
- **API-Reference** - Generated documentation
|
|
179
|
+
- **Examples** - Auto-generated from examples directory
|
|
180
|
+
- **Installation** - Multi-platform installation guide
|
|
181
|
+
- **Contributing** - From CONTRIBUTING.md
|
|
182
|
+
|
|
183
|
+
### Manual Wiki Updates
|
|
184
|
+
|
|
185
|
+
If you need to update the wiki manually:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# Clone wiki repository
|
|
189
|
+
git clone https://github.com/Alteriom/painlessMesh.wiki.git
|
|
190
|
+
|
|
191
|
+
# Edit markdown files directly
|
|
192
|
+
# Commit and push changes
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Note: Manual changes may be overwritten by automatic synchronization.
|
|
196
|
+
|
|
197
|
+
## 🔧 Scripts Reference
|
|
198
|
+
|
|
199
|
+
### `./scripts/bump-version.sh`
|
|
200
|
+
Updates version in all library files with consistency checks.
|
|
201
|
+
|
|
202
|
+
**Usage:**
|
|
203
|
+
```bash
|
|
204
|
+
./scripts/bump-version.sh patch # Increment patch version
|
|
205
|
+
./scripts/bump-version.sh minor # Increment minor version
|
|
206
|
+
./scripts/bump-version.sh major # Increment major version
|
|
207
|
+
./scripts/bump-version.sh patch 1.6.2 # Set specific version
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### `./scripts/validate-release.sh`
|
|
211
|
+
Comprehensive pre-release validation.
|
|
212
|
+
|
|
213
|
+
**Checks:**
|
|
214
|
+
- Version consistency between all files
|
|
215
|
+
- Changelog entries for current version
|
|
216
|
+
- Git working tree status
|
|
217
|
+
- Tag existence validation
|
|
218
|
+
- Dependency declarations
|
|
219
|
+
- Build file presence
|
|
220
|
+
- Quick compilation test
|
|
221
|
+
|
|
222
|
+
## 🚨 Troubleshooting
|
|
223
|
+
|
|
224
|
+
### Common Issues
|
|
225
|
+
|
|
226
|
+
**Version Mismatch Error**
|
|
227
|
+
```bash
|
|
228
|
+
# Fix version inconsistencies
|
|
229
|
+
./scripts/bump-version.sh patch 1.6.2 # Force set version
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Missing Changelog Entry**
|
|
233
|
+
```bash
|
|
234
|
+
# Add changelog entry for current version
|
|
235
|
+
vim CHANGELOG.md
|
|
236
|
+
# Add section: ## [1.6.2] - YYYY-MM-DD
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Build Failures**
|
|
240
|
+
```bash
|
|
241
|
+
# Test locally before release
|
|
242
|
+
npm run build
|
|
243
|
+
npm run test
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**NPM Token Invalid**
|
|
247
|
+
```bash
|
|
248
|
+
# Verify NPM authentication
|
|
249
|
+
npm whoami
|
|
250
|
+
# If not logged in: npm login
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**GitHub Packages Authentication**
|
|
254
|
+
```bash
|
|
255
|
+
# Check if GITHUB_TOKEN has packages:write permission
|
|
256
|
+
# Repository Settings → Actions → General → Permissions
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Wiki Update Failure**
|
|
260
|
+
```bash
|
|
261
|
+
# Wiki may need manual initialization
|
|
262
|
+
# Go to: https://github.com/Alteriom/painlessMesh/wiki
|
|
263
|
+
# Create any page to initialize, then re-run release
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Manual Override
|
|
267
|
+
|
|
268
|
+
If automation fails, you can manually perform any step:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# Manual NPM publish
|
|
272
|
+
npm publish --access public
|
|
273
|
+
|
|
274
|
+
# Manual GitHub release
|
|
275
|
+
gh release create v1.6.2 --title "painlessMesh v1.6.2" --notes-file CHANGELOG.md
|
|
276
|
+
|
|
277
|
+
# Manual tag creation
|
|
278
|
+
git tag v1.6.2
|
|
279
|
+
git push origin v1.6.2
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## 🔍 Validation Commands
|
|
283
|
+
|
|
284
|
+
### Pre-Release Checks
|
|
285
|
+
```bash
|
|
286
|
+
# Comprehensive validation
|
|
287
|
+
./scripts/validate-release.sh
|
|
288
|
+
|
|
289
|
+
# Version consistency check
|
|
290
|
+
./scripts/bump-version.sh --verify || echo "Use proper arguments"
|
|
291
|
+
|
|
292
|
+
# NPM package validation
|
|
293
|
+
npm run validate-library
|
|
294
|
+
|
|
295
|
+
# Build test
|
|
296
|
+
npm run build && npm run test
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Post-Release Verification
|
|
300
|
+
```bash
|
|
301
|
+
# Check NPM publication
|
|
302
|
+
npm view @alteriom/painlessmesh
|
|
303
|
+
|
|
304
|
+
# Check GitHub Packages
|
|
305
|
+
npm view @alteriom/painlessmesh --registry=https://npm.pkg.github.com
|
|
306
|
+
|
|
307
|
+
# Verify GitHub release
|
|
308
|
+
gh release view
|
|
309
|
+
|
|
310
|
+
# Check wiki update
|
|
311
|
+
curl -s https://github.com/Alteriom/painlessMesh/wiki | grep -q "v1.6.2"
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## 🎉 Success Indicators
|
|
315
|
+
|
|
316
|
+
### Successful Release Shows:
|
|
317
|
+
- ✅ GitHub release created with changelog
|
|
318
|
+
- ✅ Git tag pushed to repository
|
|
319
|
+
- ✅ NPM package published (check npmjs.com)
|
|
320
|
+
- ✅ GitHub Packages updated
|
|
321
|
+
- ✅ Wiki pages synchronized
|
|
322
|
+
- ✅ All GitHub Actions workflows completed successfully
|
|
323
|
+
|
|
324
|
+
### Distribution Verification:
|
|
325
|
+
```bash
|
|
326
|
+
# Public NPM
|
|
327
|
+
npm view @alteriom/painlessmesh
|
|
328
|
+
|
|
329
|
+
# GitHub Packages
|
|
330
|
+
npm view @alteriom/painlessmesh --registry=https://npm.pkg.github.com
|
|
331
|
+
|
|
332
|
+
# PlatformIO (updated within 24 hours)
|
|
333
|
+
# Check: https://registry.platformio.org/libraries/alteriom/painlessMesh
|
|
334
|
+
|
|
335
|
+
# Arduino Library Manager (after manual submission)
|
|
336
|
+
# Search in Arduino IDE Library Manager
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## 🌟 Advanced Topics
|
|
340
|
+
|
|
341
|
+
### Custom Release Notes
|
|
342
|
+
|
|
343
|
+
To customize release notes beyond the changelog:
|
|
344
|
+
|
|
345
|
+
1. Edit the generated `release_notes.txt` in the workflow
|
|
346
|
+
2. Or create a custom release notes file in `.github/release-template.md`
|
|
347
|
+
|
|
348
|
+
### Environment-Specific Releases
|
|
349
|
+
|
|
350
|
+
For testing releases:
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Use pre-release tags
|
|
354
|
+
git tag v1.6.2-beta
|
|
355
|
+
git push origin v1.6.2-beta
|
|
356
|
+
|
|
357
|
+
# This creates a pre-release without full publication
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Rollback Procedure
|
|
361
|
+
|
|
362
|
+
If a release has issues:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Delete remote tag
|
|
366
|
+
git push origin :refs/tags/v1.6.2
|
|
367
|
+
|
|
368
|
+
# Delete local tag
|
|
369
|
+
git tag -d v1.6.2
|
|
370
|
+
|
|
371
|
+
# Delete GitHub release
|
|
372
|
+
gh release delete v1.6.2
|
|
373
|
+
|
|
374
|
+
# Unpublish NPM package (contact npm support)
|
|
375
|
+
# GitHub Packages: Delete from package settings
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## 📊 Release Metrics
|
|
379
|
+
|
|
380
|
+
Monitor your releases:
|
|
381
|
+
- **GitHub**: https://github.com/Alteriom/painlessMesh/releases
|
|
382
|
+
- **NPM**: https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
383
|
+
- **PlatformIO**: https://registry.platformio.org/libraries/alteriom/painlessMesh
|
|
384
|
+
- **Wiki**: https://github.com/Alteriom/painlessMesh/wiki
|
|
385
|
+
|
|
386
|
+
## 🤝 Security & Permissions
|
|
387
|
+
|
|
388
|
+
### Required GitHub Secrets
|
|
389
|
+
- `GITHUB_TOKEN`: Automatically provided by GitHub Actions
|
|
390
|
+
- `NPM_TOKEN`: Required for NPM publishing (add in repository secrets)
|
|
391
|
+
|
|
392
|
+
### Repository Settings
|
|
393
|
+
- **Actions**: Enabled with write permissions
|
|
394
|
+
- **Packages**: Enabled for GitHub Packages publication
|
|
395
|
+
- **Wiki**: Enabled for documentation deployment
|
|
396
|
+
- **Releases**: Public releases enabled
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Quick Reference
|
|
401
|
+
|
|
402
|
+
**Release a patch version:**
|
|
403
|
+
```bash
|
|
404
|
+
./scripts/bump-version.sh patch
|
|
405
|
+
# Edit CHANGELOG.md
|
|
406
|
+
git add . && git commit -m "release: v1.6.2" && git push
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Check release status:**
|
|
410
|
+
```bash
|
|
411
|
+
./scripts/validate-release.sh
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Monitor release:**
|
|
415
|
+
- GitHub Actions: https://github.com/Alteriom/painlessMesh/actions
|
|
416
|
+
- Releases: https://github.com/Alteriom/painlessMesh/releases
|
|
417
|
+
- Documentation: https://github.com/Alteriom/painlessMesh/wiki
|
|
418
|
+
|
|
419
|
+
For questions or issues with the release process, create an issue with the `ci/cd` label.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# painlessMesh Documentation - Docusaurus Migration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document outlines the migration from the current custom documentation approach to **Docusaurus 3** for better user experience and maintainability.
|
|
6
|
+
|
|
7
|
+
## Current Issues
|
|
8
|
+
|
|
9
|
+
### Broken Links Found
|
|
10
|
+
- `docs/tutorials/custom-packages.md` - Missing
|
|
11
|
+
- `docs/tutorials/sensor-networks.md` - Missing
|
|
12
|
+
- `docs/advanced/performance.md` - Missing
|
|
13
|
+
- `docs/architecture/routing.md` - Missing
|
|
14
|
+
|
|
15
|
+
### Problems with Current Approach
|
|
16
|
+
1. **Raw Markdown** - No processing, links break in GitHub Pages
|
|
17
|
+
2. **Manual HTML generation** - Basic and unmaintainable
|
|
18
|
+
3. **Doxygen isolation** - Separate from user documentation
|
|
19
|
+
4. **No link validation** - Broken links undetected
|
|
20
|
+
5. **No search functionality** - Poor discoverability
|
|
21
|
+
6. **Poor mobile experience** - Not responsive
|
|
22
|
+
|
|
23
|
+
## Proposed Solution: Docusaurus 3
|
|
24
|
+
|
|
25
|
+
### Why Docusaurus?
|
|
26
|
+
- ✅ **Modern React-based** - Fast, responsive, beautiful
|
|
27
|
+
- ✅ **Built-in search** - Algolia integration
|
|
28
|
+
- ✅ **API docs integration** - Seamless with Doxygen
|
|
29
|
+
- ✅ **Link validation** - Automatic broken link detection
|
|
30
|
+
- ✅ **Versioning support** - Multiple library versions
|
|
31
|
+
- ✅ **GitHub Pages deployment** - Automated CI/CD
|
|
32
|
+
- ✅ **SEO optimized** - Better search engine ranking
|
|
33
|
+
|
|
34
|
+
### Implementation Plan
|
|
35
|
+
|
|
36
|
+
#### Phase 1: Setup Docusaurus
|
|
37
|
+
```bash
|
|
38
|
+
# Initialize Docusaurus
|
|
39
|
+
npx create-docusaurus@latest website classic
|
|
40
|
+
|
|
41
|
+
# Configure for painlessMesh
|
|
42
|
+
cd website
|
|
43
|
+
npm install --save @docusaurus/plugin-client-redirects
|
|
44
|
+
npm install --save @docusaurus/theme-mermaid
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### Phase 2: Content Migration
|
|
48
|
+
1. **Migrate existing docs** to `docs/` folder
|
|
49
|
+
2. **Create missing pages** identified in review
|
|
50
|
+
3. **Fix all broken links**
|
|
51
|
+
4. **Integrate Doxygen** output
|
|
52
|
+
5. **Add interactive examples**
|
|
53
|
+
|
|
54
|
+
#### Phase 3: Enhanced Features
|
|
55
|
+
1. **Search integration** with Algolia
|
|
56
|
+
2. **API documentation** with auto-generated content
|
|
57
|
+
3. **Interactive code examples**
|
|
58
|
+
4. **Version management** for releases
|
|
59
|
+
5. **Analytics integration**
|
|
60
|
+
|
|
61
|
+
## File Structure (Proposed)
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
website/
|
|
65
|
+
├── docs/ # Main documentation
|
|
66
|
+
│ ├── getting-started/
|
|
67
|
+
│ │ ├── installation.md
|
|
68
|
+
│ │ ├── quickstart.md
|
|
69
|
+
│ │ └── first-mesh.md
|
|
70
|
+
│ ├── api/
|
|
71
|
+
│ │ ├── core-api.md
|
|
72
|
+
│ │ └── alteriom-packages.md
|
|
73
|
+
│ ├── tutorials/
|
|
74
|
+
│ │ ├── basic-examples.md
|
|
75
|
+
│ │ ├── custom-packages.md # NEW - Currently missing
|
|
76
|
+
│ │ └── sensor-networks.md # NEW - Currently missing
|
|
77
|
+
│ ├── architecture/
|
|
78
|
+
│ │ ├── mesh-architecture.md
|
|
79
|
+
│ │ ├── plugin-system.md
|
|
80
|
+
│ │ └── routing.md # NEW - Currently missing
|
|
81
|
+
│ ├── advanced/
|
|
82
|
+
│ │ └── performance.md # NEW - Currently missing
|
|
83
|
+
│ └── troubleshooting/
|
|
84
|
+
│ ├── faq.md
|
|
85
|
+
│ └── common-issues.md
|
|
86
|
+
├── src/
|
|
87
|
+
│ ├── components/ # React components
|
|
88
|
+
│ └── pages/ # Custom pages
|
|
89
|
+
├── static/ # Static assets
|
|
90
|
+
├── docusaurus.config.js # Main configuration
|
|
91
|
+
└── sidebars.js # Navigation structure
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Benefits
|
|
95
|
+
|
|
96
|
+
### For Users
|
|
97
|
+
- 🚀 **Faster navigation** - Single-page app performance
|
|
98
|
+
- 🔍 **Powerful search** - Find anything instantly
|
|
99
|
+
- 📱 **Mobile-friendly** - Responsive design
|
|
100
|
+
- 🎯 **Better organization** - Clear navigation
|
|
101
|
+
- 💡 **Interactive examples** - Live code demos
|
|
102
|
+
|
|
103
|
+
### For Maintainers
|
|
104
|
+
- 🔗 **Link validation** - Automatic broken link detection
|
|
105
|
+
- 📝 **Easy content management** - Simple Markdown workflow
|
|
106
|
+
- 🚀 **Automated deployment** - GitHub Actions integration
|
|
107
|
+
- 📊 **Analytics** - Usage insights
|
|
108
|
+
- 🔄 **Version control** - Git-based workflow
|
|
109
|
+
|
|
110
|
+
## Migration Timeline
|
|
111
|
+
|
|
112
|
+
### Week 1: Setup & Configuration
|
|
113
|
+
- [ ] Initialize Docusaurus project
|
|
114
|
+
- [ ] Configure for painlessMesh branding
|
|
115
|
+
- [ ] Set up build pipeline
|
|
116
|
+
|
|
117
|
+
### Week 2: Content Migration
|
|
118
|
+
- [ ] Migrate existing documentation
|
|
119
|
+
- [ ] Create missing pages
|
|
120
|
+
- [ ] Fix all broken links
|
|
121
|
+
- [ ] Integrate Doxygen output
|
|
122
|
+
|
|
123
|
+
### Week 3: Enhancement & Testing
|
|
124
|
+
- [ ] Add search functionality
|
|
125
|
+
- [ ] Create interactive examples
|
|
126
|
+
- [ ] Mobile testing
|
|
127
|
+
- [ ] Performance optimization
|
|
128
|
+
|
|
129
|
+
### Week 4: Deployment & Cleanup
|
|
130
|
+
- [ ] Deploy to GitHub Pages
|
|
131
|
+
- [ ] Update all repository links
|
|
132
|
+
- [ ] Archive old documentation
|
|
133
|
+
- [ ] Team training
|
|
134
|
+
|
|
135
|
+
## Implementation Commands
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# 1. Create Docusaurus site
|
|
139
|
+
npx create-docusaurus@latest docs-website classic
|
|
140
|
+
cd docs-website
|
|
141
|
+
|
|
142
|
+
# 2. Install additional plugins
|
|
143
|
+
npm install --save @docusaurus/plugin-client-redirects
|
|
144
|
+
npm install --save @docusaurus/theme-mermaid
|
|
145
|
+
npm install --save @docusaurus/plugin-google-analytics
|
|
146
|
+
|
|
147
|
+
# 3. Configure build for GitHub Pages
|
|
148
|
+
npm run build
|
|
149
|
+
|
|
150
|
+
# 4. Deploy
|
|
151
|
+
npm run deploy
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Cost-Benefit Analysis
|
|
155
|
+
|
|
156
|
+
### Current Approach Costs
|
|
157
|
+
- ❌ **Developer time** - Manual HTML maintenance
|
|
158
|
+
- ❌ **User frustration** - Broken links, poor UX
|
|
159
|
+
- ❌ **SEO penalty** - Poor search ranking
|
|
160
|
+
- ❌ **Mobile users** - Bad mobile experience
|
|
161
|
+
|
|
162
|
+
### Docusaurus Benefits
|
|
163
|
+
- ✅ **Time savings** - Automated builds
|
|
164
|
+
- ✅ **Better UX** - Professional documentation
|
|
165
|
+
- ✅ **SEO boost** - Optimized for search engines
|
|
166
|
+
- ✅ **Future-proof** - Modern, maintained framework
|
|
167
|
+
|
|
168
|
+
## Recommendation
|
|
169
|
+
|
|
170
|
+
**Immediate Action**: Implement Docusaurus 3 migration
|
|
171
|
+
|
|
172
|
+
**Priority**: High - Current documentation has critical usability issues
|
|
173
|
+
|
|
174
|
+
**Timeline**: 2-4 weeks for full migration
|
|
175
|
+
|
|
176
|
+
**ROI**: High - Significantly better user experience with minimal ongoing maintenance
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# painlessMesh Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the comprehensive documentation for painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library that automatically handles routing and network management.
|
|
4
|
+
|
|
5
|
+
## Documentation Structure
|
|
6
|
+
|
|
7
|
+
### Getting Started
|
|
8
|
+
- [Quick Start Guide](getting-started/quickstart.md) - Get up and running in minutes
|
|
9
|
+
- [Installation](getting-started/installation.md) - Detailed installation instructions
|
|
10
|
+
- [First Mesh Network](getting-started/first-mesh.md) - Your first working mesh
|
|
11
|
+
|
|
12
|
+
### Architecture & Design
|
|
13
|
+
- [Mesh Architecture](architecture/mesh-architecture.md) - How painlessMesh works internally
|
|
14
|
+
- [Plugin System](architecture/plugin-system.md) - Understanding the plugin architecture
|
|
15
|
+
- [Message Routing](architecture/routing.md) - Message routing algorithms and strategies
|
|
16
|
+
- [Time Synchronization](architecture/time-sync.md) - Mesh-wide time synchronization
|
|
17
|
+
|
|
18
|
+
### API Reference
|
|
19
|
+
- [Core API](api/core-api.md) - Main painlessMesh class methods
|
|
20
|
+
- [Plugin API](api/plugin-api.md) - Creating custom packages and plugins
|
|
21
|
+
- [Configuration](api/configuration.md) - Configuration options and constants
|
|
22
|
+
- [Callbacks](api/callbacks.md) - Event handling and callbacks
|
|
23
|
+
|
|
24
|
+
### Tutorials & Examples
|
|
25
|
+
- [Basic Examples](tutorials/basic-examples.md) - Simple mesh networking examples
|
|
26
|
+
- [Custom Packages](tutorials/custom-packages.md) - Creating your own message types
|
|
27
|
+
- [Sensor Networks](tutorials/sensor-networks.md) - Building IoT sensor networks
|
|
28
|
+
- [Bridge Applications](tutorials/bridge-apps.md) - Connecting mesh to external networks
|
|
29
|
+
|
|
30
|
+
### Alteriom Extensions
|
|
31
|
+
- [Alteriom Overview](alteriom/overview.md) - Alteriom-specific functionality
|
|
32
|
+
- [Sensor Packages](alteriom/sensor-packages.md) - Environmental sensor data handling
|
|
33
|
+
- [Command System](alteriom/command-system.md) - Device command and control
|
|
34
|
+
- [Status Monitoring](alteriom/status-monitoring.md) - Device health and diagnostics
|
|
35
|
+
|
|
36
|
+
### Advanced Topics
|
|
37
|
+
- [Performance Optimization](advanced/performance.md) - Optimizing mesh performance
|
|
38
|
+
- [Memory Management](advanced/memory.md) - Managing ESP8266/ESP32 memory constraints
|
|
39
|
+
- [Security Considerations](advanced/security.md) - Securing your mesh network
|
|
40
|
+
- [OTA Updates](advanced/ota.md) - Over-the-air firmware updates in mesh
|
|
41
|
+
|
|
42
|
+
### Troubleshooting
|
|
43
|
+
- [Common Issues](troubleshooting/common-issues.md) - Solutions to frequent problems
|
|
44
|
+
- [Debugging Guide](troubleshooting/debugging.md) - Tools and techniques for debugging
|
|
45
|
+
- [FAQ](troubleshooting/faq.md) - Frequently asked questions
|
|
46
|
+
- [Network Issues](troubleshooting/network-issues.md) - Connectivity and mesh topology problems
|
|
47
|
+
|
|
48
|
+
### Development
|
|
49
|
+
- [Contributing](development/contributing.md) - How to contribute to painlessMesh
|
|
50
|
+
- [Building & Testing](development/building.md) - Development environment setup
|
|
51
|
+
- [Documentation](development/documentation.md) - Contributing to documentation
|
|
52
|
+
- [Release Process](development/releases.md) - Understanding releases and versioning
|
|
53
|
+
|
|
54
|
+
## Quick Links
|
|
55
|
+
|
|
56
|
+
- **[GitHub Repository](https://github.com/Alteriom/painlessMesh)**
|
|
57
|
+
- **[API Documentation](http://painlessmesh.gitlab.io/painlessMesh/index.html)**
|
|
58
|
+
- **[Community Forum](https://groups.google.com/forum/#!forum/painlessmesh-user)**
|
|
59
|
+
- **[Issue Tracker](https://github.com/Alteriom/painlessMesh/issues)**
|
|
60
|
+
|
|
61
|
+
## Need Help?
|
|
62
|
+
|
|
63
|
+
- Start with the [Quick Start Guide](getting-started/quickstart.md)
|
|
64
|
+
- Check the [FAQ](troubleshooting/faq.md) for common questions
|
|
65
|
+
- Browse [Examples](tutorials/basic-examples.md) for practical use cases
|
|
66
|
+
- Join our [Community Forum](https://groups.google.com/forum/#!forum/painlessmesh-user)
|
|
67
|
+
- Report bugs on the [Issue Tracker](https://github.com/Alteriom/painlessMesh/issues)
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.
|