186dc906dac553239c7b491ea4df203d5e48724b
3.3.1 could display "connected" against a tunnel that was no longer running, with a frozen countdown and no traffic. Three causes, and the fix for each removes more code than it adds. Liveness was read from getConnectedServerDelay(), which measures through AppConfigs.V2RAY_CONFIG?.LOCAL_SOCKS5_PORT ?: 10807. AppConfigs lives in the :RunSoLibXrayDaemon process, so from the UI process it is always null and the port always fell back to 10807 -- accidentally correct while the SOCKS port was fixed, permanently wrong once 3.3.1 made it ephemeral. Liveness now comes from the OS: is our service process running, and is a VPN transport actually present. The foreground notification (id 1) is owned by XrayVPNService via startForeground, but MainActivity was posting to the same id from the UI process. When that process died its notification stayed on screen with nothing left to update it. MainActivity now refuses to post for a dead runtime and clears the stale notification instead. Nothing ever asked Android for permission to stay alive. Adds the battery-optimisation exemption prompt and a deep link to Always-on VPN -- the two sanctioned mechanisms for background survival, each needing one user tap. Removes Standard/Extreme resilience and the runtime-restart machinery: recovery ran off a disconnect broadcast delivered to the app process, so it could never fire when Android killed that process. Removes startup restoration and the config-snapshot rebuild along with it; with the OS keeping the tunnel up there is nothing to restore. Version 3.3.2+28. Co-Authored-By: Claude Opus 5 <[email protected]>
ReVoltVPN
A free VPN app for Android. Open-source client, transparent infrastructure. Watch an ad, get 2 hours of full-speed traffic — no accounts, no logs, no subscriptions.
How it works
- Watch a short rewarded ad
- Server creates a temporary VLESS session (2 hours / 10 GB)
- Your traffic routes through a single server in Finland at full speed
- When time or data runs out, session ends — watch another ad to continue
- No throttling, no slow lane, no mid-session punishment
No email. No password. No payment. The ad pays for the server.
Protocol
- Transport — VLESS over XHTTP (HTTP/2 multiplexed, path-hidden behind
/revolt) - Obfuscation — Xray Reality spoofs
some website'sTLS. To any DPI box, your tunnel looks like a browser visiting that website - Encryption — TLS 1.3 with borrowed certificate (Reality). No certbot, no domain ownership required
- API — Standard HTTPS to a separate domain. Tunnel destination is IP-pinned — domain compromise is DoS only
Stack
| Layer | Technology |
|---|---|
| App | Flutter (Android) |
| VPN | VLESS + Xray Reality + XHTTP |
| Backend | Python Flask ("Hivemind") — session management, quotas, stats |
| Ads | Google AdMob rewarded, verified server-side |
| Server | Debian, single Hetzner box in Finland |
Limitations
- One server, one location (Finland)
- 2 vCPU / 4 GB RAM — not built for thousands of concurrent users
- Android only
Privacy
Your traffic routes through Finland. We don't log it, inspect it, or sell it. Hivemind tracks only session liveness and byte counters for quota enforcement — no packet contents, no destination IPs, no DNS queries.
Full privacy policy: PRIVACY_POLICY.md
ReVoltVPN is not affiliated with any VPN company.
Description
A simple vless client built with flutter
12 MiB
0 Stars
1 Watchers
0 Forks
