Files
MasterHttpRelayVPN-RUST/releases
Shin (Former Aleph) b734f41faa v1.0.1: auto-resolve google_ip, robust Stop, Check-for-updates, front_domain repair (#31)
Three reported issues from v1.0.0 — one real bug, two UX gaps.

google_ip auto-resolve (THE FIX)
--------------------------------
Google rotates the A record for www.google.com across their anycast
pool. A hardcoded default IP breaks new installs on any network that
isn't geo-homed to the same edge — symptom is "all SNIs time out"
even with a fresh deployment. On Start and via a new "Auto-detect"
button, we now do a JVM-side InetAddress lookup BEFORE establishing
the VPN (so the resolver uses the underlying network, not our own
Virtual-DNS TUN — avoids a loop), update the config, and continue.

The auto-resolve lives in the HomeScreen click handler (not
MainActivity) so it goes through the same `persist(cfg)` the text
fields use. Previous iteration did `ConfigStore.load → modify → save`
directly to disk, which left Compose's in-memory cfg stale and a
subsequent field edit would overwrite the fresh IP. One source of
truth now.

Also defensively repairs front_domain: if it's been corrupted into
an IP literal (bad paste, whatever) we restore "www.google.com" —
the TLS SNI on the outbound leg has to be a hostname or the
handshake lands on the wrong vhost.

Robust Stop
-----------
The Stop button now dispatches both ACTION_STOP (graceful: runs
teardown, stops tun2proxy, closes TUN fd, shuts down Rust runtime)
AND stopService() (defensive: covers force-closed-then-reopened
zombie state where Android auto-restarted our START_STICKY service
in a fresh process and the in-memory TUN reference is gone).

Check-for-updates
-----------------
Tapping the version badge in the top bar now runs the same
update_check that the desktop UI uses, via a new
`Native.checkUpdate()` JNI entry point. Returns a JSON blob the
Kotlin side parses into an "Up to date", "Update available: v→v
<url>", "Offline: ...", or "Check failed: ..." snackbar. Mirrors
the desktop's behavior so a user doesn't have to manually poll
GitHub for new builds.

Crash visibility
----------------
New MhrvApp.kt registers a process-wide uncaught exception handler.
Crashes are now stamped into logcat under the `mhrv-crash` tag with
the thread name before the default handler kills the process —
previously the JVM crash in coroutines / the log drain / the
tun2proxy worker was invisible unless you caught the dropoff in
real time.

Version bump: 1.0.0 → 1.0.1 (versionCode 100 → 101). Release APK
rebuilt and replaces the 1.0.0 copy in releases/; CI will regenerate
on the v1.0.1 tag push.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 03:45:08 +03:00
..

Prebuilt Binaries

This folder contains the prebuilt binaries from the latest release, committed directly to the repository for users who cannot reach the GitHub Releases page.

Current version: v1.0.1

File Platform Contents
mhrv-rs-android-universal-v1.0.1.apk Android 7.0+ (all ABIs) Universal APK — arm64-v8a, armeabi-v7a, x86_64, x86 in one file
mhrv-rs-linux-amd64.tar.gz Linux x86_64 mhrv-rs, mhrv-rs-ui, run.sh
mhrv-rs-linux-arm64.tar.gz Linux aarch64 mhrv-rs, run.sh (CLI only)
mhrv-rs-raspbian-armhf.tar.gz Raspberry Pi / ARMv7 hardfloat mhrv-rs, run.sh (CLI only)
mhrv-rs-macos-amd64.tar.gz macOS Intel mhrv-rs, mhrv-rs-ui, run.sh, run.command
mhrv-rs-macos-amd64-app.zip macOS Intel mhrv-rs.app bundle (double-click from Finder)
mhrv-rs-macos-arm64.tar.gz macOS Apple Silicon mhrv-rs, mhrv-rs-ui, run.sh, run.command
mhrv-rs-macos-arm64-app.zip macOS Apple Silicon mhrv-rs.app bundle (double-click from Finder)
mhrv-rs-windows-amd64.zip Windows x86_64 mhrv-rs.exe, mhrv-rs-ui.exe, run.bat
mhrv-rs-linux-musl-amd64.tar.gz OpenWRT / Alpine x86_64 static mhrv-rs + mhrv-rs.init (procd)
mhrv-rs-linux-musl-arm64.tar.gz OpenWRT / Alpine aarch64 static mhrv-rs + mhrv-rs.init (procd)

Download via git clone

git clone https://github.com/therealaleph/MasterHttpRelayVPN-RUST.git
cd MasterHttpRelayVPN-RUST/releases

Download via ZIP

Go to github.com/therealaleph/MasterHttpRelayVPN-RUST, click the green Code button, then Download ZIP. Extract it — the archives are in the releases/ folder.

After download

Linux / macOS

tar xzf mhrv-rs-macos-arm64.tar.gz
cd mhrv-rs-macos-arm64        # or wherever the archive extracted to
./run.sh                      # or ./run.command on macOS (double-click in Finder)

Windows

Extract mhrv-rs-windows-amd64.zip, then double-click run.bat inside the extracted folder (accept the UAC prompt so the MITM CA can be installed).

Android

Copy mhrv-rs-android-universal-v1.0.1.apk to your phone, tap it from the Files app, and allow "Install unknown apps" for whichever app is opening the APK (Files, Chrome, etc.). See the Android guide for the full walk-through of the first-run steps (Apps Script deployment, MITM CA install, VPN permission, SNI tester).

See the main README for desktop setup (Apps Script deployment, config, browser proxy settings).


فایل‌های اجرایی

این پوشه شامل فایل‌های آخرین نسخه است و مستقیماً در ریپو قرار گرفته برای کاربرانی که به صفحهٔ GitHub Releases دسترسی ندارند.

نسخهٔ فعلی: v1.0.1

دانلود از طریق ZIP

به github.com/therealaleph/MasterHttpRelayVPN-RUST بروید، روی دکمهٔ سبز Code کلیک و Download ZIP را بزنید. پس از extract، آرشیوها در پوشهٔ releases/ هستند.

بعد از دانلود

لینوکس / مک:

tar xzf mhrv-rs-macos-arm64.tar.gz
cd mhrv-rs-macos-arm64
./run.sh                      # در مک می‌توانید روی run.command هم از Finder دو بار کلیک کنید

ویندوز: فایل mhrv-rs-windows-amd64.zip را extract کنید و داخل پوشه روی run.bat دو بار کلیک کنید (UAC را قبول کنید تا گواهی MITM نصب شود).

اندروید: فایل mhrv-rs-android-universal-v1.0.1.apk را روی گوشی کپی کنید، از Files app روی آن tap کنید و اجازهٔ "نصب برنامه‌های ناشناس" را بدهید. راهنمای کامل شروع به کار (دیپلوی Apps Script، نصب CA، اجازهٔ VPN، تستر SNI) در راهنمای اندروید هست.

برای راه‌اندازی کامل دسکتاپ (دیپلوی Apps Script، config، تنظیم proxy مرورگر) به README اصلی مراجعه کنید.