Adds .gitea/workflows/meshtasticator-e2e.yaml (workflow_dispatch until
validated green, pull_request trigger commented out): builds the pinned
Hermes contract env like release.yaml, installs the plugin with deps,
checks out Meshtasticator at a pinned commit, installs the simulator's
own (conflicting-version) requirements in an isolated venv, then runs
scripts/meshtasticator_e2e/run_e2e.sh --mode docker.
Supporting changes:
- run_e2e.sh: SIM_VENV support; automatic localhost->daemon TCP forwards
(scripts/meshtasticator_e2e/tcp_forward.py) when DOCKER_HOST is a tcp://
daemon, because Meshtasticator hardcodes localhost for its node control
connections; node-boot settle wait; fixed docker cleanup (container
'Meshtastic', volume 'Meshtasticator').
- e2e tests: connect via a module-long event loop in a background thread
(adapter requires a running loop for watchdog + inbound dispatch, so
per-call asyncio.run was wrong) with retry while the node TCP API boots.
- README: sim-venv guidance, remote-daemon forwarding, CI section.
Docker access follows the deployment examples in
eric/actions-docker (docker is available to runner jobs).
Adds a skip-gated end-to-end suite (plugin/tests/e2e) that drives the
adapter against live Meshtasticator simulated nodes - real MeshtasticD
instances speaking the actual TCP/protobuf API - covering the layer no
contract test can reach: TCP handshake, inbound text over the simulated
mesh, and chunked outbound sends arriving at a peer node.
scripts/meshtasticator_e2e/run_e2e.sh boots N nodes (Docker or Linux
native MeshtasticD), discovers their TCP API ports, and runs the suite.
Radio-level reconnect and CI wiring are documented as open items pending
a Linux/Docker validation run.