MQTT Upload Support
- Multi-broker MQTT upload with full UI configuration
- LetsMesh integration with EdDSA auth-token support (Python fallback when CLI unavailable)
- Per-broker owner/email JWT claim settings
- Periodic MQTT status metrics for LetsMesh observer support
- Packet-only publishing aligned with meshcoretomqtt format
- Broker connection status binary sensors
- Auto-fetch device private key for auth tokens
- Packet hash stabilization to reduce LetsMesh duplicates
Execute Command Improvements
- Bump
meshcoreto>=2.2.15with synced command parameter mappings - Functional syntax support:
set_coords(37.7749, -122.4194)(fixes #111) - Supports positional args, keyword args, strings, numbers, booleans, and bytes literals
- Add
set_flood_scopecommand
Discovered Contacts Management
- New opt-in FIFO limit for discovered contacts (configurable max, default 100 when enabled)
- Oldest contacts evicted first; re-advertisements refresh queue position
- Evicted contacts have binary sensor entities automatically removed
- New
meshcore.clear_discovered_contactsservice to remove all at once
Bug Fixes
- Fix duplicate entry setup and guard static path registration
- Fix options menu contact detection for repeaters and clients
- Fix missing log argument
- Only cleanup devices associated with the current entry
Telemetry
- Support negative current readings (charging vs discharging)
- Add power sensor, display current in mA
- 2-character pubkey prefix for display
Documentation
- Add MQTT upload documentation page
- Document functional command syntax in services docs
- Add contact FIFO limit section to contacts docs
- Replace manual storage file deletion with
clear_discovered_contactsservice
Housekeeping
- Add
__pycache__/,*.pyc,.pytest_cacheto.gitignore - Add test infrastructure and unit tests for command parsing and contact eviction