Commit graph

23 commits

Author SHA1 Message Date
5cfb893d6e feat(ui): move connect/disconnect into the server card; replace sent/received/time tiles with a live throughput graph 2026-06-16 21:39:53 +03:00
15cdd397cb feat(service): add live throughput history ring to VpnState, fed each stats tick; cleared on connect/restart/stop 2026-06-16 21:39:44 +03:00
68aa25f280 feat(i18n): move UI strings to resources, add LocaleManager + Russian locale
In-app language switch; default + values-ru, with screen/validation/journal strings externalized.
2026-06-16 16:43:46 +03:00
7877cb49f0 feat(ui): clearer Сайты mode toggle («Сайты из списка: через прокси/напрямую»)
Drops misleading «Всё»; explainer states the rest, with a note that the per-app filter applies.
2026-06-16 16:21:40 +03:00
1e4796be2b chore(tools): device-QA DataStore config injector for the proxy app 2026-06-16 16:04:58 +03:00
4e419146ca docs: document domain routing, fake-IP data path, and its invariants/limits 2026-06-16 16:04:58 +03:00
ef165b6b9b feat(ui): add Сайты tab — mode toggle, domain input, geosite search
Live geosite category suggestions; edits persist and hot-restart. Shrinks tab padding/size so five tabs fit.
2026-06-16 16:04:32 +03:00
fadb0870e8 feat(net): split routing via hev mapped-DNS + protected direct dial
Enable fake-DNS when sites set (force IPv4); LocalSocks5Server routes proxy-vs-direct by domain, dialing direct on the underlying internet network.
2026-06-16 16:04:13 +03:00
e01b0c2a87 feat(route): domain matcher + bundled geosite DB search
Suffix/exact/keyword/regex matcher, normalizeDomain, and a hand-rolled geosite.dat parser (MIT v2fly) with category/domain search. Unit-tested.
2026-06-16 16:03:56 +03:00
8ed667d49e feat(core): add routingMode + routedSites to AppSettings
Defaulted (PROXY_ALL, empty) so old persisted state still decodes; feature inert until sites are added.
2026-06-16 16:03:33 +03:00
c73e29a3c4 docs(readme): correct NDK reference, link agent docs in docs/ 2026-06-16 12:45:21 +03:00
db12b63c06 docs: add agent onboarding guide (architecture, build/test, conventions, invariants) 2026-06-16 12:45:21 +03:00
0b3f4adc77 test: add JVM unit tests for Shadowsocks AEAD SIP004 vectors and link parser 2026-06-16 12:30:53 +03:00
40adf31985 feat(ui): order journal newest-first; remove duplicate Servers tab header 2026-06-16 12:30:53 +03:00
9b5a3dee1d fix(import): percent-decode share-link names preserving '+'; reject ambiguous bare IPv6 2026-06-16 12:30:53 +03:00
fbeb15be88 fix(data): snapshot last-known-good config and recover on decode failure instead of wiping 2026-06-16 12:30:53 +03:00
a5681608ed feat(service): probe upstream after connect, classify failures, reap stuck engine thread 2026-06-16 12:30:53 +03:00
67deab0c8e fix(socks): require per-session auth on loopback bridge; both-direction idle watchdog; split control/relay dispatchers 2026-06-16 12:30:53 +03:00
1b06c3c01f fix(upstream): parse bare-LF HTTP proxy headers; document benign protect() failure 2026-06-16 12:30:53 +03:00
6b75c65503 fix(socks5): rewrite unroutable UDP relay to proxy host, connect() socket anti-spoof, validate reply versions 2026-06-16 12:30:53 +03:00
0a01bbe3f6 fix(shadowsocks): treat frame-boundary EOF as clean end; accept empty AEAD chunks like canon 2026-06-16 12:30:55 +03:00
f303cf2892 chore: gitignore local interop QA harness (keys, vendored copies, logs) 2026-06-16 12:30:22 +03:00
v.lagerev
c3c10c92d6 Initial import: vojo proxy — native Android proxy client
Kotlin + Jetpack Compose VPN proxy client (Shadowsocks AEAD SIP004,
SOCKS5 RFC1928/1929, HTTP/HTTPS CONNECT) with per-app whitelist via
VpnService and the vendored hev-socks5-tunnel engine (JNI). Includes
the post-review fixes to the connection lifecycle, reconnect teardown,
journal, app-filter auto-reconnect, and the tab/timeline layout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 12:51:38 +03:00