Skip to content

Releases

v1.12.5

Choose a tag to compare

@github-actions github-actions released this 10 Nov 04:42
6eda5e6

Changes

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

Choose a tag to compare

@github-actions github-actions released this 01 Nov 02:13
cb19cc3

Changes

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

Choose a tag to compare

@github-actions github-actions released this 30 Oct 02:41
e9830c9

Changes

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

Choose a tag to compare

@github-actions github-actions released this 24 Oct 17:07
0ffd641

Changes

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

Choose a tag to compare

@github-actions github-actions released this 24 Oct 16:19
v1.12.0
873dca4

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:// and ss:// (SIP002 and legacy)
    as well as vless://. SIP003 plugin links are refused with the plugin's
    name, since Xray-core cannot run plugins; allowInsecure is 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
    routed 0.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

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:46
v1.11.0
37cd6b4

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 policy and api settings 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 log section no longer
    fails with "invalid config format".

  • VLESS link import: WebSocket and gRPC links work. Before, they all got
    the xtls-rprx-vision flow, which Xray rejects outside TCP. Path, host,
    service name and ALPN are kept, security=tls links 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

v1.11.0-rc3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:36
v1.11.0-rc3
37cd6b4

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 policy and api settings 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 log section no longer
    fails with "invalid config format".

  • VLESS link import: WebSocket and gRPC links work. Before, they all got
    the xtls-rprx-vision flow, which Xray rejects outside TCP. Path, host,
    service name and ALPN are kept, security=tls links 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

v1.11.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:09
v1.11.0-rc2
4230b20

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 policy and api settings 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 log section no longer
    fails with "invalid config format".

  • VLESS link import: WebSocket and gRPC links work. Before, they all got
    the xtls-rprx-vision flow, which Xray rejects outside TCP. Path, host,
    service name and ALPN are kept, security=tls links 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

v1.11.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Oct 13:56
v1.11.0-rc1
c9ab6d8

What's Changed

  • Modernize build, CI/release, app ID and multi-instance fixes by @franticplant in #1

New Contributors

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.