Repository navigation
NetPilot 1.2.0
NetPilot 1.2.0 — first public release.
Assets
| File | What it is |
|---|---|
NetPilot-Windows-1.2.0-Setup.exe |
Windows installer, self-contained (no .NET needed on the target machine). Run it as administrator. |
NetPilot-1.2.0-release.apk |
Android release build. versionName 1.2.0 / versionCode 2, universal (arm64-v8a, armeabi-v7a, x86, x86_64), minSdk 26. |
NetPilot-Windows-1.2.0.exe |
The desktop exe alone, for machines that already have the .NET 8 runtime. Prefer the installer. |
SHA256SUMS.txt |
SHA-256 of every file above. |
There is no debug build in this release on purpose: it keeps println logging on and is not meant for users.
Android
- Network health dashboard — one score for DNS quality, latency, packet loss and link
stability, with a live traffic chart and running totals. - DNS manager — curated resolvers plus your own, each benchmarked for response time, with
a one-tap restore of whatever was configured before. - Live monitor — download/upload charts from a one-second to a one-hour window.
- Per-app usage — who is actually downloading, sorted by volume.
- Internet limiter — a download/upload cap per app, or block it outright. The caps are
enforced in the tunnel, not just displayed. - Scheduled limits, profiles with export/import, network tools (ping, nslookup,
cache flush), and an adapter inventory. - Local VPN tunnel — DNS-only or full-tunnel mode, failing open to the normal path so the
phone never loses connectivity. - Phone Tunnel → PC — hand the phone's VPN tunnel to a Windows PC over shared Wi-Fi, the
phone's hotspot, USB tethering, oradb reverse.
Bilingual English/Persian with proper RTL. No location, files or camera permissions; usage
access is optional and only feeds the per-app usage table.
Windows
The same toolset as a desktop app, plus the Phone Tunnel → PC page that pairs with the
Android app and lets the desktop browse through the phone. Upload caps are real Windows QoS
policies; download caps are enforced with a token bucket. Network state is snapshotted before
any change and can be restored.
Fixed in this release
Android
- The desktop never actually rode the phone's VPN: the LAN proxy's sockets were excluded
along with the rest of the app's package, so traffic left through the phone's normal
interface. They are now put back into the tunnel withVpnService.protect(). - DNS lookups were tried one resolver after another, so a dead first resolver slowed down
every lookup. All resolvers are now queried at once and the first real answer wins. - The proxy's 20 s idle timeout cut HTTPS connections and websockets mid-session; now 120 s.
Windows
- Starting the bridge deadlocked the UI thread on a PowerShell child. The listener came up
and the firewall rule was created, but the accept loop never started, so every request from
the phone hung until it timed out — reported as "PC unreachable". - Restoring the network reported success even when every adapter had failed.
- The proxy reachability probe gave a live proxy on 127.0.0.1 a false "unreachable" when the
host also resolved to ::1. - The internet limiter silently stopped applying limits after a restart.
Verification
92 Android unit tests, 43 Windows unit and integration tests — the latter include suites that
change real DNS servers and real Windows QoS policies and then put them back — plus an
end-to-end installer test. NetPilot/Tools/verify.ps1 runs everything and fails if the suite
changed anything on the machine.
Signing note
The release keystore is deliberately not in this repository. To build a signed APK, copy
NetPilotMobile/keystore.properties.example to keystore.properties and fill it in, or
export NETPILOT_STORE_FILE, NETPILOT_STORE_PASSWORD, NETPILOT_KEY_ALIAS and
NETPILOT_KEY_PASSWORD. Without either, assembleRelease still builds an unsigned APK.
Licence: MIT.