Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
aca4163
migrate to new ipc.Client api, first-pass
garmr-ulfr Mar 24, 2026
828bd23
pullin a couple fixes, update linux vpn status poller
garmr-ulfr Mar 25, 2026
b978153
start ipc server ios/macos
garmr-ulfr Mar 25, 2026
f019c69
update radiance, fix linux daemon build
garmr-ulfr Mar 25, 2026
7a0cce8
start ipc server windows service
garmr-ulfr Mar 25, 2026
eb24410
fix datacap stream
garmr-ulfr Mar 25, 2026
489941d
decode user response data to json
garmr-ulfr Mar 26, 2026
37f7c17
Merge branch 'main' into garmr/radiance-daemon-refactor
garmr-ulfr Mar 26, 2026
745cb4c
gofmt
garmr-ulfr Mar 26, 2026
301fdfd
update ipc request path check for linux smoke test
garmr-ulfr Mar 26, 2026
9bcb13e
Fixed issue with user apis
jigar-f Apr 2, 2026
73d3f6e
Merge branch 'main' into garmr/radiance-daemon-refactor
garmr-ulfr Apr 3, 2026
2f6c135
redo linux packaging changes undone by merge
garmr-ulfr Apr 3, 2026
17c8984
move RunOffCgoStack from radiance to here, small cleanup
garmr-ulfr Apr 3, 2026
a0e73de
fetch radiance-owned settings on demand instead of caching locally
garmr-ulfr Apr 4, 2026
8c50596
add missing smart-routing, ad-block, oauth calls
garmr-ulfr Apr 4, 2026
b957460
Merge remote-tracking branch 'origin/main' into garmr/radiance-daemon…
garmr-ulfr Apr 6, 2026
5068d41
clean up
garmr-ulfr Apr 6, 2026
dcb9c7a
fix ref async issue for IPC calls
garmr-ulfr Apr 6, 2026
d3646b0
gofmt
garmr-ulfr Apr 6, 2026
2a0be81
fix test, linux package verification
garmr-ulfr Apr 7, 2026
8a9ef3e
update radiance, remove server groups
garmr-ulfr Apr 7, 2026
03296f9
fix: return added server tags from AddServersByURL
garmr-ulfr Apr 7, 2026
bd89bea
wrap ffi calls in runOnGoStack, update win service
garmr-ulfr Apr 8, 2026
61cebb1
add explicit not linux build tag
garmr-ulfr Apr 8, 2026
4e69a93
update radiance
garmr-ulfr Apr 8, 2026
76a66de
use RADIANCE_REPO in lanternd src
garmr-ulfr Apr 8, 2026
062feb4
flatten server model to match radiance, fix tests
garmr-ulfr Apr 8, 2026
6d238fe
use loopback ipc client for mobile
garmr-ulfr Apr 8, 2026
823c297
update radiance, log service install error in smoke test
garmr-ulfr Apr 8, 2026
1459e9d
retrieve selected server from radiance instead of cacheing
garmr-ulfr Apr 9, 2026
e0592a9
stop lantern before unintall, revert accidental service name change
garmr-ulfr Apr 9, 2026
c0f2460
remove allow override
garmr-ulfr Apr 9, 2026
789cf32
fix name reference and misplaced stop call
garmr-ulfr Apr 9, 2026
71b1c47
Merge branch 'main' into garmr/radiance-daemon-refactor
garmr-ulfr Apr 10, 2026
e80ec8c
fix several issues
garmr-ulfr Apr 10, 2026
07a1242
code review
garmr-ulfr Apr 10, 2026
0e81345
fix toggles not registering and fetching plans
garmr-ulfr Apr 10, 2026
1822f34
always refetch server list when view opens
garmr-ulfr Apr 11, 2026
d19ce35
fix crash in server select screen
garmr-ulfr Apr 13, 2026
7a84586
fix split tunnel website view not loading websites
garmr-ulfr Apr 13, 2026
78baaab
sync vpn status from system on launch
garmr-ulfr Apr 13, 2026
a21a218
fix stale onboarding marker persisting reinstall
garmr-ulfr Apr 13, 2026
7ff1edd
Revert "fix stale onboarding marker persisting reinstall"
garmr-ulfr Apr 14, 2026
0ccd45b
fix vpn prompt displaying when quiting
garmr-ulfr Apr 14, 2026
c5d9c12
Macos system extension updates #2 (#8637)
jigar-f Apr 10, 2026
07518cd
Filter system apps from Windows split tunneling (#8641)
atavism Apr 10, 2026
cc2f744
fix: upload and notify for nightlies even when some platforms fail (#…
myleshorton Apr 13, 2026
c9afeff
feat: add arch to releases (#8652)
reflog Apr 13, 2026
3363105
fix issues from 3173
garmr-ulfr Apr 14, 2026
3d44f7a
Refactor and fixed multiple bugs
jigar-f Apr 15, 2026
eba085b
cache selected server location locally to avoid UI flash
garmr-ulfr Apr 15, 2026
bc291d7
Fix tunnel issue in android
jigar-f Apr 16, 2026
8d16578
App event issue and auto server location fixes
jigar-f Apr 16, 2026
2350ea1
added logs
jigar-f Apr 16, 2026
19f2fa8
mobile: return string instead of []byte + update Swift callers (#8663)
myleshorton Apr 16, 2026
4d4e06d
encapsulate ipc.Client behind LanternCore interface
garmr-ulfr Apr 16, 2026
a4f7e0a
ios/macos: drop invalid optional-chaining on non-optional String (#8671)
myleshorton Apr 16, 2026
8bfecc3
add android-test + android-reproduce for emulator testing and ticket …
myleshorton Apr 17, 2026
fb920ea
Fix private server navigation issue
jigar-f Apr 17, 2026
8d04c0f
deps: bump sing-box-minimal to v1.12.21-lantern on refactor (#8679)
myleshorton Apr 17, 2026
4547209
Add IPC starter in android
jigar-f Apr 21, 2026
f947060
macos, ios and android cleanup
jigar-f Apr 21, 2026
0688da6
lantern-core: wire config events through IPC (#8673)
myleshorton Apr 21, 2026
c4a9227
windows ffi cleanup
jigar-f Apr 21, 2026
2aa9a6b
Update bindings
jigar-f Apr 21, 2026
f071ac8
point to radiance refactor branch
garmr-ulfr Apr 21, 2026
1fe682d
feat(dev-mode): hidden 5-tap unlock on support view + expanded dev sc…
garmr-ulfr Apr 21, 2026
1e742e1
bump radiance - limit config fetch to 1 at a time
garmr-ulfr Apr 21, 2026
c2ef068
feat(dev-mode): show spinner on in-flight action tiles
garmr-ulfr Apr 22, 2026
2c32d9e
Developer mode refactor
jigar-f Apr 22, 2026
40a4d60
Sync garmr/radiance-daemon-refactor with origin/main (#8684)
atavism Apr 22, 2026
e738fff
Merge remote-tracking branch 'origin/main' into garmr/radiance-daemon…
atavism Apr 22, 2026
5231144
code review updates
atavism Apr 22, 2026
0d98325
bump radiance
garmr-ulfr Apr 22, 2026
acc7df3
bump go to v1.26.2
garmr-ulfr Apr 22, 2026
586e306
bump radiance - fix event streams on mobile
garmr-ulfr Apr 23, 2026
d2e6d0e
fix sign up issue to point new radiance.
jigar-f Apr 23, 2026
f41a809
split tunneling: treat FFI "ok" response as success, not error (#8691)
myleshorton Apr 23, 2026
f70c1fa
split tunneling: use design-system error snackbar on add (#8692)
myleshorton Apr 23, 2026
5078d23
fix(vpn): use SelectServer when switching servers on a live tunnel
garmr-ulfr Apr 23, 2026
0540dc9
android: detach connect() scope so withTimeout actually unblocks the …
myleshorton Apr 23, 2026
65eb9f3
Show the fastest location on smart location.
jigar-f Apr 23, 2026
a7aa1c1
android: make restartService block until restart completes (#8697)
myleshorton Apr 23, 2026
b725aca
fix(vpn): don't cancel tunnel when restart's start phase fails
garmr-ulfr Apr 23, 2026
3b04b85
Fix copilot issue (#8696) (#8698)
myleshorton Apr 23, 2026
07ecc1f
main: don't block first paint on Updater.init() (#8699)
myleshorton Apr 23, 2026
4077283
feat(logs): stream diagnostic logs via ipc TailLogs on desktop
garmr-ulfr Apr 23, 2026
b59f7aa
deps: bump radiance to refactor tip (9703bcf) (#8700)
myleshorton Apr 23, 2026
2895072
fix server auto issue
jigar-f Apr 24, 2026
443eb44
More fix to server selection.
jigar-f Apr 24, 2026
697b749
server selection changes for IOS/Macos
jigar-f Apr 24, 2026
4054689
Use select sever if vpn is active.
jigar-f Apr 24, 2026
72a6c62
bump radiance - pull in empty tag fix
garmr-ulfr Apr 24, 2026
4777765
lantern-core: dispatch ConnectVPN/StartVPN to SelectServer on live tu…
myleshorton Apr 24, 2026
6de3c9a
lantern-core: drop client-side empty-tag normalization (radiance fac9…
myleshorton Apr 24, 2026
3696301
bump radiance to refactor tip (d5a1872) — pull in LocalBackend.Select…
myleshorton Apr 24, 2026
41a24b7
Garmr/refactor mobile logstream (#8701)
garmr-ulfr Apr 27, 2026
a5b0bca
ffi + lantern-core: drop non-Linux preflight; bound IPC calls with pe…
myleshorton Apr 27, 2026
a6c1a68
bump radiance
garmr-ulfr Apr 28, 2026
c3e448d
lantern-core: fix empty Windows split-tunnel apps list + UI-process l…
myleshorton Apr 28, 2026
e326eab
qa: plumb RADIANCE_OUTBOUND_SOCKS_ADDRESS into the Android client
Apr 27, 2026
bc4d203
Merge remote-tracking branch 'origin/main' into qa/emulator-outbound-…
atavism Apr 28, 2026
c3de2b9
Merge remote-tracking branch 'origin/main' into qa/emulator-outbound-…
atavism May 4, 2026
d108aa5
code review updates
atavism May 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion android/app/src/main/kotlin/org/getlantern/lantern/LanternApp.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package org.getlantern.lantern

import android.annotation.SuppressLint
import android.app.Application
import android.content.ClipboardManager
import android.content.Context
import android.net.ConnectivityManager
import android.net.wifi.WifiManager
import android.os.PowerManager
import android.util.Log
import androidx.core.content.getSystemService
import lantern.io.mobile.Mobile


class LanternApp : Application() {
Expand All @@ -26,5 +29,36 @@ class LanternApp : Application() {

}

override fun onCreate() {
super.onCreate()
applyQAEnvOverrides()
}

private fun applyQAEnvOverrides() {
if (!BuildConfig.DEVELOPMENT_MODE) return

try {
val outboundSocks = systemProp("debug.lantern.outbound_socks").trim()
val tz = systemProp("debug.lantern.tz").trim()
if (outboundSocks.isEmpty() && tz.isEmpty()) return

Mobile.setQAEnvOverrides(outboundSocks, tz)
Log.i(TAG, "QA env overrides applied: outbound_socks=$outboundSocks tz=$tz")
} catch (e: Throwable) {
Log.e(TAG, "Failed to apply QA env overrides", e)
}
}

@SuppressLint("PrivateApi")
private fun systemProp(key: String): String {
return try {
val cls = Class.forName("android.os.SystemProperties")
Comment thread
atavism marked this conversation as resolved.
val m = cls.getMethod("get", String::class.java, String::class.java)
(m.invoke(null, key, "") as? String) ?: ""
} catch (e: Throwable) {
""
}
}
}

}
private const val TAG = "LanternApp"
18 changes: 18 additions & 0 deletions lantern-core/mobile/mobile.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"log/slog"
"os"
"sync"
"sync/atomic"
"time"
Expand Down Expand Up @@ -88,6 +89,23 @@ func getClient() (*ipc.Client, error) {
return core.Client(), nil
}

// SetQAEnvOverrides applies QA-only environment overrides before Radiance starts.
func SetQAEnvOverrides(outboundSocks, tz string) error {
if outboundSocks != "" {
if err := os.Setenv("RADIANCE_OUTBOUND_SOCKS_ADDRESS", outboundSocks); err != nil {
return fmt.Errorf("set RADIANCE_OUTBOUND_SOCKS_ADDRESS: %w", err)
}
slog.Info("QA env override set", "name", "RADIANCE_OUTBOUND_SOCKS_ADDRESS", "value", outboundSocks)
}
if tz != "" {
if err := os.Setenv("TZ", tz); err != nil {
return fmt.Errorf("set TZ: %w", err)
}
slog.Info("QA env override set", "name", "TZ", "value", tz)
}
return nil
}

// InitLogging wires the global slog handler (file + stdout) before any other
// Mobile.* call. On Android the entire app runs in a single process, so once
// common.Init runs `slog.SetDefault` covers all Go code — but it normally
Expand Down
Loading