Repository navigation
Releases
v1.12.5
Changes
- Xray-core updated to v26.11.9, built with Go 1.27.3.
- Geo data updated to 202611100356.
Full Changelog: v1.12.4...v1.12.5
Built by GitHub Actions from 6eda5e6dfbffd63f48ceb858c900c42749157abf with Xray-core v26.11.9.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.12.5 rebuilds these APKs from source and checks they match.
v1.12.4
Changes
- Xray-core updated to v26.10.31, built with Go 1.27.3.
- Geo data updated to 202611010038.
Full Changelog: v1.12.3...v1.12.4
Built by GitHub Actions from cb19cc32d7ad8bc91fc6e9cb39b8ff7e62302daa with Xray-core v26.10.31.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.12.4 rebuilds these APKs from source and checks they match.
v1.12.3
Changes
- Xray-core updated to v26.10.29, built with Go 1.27.3.
- Geo data updated to 202610300129.
Full Changelog: v1.12.2...v1.12.3
Built by GitHub Actions from e9830c9b3282e0e06fa3ffeeab9f058da9cbd758 with Xray-core v26.10.29.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.12.3 rebuilds these APKs from source and checks they match.
v1.12.2
Changes
- Xray-core updated to v26.10.21, built with Go 1.27.3.
- Geo data updated to 202610240012.
Full Changelog: v1.12.1...v1.12.2
Built by GitHub Actions from 0ffd641d16e89ca78800e8fff54b13f4100ccb31 with Xray-core v26.10.21.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.12.2 rebuilds these APKs from source and checks they match.
v1.12.0
Changes
- History and activity: the app now records each VPN or core-only session,
every Xray run, traffic per minute and events such as network changes,
imports, declined permissions and connectivity tests. Activity shows an
overview, sessions, an event timeline and per-session detail; the dashboard
gains a live throughput chart and a Today card. Logs are kept per session
(the last 20), and everything stays on the device. - Export: history exports as a zip with
summary.txt, session and run
CSVs, hourly traffic,events.jsonl, session logs and a manifest. IPs,
domains and UUIDs are redacted by default. - History settings: recording on or off, retention of 7, 30, 90 or 365
days, space used and clear. - Share-link import: clipboard import now accepts
vmess://(v2rayN
base64 JSON and the URI form),trojan://andss://(SIP002 and legacy)
as well asvless://. SIP003 plugin links are refused with the plugin's
name, since Xray-core cannot run plugins;allowInsecureis not imported. - Bypass LAN now works: the VPN routes the complement of private,
link-local and multicast ranges. Before, it added the LAN ranges and still
routed0.0.0.0/0, so LAN traffic went through the tunnel either way. - Connecting from an instance chip or the quick-settings tile now follows
the same path as the main switch: runtime permissions, VPN consent and
core-only mode are respected. The tile opens the app when it needs the
user, instead of doing nothing or starting a VPN with no core. - Notification permission is requested before connecting on Android 13+,
so the running service's notification is visible. - Traffic stats for imported configs are no longer always 0: untagged
outbounds get a tag at launch. - Failed cores are counted as failed sessions instead of staying
"connecting". - The instance registry moved out of the config directory, so it no
longer appears in the config list as "instances" or gets included in
backups. - Localization: the dashboard, config list and settings use string
resources, with Indonesian, Russian and Chinese translations. The
Indonesian, Russian and Chinese store descriptions were rewritten. - Repo and CI: CodeQL scanning for Java/Kotlin and Actions, SECURITY.md,
CONTRIBUTING.md, issue forms and a PR template.
Build and release
- Releases are signed with a dedicated release key. They include
SHA256SUMS, an SPDX SBOM and Sigstore attestations, and their builds are
checked for reproducibility. - CI checks license headers, formatting (ktfmt), unit tests and lint on every
push and pull request.
Full Changelog: v1.11.0...v1.12.0
Built by GitHub Actions from 873dca47ce684bc58153f04549645ae00a5f5cfa with Xray-core v26.3.27.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.12.0 rebuilds these APKs from source and checks they match.
v1.11.0
Changes
-
New app ID:
io.github.franticplant.simplexray. This release installs
as a separate app from lhear's SimpleXray (com.simplexray.an) and from
earlier builds of this fork. Export your configs from the old app and
import them here. -
Multiple instances: the dashboard showed "0 Active Instance(s)" and
no per-instance stats, and the config switch could start an instance but
not stop it. Both work now, and the totals cover every instance. -
Health tracking: each instance shows Starting, Running, Restarting or
Failed. A config that fails to start (bad JSON, port already in use) shows
Xray's own error instead of silently showing as stopped. A core that
crashes after running is restarted automatically with backoff. The
notification says when the connection is reconnecting or has failed. -
Switching configs while connected no longer leaves the old core
running and holding the ports the new one needs. -
Live speed: upload and download speed per instance and in total.
-
Your config's own
policyandapisettings are kept; before, enabling
stats overwrote them. -
Security: on Android 10–12, other apps could send the service's
internal broadcasts. Those receivers are now private on every Android
version. -
Themed icon: the launcher icon follows the system theme on Android 13
and later. -
Toolchain: Gradle 9.8, Android Gradle Plugin 9.4 with built-in Kotlin
2.4, NDK r30. The app targets Android 16 (API 36) and compiles against API 37. -
Dependencies: Compose BOM 2026.09, AndroidX, gRPC 1.85 with
protobuf-lite (smaller APK), OkHttp 5, LazyColumnScrollbar 3, Reorderable 3. -
hev-socks5-tunnel 2.19.1. The app now notices when the tunnel fails to
start, and stops instead of reporting itself connected. -
Geo data updated to 202610210020; Xray-core v26.3.27 is now built with
Go 1.26.10. -
Fix: saving or importing a config that has no
logsection no longer
fails with "invalid config format". -
VLESS link import: WebSocket and gRPC links work. Before, they all got
thextls-rprx-visionflow, which Xray rejects outside TCP. Path, host,
service name and ALPN are kept,security=tlslinks get proper TLS
settings, and names with spaces, emoji or/import cleanly. -
simplexray://import: a corrupt or truncated link no longer hangs the
app.
Build and release
- Releases are signed with a dedicated release key. They include
SHA256SUMS, an SPDX SBOM and Sigstore attestations, and their builds are
checked for reproducibility. - CI checks license headers, formatting (ktfmt), unit tests and lint on every
push and pull request.
Full Changelog: v1.11.0-rc2...v1.11.0
Built by GitHub Actions from 37cd6b4d23f5aacf42577b49719dc5d6f803c943 with Xray-core v26.3.27.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.11.0 rebuilds these APKs from source and checks they match.
v1.11.0-rc3
This is the release candidate for 1.11.0. It replaces v1.11.0-rc2, whose
reproducible-build check rebuilt the Xray core with the runner's default NDK
instead of the pinned one; that is fixed in this build.
Changes
-
New app ID:
io.github.franticplant.simplexray. This release installs
as a separate app from lhear's SimpleXray (com.simplexray.an) and from
earlier builds of this fork. Export your configs from the old app and
import them here. -
Multiple instances: the dashboard showed "0 Active Instance(s)" and
no per-instance stats, and the config switch could start an instance but
not stop it. Both work now, and the totals cover every instance. -
Health tracking: each instance shows Starting, Running, Restarting or
Failed. A config that fails to start (bad JSON, port already in use) shows
Xray's own error instead of silently showing as stopped. A core that
crashes after running is restarted automatically with backoff. The
notification says when the connection is reconnecting or has failed. -
Switching configs while connected no longer leaves the old core
running and holding the ports the new one needs. -
Live speed: upload and download speed per instance and in total.
-
Your config's own
policyandapisettings are kept; before, enabling
stats overwrote them. -
Security: on Android 10–12, other apps could send the service's
internal broadcasts. Those receivers are now private on every Android
version. -
Themed icon: the launcher icon follows the system theme on Android 13
and later. -
Toolchain: Gradle 9.8, Android Gradle Plugin 9.4 with built-in Kotlin
2.4, NDK r30. The app targets Android 16 (API 36) and compiles against API 37. -
Dependencies: Compose BOM 2026.09, AndroidX, gRPC 1.85 with
protobuf-lite (smaller APK), OkHttp 5, LazyColumnScrollbar 3, Reorderable 3. -
hev-socks5-tunnel 2.19.1. The app now notices when the tunnel fails to
start, and stops instead of reporting itself connected. -
Geo data updated to 202610210020; Xray-core v26.3.27 is now built with
Go 1.26.10. -
Fix: saving or importing a config that has no
logsection no longer
fails with "invalid config format". -
VLESS link import: WebSocket and gRPC links work. Before, they all got
thextls-rprx-visionflow, which Xray rejects outside TCP. Path, host,
service name and ALPN are kept,security=tlslinks get proper TLS
settings, and names with spaces, emoji or/import cleanly. -
simplexray://import: a corrupt or truncated link no longer hangs the
app.
Build and release
- Releases are signed with a dedicated release key. They include
SHA256SUMS, an SPDX SBOM and Sigstore attestations, and their builds are
checked for reproducibility. - CI checks license headers, formatting (ktfmt), unit tests and lint on every
push and pull request.
Full Changelog: v1.11.0-rc2...v1.11.0-rc3
Built by GitHub Actions from 37cd6b4d23f5aacf42577b49719dc5d6f803c943 with Xray-core v26.3.27.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.11.0-rc3 rebuilds these APKs from source and checks they match.
v1.11.0-rc2
This is the release candidate for 1.11.0. It replaces v1.11.0-rc1, whose
reproducible-build check failed; that is fixed in this build.
Changes
-
New app ID:
io.github.franticplant.simplexray. This release installs
as a separate app from lhear's SimpleXray (com.simplexray.an) and from
earlier builds of this fork. Export your configs from the old app and
import them here. -
Multiple instances: the dashboard showed "0 Active Instance(s)" and
no per-instance stats, and the config switch could start an instance but
not stop it. Both work now, and the totals cover every instance. -
Health tracking: each instance shows Starting, Running, Restarting or
Failed. A config that fails to start (bad JSON, port already in use) shows
Xray's own error instead of silently showing as stopped. A core that
crashes after running is restarted automatically with backoff. The
notification says when the connection is reconnecting or has failed. -
Switching configs while connected no longer leaves the old core
running and holding the ports the new one needs. -
Live speed: upload and download speed per instance and in total.
-
Your config's own
policyandapisettings are kept; before, enabling
stats overwrote them. -
Security: on Android 10–12, other apps could send the service's
internal broadcasts. Those receivers are now private on every Android
version. -
Themed icon: the launcher icon follows the system theme on Android 13
and later. -
Toolchain: Gradle 9.8, Android Gradle Plugin 9.4 with built-in Kotlin
2.4, NDK r30. The app targets Android 16 (API 36) and compiles against API 37. -
Dependencies: Compose BOM 2026.09, AndroidX, gRPC 1.85 with
protobuf-lite (smaller APK), OkHttp 5, LazyColumnScrollbar 3, Reorderable 3. -
hev-socks5-tunnel 2.19.1. The app now notices when the tunnel fails to
start, and stops instead of reporting itself connected. -
Geo data updated to 202610210020; Xray-core v26.3.27 is now built with
Go 1.26.10. -
Fix: saving or importing a config that has no
logsection no longer
fails with "invalid config format". -
VLESS link import: WebSocket and gRPC links work. Before, they all got
thextls-rprx-visionflow, which Xray rejects outside TCP. Path, host,
service name and ALPN are kept,security=tlslinks get proper TLS
settings, and names with spaces, emoji or/import cleanly. -
simplexray://import: a corrupt or truncated link no longer hangs the
app.
Build and release
- Releases are signed with a dedicated release key. They include
SHA256SUMS, an SPDX SBOM and Sigstore attestations, and their builds are
checked for reproducibility. - CI checks license headers, formatting (ktfmt), unit tests and lint on every
push and pull request.
Full Changelog: v1.11.0-rc1...v1.11.0-rc2
Built by GitHub Actions from 4230b20f789e39f4ecd00809e7c52ed5d691dea2 with Xray-core v26.3.27.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.11.0-rc2 rebuilds these APKs from source and checks they match.
v1.11.0-rc1
What's Changed
- Modernize build, CI/release, app ID and multi-instance fixes by @franticplant in #1
New Contributors
- @franticplant made their first contribution in #1
Full Changelog: https://github.com/franticplant/simplexray-custom/commits/v1.11.0-rc1
Built by GitHub Actions from c9ab6d8703ccbb716f0d5c9fc79ceff3c9fc0eba with Xray-core v26.3.27.
Every file has a signed build-provenance and SBOM attestation. To verify a download:
gh attestation verify <file> -R franticplant/simplexray-custom
or compare it against SHA256SUMS. The build is reproducible:
scripts/verify-reproducible.sh v1.11.0-rc1 rebuilds these APKs from source and checks they match.