Some checks are pending
CI / Build Package (push) Blocked by required conditions
CI / Lint and Format (push) Waiting to run
CI / Test Python 3.11 on macos-latest (push) Waiting to run
CI / Test Python 3.12 on macos-latest (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / Test Python 3.13 on macos-latest (push) Waiting to run
CI / Test Python 3.10 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.11 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.13 on ubuntu-latest (push) Waiting to run
Add find_freeroute_cli() + _run_freeroute_cli(): run_freerouting now tries the Java-free freeroute autorouter first (freeroute's CLI is -de/-do compatible) and falls back to the JAR for boards freeroute cannot yet route. freeroute is invoked as a subprocess, not imported, keeping its GPL license cleanly separated from mckicad (MIT). Raises a clear error only when neither backend is available. End-to-end verified: DSN -> freeroute -> SES -> native applier = 141 segments on the Arduino_Mega board, fully headless and Java-free.