v0.7
Release Notes
New Features
- Service Plugin Architecture: Implemented service plugin system for background services that run alongside the bot
- Packet Capture Service: Captures packets from MeshCore network and publishes to MQTT brokers for analyzer.letsmesh.net
- Map Uploader Service: Uploads node adverts to map.meshcore.dev with signed data authentication
- Weather Service: Scheduled weather forecasts, NOAA alert monitoring, and regional lightning detection via MQTT
- Discord Bridge: New service plugin to post channel messages to Discord with message queuing and rate limiting for webhook posts
- Command Enable/Disable: Individual commands can now be enabled/disabled via configuration
- Sports Data Clients: Added ESPN and TheSportsDB API clients for sports command functionality
- System Health Monitoring: New
/api/system-healthendpoint for system status reporting - Minimal Configuration: New
config.ini.minimal-examplefor users who only need core testing commands - Announcements Command: New command for admin triggered announcements
- Magic 8 Command: Added magic 8-ball command for fun responses (thanks @lincomatic)
- Enhanced Packet Decoding: Web viewer packet stream now supports packet analysis using
meshcore-decoder - Nix/NixOS Support: Added Nix flake infrastructure with NixOS module for declarative system-wide deployments (thanks @tbaumann)
- Web Viewer NixOS Option: Added
services.meshcore-bot.webviewer.enableoption for NixOS deployments (thanks @tbaumann)
Bug Fixes
- Segfault Prevention: Fixed potential segfaults by deep copying event payloads in ChannelManager and service plugins
- Path Decoding: Fixed path decoding logic to better handle single nodes and hex values
- Weather Emoji Truncation: Improved weather string handling to prevent emoji truncation
- Database Connections: Fixed database connection handling and timeout issues
- Keyword Reporting: Fixed keyword reporting to web viewer
- Error Handling: Improved error handling and logging across multiple modules
Improvements
- Python Packaging: Migrated to
pyproject.tomlwith proper entry points (meshcore-bot,meshcore-viewer) (thanks @tbaumann) - Code Quality: Added type hints and docstrings across modules
- Cooldown Management: Refactored to centralized cooldown tracking system in BaseCommand
- Location Resolution: Improved location name resolution from database using public keys
- Weather Data: Improved weather forecast formatting and data retrieval in international weather command
- Async Handling: Improved asyncio event loop handling to prevent deadlocks
- Internet Connectivity: Implemented thread-safe caching for internet connectivity status
- MQTT Handling: Improved non-blocking MQTT connection handling in service plugins
- Logging: Added rotating file handlers and improved error reporting
- Web Viewer: Improved stability by logging stdout/stderr to files instead of PIPE
- Database Management: Optimized database cleanup with smaller batch deletions to reduce lock contention
- Message Processing: Improved message content processing by stripping trailing whitespace
- Help Command: Added dynamic command list based on usage statistics
Configuration Changes
- Added
--configparameter support for both main bot and web viewer - New service plugin configuration sections:
[PacketCapture],[MapUploader],[Weather_Service],[Discord_Bridge] - Added
db_pathconfiguration options for web viewer - Updated JWT renewal interval to 24 hours
- Added command-specific enable/disable options
Dependencies
- Added:
urllib3>=2.0.0,paho-mqtt>=1.6.0,cryptography>=41.0.0,pynacl>=1.5.0 - Updated Python dependencies across the board
New Contributors
- @lincomatic made their first contribution in #21
- @tbaumann made their first contribution in #27
Full Changelog: v0.6.1...v0.7