Skip to content

deps: update sing-box-minimal to v1.12.21-lantern#8660

Merged
myleshorton merged 1 commit intomainfrom
myles/sing-box-minimal
Apr 14, 2026
Merged

deps: update sing-box-minimal to v1.12.21-lantern#8660
myleshorton merged 1 commit intomainfrom
myles/sing-box-minimal

Conversation

@myleshorton
Copy link
Copy Markdown
Contributor

@myleshorton myleshorton commented Apr 14, 2026

Summary

Bumps `github.com/sagernet/sing-box` replace directive from `getlantern/sing-box-minimal v1.12.19-lantern` → `v1.12.21-lantern`.

Changes (getlantern/sing-box-minimal)

Fix: non-fatal remote rule-set fetch on Android (#39, #40)

  • On Android, the network interface isn't available during VPN initialization, so fetching remote rule-sets (e.g. `common.srs` from GitHub) was failing fatally and preventing the VPN from starting entirely
  • Now logs a warning and continues without rule-sets; `PostStart` retries the fetch after the tunnel is connected and the network is available
  • Also prevents log spam: if the `PostStart` retry also fails, `lastUpdated` is set to `now` so `loopUpdate` doesn't immediately re-fetch on the next tick

Fix: DefaultInterfaceMonitor fallback for VPN TUN interfaces (#36)

  • Fixed `DefaultInterfaceMonitor` fallback path when the active interface is a VPN TUN interface (e.g. `tun0`)
  • Added unit tests for the fallback path

Test plan

  • `go build ./...` passes
  • On Android: VPN starts successfully even when remote rule-sets are initially unreachable
  • Smart routing rules apply after tunnel connects (brief delay instead of blocking startup)

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 14, 2026 16:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Lantern fork of sing-box used by this repo by bumping the replace target from github.com/getlantern/sing-box-minimal v1.12.19-lantern to v1.12.21-lantern.

Changes:

  • Bump github.com/sagernet/sing-box replace directive to github.com/getlantern/sing-box-minimal v1.12.21-lantern.
  • Update go.sum entries to match the new sing-box-minimal version and checksums.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.

File Description
go.mod Updates the replace directive to point to v1.12.21-lantern.
go.sum Updates checksums for github.com/getlantern/sing-box-minimal to v1.12.21-lantern.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread go.mod
Comment on lines 11 to 15
replace github.com/sagernet/sing => github.com/getlantern/sing v0.7.18-lantern

replace github.com/sagernet/sing-box => github.com/getlantern/sing-box-minimal v1.12.19-lantern
replace github.com/sagernet/sing-box => github.com/getlantern/sing-box-minimal v1.12.21-lantern

replace github.com/sagernet/wireguard-go => github.com/getlantern/wireguard-go v0.0.1-beta.7.0.20251208214020-d78e69f1eff4
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The module requirement is github.com/sagernet/sing-box v1.12.22 (go.mod:29), but this replace pins it to github.com/getlantern/sing-box-minimal v1.12.21-lantern. This effectively downgrades the code that will be built relative to the declared version and can be confusing / brittle if APIs differ. Consider aligning the required github.com/sagernet/sing-box version to the upstream version your fork is based on, or bump the forked version to match the required upstream version if available (and add a brief comment if the mismatch is intentional).

Copilot uses AI. Check for mistakes.
@myleshorton myleshorton merged commit 4b87f1d into main Apr 14, 2026
13 checks passed
@myleshorton myleshorton deleted the myles/sing-box-minimal branch April 14, 2026 16:34
atavism added a commit that referenced this pull request Apr 22, 2026
* deps: update radiance to fix outbound removal breaking config refresh (#8639)

Picks up radiance PR #405 which fixes removeOutbounds failing when
extra outbounds (non-smart Pro locations) aren't in the URL test group.
This was causing every config refresh IPC to return 500, preventing
SetURLOverrides and CheckOutbounds from running — resulting in ~50%
of bandit probe callbacks never firing.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* Smart location country fix (#8638)

* Do not reset a smart location.

* code review updates

* Fix website split-tunneling reliability and CI validation (#8640)

* Add split tunneling e2e test

* Fix split tunneling website smoke assertion

* Fix split tunneling smoke navigation

* code review updates

* code review updates

* code review updates

* code review updates

* code review updates

* Macos system extension updates #2 (#8637)

* if system extension is in uninstall state do not block new installtion.

* update macos system extension test

* do not cache dart_tool

* Set the default status as unknown.

* code review updates

* Filter system apps from Windows split tunneling (#8641)

* Add split tunneling e2e test

* Fix split tunneling website smoke assertion

* Fix split tunneling smoke navigation

* code review updates

* code review updates

* code review updates

* Filter Windows system apps in split tunneling list

* code review updates

* code review updates

* Update system apps filter

* code review updates

* deps: update radiance + lantern-box to fix ~20% callback failure (#8642)

Picks up:
- radiance PR #406 → lantern-box PR #231: clear URL test history
  when SetURLOverrides is called so outbounds are re-tested with
  new callback URLs
- radiance PR #405: best-effort URL test group removal (already in
  previous update, carried forward)
- lantern-box v0.0.61: includes CA cert install + history fix

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: update radiance + lantern-box for callback-all-outbounds (#8644)

- radiance: removes URL test filtering, all outbounds tested (PR #407)
- lantern-box v0.0.62: 6-worker URL test pool + client delay reporting (PR #232)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Hide system apps without dropping user apps on Windows (#8643)

* code review updates

* code review updates

* code review updates

* chore: update radiance for async IPC outbound handlers (#8645)

Picks up getlantern/radiance#410: IPC outbound update/add/remove
handlers return 202 immediately and process asynchronously, fixing
the EOF errors on every config refresh.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: update radiance for split tunnel persistence fix (#8646)

Picks up getlantern/radiance#411: fixes split tunnel filters silently
not persisting due to dangling slice pointers in initRuleMap.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: upload and notify for nightlies even when some platforms fail (#8649)

The upload-s3 and upload-release-artifacts jobs required ALL platform
builds to succeed or be skipped. When a matrix entry failed (e.g.,
Linux arm64), the entire build-linux job reported as 'failure', which
caused both upload jobs to skip entirely — even though macOS, Android,
iOS, and Linux amd64 all succeeded.

Simplify the condition: run uploads if at least one platform build
succeeded. The upload steps already handle missing artifacts gracefully
(upload_if_exists checks for file existence).

This ensures the Slack notification goes out with download links for
whatever platforms did build successfully.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Stabilize nightly smoke checks and platform release publishing (#8651)

* Stabilize nightly smoke checks and platform release publishing

* code review updates

* code review updates

* chore: bump radiance to latest main (lantern-box v0.0.65) (#8654)

Picks up:
- Reflex active-probe resistance: silence-timeout + masquerade
  fallback (getlantern/lantern-box#237 via radiance#413)
- TLS 1.3 minimum enforcement for Reflex
  (getlantern/lantern-box#236)
- radiance split-tunnel filter persistence fix (#411)

No Flutter / client-side behavior changes required — the Reflex
hardening is server-side.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add arch to releases (#8652)

* feat: add arch to releases

* Update linux/packaging/usr/lib/systemd/system/lanternd.service

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: remove committed lanternd.service file

Agent-Logs-Url: https://github.com/getlantern/lantern/sessions/15085485-3c6a-4e1e-93ea-6e9bf0623d09

Co-authored-by: reflog <109876+reflog@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: reflog <109876+reflog@users.noreply.github.com>

* ran go mod tidy

* Improve Windows app discovery for shortcut wrappers (#8653)

* code review updates

* Improve Windows app discovery for shortcut wrappers

* code review updates

* code review updates

* code review updates

* The radiance-to-device limit is flow fix. (#8659)

* only use permalinks (#8658)

Co-authored-by: atavism <paul@getlantern.org>

* Add auth E2E tests and wire Linux/Windows CI (#8607)

* auth flow test updates

* auth flow test updates

* auth flow test updates

* code review updates

* code review updates

* code review updates

* code review updates

* deps: update sing-box-minimal to v1.12.21-lantern (#8660)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* Show vpn conflict dialog on smart location (#8661)

* Show vpn conflict dialog on smart location

* code review updates

* chore: bump radiance and lantern-box to latest (#8664)

- radiance: f1c425231e41 → 4241e6c5a9c6 (main HEAD)
- lantern-box: v0.0.65 → v0.0.67

Ran go mod tidy.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* Windows installer cleanup, improve app discovery and icon loading (#8666)

* code review updates

* Add comment

* code review updates

* remove sentry (#8665)

* Save last server location (#8655)

* save server location

* update radiance.

* Forbid AutoConnect if connect fails.

* update radiance

* code review updates

* update radiance

* code review updates (#8675)

* deps: restore sing-box-minimal v1.12.21-lantern (#8678)

PR #8655 ("Save last server location") accidentally downgraded
sing-box-minimal from v1.12.21-lantern back to v1.12.19-lantern in
go.mod during review churn. v1.12.21-lantern contains commit 9c79c311
("fix: make initial remote rule-set fetch non-fatal"), which turns the
Android bootstrap deadlock ("no available network interface" during
initial rule-set fetch) from a fatal libbox startup error into a
WARN + retry-after-start. Without it, nightly builds from main fail
to connect on any smart-routing country (Macao, Bulgaria, etc.).

Confirmed by comparing Freshdesk #172722 (broken, rule_set_remote.go:235,
v1.12.19-lantern) with #172795 (working, rule_set_remote.go:113,
v1.12.21-lantern). Same user, same device, same 9.0.25 version, same
smart-routing-bg-common-direct fetch failure — only the sing-box-minimal
version differs. The v9.0.25-beta-android tag was cut before #8655
merged, which is why Alexander's beta works while the nightly doesn't.

`go mod tidy` also dropped stale go.sum entries for superseded radiance
and lantern-box pseudo-versions and removed the unused getsentry/sentry-go
indirect (left behind after #8665).

* Makefile: fix empty common.Version on Windows CI (missing app version 400) (#8677)

* Makefile: use env-provided APP_VERSION so Windows CI populates version ldflag

common.Version in radiance was being linked as an empty string on Windows
CI builds. The `-X .../common.Version=$(APP_VERSION_PUBSPEC)` ldflag
depended on `$(shell grep ... | sed ...)` or a PowerShell fallback, and
the Windows path was producing an empty value. With common.Version empty,
backend.NewRequestWithHeaders sets X-Lantern-App-Version to "", and
lantern-cloud's /v1/config-new handler rejects the request with
400 "missing app version" — no config is returned, so the client falls
back to the embedded server list with no bandit tracks. Observed on
Freshdesk #172794 (Windows 9.0.26 nightly, radiance 400s on every retry).

Use the APP_VERSION already exported to GITHUB_ENV by build-windows.yml's
"Read app version from pubspec.yaml" step, and compute APP_VERSION_PUBSPEC
with Make built-ins ($(firstword $(subst +, ,...))) so no shell tools are
required. Drops the Windows_NT branch; local dev on Mac/Linux still uses
the grep/sed fallback (APP_VERSION ?=).

* Makefile: restore Windows local-dev fallback for APP_VERSION

The previous commit removed the Windows_NT branch under the assumption
that APP_VERSION would always come from the environment. That's true on
CI (build-windows.yml exports it to GITHUB_ENV), but local Windows
developers running `make windows-release` directly don't set the env
var, and the grep/sed fallback runs under cmd.exe where Unix-style
quoting fails silently.

Add back the Windows PowerShell branch, but only as the fallback when
APP_VERSION isn't in the environment (`?=` on both branches). CI keeps
working via the env override; local Mac/Linux uses grep/sed; local
Windows uses PowerShell Select-String. The `+`-splitting stays in
Make built-ins so it works no matter which branch produced APP_VERSION.

* Makefile: fail the build when APP_VERSION_PUBSPEC ends up empty

Adds a parse-time guard so an unresolvable version fails loudly rather
than producing a binary with empty common.Version — which is what caused
this whole bug in the first place. Addresses Copilot review feedback on
PR #8677.

$ APP_VERSION="" make
Makefile:36: *** APP_VERSION_PUBSPEC is empty; export APP_VERSION ...

* Roll in #8676: PowerShell quoting + Windows service startup log

Incorporates the non-overlapping pieces of @atavism's PR #8676 so we
can close it in favor of this PR:

- Swap the Windows APP_VERSION fallback's PowerShell invocation to
  outer-single / inner-double quoting. The previous outer-double /
  inner-single form gets mangled when Make expands $$ and cmd.exe
  passes the resulting string to powershell, even in the local-dev
  fallback path.
- Same fix for GO_VERSION's PowerShell shell-out further down in the
  Makefile (separate variable, same root cause).
- Log the Windows service startup (name, version, mode) so it's
  visible when triaging issues. Matches the log line from #8676.

* Fix data cap issue (#8668)

* Report an Issue screen fixes (#8670)

* updates to report issue screen

* updates to report issue screen

* rename report issue

* rename report issue

* code review updates

* ffi: add missing base64 import for app icon encoding

* code review updates

* code review updates

* code review updates

* code review updates

* code review updates

* code review updates

* code review updates

* code review updates

---------

Co-authored-by: Myles Horton <afisk@getlantern.org>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: jigar-f <132374182+jigar-f@users.noreply.github.com>
Co-authored-by: Ilya Yakelzon <reflog@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: reflog <109876+reflog@users.noreply.github.com>
Co-authored-by: Jay <110402935+jay-418@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants