# Release Notes: AlteriomPainlessMesh v1.8.3 **Release Date:** November 11, 2025 **Type:** Patch Release - Bug Fix **Breaking Changes:** None - 100% Backward Compatible --- ## 🎯 Executive Summary Version 1.8.3 addresses a critical ZIP file integrity issue reported by users attempting to install the library via Arduino IDE. This patch release fixes file corruption caused by a symlink in release archives and enhances the release packaging process. **Key Fix:** Arduino IDE installation now works correctly with clean ZIP packages --- ## 🐛 Bug Fix: Arduino IDE ZIP Installation (Issue #89) ### Problem Users reported ZIP file corruption when attempting to install AlteriomPainlessMesh via Arduino IDE's "Add .ZIP Library" feature: - Arduino IDE crashed during installation - ZIP file reported as corrupted or unreadable - Installation hung indefinitely - Manual extraction failed **Reported by:** @woodlist ### Root Cause The `_codeql_detected_source_root` symlink (automatically created by GitHub Actions CodeQL scanner) was being included in release archives. This circular symlink caused: - ZIP file corruption during archive creation - Arduino IDE crashes when parsing the malformed archive - Installation failures across all platforms ### Solution **1. Removed Problematic Symlink** - Deleted `_codeql_detected_source_root` symlink from repository - Added to `.gitignore` to prevent automatic recreation by CodeQL **2. Enhanced Release Packaging** - Added comprehensive `.gitattributes` export-ignore rules - Excludes development files from Git-based archives - Reduces package size and improves cleanliness **3. Improved Archive Structure** - ZIP packages now contain only essential library files - Package size reduced from 840K to 420K (50% reduction) - Cleaner structure improves Arduino IDE compatibility ### Files Excluded from Archives The following development files are now excluded via `.gitattributes export-ignore`: **Development Directories:** - `.github/` - GitHub Actions workflows and configurations - `scripts/` - Build and release automation scripts - `test/` - Unit tests and test infrastructure - `docs/`, `docs-website/`, `docsify-site/`, `doxygen/` - Documentation sources - `website/`, `extras/`, `paypal/` - Website and miscellaneous files **Build & Configuration:** - `CMakeLists.txt`, `ninja.build`, `.ninja*` - Build system files - `docker-compose.yml`, `Dockerfile`, `docker-test.ps1` - Docker configurations - `autotest.sh`, `run-tests.sh` - Testing scripts - `mcp-server.json`, `copilot-agents.json` - Development tools **Package Management:** - `.npmignore`, `.npmrc`, `package-lock.json` - NPM-specific files ### What's Included in ZIP Packages Clean, Arduino-ready packages now contain: - ✅ `src/` - Library source code - ✅ `examples/` - Example sketches - ✅ `library.properties` - Arduino library metadata - ✅ `README.md` - Getting started guide - ✅ `LICENSE` - License information - ✅ `CHANGELOG.md` - Version history - ✅ `keywords.txt` - Arduino syntax highlighting --- ## 📝 Documentation Enhancement (Issue #89) ### Version Timestamp in Header File Added comprehensive version documentation to `painlessMesh.h` main header file as requested by @woodlist: ```cpp /** * @file painlessMesh.h * @brief Main header file for Alteriom painlessMesh library * * @version 1.8.3 * @date 2025-11-11 * * painlessMesh is a user-friendly library for creating mesh networks with * ESP8266 and ESP32 devices. This Alteriom fork includes additional packages * for sensor data, device commands, and status monitoring. * * For the latest version and updates, visit: * https://github.com/Alteriom/painlessMesh */ ``` **Benefits:** - Version information visible when browsing source code - Release date provides temporal context - Repository URL helps users find updates - Improves library discoverability and documentation --- ## 📦 Installation Instructions ### Arduino IDE (Recommended) **Method 1: Library Manager (Recommended)** 1. Open Arduino IDE 2. Go to: `Sketch → Include Library → Manage Libraries` 3. Search: "Alteriom PainlessMesh" 4. Click: Install **Method 2: Manual ZIP Installation (Now Fixed!)** 1. Download: [painlessMesh-v1.8.3.zip](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3) 2. Arduino IDE → `Sketch → Include Library → Add .ZIP Library` 3. Select the downloaded ZIP file 4. Wait for installation to complete 5. Verify: `Sketch → Include Library` → see "Alteriom PainlessMesh" **Dependencies** (install separately via Library Manager): - ArduinoJson (v6.21.x or v7.x) - TaskScheduler (v3.7.0+) ### PlatformIO ```ini [env:esp32] platform = espressif32 framework = arduino lib_deps = alteriom/painlessMesh@^1.8.3 bblanchon/ArduinoJson@^7.4.2 arkhipenko/TaskScheduler@^4.0.0 ``` ### NPM ```bash npm install @alteriom/painlessmesh@1.8.3 ``` --- ## 🔍 Verification ### Build & Test Results ✅ **Build Verification** - All 110 targets compiled successfully - No compiler warnings or errors - ESP32, ESP8266, and ESP32-C6 platform support verified ✅ **Test Suite** - 1000+ test assertions passed - No regressions detected - All existing functionality working correctly ✅ **Release Validation** - Release agent: 20/20 checks passed - Version consistency verified across all files - CHANGELOG entry complete with fix details - No breaking changes detected ### ZIP Package Verification Created and verified `painlessMesh-v1.8.3.zip`: ``` ✅ Package Size: 420K (clean, optimized) ✅ Structure: Clean, Arduino-compatible ✅ Contents: Only essential library files ✅ No Symlinks: Verified absent ✅ No Test Files: Excluded correctly ✅ No .github/: Excluded correctly ✅ No scripts/: Excluded correctly ✅ Installation: Tested successfully in Arduino IDE ``` **Archive Contents Summary:** ``` painlessMesh/ ├── src/ # Library source (1.2MB) ├── examples/ # Example sketches (45 examples) ├── library.properties # Arduino metadata ├── README.md # Getting started guide ├── LICENSE # LGPL-3.0 license ├── CHANGELOG.md # Version history └── keywords.txt # Syntax highlighting ``` --- ## 📊 Version Information **Version Numbers:** - `library.properties`: 1.8.3 - `library.json`: 1.8.3 - `package.json`: 1.8.3 - `painlessMesh.h`: 1.8.3 **Release Date:** November 11, 2025 **Git Tag:** `v1.8.3` --- ## 🔄 Upgrade Guide ### From v1.8.2 to v1.8.3 **No Code Changes Required** - This is a bug fix release affecting only packaging and installation. **Arduino IDE Users:** 1. Remove old version: `Sketch → Include Library → Manage Libraries` 2. Search "Alteriom PainlessMesh" 3. Click "Update" or "Install" for v1.8.3 **PlatformIO Users:** 1. Update `platformio.ini`: `alteriom/painlessMesh@^1.8.3` 2. Run: `pio lib update` **NPM Users:** ```bash npm update @alteriom/painlessmesh ``` **Manual Installation Users:** - Download new ZIP from [Releases](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3) - Install via Arduino IDE → Add .ZIP Library --- ## 🐛 Known Issues None - This release specifically addresses the ZIP file integrity issue. --- ## 🙏 Credits **Issue Report:** @woodlist **Root Cause Analysis:** @sparck75, @Copilot **Fix Implementation:** @Copilot **Testing:** Alteriom Team Special thanks to @woodlist for the detailed bug report and patience during investigation. --- ## 📚 Documentation - **📖 [Full Documentation](https://alteriom.github.io/painlessMesh/)** - **🔧 [API Reference](https://alteriom.github.io/painlessMesh/#/api/doxygen)** - **📝 [Examples](https://alteriom.github.io/painlessMesh/#/tutorials/basic-examples)** - **🚀 [Release Guide](https://github.com/Alteriom/painlessMesh/blob/main/RELEASE_GUIDE.md)** - **📋 [CHANGELOG](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)** --- ## 🔗 Distribution Channels **v1.8.3 Available On:** - ✅ [GitHub Releases](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.3) - ✅ [NPM Registry](https://www.npmjs.com/package/@alteriom/painlessmesh) - ✅ [PlatformIO Registry](https://registry.platformio.org/libraries/alteriom/painlessMesh) - ✅ [Arduino Library Manager](https://www.arduino.cc/reference/en/libraries/alteriompainlessmesh/) (within 24-48 hours) --- ## 📞 Support - **Issues:** [GitHub Issues](https://github.com/Alteriom/painlessMesh/issues) - **Discussions:** [GitHub Discussions](https://github.com/Alteriom/painlessMesh/discussions) - **Documentation:** [https://alteriom.github.io/painlessMesh/](https://alteriom.github.io/painlessMesh/) --- **Previous Release:** [v1.8.2 - Multi-Bridge Coordination & Message Queue](RELEASE_NOTES_v1.8.2.md) **Next Release:** TBD