Observer firmware publishes LetsMesh PACKET JSON without AMMB payload
fields, so inbound group text was rejected as invalid. Decode GRP_TXT
with the Public channel key (and configured extras), skip status and
encrypted DMs, and optionally publish hashed observer packets outbound.
Harden .gitignore for live config, credentials, keys, logs, editor
workspaces, and local agent directories. Stop tracking personal VS Code
settings and add a regression test for the ignore rules.
Make the async runtime use the same forwarding path, wire message
persistence and configurable rate limits, add API token auth, retry
Meshtastic on boot, and tighten CI plus systemd packaging.
- Added structured decoding for companion contact records, self info, device info, and new adverts in MeshcoreCompanionProtocol.
- Improved logging for companion events and updated health monitoring.
- Updated README and configuration documentation to reflect new companion settings and structured event logging.
- Enhanced terminal command center to display companion-specific settings only when applicable.
- Added tests for new companion protocol features and ensured proper handling of internal-only events.
- Implemented `run_bridge_tui.py` as the entry point for launching the TUI, including configuration loading and error handling.
- Added unit tests in `tests/test_tui.py` for the TUI components, including configuration redaction and bridge controller functionality.
- Updated test_protocol.py to maintain consistent formatting and structure.
- Adjusted tmp_no_default.ini to use consistent line endings.
- Reformatted tmp_run_load.py and tmp_test_config.py for improved readability.