Releases: agessaman/meshcore-bot
v0.8.2.1
v0.8.2
- Added a version indicator to the bottom of the Web Viewer
- Added ability to filter by packet type in Packet Capture Service.
- Improved mesh graph efficiency, added documentation for how to configure mesh graph calculations (or disable it) on lightweight nodes like Raspberry Pi Zero 2s.
- Simplify contact removal logic. Occasional errors will still occur until race condition in meshcore_py
- Improvements to documentation.
v0.8.1
v0.8
Release notes
New commands & features
- Aurora — New command for aurora/space weather (NOAA client).
- Airplanes — Aircraft tracking command.
- Reload — Admin command to reload configuration without restarting the bot.
- Command prefix — Optional prefix for bot commands (e.g.
!path). - Sub-commands & help — Commands can expose sub-commands and clearer usage/help; help respects channel restrictions and avoids truncation issues.
- Polish — Polish translation added (with thanks to the contributor).
Path & mesh
- Path command — Graph-based path validation using observed mesh links; presets:
balanced,geographic,graph. SNR integration, “prefix best location,” and improved multitest with per-user sessions and path tracking. - Mesh graph — New mesh graph logic and mesh view in the web viewer (connections, highlighting, sync).
- Contacts (web) — Time filtering, path sorting, bulk delete, starred nodes, and automatic device name updates.
Weather
- WXSIM — Support for custom WXSIM weather sources in
wx_commandand international weather. - Global weather — ZIP code geocoding and companion location features.
Configuration & behavior
- Config validation —
validate_config.pyand validation inmodules/config_validation.py; standardized command sections (e.g.[Joke_Command]withenabled); legacy*_enabledstill supported. - Rate limiting — Per-user rate limiting for bot responses.
- Channel keyword filtering — Configurable channel filtering for keyword responses.
- Banned users — Prefix (starts-with) matching for banned user entries.
- Feed manager — Dedicated
[Feed_Manager]section; optional RSS/API feeds. - Config file — UTF-8 support and quoted values for monitor channels.
Web viewer
- Mesh graph view, improved error handling and database path handling, favicons, realtime view.
- Service health checks — Optional checks and restart logic for the viewer.
Docker & deployment
- Docker — Dockerfile,
docker-compose.yml, anddocker-setup.shfor device detection, paths, and serial handling. Docs indocs/DOCKER.md. - Install script —
install-service.shsupports Python venv and clearer echo formatting. - CI — GitHub Actions for Docker build, tests, and docs;
devbranch supported.
Under the hood
- Command queuing for global cooldowns; escape sequence decoding for greetings and keyword responses; transmission and repeat tracking; unique advert packet tracking and leaderboard.
- Tests — pytest suite (commands, config validation, rate limiter, mesh graph, path resolution, etc.).
- Docs — MkDocs site and guides: getting started, configuration, path command config, upgrade, Docker, FAQ.
- Website generator —
generate_website.pywith dynamic styling and sample generation.
Upgrade
- Existing configs remain valid. See docs/UPGRADE.md for optional migrations (e.g.
[Joke_Command],[Feed_Manager],[Path_Command]) and the banned-users prefix-matching behavior.
Contributions
- Feature: Add Polish translation (pl) 80% by @smithpl2000 in #40
- Web_Viewer: fix loading of db_path from config by @Mateusz-Krajewski in #43
- Respond to only
wxandgwxcommand with usage. by @jeroenvermeulen in #50
New Contributors
- @smithpl2000 made their first contribution in #40
- @Mateusz-Krajewski made their first contribution in #43
- @jeroenvermeulen made their first contribution in #50
Full Changelog: v0.7...v0.8
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
v0.6.1
- Improved security and enhanced warnings of insecure elements. Thanks @eddieoz!
- Improved path guessing algorithm.
- Added dark mode.
- Improved service installation and added upgrade mode to update existing service integrations.
- Improvements to WebViewer stats and mobile accessibility, introduced limited channel management tool
- Improved sports command logic for game selection.
- Added path length placeholder options for test command.
- Improved reliability of NOAA weather reports.
v0.6
This version adds these new features:
- calculation of packet hashes for deduplication of nodes
- the addition of an automated greeter command with an onboarding period to avoid spamming existing active members
- improved localization of bot commands
- commands have a generic per-channel configuration, instead of requiring custom code to work outside of the standard channels, this allows per-command channels
This version adds the following improvements:
- the weather command now has better hourly updates
- improvements to score extraction in the sports command
- better installation scripts
- WebViewer UI improvements
- delete contacts from the contacts database
- override the path guessing weighting for key infrastructure nodes
- cleaned up dashboard to make stats more useful
- improve multi-test command response format
v0.5
Added localization to all commands.
Used machine translation of strings into German, British English, Spanish, French Canadian, Dutch, Portuguese and Brazilian Portuguese. Any assistance with native-speaker localization would be appreciated.
Added wx tomorrow and wx #day commands.
Implemented a globally accessible weather API using OpenMeteo, currently running as gwx. Command structure is the same as wx command.
Added command overrides. If you want to make modifications to a command, you can duplicate the file into ./modules/commands/alternatives and they will override existing commands with the same name field. If you change name = "gwx" to name = "wx" the example global weather command will unload the standard wx command in favor of your replacement.
Used path guessing logic to estimate path lengths in test messages. New placeholders are {path_distance} for the estimated total path traveled, and {firstlast_distance} for the distance between the first and last known repeater.
Fixed an issue where we weren't initiating the packet_stream table for the WebViewer integration.
Several bug fixes, and sadly probably several more bugs. This is a work in progress.
v0.4
This version does some internal clean-up on the databases. A new contact database will be populated when you launch this version for the first time.
- Added processing of all adverts and discovery events. All contact data is stored information in database
- Added repeater geolocation data in the prefix command
- Added logic in the path command to try to deconflict prefixes in path based on distance and node advert age
- Significantly speeds up channel loading during bot startup. Detects all channels now, regardless of empty slots.
- Add web viewer with dashboard that runs in a separate process and provides stats, contact information and
- Various code structure and import improvements to core bot and command modules to support integration
- Add ACL support to restrict access to sensitive commands to DMs from known public keys
- Updated example config.ini files—to use some of the new features, you will need to update your config.ini. The Web_Viewer, Path_Command, Prefix_Command, and Admin_ACL sections have been added, and are necessary for full functionality of the bot.
v0.3
- Added channels command to share common hashtag channels, configurable in config.ini
- Added option to geolocate repeaters in output of the prefix command
- Cleaned up config.ini.example to reflect recent changes
- Revised path command to improve consistency of decoding and output.
- Improved ZIP code handling for aqi command
- Added responses for emoji greetings
- Improved sports command to format soccer home/away properly
- Added dice and roll commands for increased randomness
- Improved plugin architecture so command configuration is handled in config.ini and commands code is held in individual files