100 Commits
Author SHA1 Message Date
DenozordecandClaude Fable 5.2 20f9040e48 android: uploadShx sends the build commit to the SHX VPN panel: upload-apk.mjs takes it from --commit, SHX_COMMIT or git rev-parse HEAD of the repository the APK lies in, and warns when the working copy has uncommitted changes; the panel shows it in the version card and gives it to a connected model through MCP, so a report on a version leads to the code that version was built from
CodeQL / pre-check (push) Failing after 3s
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 3s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-14 09:14:38 +07:00
DenozordecandClaude Fable 5.2 fdef56fa29 android: version 2.19.13 (181)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 5s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 5s
SonarCloud / pre-check (push) Failing after 5s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 6s
CodeQL / pre-check (push) Failing after 5s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 5s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 4s
CIFuzz / pre-check (push) Failing after 5s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-13 22:41:14 +07:00
DenozordecandClaude Fable 5.2 72de26d732 android: the diagnostics row «Russian sites» no longer shows a stale verdict: the screen waited a fixed 2.5 s for the direct probe round and then read whatever the last round had left, and a round with a timed-out foreign probe takes 6.7 s or more, so a «do not open» recorded during a network outage was shown minutes later on a working network; it now waits for a round that finished after the request (up to 8 s) and shows «unknown» otherwise; the «Direct round» line goes to diag.log; the report gives its checks 15 s instead of 10
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-13 22:41:14 +07:00
DenozordecandClaude Fable 5.2 76000dfc49 android: version 2.19.12 (180)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 3s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 3s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 14:16:43 +07:00
DenozordecandClaude Fable 5.2 fa68ea20fa android: DNS proxy sockets are no longer re-protected on every network change: they were added to the list of sockets protected again on a roam, from which nothing is ever removed, although they are closed after 30 s - one hour of use left 43 closed descriptors, each a failed VpnService.protect() when Wi-Fi appeared, and a reused descriptor number could have been pulled out of the tunnel; the diag log says «disconnect requested» instead of «user» for any deliberate disconnect (the trusted-network park was logged as the user's)
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 14:16:43 +07:00
DenozordecandClaude Fable 5.2 0549bb0358 android: version 2.19.11 (179)
CodeQL / pre-check (push) Failing after 3s
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
macOS / pre-check (push) Failing after 4s
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
SonarCloud / pre-check (push) Failing after 5s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 6s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 09:18:58 +07:00
DenozordecandClaude Fable 5.2 4eae01fcfe android: a tunnel the server dropped silently is noticed in about two minutes instead of never: the NAT keepalive tick sends a DPD once IPsec traffic went out and nothing at all came back for 90 s (charon.keep_alive_dpd_inbound; a session stayed «connected» for 18 min after the server went quiet); no timer of its own, no probe on an idle tunnel, without a path, or counted from before a suspend, and while answered probes are all that comes back the wait doubles up to 6 min; the tick also runs with forced UDP encapsulation without a NAT; diag.log gets the ESP in/out byte counters
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 09:18:58 +07:00
DenozordecandClaude Fable 5.2 352be74525 android: version 2.19.10 (178)
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 09:18:44 +07:00
DenozordecandClaude Fable 5.2 25754b5cc4 android: Routes rules can be deleted with one tap and undone: each rule row gets a trash button, the rule disappears at once and is really removed when the «Undo» snackbar goes away or the page is left (so undoing a package pattern does not reconnect the tunnel twice); tapping a rule opens a sheet with its on/off switch, the direction (direct / through the VPN, changed in place keeping the id) and delete; rows say «single address», «network», the number of resolved addresses or matching apps, long values wrap; the Routes tab shows what the rules do («1 via VPN · 2 direct · 1 off») and the hero no longer counts switched-off rules; mockup F_Rules, F_RuleEdit, F_RuleDeleted, F_Routing and their dark pairs
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 09:18:44 +07:00
DenozordecandClaude Fable 5.2 26b4edee66 android: version 2.19.9 (177)
CodeQL / pre-check (push) Failing after 3s
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 3s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 3s
SonarCloud / pre-check (push) Failing after 3s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 4s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 10:07:10 +07:00
DenozordecandClaude Fable 5.2 a8f32ed7df android: DNS chain diagnostics run at most once per 10 min instead of on every reconnect; Home probes every 30 s instead of 10 s; a DoT worker closes its TLS connection when it exits
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 10:07:09 +07:00
DenozordecandClaude Fable 5.2 8c5752cfbe android: direct TCP relay gets real flow control: a socket at EOF is no longer polled for input (the engine thread spun until the app took the last byte), reading pauses at 64 KB queued for the app instead of aborting the flow at 256 KB, the app's send window reopens only for what the socket accepted (large uploads over a slow uplink were reset), and acknowledged data pulls the rest at once instead of on the 2 s poll
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 10:07:09 +07:00
DenozordecandClaude Fable 5.2 2a81e5f05d android: version 2.19.8 (176)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 3s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 3s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 3s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 09:47:47 +07:00
DenozordecandClaude Fable 5.2 f075bf00fe android: a retry the device slept through is resumed by the watchdog alarm: the countdown runs in uptime and stood still in deep sleep, so a tunnel that dropped overnight came back only when the phone was picked up; while a retry is pending the wakeup alarm stays at 10 min instead of backing off to 1 h
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 09:45:56 +07:00
DenozordecandClaude Opus 5.5 b9ea35832c android: DoH/DoT probe asks one.one.one.one (then ya.ru) instead of example.com, which some servers drop (dns.shnt.top closes DoT / returns an empty 200); replies are checked for header, QR bit and id with clear errors («empty reply», «connection closed without a reply»); a failed probe is cached for 1 min, so one connect no longer probes 4 times; dns diag logs the VPN network's private DNS state; version 2.19.7 (175)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 22:11:20 +07:00
DenozordecandClaude Opus 5.5 c5c5f5d461 android: DoT closes the per-worker connection on any read error or id mismatch (a late reply would answer the next query and desync it forever); the connect probe no longer does an untimed host lookup for the log
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 20:26:41 +07:00
DenozordecandClaude Opus 5.5 59d989e956 android: own DoH/DoT DNS server — the tunnel's DNS becomes 198.18.0.53, the native DNS proxy forwards its UDP/53 to a local resolver (127.0.0.1) that sends each query to the user's https:// or tls:// server; probe at connect with fallback to the profile's DNS and an event, SERVFAIL on errors, check on «Save»; decisions, errors and per-period stats go to the diagnostic log without query names; version 2.19.6 (174)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 20:14:20 +07:00
DenozordecandClaude Opus 5.5 1401cd8087 Merge feature/update-api (2.19.4) into claude/shx-vpn-privacy-stability-a90292; version 2.19.5 (173); the crash event's «Send a report» opens the panel report like the log's button
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:48:20 +07:00
DenozordecandClaude Opus 5.5 27345bb24b android: version 2.19.3 (171)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:40:51 +07:00
Denozordec 3953c39a4e Merge commit '4a2581bb1' into claude/shx-vpn-privacy-stability-a90292 2026-11-08 23:34:05 +07:00
DenozordecandClaude Opus 5.5 2b4d0ef12b android: «the app closed unexpectedly» event with «Send a report» after a Java, native (daemon) or ANR death of the previous process; always-on/lockdown read from the running VpnService (the Settings.Global key never existed) with a warning when it gets turned off
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:34:05 +07:00
DenozordecandClaude Opus 5.5 68ee051ab2 android: version 2.19.4 (172) — обновления и отчёты через панель SHX VPN
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 3s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 8s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
- проверка обновлений через API панели (get.shnt.top/api/v1): подписанный запрос (HMAC),
  манифест с подписью Ed25519; старый бакет — только запасной путь при сетевой ошибке
- экраны обновления по макету: страница «Обновления» с каналом и кодом беты, шторки
  «Что нового», «Скачивание» (с отменой), «Обязательное обновление», «Не установлено»
- отправка отчёта из журнала в панель: код отчёта, запись в «Событиях», письмо как запасной путь;
  к отчёту прикладываются результаты проверки сети (checks.json) и diag.log
- исправлен вылет при скачивании обновления на Android 16.0 (setRequestPromotedOngoing есть только с API 36.1)
- кнопки шторок переносят текст на вторую строку, однословные уменьшаются
- задача Gradle uploadShx: сборка и загрузка APK в панель (scripts/upload-apk.mjs)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:38:45 +07:00
DenozordecandClaude Sonnet 5.5 4a2581bb12 android: version 2.19.2 (170)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 17:45:23 +07:00
DenozordecandClaude Sonnet 5.5 ada48f0ca1 android: the diagnostic log records why an established IKE SA went down (reauth, retransmit timeout, network change, user, other) with a per-day drop counter; plan section 8 added
Native signals for retransmit timeout and reauth are diagnostics only and change no state.
docs/energy-plan.md section 8 is the 2.20 plan for connection stability and energy use.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 17:45:23 +07:00
DenozordecandClaude Sonnet 5.5 bd1ad8390a claude: project environment — Sonnet 5.5, three read-only Haiku subagents, advisor rule
.claude/settings.json sets the primary model; .claude/agents/{search,grep,docs}.md are
read-only Haiku 5.5 subagents; CLAUDE.md imports AGENTS.md and holds the advisor rule.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 17:45:22 +07:00
DenozordecandClaude Sonnet 5.5 0e35a794c9 android: version 2.19.1 (169)
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 12:55:25 +07:00
DenozordecandClaude Sonnet 5.5 5ffb5a2dbb android: «How traffic goes» no longer says the app is not found on the first try: the check waits for the installed-apps list instead of a fixed 300 ms delay
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 12:50:50 +07:00
DenozordecandClaude Sonnet 5.5 ae06a58013 android: version 2.19.0 (168)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 3s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
macOS / pre-check (push) Failing after 5s
Linux / alpine (push) Skipped
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 7s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 12:30:09 +07:00
DenozordecandClaude Sonnet 5.5 9109eb8460 android: an unattended service start (watchdog, pause end, FGS retry) no longer wipes the password saved with the profile; smoke-test notes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 12:21:38 +07:00
DenozordecandClaude Sonnet 5.5 1ef8c983c7 android: keepalive/rekey alarms on elapsedRealtime with coalescing; BootReceiver re-arms pause and scenario alarms; scenarios survive a fresh process and run without network rules; watchdog-restored auto session parks again; NetworkManager tracks a network set; idle native engine goes dormant again; traffic history written every 5 min
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 11:48:27 +07:00
DenozordecandClaude Sonnet 5.5 072674d1a8 android: version 2.18.2 (167)
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 6s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 09:42:48 +07:00
DenozordecandClaude Sonnet 5.5 228f9f6004 android: deleting or updating a profile no longer crashes when its data source was already closed
A profile keeps the VpnProfileSqlDataSource it was loaded from, and close() nulls its database, so insert/update/delete on that profile hit a NullPointerException and the profile stayed in place. The data source now reopens the database on demand.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 09:41:29 +07:00
DenozordecandClaude Sonnet 5.5 6756d2fca5 android: version 2.18.1 (166)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / pre-check (push) Failing after 5s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 01:52:12 +07:00
DenozordecandClaude Sonnet 5.5 5998c0fc46 android: Home view model no longer re-reads the Wi-Fi SSID on every signal-strength tick (state recomputed only when the transports change); energy plan: no shared network-callback hub, why
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 01:44:03 +07:00
DenozordecandClaude Sonnet 5.5 f5b15a0394 android: health check skips probes while inbound tunnel traffic proves liveness (adaptive mode, real probe at least every 5 min) and probes a single target with the screen off; unit tests; energy plan notes keepalive stays at 45 s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 01:22:09 +07:00
DenozordecandClaude Sonnet 5.5 38e5fd84bb android: less idle CPU work: TUN reader waits on poll+eventfd instead of a 1 s select; scenario app polling stops with the screen and slows down when idle; site DNS refresh waits for the screen; ServerActivity and rememberNow loops follow the lifecycle; energy plan
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 01:18:15 +07:00
DenozordecandClaude Opus 5.5 e0113e3413 android docs: the Final 2026 mockup (143 artboard sources and canvas.json) with an artboard-to-code map; app overview, code map, localization and release guide; AGENTS.md updated; old UI plan marked as archive
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 4s
Linux / latest (apidoc) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 6s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:31:05 +07:00
DenozordecandClaude Opus 5.5 637b8061ed android: version 2.18.0 (165)
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 3s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 6s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:31:57 +07:00
DenozordecandClaude Opus 5.5 29095e087f android: de, pl, uk, zh-CN and zh-TW translations of all new strings and plurals; old English leftovers in pl/uk/zh-TW translated; short German and Ukrainian tab labels on one line; trusted-network hint centred; German keeps noun capitals in mid-sentence labels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 22:29:05 +07:00
DenozordecandClaude Opus 5.5 e3e6d51f6f android: no unattended start of a profile without a saved password (watchdog, network rules, scenarios, reserve, bridge): an event that opens the server instead; «password missing» ends the watchdog expectation; resume and restore keep a typed password; warning on the server page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 22:01:41 +07:00
DenozordecandClaude Opus 5.5 df1575fe27 android: one order for the network rules and the scenarios (top wins), hand actions beat a running scenario until it ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:35:17 +07:00
DenozordecandClaude Opus 5.5 a39993075e android: the rest of the UI in the Final 2026 style: setting rows as on the sub pages, kit colours and type everywhere, server picker labels, shortcut picker and remediation screens; the rules server moves to Scenarios, the old Trusted networks screen goes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:51:18 +07:00
DenozordecandClaude Opus 5.5 9ed278b440 android: mockup line icons everywhere, mockup dialog buttons, server picker sheet as on F_Servers; drop the unused old Home and routing parts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:33:42 +07:00
DenozordecandClaude Opus 5.5 16d4c72920 android: bridge question back in Help
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:11:51 +07:00
DenozordecandClaude Opus 5.5 1e32410fca android: system notifications as in the Final 2026 mockup: connecting with Stop, answers in suggestion pushes, Update / What is new, weekly summary
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:09:51 +07:00
DenozordecandClaude Opus 5.5 8880601ef6 android: DNS and ads as in the Final 2026 mockup: filtering resolvers (AdGuard, Cloudflare 1.1.1.2), own DNS, applied to the tunnel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:04:01 +07:00
DenozordecandClaude Opus 5.5 dcf8ace6e1 android: Home scenario hints as in the Final 2026 mockup (trusted network pill, rule suggestion), profile update from the error and expiry cards, a stop button on errors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:58:57 +07:00
DenozordecandClaude Opus 5.5 1a6fb85259 android: scenarios as in the Final 2026 mockup: network rules with own switches, user scenarios (Wi-Fi, mobile, app, time, roaming, whitelists) with an engine, app picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:47:53 +07:00
DenozordecandClaude Opus 5.5 5ca60d7066 android: resilience of F_Profile at work: backup ports, reserve server, bridge while whitelists are on
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:33:36 +07:00
DenozordecandClaude Opus 5.5 e7b801d584 android: server page as in the Final 2026 mockup; profile source, link updates with a diff sheet and a daily check, per-profile IKE fragmentation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:22:53 +07:00
DenozordecandClaude Opus 5.5 638c58f0e4 android: daily traffic history and the statistics screen as in the Final 2026 mockup; today's traffic on Home and the widget
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:08:13 +07:00
DenozordecandClaude Opus 5.5 92627da459 android: remove the pre-mockup Home parts (hero, banners, availability card, traffic tiles, glow)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:47:33 +07:00
DenozordecandClaude Opus 5.5 15ad5c1151 android: install-permission sheet before updating as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:42:18 +07:00
DenozordecandClaude Opus 5.5 92e2f4f069 android: connection steps on Home as in the Final 2026 mockup, read from the daemon log
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:39:26 +07:00
DenozordecandClaude Opus 5.5 a08c193a90 android: hint behind the system VPN consent window as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:36:09 +07:00
DenozordecandClaude Opus 5.5 8fbebed140 android: battery saving instructions screen as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:07:20 +07:00
DenozordecandClaude Opus 5.5 9c96c36fc6 android: all dialogs in the Final 2026 look (28dp card, 22/800 title, 50% scrim), login fields as form fields
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:01:25 +07:00
DenozordecandClaude Opus 5.5 ffa38d5f28 android: certificate expiry card on Home as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:55:39 +07:00
DenozordecandClaude Opus 5.5 e465797b5f android: certificates screen as in the Final 2026 mockup (from profiles, added, system; expiry colors)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:51:13 +07:00
DenozordecandClaude Opus 5.5 b4a311c84f android: notification settings as in the Final 2026 mockup (problems, new apps, updates)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:47:24 +07:00
DenozordecandClaude Opus 5.5 739068ccb9 android: help screen as in the Final 2026 mockup; log opens directly from settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:43:54 +07:00
DenozordecandClaude Opus 5.5 8cd704ed08 android: log screen as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:35:42 +07:00
DenozordecandClaude Opus 5.5 eb5a89623b android: server delete confirmation as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:31:32 +07:00
DenozordecandClaude Opus 5.5 f193661e68 android: quick settings tile states and widget sizes as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:25:38 +07:00
DenozordecandClaude Opus 5.5 53623ebb4a android: home screen widget in three sizes as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:18:47 +07:00
DenozordecandClaude Opus 5.5 db6c806d58 android: VPN notification as in the Final 2026 shade: protected title, pause and change actions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:12:41 +07:00
DenozordecandClaude Opus 5.5 6652970925 android: first-run onboarding and permissions screen as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:08:57 +07:00
DenozordecandClaude Opus 5.5 dc8f5a75e1 android: appearance, kill switch and update pages as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:04:12 +07:00
DenozordecandClaude Opus 5.5 fecef1135c android: import preview/error sheet and profile form as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:00:09 +07:00
DenozordecandClaude Opus 5.5 200697216d android: add-server sheet with QR scan and link, share-by-QR screen (Final 2026)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:49:51 +07:00
DenozordecandClaude Opus 5.5 434e5bad4e android: Servers, Settings and Apps direct screens as in the Final 2026 mockup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:43:13 +07:00
DenozordecandClaude Opus 5.5 4ff5ed11bb android: routing phase 3 and the Final 2026 design system (WIP)
- Routing: site and direct-address rules (sites resolved to addresses,
  refreshed on connect and every 30 min), package patterns can be
  switched off; unified Rules screen with add sheet and empty state;
  "How traffic goes" for a site, IP or app with reasons, reachability and
  one-tap rules; Recent apps (usage access) with failing apps; new-app
  "go direct?" suggestions in Events.
- Diagnostics screen (all-in-one check), "Fastest" server, pause until
  morning / until the network changes.
- Design system of the mockup: Manrope font, mockup palette for light and
  dark, ShxKit components (cards, rows, switch, buttons, chips, tabs,
  fields, sheets), mockup line icons; Home, nav bar, Routing, Rules,
  Recent, Events, Diagnostics and route check rebuilt on it; shared
  components restyled so the remaining screens pick up the look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:46:27 +07:00
DenozordecandClaude Opus 5.5 60252437ac android: home phase 2 - events inbox and problem notifications
- EventLog keeps what the app noticed and did by itself for 30 days on the
  device (events.json); repeats of the same event within 30 minutes are
  merged (x3), problems that go away are marked resolved.
- Recorded: connection errors and recovery, carrier whitelists on/off,
  health-check reconnects, auto-connect starting/parking the tunnel, the
  end of a pause, available updates.
- Problems are pushed on a new "Connection problems" channel, but only
  while the app is in the background (Home shows them already).
- «Events» screen (InboxActivity): filters (all, need attention,
  connection, routes, app), grouped by day, one action per event; opened
  from a bell with an unread badge in the Home header.
- Amber warning colours in the status palette, used for whitelists, no
  network and an unresponsive server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:54:01 +07:00
DenozordecandClaude Opus 5.5 75849beb90 android: home phase 1 - header, quick actions, pause, problem cards
- Connect tab gets the Shield-S header and, while connected, three quick
  actions: pause, switch server, "site not loading?" (route check).
- Pause VPN for 5/15/30/60 min (PauseManager + PauseReceiver): disconnects
  like a manual stop and reconnects on an alarm; auto-connect waits, any
  connect request cancels the pause. Home shows a countdown, "turn on now"
  and "+15 minutes".
- Connection errors become plain-language cards with one fixing action:
  no internet (tracked via a non-VPN network callback), server not
  responding (with the retry countdown and "other server"), server not
  found, sign-in rejected, server not verified, generic failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:36:34 +07:00
DenozordecandClaude Opus 5.5 8f21e16277 android: 2.17.1 - Shield-S launcher, shortcut and status bar icon
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 3s
SonarCloud / pre-check (push) Failing after 4s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 4s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 3s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 6s
CIFuzz / pre-check (push) Failing after 3s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
- adaptive launcher icon as vectors: purple background, white shield with
  the S cut out (even-odd), plus a monochrome layer for Android 13+ themed
  icons; profile shortcuts use the same icon
- vector legacy icon for Android 7.x in mipmap-anydpi, old strongSwan PNGs
  removed
- connected status bar icon is the Shield-S silhouette; connecting,
  warning and disconnected states keep their outlined shields

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:17:24 +07:00
DenozordecandClaude Opus 5.5 12a95d1e89 android: 2.17.0 - stability and battery fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:28:46 +07:00
DenozordecandClaude Opus 5.5 66688031cd android: small cleanups - DB close in finally, single profile reload
- HomeViewModel closes the profile database in finally blocks and relies
  on the VPN_PROFILES_CHANGED broadcast instead of reloading twice
- READ_EXTERNAL_STORAGE only up to API 32; drop a dead settings flag

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:20:28 +07:00
DenozordecandClaude Opus 5.5 7abac87140 android: run DNS/route diagnostics on their own executor
They can block for 10-30 s on a degraded network and delayed any profile
load (connect, retry, profile switch) queued behind them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:20:28 +07:00
DenozordecandClaude Opus 5.5 1b4fdc83d8 android: tile/widget/log fixes
- tile: query the configured profile once per listening session instead
  of on every state notification
- widget: DISCONNECTING is shown as such, with a Disconnect button
- log viewer: bounded to 5000 lines, tails only while visible, picks up
  a log created or restarted after opening, and no longer yanks the user
  back to the bottom while they scroll up

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:19:33 +07:00
DenozordecandClaude Opus 5.5 ce80c36be1 android: routing - package scans off the main thread, no needless reconnects
- computeExcludedPackages() (full PackageManager scan) runs on Default,
  not Main.immediate, on config changes and package add/remove
- updateConfig() ignores no-op transforms and reconnects when routing is
  switched off too (direct apps kept bypassing the tunnel until then)
- config is volatile and read after its version, so an old config can no
  longer be cached under a new version
- Direct apps loads the app list once per entry, without GET_META_DATA

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:19:33 +07:00
DenozordecandClaude Opus 5.5 07fb02790c android: CharonVpnService - handover race, cheaper network/notification updates
- underlying-network bookkeeping is guarded by one lock and re-applied
  after establish(), so a handover racing with it no longer leaves the
  tunnel attributed to a lost network
- use the capabilities passed to onCapabilitiesChanged (no IPC per
  signal-strength update); mCurrentProfile is volatile
- countdown-only notification re-posts are limited to one per 5 s
- the connected chronometer keeps its start time across re-posts

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:17:36 +07:00
DenozordecandClaude Opus 5.5 b0f353af90 android: whitelist - working recheck backoff, fewer probe rounds
- scheduled rechecks are forced: the 15/30 s steps were below FRESH_MS,
  so the unforced recheck returned early and the backoff chain died
- signal-strength-only capability changes are no longer network events
  (each one reset the backoff and launched a check)
- tunnel state transitions force a new round at most every 15 s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:17:36 +07:00
DenozordecandClaude Opus 5.5 514b15b1ca android: home/routing UI - poll only while visible, no idle animation
- traffic (1 s) and probe (10 s) loops run only while the Home screen is
  shown and the VPN is connected; no 1 s idle tick otherwise
- the refresh button no longer runs a second exit-IP trace
- the glow pulse is not composed at all while disconnected or with
  animations off (it redrew a transparent circle every frame)
- RTT sparkline appends each probe result once (it duplicated stale ones)
- Routing dead-host poll is lifecycle-aware

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:15:10 +07:00
DenozordecandClaude Opus 5.5 5f8b813eb4 android: updates - honour the charging constraint, real metered check
- drop the in-process 12 h loop: the VPN keeps the process alive, so it
  checked and pre-downloaded on battery, defeating the worker constraint
- the worker now waits for the check and a silent download it starts
- metered is judged by the physical network: the VPN reports itself
  unmetered, so pre-downloads ran over cellular while connected

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:15:10 +07:00
DenozordecandClaude Opus 5.5 6668dcfb56 android: health check - ping the server only when it can matter
- WITH_TUNNEL mode pings the server only once the external targets fail
  (no ping fork + DNS lookup outside the tunnel on every healthy cycle;
  an ICMP-blocking server no longer forces fast polls)
- initial battery-low state from the sticky ACTION_BATTERY_CHANGED
- non-state notifications no longer restart a pending cycle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:12:22 +07:00
DenozordecandClaude Opus 5.5 1eb1dfe317 android: RU list - no reconnect for an unchanged list, failure backoff
- same SHA-256 as the applied list: only bump the timestamp, no parse,
  save or tunnel reconnect (it tore a healthy tunnel down daily)
- a failed download is not retried on every cold start (3 h backoff)
- the saved list is read and parsed off the main thread at startup
- switching the split off in system mode reconnects to drop the routes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:12:22 +07:00
DenozordecandClaude Opus 5.5 cf89cec20e android: watchdog backs off whenever a live process owns recovery
Retrying, connecting or whitelist-blocked sessions kept the 60 s alarm and
the 10 min Doze wakeup for hours although a live process makes the alarm
useless. They now share the connected backoff (5 min / 60 min).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:12:22 +07:00
DenozordecandClaude Opus 5.5 24e536b9b9 android: updates - no stuck Downloading state, thread-safe singleton
After a silent pre-download the state stayed Downloading, so tapping the
"update ready" notification did nothing. It now returns to Available;
an install request without a known update (e.g. after a process restart)
re-checks and installs when found.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:40 +07:00
DenozordecandClaude Opus 5.5 e6c893219c android: DiagLog thread-safe timestamps; auto-connect survives stop/start
- SimpleDateFormat is now used under the lock; rotation counts bytes
- AutoConnectManager.stop() clears pendingEvaluate, whose reset runnable
  it removes, so later connects are not silently swallowed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:40 +07:00
DenozordecandClaude Opus 5.5 01c398f2f7 android: tile/control activity - no bind leaks, no callbacks after destroy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:40 +07:00
DenozordecandClaude Opus 5.5 f2e4ffe860 android: VpnStateService - single retry countdown, isolated listeners
- remove pending RETRY_MSG on reset/set: a Retry tap during a backoff
  started a second countdown chain (double-speed ticks, two reconnects)
- notify listeners over a copy with per-listener error handling
- disconnect() tolerates the VPN service not running

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:40 +07:00
DenozordecandClaude Opus 5.5 358dcb94b2 android: CharonVpnService - safer foreground and teardown handling
- DISCONNECT (plain startService) no longer promotes to the foreground,
  and startForeground() refusals on Android 12+ are logged, not fatal
- drop the placeholder notification when nothing was running, so the
  service does not stay in the foreground with a stale Disabled state
- onDestroy: shutdownNow/await the profile executor before closing the
  database; profile loads catch errors instead of killing the process
- unbind by bind result, not by mService (binding leaked if destroyed
  before onServiceConnected)
- the connection thread's crash guard can no longer throw itself

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:39 +07:00
DenozordecandClaude Opus 5.5 2b40eebf5b android: close TCP probe sockets right after connecting
tcpPing never closed its socket: every health/whitelist/home probe leaked
an fd until GC and the peer's later FIN/RST woke the radio again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:09:39 +07:00
DenozordecandClaude Opus 5.5 793ca1b410 android: native - hold charon_mutex while reading routing engine stats
getRoutingStats/getDeadDirectTargets are polled from the UI once a second;
a concurrent disconnect frees the engine under charon_mutex, so reading it
without the lock was a use-after-free.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:05:09 +07:00
DenozordecandClaude Opus 5.5 5e38fc2f76 android: keep the BETA badge on one line on narrow mode cards
CodeQL / analyze (python) (push) Skipped
FreeBSD / freebsd (14.4) (push) Skipped
Linux / pre-check (push) Failing after 4s
Linux / latest (clang, no, default) (push) Skipped
Linux / latest (clang, no-testable-ke) (push) Skipped
Linux / latest (clang, yes, default) (push) Skipped
Linux / latest (yes, ld) (push) Skipped
Linux / older (gcc, ubuntu-22.04, nm) (push) Skipped
Linux / alpine (push) Skipped
macOS / pre-check (push) Failing after 4s
SonarCloud / pre-check (push) Failing after 3s
SonarCloud / sonarcloud (push) Skipped
Windows / pre-check (push) Failing after 3s
CodeQL / pre-check (push) Failing after 4s
CodeQL / analyze (ruby) (push) Skipped
FreeBSD / pre-check (push) Failing after 3s
Linux / latest (apidoc) (push) Skipped
Linux / latest (clang, yes, fuzzing) (push) Skipped
Linux / latest (dist) (push) Skipped
Linux / latest (gcc, no, default) (push) Skipped
Linux / latest (gcc, yes, default) (push) Skipped
Linux / latest (no-testable-ke) (push) Skipped
Linux / crypto (ubuntu-latest, botan) (push) Skipped
Linux / older (clang, ubuntu-22.04, all) (push) Skipped
TKM / pre-check (push) Failing after 4s
Windows / cross-compile (win32) (push) Skipped
Windows / cross-compile (win64) (push) Skipped
Android / pre-check (push) Failing after 5s
CIFuzz / pre-check (push) Failing after 4s
CodeQL / analyze-cpp (push) Skipped
FreeBSD / freebsd (15.0) (push) Skipped
Linux / latest (clang, no-dbg) (push) Skipped
Linux / latest (clang, yes, all) (push) Skipped
Linux / latest (gcc, no, all) (push) Skipped
Linux / latest (nm) (push) Skipped
Linux / latest (no-dbg) (push) Skipped
macOS / macos (macos-14) (push) Skipped
macOS / macos (macos-latest) (push) Skipped
TKM / tkm (push) Skipped
Windows / native (x86_64, mingw64, win64) (push) Skipped
Android / android (push) Skipped
CIFuzz / fuzzing (undefined) (push) Skipped
Linux / latest (clang, no, all) (push) Skipped
Linux / latest (clang, no, printf-builtin) (push) Skipped
Linux / latest (coverage) (push) Skipped
Linux / latest (gcc, no, printf-builtin) (push) Skipped
Linux / latest (gcc, yes, all) (push) Skipped
Linux / crypto (ubuntu-22.04, openssl-sys) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-3) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-4) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-sys) (push) Skipped
Linux / older (gcc, ubuntu-22.04, all) (push) Skipped
Windows / native (i686, mingw32, win32) (push) Skipped
CIFuzz / fuzzing (address) (push) Skipped
Linux / crypto (ubuntu-latest, openssl-awslc) (push) Skipped
Linux / crypto (ubuntu-latest, wolfssl) (push) Skipped
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:55:19 +07:00
DenozordecandClaude Opus 5.5 c23d4dad8b android: 2.16.0 - Routing 2.0: one direct-apps list, inline RU mode, no per-profile app picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:48:33 +07:00
DenozordecandClaude Opus 5.5 e2ce8420a7 android: remove per-profile app picker, rule-set UI and SelectedApplicationsActivity
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:48:00 +07:00
DenozordecandClaude Opus 5.5 488c0aa210 android: Routing tab redesign - RU sites card, direct apps screen, advanced pages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:47:59 +07:00
DenozordecandClaude Opus 5.5 48f1ed7fb8 android: routing 2.0 strings (en/ru/de), drop obsolete rule-set strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:47:59 +07:00
DenozordecandClaude Opus 5.5 389712bba3 android: global direct-apps routing model, migration, single-source CharonVpnService excludes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:47:58 +07:00