Releases: ghostlane-project/ghostlane
Release list
Ghostlane 1.0.444
What's new in v1.0.444
Changes since v1.0.443:
- feat(olcrtc): VK Calls rooms, and a Chrome-like DTLS handshake to try (ea8a34d)
- docs(readme): what the app does as of 1.0.443 and #73 (1f49095)
- docs(store): the Play graphic without overlaps; the privacy policy names every address the app contacts (6654096)
- feat(desktop): olcRTC rooms route by the engine's rules in the Linux tunnel; macOS and Windows resolve on the system's DNS (a797f77)
- docs(release-notes): retire the notes shipped in v1.0.443 (3eeb2b7)
Computers: Bypass in olcRTC rooms on Linux, and your network's own DNS on macOS and Windows
On Linux, Bypass Russia, Iran and China, and your own "always direct" rules, now work in olcRTC rooms: the country's sites and your local network connect directly, and everything else goes through the room. With other kinds of server, Linux still sends everything through the tunnel, and the routing screen says so. On macOS and Windows, olcRTC now looks names up on your network's own DNS servers first and on a public one after them, so it no longer waits on networks that block public DNS. In the Windows tunnel, routing still carries everything; the screen now says to switch to proxy mode for it.
olcRTC: VK Calls rooms
Ghostlane now connects to olcRTC rooms on VK Calls, the fifth meeting service after Yandex Telemost, WB Stream, Sber SaluteJazz and Jitsi. Import a link that names vkcalls, or choose VK Calls as the service in a location's settings and paste the call's join link (https://vk.ru/call/join/…). VK Calls rooms run over the VP8 channel.
olcRTC: a Chrome-like handshake to try (experimental)
Connection settings have a new switch, off by default. With it on, olcRTC rooms open their encrypted connection the way Chrome does, not the way their WebRTC library does. Try it if rooms fail to connect on your network; changing it reconnects an active tunnel, and room checks use the same handshake.
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
6f83308bde98948b9a88a4ccc010fd326792e3bd - Source branch:
main - olcrtc revision:
f9edaa7f1ab5b00238eaf72b6dac7540dd344037(v0.0.0-20260929121845-f9edaa7f1ab5), what every platform here was built from - App version:
1.0.444 - Android versionCode:
444 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/36575996684
Gate
Release gate · mode release · app 1.0.444 · engine f9edaa7f1ab5 (v0.0.0-20260929121845-f9edaa7f1ab5; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 6 | 1 (1 known) |
vkcalls/cli |
default | 1 | present | 1 | 0 |
vkcalls/mobile |
lean | 7 | present | 7 | 0 |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine f9edaa7f1ab5, app 1.0.444
1 of 48 cells failed · Linux/ubuntu24 · 872 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 11421 ms | 25 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 14827 ms (bridge 3 s late), ready 18218 ms (bridge 8 s late) | 41 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 10322 ms | 25 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 749 ms | 15 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.3 Mbit/s, on-top p95 3653 ms | 96 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.5 Mbit/s, on-top p95 2200 ms | 31 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 14323 ms (bridge 3 s late), ready 18095 ms (bridge 8 s late) | 40 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.3 MiB, RSS peak 44.0 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 9466 ms | 20 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 10577 ms | 30 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 10824 ms | 12 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 9166 ms | 21 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 10037 ms | 29 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 8946 ms | 108 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 797 ms | 16 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
❌ fail (known: #49): throughput_down_bps 870995.1134968506 < 1400000; on_top_p95_ms 7393 > 5000 | ↓ 0.9 Mbit/s, on-top p95 7393 ms | 578 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
✅ pass (known: #49) | ↑ 5.0 Mbit/s, on-top p95 1087 ms | 34 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.6 MiB, RSS peak 46.6 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 3756 ms | 10 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 3963 ms | 30 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1243 ms | 22 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 10.5 Mbit/s, on-top p95 3272 ms | 48 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 9.1 Mbit/s, on-top p95 2008 ms | 19 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 3 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 11.9 MiB, RSS peak 50.5 MiB | 0 s |
engine-linux/vkcalls/vp8channel/cli/S0 |
✅ | handshake 7201 ms | 8 s |
engine-linux/vkcalls/vp8channel/mobile/S0 |
✅ | handshake 6790 ms | 18 s |
engine-linux/vkcalls/vp8channel/mobile/S1 |
✅ | connect p95 740 ms | 18 s |
engine-linux/vkcalls/vp8channel/mobile/S2 |
✅ | ↓ 14.2 Mbit/s, on-top p95 1919 ms | 36 s |
engine-linux/vkcalls/vp8channel/mobile/S3 |
✅ | ↑ 13.8 Mbit/s, on-top p95 1119 ms | 12 s |
engine-linux/vkcalls/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/vkcalls/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/vkcalls/vp8channel/mobile/S7 |
✅ | heap peak 12.1 MiB, RSS peak 49.1 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 3829 ms | 39 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 3276 ms | 40 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 3569 ms | 22 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 3253 ms | 22 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 604 ms | 15 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.3 Mbit/s, on-top p95 3416 ms | 80 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 6.2 Mbit/s, on-top p95 3283 ms | 27 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 14.0 MiB, RSS peak 52.4 MiB | 0 s |
1 known failure is tracked by an issue and does not fail the gate.
Compared with v1.0.443 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.51 Mbit/s | 5.30 Mbit/s | -4% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.68 Mbit/s | 5.51 Mbit/s | -3% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 8.3 MiB | 8.3 MiB | +0% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 43.8 MiB | 44.0 MiB | +1% |
engine-linux/salutejazz/datachannel/mobile/S2 |
throughput_down_bps | 0.25 Mbit/s | 0.87 Mbit/s | +247% |
engine-linux/salutejazz/datachannel/mobile/S3 |
throughput_up_bps | 1.97 Mbit/s | 4.98 Mbit/s | +152% |
engine-linux/salutejazz/datachannel/mobile/S7 |
heap_peak_bytes | 9.7 MiB | 9.6 MiB | -1% |
engine-linux/salutejazz/datachannel/mobile/S7 |
rss_peak_bytes | 48.8 MiB | 46.6 MiB | -4% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 9.53 Mbit/s | 10.46 Mbit/s | +10% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 7.89 Mbit/s | 9.05 Mbit/s | +15% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 11.4 MiB | 11.9 MiB | +4% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 48.8 MiB | 50.5 MiB | +4% |
| `engine-linux... |
Nightly Ghostlane builds
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
6f83308bde98948b9a88a4ccc010fd326792e3bd - Source branch:
main - olcrtc revision:
f9edaa7f1ab5b00238eaf72b6dac7540dd344037(v0.0.0-20260929121845-f9edaa7f1ab5), what every platform here was built from - App version:
1.0.444 - Android versionCode:
444 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/36575996684
Gate
Release gate · mode release · app 1.0.444 · engine f9edaa7f1ab5 (v0.0.0-20260929121845-f9edaa7f1ab5; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 6 | 1 (1 known) |
vkcalls/cli |
default | 1 | present | 1 | 0 |
vkcalls/mobile |
lean | 7 | present | 7 | 0 |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine f9edaa7f1ab5, app 1.0.444
1 of 48 cells failed · Linux/ubuntu24 · 872 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 11421 ms | 25 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 14827 ms (bridge 3 s late), ready 18218 ms (bridge 8 s late) | 41 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 10322 ms | 25 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 749 ms | 15 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.3 Mbit/s, on-top p95 3653 ms | 96 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.5 Mbit/s, on-top p95 2200 ms | 31 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 14323 ms (bridge 3 s late), ready 18095 ms (bridge 8 s late) | 40 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.3 MiB, RSS peak 44.0 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 9466 ms | 20 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 10577 ms | 30 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 10824 ms | 12 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 9166 ms | 21 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 10037 ms | 29 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 8946 ms | 108 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 797 ms | 16 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
❌ fail (known: #49): throughput_down_bps 870995.1134968506 < 1400000; on_top_p95_ms 7393 > 5000 | ↓ 0.9 Mbit/s, on-top p95 7393 ms | 578 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
✅ pass (known: #49) | ↑ 5.0 Mbit/s, on-top p95 1087 ms | 34 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.6 MiB, RSS peak 46.6 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 3756 ms | 10 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 3963 ms | 30 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1243 ms | 22 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 10.5 Mbit/s, on-top p95 3272 ms | 48 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 9.1 Mbit/s, on-top p95 2008 ms | 19 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 3 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 11.9 MiB, RSS peak 50.5 MiB | 0 s |
engine-linux/vkcalls/vp8channel/cli/S0 |
✅ | handshake 7201 ms | 8 s |
engine-linux/vkcalls/vp8channel/mobile/S0 |
✅ | handshake 6790 ms | 18 s |
engine-linux/vkcalls/vp8channel/mobile/S1 |
✅ | connect p95 740 ms | 18 s |
engine-linux/vkcalls/vp8channel/mobile/S2 |
✅ | ↓ 14.2 Mbit/s, on-top p95 1919 ms | 36 s |
engine-linux/vkcalls/vp8channel/mobile/S3 |
✅ | ↑ 13.8 Mbit/s, on-top p95 1119 ms | 12 s |
engine-linux/vkcalls/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/vkcalls/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/vkcalls/vp8channel/mobile/S7 |
✅ | heap peak 12.1 MiB, RSS peak 49.1 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 3829 ms | 39 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 3276 ms | 40 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 3569 ms | 22 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 3253 ms | 22 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 604 ms | 15 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.3 Mbit/s, on-top p95 3416 ms | 80 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 6.2 Mbit/s, on-top p95 3283 ms | 27 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 14.0 MiB, RSS peak 52.4 MiB | 0 s |
1 known failure is tracked by an issue and does not fail the gate.
Compared with v1.0.443 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.51 Mbit/s | 5.30 Mbit/s | -4% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.68 Mbit/s | 5.51 Mbit/s | -3% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 8.3 MiB | 8.3 MiB | +0% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 43.8 MiB | 44.0 MiB | +1% |
engine-linux/salutejazz/datachannel/mobile/S2 |
throughput_down_bps | 0.25 Mbit/s | 0.87 Mbit/s | +247% |
engine-linux/salutejazz/datachannel/mobile/S3 |
throughput_up_bps | 1.97 Mbit/s | 4.98 Mbit/s | +152% |
engine-linux/salutejazz/datachannel/mobile/S7 |
heap_peak_bytes | 9.7 MiB | 9.6 MiB | -1% |
engine-linux/salutejazz/datachannel/mobile/S7 |
rss_peak_bytes | 48.8 MiB | 46.6 MiB | -4% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 9.53 Mbit/s | 10.46 Mbit/s | +10% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 7.89 Mbit/s | 9.05 Mbit/s | +15% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 11.4 MiB | 11.9 MiB | +4% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 48.8 MiB | 50.5 MiB | +4% |
engine-linux/wbstream/vp8channel/mobile/S2 |
throughput_down_bps | 6.32 Mbit/s | 6.30 Mbit/s | -0% |
engine-linux/wbstream/vp8channel/mobile/S3 |
throughput_up_bps | 6.12 Mbit/s | 6.21 Mbit/s | +1% |
engine-linux/wbstream/vp8channel/mobile/S7 |
heap_peak_bytes | 14.0 MiB | 14.0 MiB | -0% |
engine-linux/wbstream/vp8channel/mobile/S7 |
rss_peak_bytes | 50.7 MiB | 52.4 MiB | +3% |
SHA256
| Asset | SHA256 |
|---|---|
Ghostlane-1.0.444-android-armeabi-v7a-release.apk |
4e810fced9ad481ee7910011570333177908fcacc7232b45cb0e06450f630987 |
Ghostlane-1.0.444-android-play.aab |
8ee7e1c826bb7ae0545a5fe4f22b3d1db2776195374ac73a1499a32419c45e9c |
Ghostlane-1.0.444-android-release.apk |
15d269c24e9b00fffb4c7b7431faa78bb3626ee81137103e3ffab4dedd16ef08 |
gate-report.json |
2c4df14922cd39d1168bf1420d8c2663b1547b1eb295d2a914a629b42e118835 |
gate-report.md |
1160c1e0a92d8aecc9dda32f932d7ccda3afa68434ee1555a9706257af7f7c5e |
Ghostlane-1.0.444-linux-amd64.AppImage |
1b61adc25cc8b88a2b5fc57cce8f754f5cb2c6b807abc720def55ceb2da9130c |
Ghostlane-1.0.444-macos-amd64.dmg |
ca5bd1c906ed825cb5ddeff846fdf7c6fe23f3038cf79687971f766c373e0bfe |
Ghostlane-1.0.444-macos-arm64.dmg |
7799db4a245506f7b6cd6b20907136a0f0a6a80ac50bac027aa8dcbe59f66c2d |
Ghostlane-1.0.444-windows-amd64-portable.zip |
6f8112f0a8552ac7df28602ddde49e7be68a5758f3f41c3c69473ad662edbdf5 |
Ghostlane-1.0.444-windows-amd64.exe |
9c86a1ea2892c3417a91d880185e6e83fab383fda10c34c95c0717a7dd23b715 |
Ghostlane-1.0.444-windows-amd64.msi |
4984c3cee6920131dafd5d20cb87699130003720b7daa2a6596b765d628f8528 |
Ghostlane 1.0.443
What's new in v1.0.443
Changes since v1.0.442:
- fix(export): Hysteria2 through Xray needs 26.3 — say so, and check it apart (135f807)
- feat(export): servers in the forms a router takes — Podkop and XKeen (3da4778)
- feat(android): Android TV — launcher, focus you can see, a server list from your phone (3a96728)
- feat(i18n): the app in Chinese and Persian, laid out right to left on Android (edf8e25)
- feat(routing): your own rules, and only blocked sites through the tunnel (cc45491)
- feat(i18n): the app in Russian (e844be2)
- docs(release-notes): Trojan, Shadowsocks and VMess (c5cb3d9)
- feat(import): Trojan, Shadowsocks and VMess links, and WebSocket transports (8a6b528)
- docs(release-notes): always-on, the Russian-apps preset and smart connect (9aff35f)
- feat(connect): smart connect — another transport when one is blocked, olcRTC of the same country last (494c00c)
- fix(android): the Russian-apps preset finds T-Bank, Avito, Wildberries and VK (1b723b6)
- fix(android): Android's always-on VPN starts the tunnel instead of stopping it (b72e8b7)
- docs(release-notes): the local proxy login and the provider links (61cadb4)
- feat(import): ghostlane:// links, and a list that survives its provider's blocked domain (2716868)
- chore(release): 1.0.442 shipped, the pending note goes (2050a58)
- fix(vpn): the cores' local SOCKS ports demand the app's login (87e6ecd)
Android and iPhone: the app's local proxy asks for a password
Between the VPN and the engine that carries it, the app runs a small proxy on the phone itself. On Android it sat on a fixed, well-known port with no password for most kinds of connection (and on the iPhone for XHTTP), so any other app could use it to reach the internet through the tunnel or to learn the VPN's address, which is exactly what some apps look for. It now asks for a login only Ghostlane knows, and on Android it moves to a new port every time you connect.
Server lists: provider links, and lists that outlive a blocked domain
A provider's subscription page can now open the app with a ghostlane:// link, including the ghostlane://add/… form such pages use for other apps. A provider can also keep its users when its domain is blocked: when a list's usual address does not answer, the app asks the spare address the provider named in advance, and when the provider says the list has moved, the app follows it. Both are accepted only over a secure connection. On Android and computers, a provider's short note now appears under its server list.
Android: always-on VPN
With Android's own "Always-on VPN" turned on for Ghostlane, the connection now comes up by itself after a restart and whenever Android brings it back; before, the app stopped the moment Android started it. Connection settings has a row that opens Android's VPN screen, where always-on and "Block connections without VPN" are set. The "Russian apps" preset for apps that bypass the VPN now also finds T-Bank, Avito, Wildberries and VK.
Android and computers: smart connect
When a server is published over several kinds of connection, the app now checks them before connecting and uses the first one through which a real download gets through, not just a first handshake. If none does, it ends on olcRTC in the same country, and when only domestic sites answer (a mobile "whitelist" shutdown) it goes to olcRTC straight away. It never changes the country by itself, remembers what worked for each server, and can be turned off in the server list settings.
Server lists: Trojan, Shadowsocks and VMess
Links and subscriptions with Trojan, Shadowsocks (including Shadowsocks 2022) and VMess servers now import and connect, as do VLESS servers that use WebSocket or HTTP upgrade, which used to import but never connect. A link that asks for something the app cannot carry, such as a Shadowsocks plugin, is left out instead of being added as a server that cannot work.
The app in Russian, Chinese and Persian
On a phone or computer set to Russian, Chinese or Persian, the app is now in that language: every screen, message and notification, and the notice shown before the first connection. On Android, Persian is laid out right to left. Other languages still see English.
Android and computers: your own routing rules, and only blocked sites through the tunnel
Routing has a new mode, "Only blocked sites through the tunnel": sites blocked in Russia, and services that shut Russian users out, go through the tunnel, and everything else connects directly. The list is Re:filter's, bundled with the app, so it works offline; it includes whole address ranges of some large services, so other sites hosted there go through the tunnel too. In any mode you can now add rules of your own: domains or IP addresses that always connect directly, or always go through the tunnel. On Android, olcRTC rooms still carry everything in the new mode.
Android TV
Ghostlane now installs on Android TV and appears in its launcher. Every control can be reached with the remote, with a clear mark on the one in focus. A TV has no camera to scan with, so a server list comes from your phone: the TV shows a code, the phone opens a page on the same home network, and the link pasted there lands on the TV. The same option appears on any Android device without a camera.
Android and computers: servers for your router
Server lists now have a Router button in "Server lists & sharing". It gives each server of the list in the form a router takes: the link or a sing-box outbound for Podkop on OpenWrt, an Xray outbound for XKeen on Keenetic. Encrypted server lists do not offer it: their provider chose that their servers are not read out of them.
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
3b0c0f3b561293b2b831bc9c153c3ecded6fe234 - Source branch:
main - olcrtc revision:
8d97e32e0b1af0a727d6e785c4c467f37543aa4d(v0.0.0-20260924233529-8d97e32e0b1a), what every platform here was built from - App version:
1.0.443 - Android versionCode:
443 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/36138060287
Gate
Release gate · mode release · app 1.0.443 · engine 8d97e32e0b1a (v0.0.0-20260924233529-8d97e32e0b1a; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 5 | 2 (2 known) |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine 8d97e32e0b1a, app 1.0.443
2 of 40 cells failed · Linux/ubuntu24 · 733 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 10170 ms | 27 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 12992 ms (bridge 3 s late), ready 18471 ms (bridge 8 s late) | 39 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 8964 ms | 26 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 723 ms | 14 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.5 Mbit/s, on-top p95 3060 ms | 92 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.7 Mbit/s, on-top p95 2087 ms | 30 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 12962 ms (bridge 3 s late), ready 17218 ms (bridge 8 s late) | 38 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.3 MiB, RSS peak 43.8 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 9403 ms | 20 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 9451 ms | 69 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 10383 ms | 11 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 13051 ms | 15 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 13282 ms | 33 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 11504 ms | 270 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 2384 ms | 20 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
❌ fail (known: #49): pull_ok 0 of pull_total 6; throughput_down_bps 251054.17311750763 < 1400000; on_top_ok 12 of on_top_total 14; on_top_p95_ms 39157 > 5000 | ↓ 0.3 Mbit/s, on-top p95 39157 ms | 208 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
❌ fail (known: #49): on_top_p95_ms 12558 > 5000 | ↑ 2.0 Mbit/s, on-top p95 12558 ms | 86 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.7 MiB, RSS peak 48.8 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 5291 ms | 12 s |
| `engine-linux/telemost/vp8channel... |
Ghostlane 1.0.442
What's new in v1.0.442
Changes since v1.0.441:
- chore(pin): the engine with the relay window sized for its leg (olcrtc#49) (13738c2)
- fix(ios): pin sockets to the interface the system routes through (#58) (13a0189)
- chore(release): 1.0.441 shipped, the pending note goes (3ba1db7)
iPhone: connecting over mobile data on more carriers
A phone on mobile data often has several cellular connections open at once: the one to the internet, and others the carrier keeps for calls and messages. On some carriers the app sent its own traffic through one of the carrier's service connections, so on mobile data every location failed to connect ("no route to host") while Wi-Fi worked. The app now uses the connection iOS itself uses for the internet.
olcRTC on SaluteJazz: holds on a slow connection
On a slow SaluteJazz connection the app now keeps only as much data in flight as the connection has recently carried, instead of a fixed amount. A long upload no longer holds up the small messages that keep the connection alive, so it stays up instead of dropping and reconnecting. Servers running the updated engine do the same for downloads.
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
84385b86f2191b832d331fd37393dd66fdca20f1 - Source branch:
main - olcrtc revision:
8d97e32e0b1af0a727d6e785c4c467f37543aa4d(v0.0.0-20260924233529-8d97e32e0b1a), what every platform here was built from - App version:
1.0.442 - Android versionCode:
442 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/36076358644
Gate
Release gate · mode release · app 1.0.442 · engine 8d97e32e0b1a (v0.0.0-20260924233529-8d97e32e0b1a; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 7 | 0 |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine 8d97e32e0b1a, app 1.0.442
all 40 cells passed · Linux/ubuntu24 · 504 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 9241 ms | 25 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 11918 ms (bridge 3 s late), ready 16905 ms (bridge 8 s late) | 35 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 9336 ms | 25 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 656 ms | 13 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.8 Mbit/s, on-top p95 2224 ms | 86 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.7 Mbit/s, on-top p95 2250 ms | 29 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 12276 ms (bridge 3 s late), ready 17279 ms (bridge 8 s late) | 36 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.4 MiB, RSS peak 44.5 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 9316 ms | 64 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 9109 ms | 23 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 9301 ms | 12 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 9691 ms | 14 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 10059 ms | 128 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 9078 ms | 28 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 598 ms | 15 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
✅ pass (known: #49) | ↓ 5.3 Mbit/s, on-top p95 1116 ms | 96 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
✅ pass (known: #49) | ↑ 5.2 Mbit/s, on-top p95 1136 ms | 32 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.9 MiB, RSS peak 48.4 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 4086 ms | 10 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 4231 ms | 30 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1458 ms | 23 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 10.3 Mbit/s, on-top p95 2748 ms | 49 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 9.0 Mbit/s, on-top p95 2229 ms | 19 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 3 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 11.6 MiB, RSS peak 48.1 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 3776 ms | 24 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 3949 ms | 89 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 3880 ms | 21 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 4447 ms | 23 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 932 ms | 16 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.4 Mbit/s, on-top p95 3249 ms | 78 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 6.3 Mbit/s, on-top p95 3362 ms | 27 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 13.7 MiB, RSS peak 51.0 MiB | 0 s |
Compared with v1.0.441 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.69 Mbit/s | 5.83 Mbit/s | +2% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.70 Mbit/s | 5.70 Mbit/s | +0% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 8.5 MiB | 8.4 MiB | -2% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 46.6 MiB | 44.5 MiB | -5% |
engine-linux/salutejazz/datachannel/mobile/S2 |
throughput_down_bps | 5.33 Mbit/s | 5.26 Mbit/s | -1% |
engine-linux/salutejazz/datachannel/mobile/S3 |
throughput_up_bps | 5.79 Mbit/s | 5.19 Mbit/s | -10% |
engine-linux/salutejazz/datachannel/mobile/S7 |
heap_peak_bytes | 9.7 MiB | 9.9 MiB | +3% |
engine-linux/salutejazz/datachannel/mobile/S7 |
rss_peak_bytes | 48.5 MiB | 48.4 MiB | -0% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 9.33 Mbit/s | 10.26 Mbit/s | +10% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 8.27 Mbit/s | 9.02 Mbit/s | +9% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 12.2 MiB | 11.6 MiB | -5% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 49.6 MiB | 48.1 MiB | -3% |
engine-linux/wbstream/vp8channel/mobile/S2 |
throughput_down_bps | 6.19 Mbit/s | 6.43 Mbit/s | +4% |
engine-linux/wbstream/vp8channel/mobile/S3 |
throughput_up_bps | 6.24 Mbit/s | 6.29 Mbit/s | +1% |
engine-linux/wbstream/vp8channel/mobile/S7 |
heap_peak_bytes | 14.1 MiB | 13.7 MiB | -3% |
engine-linux/wbstream/vp8channel/mobile/S7 |
rss_peak_bytes | 53.0 MiB | 51.0 MiB | -4% |
SHA256
| Asset | SHA256 |
|---|---|
Ghostlane-1.0.442-android-armeabi-v7a-release.apk |
fd8a55b755349dadcc75ae2e0d3740071fc8eeaf97f8d540e48ec7a7554fabdd |
Ghostlane-1.0.442-android-play.aab |
f4079e11a3f87af210d6f17a3804b0a0de9fecfc5c8a1768ad49a17f8f5ae1aa |
Ghostlane-1.0.442-android-release.apk |
2df941f9a337a8afa1a207b557c74b005cc2c00cbca8773dc253fe1b683e224c |
gate-report.json |
2787fa02c21ea28e1482522cf70e0d5f6e9730da8b778548f9de344f95a29e3b |
gate-report.md |
1f33442f32038382922b26fcffa79b5fb5efd796c304fe2f6a68590fe6beea11 |
Ghostlane-1.0.442-linux-amd64.AppImage |
95ce41383823db834c434dc5f9e613a3a3046f6787aca9202f76f6d34ff5f6ff |
Ghostlane-1.0.442-macos-amd64.dmg |
458df37153b15a613d69388a2e1814aa80fcb705b207c28269e2c4ca1211c2f3 |
Ghostlane-1.0.442-macos-arm64.dmg |
bc5df543eaf096d1f0d2564acaed539f19ef0ddb8af7e300d7aa63789918a0d9 |
Ghostlane-1.0.442-windows-amd64-portable.zip |
1fe970f11a410016c04cafe84bb84369c2c77971af8f612213123faf22997ae6 |
Ghostlane-1.0.442-windows-amd64.exe |
f50e413c2e595ab423126a1c777596b3a561788bd9015e45d2cd647437923356 |
Ghostlane-1.0.442-windows-amd64.msi |
4c61ec4e34941504a29e4a9a33be002bf5dffeb35105d32236df7047802ebb21 |
ios-cores-sb1.13.14-lxv1.260711.0-rtcf9edaa7f1ab5-b34: Merge #75: the README says what the app does as of 1.0.443
sing-box 1.13.14 + libXray v1.260711.0 + olcrtc v0.0.0-20260929121845-f9edaa7f1ab5 bound into one framework, iOS and macOS slices, for the NetworkExtension on both.
Ghostlane 1.0.441
What's new in v1.0.441
Changes since v1.0.440:
- docs(release-notes): Iran and China bypass, and the desktop window and tray icon (54f4347)
- refactor(routing): XrayGeodata sorts a region's files by their name prefix (654cfd9)
- docs(release-notes): Android bypass modes on olcRTC run in the connection itself (d839de5)
- feat(android): olcRTC routes by itself under a bypass; the sing-box front goes (#33) (41a6142)
- feat(android): olcRTC keeps its UDP relay under a bypass, for direct flows (581b5a3)
- feat(routing): the olcRTC engine's direct rules for every bypass region (f3633e1)
- feat(routing): Iranian and Chinese lists in the olcRTC engine's text form (b78e9cc)
- docs(plan): olcRTC on Android without the sing-box front (#33) (d75ce57)
- docs(spec): olcRTC on Android without the sing-box front (#33) (afb92b6)
- feat(routing): add Iran and China bypass without changing existing modes (7cdaeea)
- feat(desktop): a monochrome menu bar icon and a title bar in the app's colour (04b74e5)
- chore(release): retire the notes the release read (6902711)
Android and desktop: Bypass Iran and Bypass China
Next to Bypass Russia, the routing setting now offers Bypass Iran and Bypass China. Sites and addresses in the chosen country, and your local network, connect directly; everything else goes through the tunnel. The lists ship with the app, so they work offline. On a computer they apply in system proxy mode and in the macOS tunnel; the Windows and Linux tunnels still send everything through the tunnel. The iPhone app is unchanged.
Android: bypass modes on olcRTC, from one process
With a bypass mode on (Russia, Iran or China), an olcRTC connection no longer starts a second routing process in front of itself: the connection sends the chosen country's sites and your local network straight out by itself, as the iPhone app does. One process less to start and keep alive, and the bypass now also works in proxy mode, where olcRTC used to send everything through the tunnel.
macOS and Windows: a window and a tray icon that fit the system
On a Mac the menu bar icon is now monochrome, white or black like the icons next to it, and the window's title bar is the app's own dark colour with the traffic lights on it; the tray menu and file dialogs follow dark mode. On Windows the tray icon is white or black to match the taskbar, and the title bar is dark (exactly the app's colour on Windows 11).
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
54f4347f8e2e3fe2eef97725f5722c7164f2b058 - Source branch:
main - olcrtc revision:
7b78fd4a753c0c4b84a60c854a98d0002fc37442(v0.0.0-20260923124229-7b78fd4a753c), what every platform here was built from - olcrtc:
proofkitis 3 commit(s) ahead of this revision - App version:
1.0.441 - Android versionCode:
441 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/36010238963
Gate
Release gate · mode release · app 1.0.441 · engine 7b78fd4a753c (v0.0.0-20260923124229-7b78fd4a753c; the pin, on proofkit, which is 3 commit(s) ahead)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 7 | 0 |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine 7b78fd4a753c, app 1.0.441
all 40 cells passed · Linux/ubuntu24 · 458 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 8648 ms | 25 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 14500 ms (bridge 3 s late), ready 17264 ms (bridge 8 s late) | 38 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 7487 ms | 24 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 558 ms | 11 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.7 Mbit/s, on-top p95 2203 ms | 88 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.7 Mbit/s, on-top p95 2035 ms | 29 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 60 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 14648 ms (bridge 3 s late), ready 15412 ms (bridge 8 s late) | 36 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.5 MiB, RSS peak 46.6 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 8838 ms | 20 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 10759 ms | 23 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 10876 ms | 12 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 7812 ms | 12 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 8589 ms | 33 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 8230 ms | 23 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 542 ms | 13 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
✅ pass (known: #49) | ↓ 5.3 Mbit/s, on-top p95 4407 ms | 94 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
✅ pass (known: #49) | ↑ 5.8 Mbit/s, on-top p95 825 ms | 29 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.7 MiB, RSS peak 48.5 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 5197 ms | 11 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 4954 ms | 33 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1205 ms | 27 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 9.3 Mbit/s, on-top p95 4133 ms | 54 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 8.3 Mbit/s, on-top p95 2234 ms | 21 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 4 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 12.2 MiB, RSS peak 49.6 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 3924 ms | 58 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 4632 ms | 37 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 3802 ms | 21 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 3861 ms | 23 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 929 ms | 19 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.2 Mbit/s, on-top p95 3475 ms | 82 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 6.2 Mbit/s, on-top p95 2703 ms | 27 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 14.1 MiB, RSS peak 53.0 MiB | 0 s |
Compared with v1.0.440 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.75 Mbit/s | 5.69 Mbit/s | -1% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.39 Mbit/s | 5.70 Mbit/s | +6% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 9.0 MiB | 8.5 MiB | -5% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 46.1 MiB | 46.6 MiB | +1% |
engine-linux/salutejazz/datachannel/mobile/S2 |
throughput_down_bps | 3.85 Mbit/s | 5.33 Mbit/s | +39% |
engine-linux/salutejazz/datachannel/mobile/S3 |
throughput_up_bps | 4.11 Mbit/s | 5.79 Mbit/s | +41% |
engine-linux/salutejazz/datachannel/mobile/S7 |
heap_peak_bytes | 9.7 MiB | 9.7 MiB | +0% |
engine-linux/salutejazz/datachannel/mobile/S7 |
rss_peak_bytes | 46.8 MiB | 48.5 MiB | +4% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 8.46 Mbit/s | 9.33 Mbit/s | +10% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 7.06 Mbit/s | 8.27 Mbit/s | +17% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 12.4 MiB | 12.2 MiB | -2% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 47.9 MiB | 49.6 MiB | +4% |
engine-linux/wbstream/vp8channel/mobile/S2 |
throughput_down_bps | 6.25 Mbit/s | 6.19 Mbit/s | -1% |
engine-linux/wbstream/vp8channel/mobile/S3 |
throughput_up_bps | 5.43 Mbit/s | 6.24 Mbit/s | +15% |
engine-linux/wbstream/vp8channel/mobile/S7 |
heap_peak_bytes | 14.1 MiB | 14.1 MiB | +0% |
engine-linux/wbstream/vp8channel/mobile/S7 |
rss_peak_bytes | 51.0 MiB | 53.0 MiB | +4% |
SHA256
| Ass...
ios-cores-sb1.13.14-lxv1.260711.0-rtc8d97e32e0b1a-b33: Merge #60: pin sockets to the interface the system routes through (#58)
sing-box 1.13.14 + libXray v1.260711.0 + olcrtc v0.0.0-20260924233529-8d97e32e0b1a bound into one framework, iOS and macOS slices, for the NetworkExtension on both.
Ghostlane 1.0.440
What's new in v1.0.440
Changes since v1.0.439:
- test(ci): the Scope tests' git repo runs no background gc or maintenance (6320997)
- fix(subscriptions): a refresh no longer drops a new line named like an old one (b33aeec)
- chore(pin): the engine with the SaluteJazz relay window (olcrtc#49) (0d42fff)
- fix(desktop): the Linux TUN relays UDP by UDP ASSOCIATE, as Android now does (e099521)
- docs(release-notes): SaluteJazz under load, Android UDP, rooms per carrier on iOS (a7fb31a)
- fix(android): olcRTC's UDP relay is off on Jitsi, which has no datagram lane (e1b304f)
- fix(ci): compare a new branch's first push with where it leaves main (820bcf9)
- fix(ios): the app's room push and the saved room list are per carrier too (54f8055)
- fix(android): a quote in the SOCKS login no longer breaks hev's config (37f3427)
- fix(android): hev relays UDP by UDP ASSOCIATE, which every server speaks (277f782)
- refactor(android): hev's config as a pure function, tested on the JVM (6e369fc)
- fix(ios): a location's room list is its own carrier's, not every line with its key (9ceff5b)
- fix(ci): compare a push with the tip before it, not with its last commit (c191863)
- docs(release-notes): 1.0.439 shipped, the pending note goes (1bd9f93)
SaluteJazz holds up under heavy downloads
On a slow network a long download over SaluteJazz could stall the whole connection until it dropped: Sber's service queues everything one side sends, and the connection's own keep-alive waited at the back of that queue. The app and the servers now pace what they send through it, so the keep-alive always gets through. The servers made the switch on 23 September; this release is the app's half.
Android and Linux: calls and games through the tunnel
On Android, and on Linux in system-wide (TUN) mode, the tunnel carried no UDP at all, on every protocol: voice and video calls in Telegram, WhatsApp and Discord, games and anything else on UDP failed while web pages worked. The tunnel now hands UDP to the connection the standard way, as the iPhone app always has.
iPhone and iPad: each carrier keeps its own rooms
A location that offers Telemost, WB Stream and SaluteJazz lists one room per carrier. After a network change the app could hand a WB Stream or SaluteJazz connection a Telemost room, which it cannot join, and reconnect slowly or not at all. Each carrier's line now keeps to its own rooms.
Every server a list offers stays in the app
When a server list named two servers alike, as some providers name one location's Telemost and WB Stream lines, a refresh of the list could keep one and silently drop the other. Every line now stays.
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
6320997dcf75afb82b2fec7961362e4ad862be4b - Source branch:
main - olcrtc revision:
7b78fd4a753c0c4b84a60c854a98d0002fc37442(v0.0.0-20260923124229-7b78fd4a753c), what every platform here was built from - App version:
1.0.440 - Android versionCode:
440 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/35865615434
Gate
Release gate · mode release · app 1.0.440 · engine 7b78fd4a753c (v0.0.0-20260923124229-7b78fd4a753c; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 1 | 0 |
salutejazz/mobile |
lean | 7 | present | 6 | 1 (1 known) |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine 7b78fd4a753c, app 1.0.440
1 of 40 cells failed · Linux/ubuntu24 · 606 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 14941 ms | 25 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 14526 ms (bridge 3 s late), ready 16603 ms (bridge 8 s late) | 39 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 14363 ms | 26 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 823 ms | 16 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.8 Mbit/s, on-top p95 2121 ms | 88 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.4 Mbit/s, on-top p95 2369 ms | 31 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 15751 ms (bridge 3 s late), ready 16779 ms (bridge 8 s late) | 41 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 9.0 MiB, RSS peak 46.1 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 8785 ms | 24 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 14546 ms | 85 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 13590 ms | 22 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 10069 ms | 26 s |
engine-linux/salutejazz/datachannel/cli/S0 |
✅ | handshake 10828 ms | 280 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
✅ | handshake 9017 ms | 30 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
✅ | connect p95 678 ms | 17 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
❌ fail (known: #49): on_top_p95_ms 5685 > 5000 | ↓ 3.8 Mbit/s, on-top p95 5685 ms | 131 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
✅ pass (known: #49) | ↑ 4.1 Mbit/s, on-top p95 3880 ms | 41 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/salutejazz/datachannel/mobile/S7 |
✅ | heap peak 9.7 MiB, RSS peak 46.8 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 4990 ms | 12 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 5547 ms | 36 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1898 ms | 31 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 8.5 Mbit/s, on-top p95 4828 ms | 60 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 7.1 Mbit/s, on-top p95 2703 ms | 24 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 4 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 12.4 MiB, RSS peak 47.9 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 4172 ms | 52 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 3969 ms | 50 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 3863 ms | 21 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 3874 ms | 23 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 849 ms | 17 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.2 Mbit/s, on-top p95 3713 ms | 81 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 5.4 Mbit/s, on-top p95 3408 ms | 31 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 14.1 MiB, RSS peak 51.0 MiB | 0 s |
1 known failure is tracked by an issue and does not fail the gate.
Compared with v1.0.439 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.78 Mbit/s | 5.75 Mbit/s | -0% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.74 Mbit/s | 5.39 Mbit/s | -6% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 8.6 MiB | 9.0 MiB | +4% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 46.0 MiB | 46.1 MiB | +0% |
engine-linux/salutejazz/datachannel/mobile/S2 |
throughput_down_bps | 1.13 Mbit/s | 3.85 Mbit/s | +242% |
engine-linux/salutejazz/datachannel/mobile/S7 |
heap_peak_bytes | 17.9 MiB | 9.7 MiB | -46% |
engine-linux/salutejazz/datachannel/mobile/S7 |
rss_peak_bytes | 56.9 MiB | 46.8 MiB | -18% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 9.56 Mbit/s | 8.46 Mbit/s | -12% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 9.02 Mbit/s | 7.06 Mbit/s | -22% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 11.2 MiB | 12.4 MiB | +11% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 51.9 MiB | 47.9 MiB | -8% |
engine-linux/wbstream/vp8channel/mobile/S2 |
throughput_down_bps | 6.32 Mbit/s | 6.25 Mbit/s | -1% |
engine-linux/wbstream/vp8channel/mobile/S3 |
throughput_up_bps | 6.17 Mbit/s | 5.43 Mbit/s | -12% |
engine-linux/wbstream/vp8channel/mobile/S7 |
he... |
Ghostlane 1.0.439
What's new in v1.0.439
Changes since v1.0.438:
- chore(pin): the engine that gates salutejazz (3cf5f20df43d), Cores b31 (9bf88ca)
- docs(release-notes): SaluteJazz as support, and the detailed debug logs (80aed73)
- docs(readme): the four meeting services olcRTC rides (aa53c97)
- fix(client): jazz is SaluteJazz under its old name (7d07709)
- feat(gate): a salutejazz leg, with no secret to hold (b8aacca)
- chore(android): drop the stale olcrtc-sources.jar (2682c38)
- feat(client): salutejazz is a datachannel-only carrier, with its room hint and release note (175cd36)
- test(client): say what the salutejazz direct-rule guard proves (cfe0e87)
- feat(client): salutejazz hosts dial direct under Bypass Russia (732ccdb)
- docs: old-client tolerance of the salutejazz line (runbook note) (bc2e831)
- feat(client): the salutejazz carrier through the new engine pin (6f97175)
- fix(diagnostics): find a crash past the first 512 KB, keep local URLs readable, export the cores' warnings again (f1f47a3)
- Add opt-in detailed core diagnostics (636e529)
- docs: point iOS users at TestFlight, where a release lands before the App Store (7fb5ea9)
- docs(play): regenerate the store screenshots from the new set (08bbbb6)
- docs: replace the README screenshots with the Ghostlane build (049af05)
- chore: finish the org rename and drop the personal Sponsors link (55cbdea)
- chore: point the repository links at the ghostlane-project org (f9b6b86)
- build(deps): bump the gradle-dependencies group with 8 updates (#52) (01087ff)
SaluteJazz, a third olcRTC carrier
The app now understands SaluteJazz lines: when your provider's server list includes them, they appear as · SJ servers beside Telemost and WB, and need no account.
Locations saved under the old "Jazz" provider now connect through SaluteJazz, the same service under its current name; the separate "Jazz" entry is gone from the picker.
Detailed debug logs
Logs has a "Detailed debug logs" switch that records DNS, routing and connection decisions, for a report to your provider or to us. It is off by default, and the export scrubs addresses and credentials.
Latest desktop, Android, and iOS builds from public GitHub Actions CI.
- Source commit:
9bf88ca028efb1055fffed58512bd426234e81bb - Source branch:
main - olcrtc revision:
3cf5f20df43d962a047054b8287844f61018b63c(v0.0.0-20260922185727-3cf5f20df43d), what every platform here was built from - App version:
1.0.439 - Android versionCode:
439 - Android APKs: universal and
armeabi-v7a - Android App Bundle: the
playflavor, as uploaded to Google Play (no self-updater) - iOS: this build goes to TestFlight, https://testflight.apple.com/join/sU7aTHQv - days before the App Store, which waits on App Review
- Workflow:
.github/workflows/release.yml - Workflow run: https://github.com/ghostlane-project/ghostlane/actions/runs/35776514745
Gate
Release gate · mode release · app 1.0.439 · engine 3cf5f20df43d (v0.0.0-20260922185727-3cf5f20df43d; the pin, on proofkit)
| Leg | Build | Planned | Report | Passed | Failed |
|---|---|---|---|---|---|
jitsi/cli |
default | 4 | present | 4 | 0 |
jitsi/mobile |
lean | 10 | present | 10 | 0 |
telemost/cli |
default | 1 | present | 1 | 0 |
telemost/mobile |
lean | 7 | present | 7 | 0 |
wbstream/cli |
default | 2 | present | 2 | 0 |
wbstream/mobile |
lean | 8 | present | 8 | 0 |
salutejazz/cli |
default | 1 | present | 0 | 1 (1 known) |
salutejazz/mobile |
lean | 7 | present | 0 | 7 (7 known) |
Engine unit tests (default and lean builds): success · suite legs: success · run
Gate: local target, engine 3cf5f20df43d, app 1.0.439
8 of 40 cells failed · Linux/ubuntu24 · 646 s
| Cell | Verdict | Key metrics | Took |
|---|---|---|---|
engine-linux/jitsi/datachannel/cli/S0 |
✅ | handshake 9112 ms | 24 s |
engine-linux/jitsi/datachannel/cli/S6 |
✅ | ready 13250 ms (bridge 3 s late), ready 19178 ms (bridge 8 s late) | 38 s |
engine-linux/jitsi/datachannel/mobile/S0 |
✅ | handshake 9105 ms | 23 s |
engine-linux/jitsi/datachannel/mobile/S1 |
✅ | connect p95 515 ms | 10 s |
engine-linux/jitsi/datachannel/mobile/S2 |
✅ | ↓ 5.8 Mbit/s, on-top p95 2032 ms | 87 s |
engine-linux/jitsi/datachannel/mobile/S3 |
✅ | ↑ 5.7 Mbit/s, on-top p95 2267 ms | 29 s |
engine-linux/jitsi/datachannel/mobile/S4 |
✅ | missed pongs 0 | 60 s |
engine-linux/jitsi/datachannel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 1 s |
engine-linux/jitsi/datachannel/mobile/S6 |
✅ | ready 13013 ms (bridge 3 s late), ready 17305 ms (bridge 8 s late) | 36 s |
engine-linux/jitsi/datachannel/mobile/S7 |
✅ | heap peak 8.6 MiB, RSS peak 46.0 MiB | 0 s |
engine-linux/jitsi/seichannel/cli/S0 |
✅ | handshake 9893 ms | 20 s |
engine-linux/jitsi/seichannel/mobile/S0 |
✅ | handshake 9937 ms | 22 s |
engine-linux/jitsi/vp8channel/cli/S0 |
✅ | handshake 9141 ms | 11 s |
engine-linux/jitsi/vp8channel/mobile/S0 |
✅ | handshake 8997 ms | 17 s |
engine-linux/salutejazz/datachannel/cli/S0 |
❌ fail (known: #49): push_ok 0 != 1 | handshake 11134 ms | 130 s |
engine-linux/salutejazz/datachannel/mobile/S0 |
❌ fail (known: #49): push_ok 0 != 1 | handshake 12238 ms | 100 s |
engine-linux/salutejazz/datachannel/mobile/S1 |
❌ fail (known: #49): connect_ok 24 of connect_total 48; connect_p95_ms 60002 > 5000 | connect p95 60002 ms | 88 s |
engine-linux/salutejazz/datachannel/mobile/S2 |
❌ fail (known: #49): pull_ok 0 of pull_total 6; throughput_down_bps 1125681.4051711257 < 1400000; on_top_ok 3 of on_top_total 4; on_top_p95_ms 24146 > 5000 | ↓ 1.1 Mbit/s, on-top p95 24146 ms | 34 s |
engine-linux/salutejazz/datachannel/mobile/S3 |
❌ fail (known: #49): push_ok 0 of push_total 4; throughput_up_bps 0 < 1600000; on_top_ok 1 of on_top_total 2; on_top_p95_ms 48087 > 5000 | ↑ 0.0 Mbit/s, on-top p95 48087 ms | 59 s |
engine-linux/salutejazz/datachannel/mobile/S4 |
❌ fail (known: #49): reconnects 1 > 0; final_pull_ok 0 != 1 | missed pongs 0 | 120 s |
engine-linux/salutejazz/datachannel/mobile/S5 |
❌ fail (known: #49): scenario error: S5 burst 1: udp associate: udp associate answered [5 4 0 1]: unexpected SOCKS5 reply; answered_1 0 < 63; answered_2 0 < 63 | 60 s | |
engine-linux/salutejazz/datachannel/mobile/S7 |
❌ fail (known: #49): heap grew by 14180352 > 13107200 (heap_baseline_bytes 4628480, heap_peak_bytes 18808832); goroutines grew by 69 > 20 (goroutines_idle 25, goroutines_after 94) | heap peak 17.9 MiB, RSS peak 56.9 MiB | 0 s |
engine-linux/telemost/vp8channel/cli/S0 |
✅ | handshake 4944 ms | 11 s |
engine-linux/telemost/vp8channel/mobile/S0 |
✅ | handshake 4938 ms | 33 s |
engine-linux/telemost/vp8channel/mobile/S1 |
✅ | connect p95 1202 ms | 28 s |
engine-linux/telemost/vp8channel/mobile/S2 |
✅ | ↓ 9.6 Mbit/s, on-top p95 3780 ms | 53 s |
engine-linux/telemost/vp8channel/mobile/S3 |
✅ | ↑ 9.0 Mbit/s, on-top p95 1966 ms | 19 s |
engine-linux/telemost/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/telemost/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 4 s |
engine-linux/telemost/vp8channel/mobile/S7 |
✅ | heap peak 11.2 MiB, RSS peak 51.9 MiB | 0 s |
engine-linux/wbstream/seichannel/cli/S0 |
✅ | handshake 5401 ms | 57 s |
engine-linux/wbstream/seichannel/mobile/S0 |
✅ | handshake 4506 ms | 46 s |
engine-linux/wbstream/vp8channel/cli/S0 |
✅ | handshake 4164 ms | 21 s |
engine-linux/wbstream/vp8channel/mobile/S0 |
✅ | handshake 4162 ms | 25 s |
engine-linux/wbstream/vp8channel/mobile/S1 |
✅ | connect p95 830 ms | 20 s |
engine-linux/wbstream/vp8channel/mobile/S2 |
✅ | ↓ 6.3 Mbit/s, on-top p95 3049 ms | 80 s |
engine-linux/wbstream/vp8channel/mobile/S3 |
✅ | ↑ 6.2 Mbit/s, on-top p95 2898 ms | 27 s |
engine-linux/wbstream/vp8channel/mobile/S4 |
✅ | missed pongs 0 | 61 s |
engine-linux/wbstream/vp8channel/mobile/S5 |
✅ | burst 1 answered 64/64, burst 2 answered 64/64 | 2 s |
engine-linux/wbstream/vp8channel/mobile/S7 |
✅ | heap peak 14.1 MiB, RSS peak 55.1 MiB | 0 s |
8 known failures are tracked by issues and do not fail the gate.
Compared with v1.0.438 at severity warn (warn reports a regression, fail also fails the gate).
Against the previous release
Severity warn: a regression is reported and does not fail the run.
| Cell | Metric | Before | Now | Change |
|---|---|---|---|---|
engine-linux/jitsi/datachannel/mobile/S2 |
throughput_down_bps | 5.83 Mbit/s | 5.78 Mbit/s | -1% |
engine-linux/jitsi/datachannel/mobile/S3 |
throughput_up_bps | 5.78 Mbit/s | 5.74 Mbit/s | -1% |
engine-linux/jitsi/datachannel/mobile/S7 |
heap_peak_bytes | 8.6 MiB | 8.6 MiB | -0% |
engine-linux/jitsi/datachannel/mobile/S7 |
rss_peak_bytes | 46.3 MiB | 46.0 MiB | -1% |
engine-linux/telemost/vp8channel/mobile/S2 |
throughput_down_bps | 10.02 Mbit/s | 9.56 Mbit/s | -5% |
engine-linux/telemost/vp8channel/mobile/S3 |
throughput_up_bps | 9.36 Mbit/s | 9.02 Mbit/s | -4% |
engine-linux/telemost/vp8channel/mobile/S7 |
heap_peak_bytes | 12.3 MiB | 11.2 MiB | -9% |
engine-linux/telemost/vp8channel/mobile/S7 |
rss_peak_bytes | 51.7 MiB | 51.9 MiB | +0% |
engine-linux/wbstream/vp8channel/mobile/S2 |
throughput_down_bps | 6.25 Mbit/s | 6.32 Mbit/s | +1% |
| `engine-linux/wbstream/vp8channel/mo... |
ios-cores-sb1.13.14-lxv1.260711.0-rtc7b78fd4a753c-b32: docs(release-notes): 1.0.439 shipped, the pending note goes
sing-box 1.13.14 + libXray v1.260711.0 + olcrtc v0.0.0-20260923124229-7b78fd4a753c bound into one framework, iOS and macOS slices, for the NetworkExtension on both.