Repository navigation
Releases
0.17.58.6
New
- Optional GeoIP annotation by the real exit IP during the speed test. A speed test can now learn where a profile actually exits, not just where its server sits — this also annotates proxy chains and balancers, which have no server address of their own. Enabled in Settings → «Testing» → «Annotate GeoIP from the exit IP» (off by default). The echo service list is configurable.
Improved
- Settings: the icon-less preference rows received icons.
0.17.58.5
Settings are now grouped into collapsible sections. The global settings screen is organized into nine sections — Connection and VPN, Testing, Route settings, DNS settings, Inbound settings, Protocol settings, Display and interface, Diagnostics, Misc settings. Each entry opens with all sections collapsed. No preference was renamed or removed — existing setups are unaffected.
Fixed
- GeoIP lookup is now robust against provider failures:
- A network failure on the first provider no longer aborts the whole lookup — the remaining providers in the chain are tried.
- The retired freeipapi.com endpoint was replaced with its live successor (free.freeipapi.com); chains stored before this update migrate automatically.
- An unreachable provider (timeout, DNS failure) now opens the circuit breaker instead of being retried at full timeout on every lookup.
- Failed lookups are no longer cached: an «Unknown» country result or a DNS error is retried on the next run, not replayed until the app restarts.
- Editing the provider chain or installing/deleting a GeoIP database now drops cached results.
- A GeoIP database entry whose file has been deleted no longer passes the pre-flight check.
- URL test: single-round runs now show the full progress line («15/70 • 1/1 • 32/70») instead of a bare profile counter.
0.17.58.4
Fixed the URL-test dialog crash in R8 release builds.
- fix(urltest): disabled change animations in the test-result list. R8 release builds crashed with
trying to unhide a view that was not hidden/view is not a child, cannot hide(RecyclerView 1.3.2) while a URL test was running — at the start of a retry round on multi-round runs, and near the end of a check on single-source groups. Root cause: payload-lessnotifyItemChangedmadeDefaultItemAnimatorcross-fade every row update (old holder hidden viaChildHelper.hide), while the dialog measures its list twice per frame (AlertDialogLayout); the R8 build's faster timings exposed the hidden-views bookkeeping race. WithsupportsChangeAnimations = falsethe holder is rebound in place, nothing is ever hidden, and the crash site is unreachable. Debug builds were never affected. - Row status now updates instantly without the old/new card cross-fade.
Exclave Next 0.17.58.3
About screen and project identity now point to Exclave Next itself:
- About → version and GitHub links open Fandaal/ExclaveNext instead of
the upstream repository. - New: Check for updates (Settings → About) — queries the fork's latest
GitHub release, compares it with the installed version, and offers a
download link when a newer release exists. - README rewritten for the fork: what Next adds over upstream, download
section (both ABIs, signing certificate hash), relationship with upstream,
build instructions, license, and a short Russian summary.
arm64-v8a APK attached; the armeabi-v7a (Android 5.0+) build follows from CI.
Exclave Next 0.17.58.2
Hotfix for 0.17.58.1.
Bug: in release builds every MaxMind database was rejected with
"Not a MaxMind database: No constructor on class kotlin.TuplesKt with the
MaxMindDbConstructor annotation was found" — both databases already on disk
and freshly downloaded ones (the update spinner ran, then nothing installed).
Cause: R8. 0.17.58.1 was the first release build that contained the GeoIP
database manager at all; debug builds never run R8, so the breakage was
invisible until now. R8 folded com.maxmind.db.Metadata and the geoip2
model/record classes into unrelated merge targets and stripped the
@MaxMindDbConstructor annotation attributes, which the MaxMind reader looks
up through runtime reflection.
Fix: keep-rules for com.maxmind.db / geoip2.model / geoip2.record plus
-keepattributes RuntimeVisibleAnnotations — verified in the shipped dex:
all classes present, annotation present, no merge residue.
Also: long database file names now truncate with a middle ellipsis instead
of wrapping mid-word ("GeoLite2-Country.mmd / b").
Exclave Next 0.17.58.1
Exclave Next 0.17.58.1 — upstream 0.17.58 plus the Next feature set.
Upstream 0.17.58: HTTP/2 CONNECT-UDP fix, TrustTunnel Deep Link v2, LibExclaveCore/Gradle updates.
Next features since 0.17.57:
- Multi-source groups: several updatable subscriptions + manual configs per group
- GeoIP settings: configurable resolver chain (online APIs + local MaxMind DBs), DB manager, lookup trace
- GeoIP annotation replaces config names (flag + country + ISP); speed-test markers on names
- Multi-select configs in a group with bulk actions (URL test, speed test, GeoIP, resolve, share)
- URL test rework: retry rounds walk the list again, three-part counter, follow-scroll restored
- Speed test: configurable rounds/timeout/ceiling, dead-marker, live-ping counter
- Snackbar queue: updates of multiple subscriptions report one by one, never lost under dialogs
- Group UI: long-press a group tab opens the group menu; update dialogs name the subscription
- Search keeps its filter across reloads, test dialogs and selection actions
- Active profile: thin card outline instead of the left stripe, no flicker on switch
- Entry-hop balancer in proxy chains (sub-chain per member, via-prefixed inner tags)