Skip to content

Releases: agessaman/meshcore-bot

v0.8.2.1

22 Feb 20:04

Choose a tag to compare

Small bugfix release that fixes a configparser error for users using Python 3.13+

v0.8.2

21 Feb 17:54
c634802

Choose a tag to compare

  • 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

18 Feb 18:01
da7db84

Choose a tag to compare

A couple little fixes.

Fixed logic in multitest command to avoid having a subsequent request block both test requests.
Fixed issue with per-user rate limit that prevented second message responses from commands from being sent.

v0.8

17 Feb 00:50
2a36cb2

Choose a tag to compare

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_command and international weather.
  • Global weather — ZIP code geocoding and companion location features.

Configuration & behavior

  • Config validationvalidate_config.py and validation in modules/config_validation.py; standardized command sections (e.g. [Joke_Command] with enabled); legacy *_enabled still 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, and docker-setup.sh for device detection, paths, and serial handling. Docs in docs/DOCKER.md.
  • Install scriptinstall-service.sh supports Python venv and clearer echo formatting.
  • CI — GitHub Actions for Docker build, tests, and docs; dev branch 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 generatorgenerate_website.py with 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

New Contributors

Full Changelog: v0.7...v0.8

v0.7

11 Jan 19:35
357fc86

Choose a tag to compare

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-health endpoint for system status reporting
  • Minimal Configuration: New config.ini.minimal-example for 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.enable option 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.toml with 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 --config parameter support for both main bot and web viewer
  • New service plugin configuration sections: [PacketCapture], [MapUploader], [Weather_Service], [Discord_Bridge]
  • Added db_path configuration 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

Full Changelog: v0.6.1...v0.7

v0.6.1

20 Dec 23:17
b1b4aaf

Choose a tag to compare

  • 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

03 Dec 04:12
f08e739

Choose a tag to compare

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

22 Nov 03:39
aa40a1d

Choose a tag to compare

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

22 Oct 05:13

Choose a tag to compare

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

10 Oct 04:17

Choose a tag to compare

  • 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