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