Commit graph

649 commits

Author SHA1 Message Date
Alireza Ahmadi
cc01bbdeff Sing-Box v1.14.2 2026-10-07 23:22:29 +02:00
Alireza Ahmadi
41d9f5ccac Go v1.27.1 2026-10-07 22:53:01 +02:00
Alireza Ahmadi
6d82306dfc add 3rd party app to readme: Android app #1285 & fix start history 2026-10-07 22:33:42 +02:00
Alireza Ahmadi
62d337951f quic: close sessions with CONNECTION_CLOSE on restart, kick and removal #1271 #1278 2026-10-07 21:31:06 +02:00
Alireza Ahmadi
5211b74368 migration: clear legacy ECH options from tls server and out_json #1275 2026-10-07 21:17:04 +02:00
Alireza Ahmadi
4b105092fb healthcheck: open db without migrations, honor webListen #1274
Some checks are pending
Release S-UI / test (push) Waiting to run
Release S-UI / build-frontend (push) Blocked by required conditions
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Release S-UI / build-windows-amd64 (push) Blocked by required conditions
Release S-UI / build-windows-arm64 (push) Blocked by required conditions
Release S-UI / publish (push) Blocked by required conditions
2026-09-29 17:20:18 +02:00
Alireza Ahmadi
fc6d377a2a cron: apply globalReset on save without restart, validate spec #1269 2026-09-29 16:31:22 +02:00
Alireza Ahmadi
4437959fb7 usersession: cap kick mute at 30s so QUIC users are not locked out #1271 2026-09-29 16:27:19 +02:00
Alireza Ahmadi
499277aa5b fix wget error #1273 2026-09-29 16:20:06 +02:00
Alireza Ahmadi
13abbdc431 v1.6.3
Some checks failed
Release S-UI / test (push) Has been cancelled
Release S-UI / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Release S-UI / build-windows-amd64 (push) Has been cancelled
Release S-UI / build-windows-arm64 (push) Has been cancelled
Release S-UI / publish (push) Has been cancelled
2026-09-16 02:54:30 +02:00
Alireza Ahmadi
063283350c Sing-Box v1.14.1 2026-09-16 01:05:32 +02:00
Alireza Ahmadi
158a204b5f feat: live traffic 2026-09-16 00:53:43 +02:00
Alireza Ahmadi
a4df7552a8 revert migration to the old solution 2026-09-15 21:07:34 +02:00
Alireza Ahmadi
4f6f714ae2 multi user snell #1262 2026-09-15 20:44:55 +02:00
Alireza Ahmadi
bb0f49ac35 fix reset traffic #1261
Some checks are pending
Release S-UI / test (push) Waiting to run
Release S-UI / build-frontend (push) Blocked by required conditions
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Release S-UI / build-windows-amd64 (push) Blocked by required conditions
Release S-UI / build-windows-arm64 (push) Blocked by required conditions
Release S-UI / publish (push) Blocked by required conditions
2026-09-15 20:19:23 +02:00
Alireza Ahmadi
79df6290f4 v1.6.2
Some checks failed
Release S-UI / test (push) Has been cancelled
Release S-UI / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Release S-UI / build-windows-amd64 (push) Has been cancelled
Release S-UI / build-windows-arm64 (push) Has been cancelled
Release S-UI / publish (push) Has been cancelled
2026-09-13 05:19:31 +02:00
Alireza Ahmadi
3a0759e6e1 fix setting save error #1258 2026-09-13 05:16:13 +02:00
Alireza Ahmadi
48a67a3807 v1.6.1
Some checks are pending
Release S-UI / test (push) Waiting to run
Release S-UI / build-frontend (push) Blocked by required conditions
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Release S-UI / build-windows-amd64 (push) Blocked by required conditions
Release S-UI / build-windows-arm64 (push) Blocked by required conditions
Release S-UI / publish (push) Blocked by required conditions
2026-09-12 20:09:45 +02:00
Alireza Ahmadi
2e11bd2a4c sub json template docs #1257 2026-09-12 19:32:13 +02:00
Alireza Ahmadi
f344f64b55 qa tests and fixes phases 3-6 2026-09-12 18:49:52 +02:00
Alireza Ahmadi
dcbe9a8728 unified pipelines
Some checks are pending
Release S-UI / test (push) Waiting to run
Release S-UI / build-frontend (push) Blocked by required conditions
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Release S-UI / build-windows-amd64 (push) Blocked by required conditions
Release S-UI / build-windows-arm64 (push) Blocked by required conditions
Release S-UI / publish (push) Blocked by required conditions
2026-09-12 17:25:04 +02:00
Alireza Ahmadi
9ec56e93b1 qa test and fix phases 0,1,2 2026-09-12 16:59:29 +02:00
Alireza Ahmadi
1e65f12ade bump packages
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-09-10 03:22:12 +02:00
Alireza Ahmadi
5a33e0243e feat: maintenance mode (stop Sing-Box core) #1247 2026-09-10 02:53:20 +02:00
Alireza Ahmadi
168ba563b5 feat: TLS spoofing 2026-09-10 02:11:16 +02:00
Alireza Ahmadi
e7c1d702e4 fix inbound tag name in json and clash #1249 2026-09-10 01:51:56 +02:00
Alireza Ahmadi
cbce1fef0f generate OpenVPN StaticKey 2026-09-10 01:43:53 +02:00
Alireza Ahmadi
d8625970e4 Drop the TLS template for OpenVPN and OpenConnect endpoints (#1253) 2026-09-10 01:30:01 +02:00
BingEdward
686f233ff6
Remove stale quic options from naive out_json when congestion control is cleared (#1244)
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
FillOutJson merges into the previously stored out_json, but naiveOut never
removed the old quic / quic_congestion_control keys. Clearing the QUIC
Congestion Control field on an existing naive inbound therefore left
"quic": true and the old algorithm in the generated config. Delete both
keys first, matching the other *Out helpers.

Closes #1243
2026-09-01 21:26:19 +02:00
Alireza Ahmadi
13f54c4c59 remove with_usbip tag 2026-09-01 21:06:59 +02:00
Alireza Ahmadi
311b328bf9 v1.6.0 2026-09-01 07:45:01 +02:00
Alireza Ahmadi
3b86cb62bb update packages 2026-08-31 19:06:40 +02:00
Alireza Ahmadi
22c0aea842
Merge pull request #1240 from alireza0/singbox-1.14
Some checks are pending
Release S-UI / build-frontend (push) Waiting to run
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Build S-UI for Windows / build-frontend (push) Waiting to run
Build S-UI for Windows / build-windows-amd64 (push) Blocked by required conditions
Build S-UI for Windows / build-windows-arm64 (push) Blocked by required conditions
Singbox 1.14
2026-08-31 17:16:00 +02:00
Alireza Ahmadi
a8d5975fd2 Sing-Box v1.14.0 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
bb42d56013 Sing-Box v1.14.0-rc.5 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
df1337d590 remove depricated options 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
97a69bef2a http http2 quic fields 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
4202af9b17 other migrations to 1.14 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
91ff2e72d0 upgrade acme to ca provider 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
2951532c94 new endpoints + mtls 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
e7cb21d74b Sing-Box v1.14.0-rc.4 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
a5c6102359 core: cover the new 1.14 protocols with config tests
Starts snell v5 and v6 inbounds, a snell outbound and an oom-killer service;
bridge gets construct-only coverage since creating its tun needs privileges.

Also bumps the frontend submodule to the UI for these protocols.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
2a0a240ecd core: register the protocols added in sing-box 1.14
Adds every new 1.14 type to the registries, following upstream's include
package: the build-tagged ones get the same stub pair s-ui already uses for
naive and tailscale, so a build without the tag reports which tag is missing
instead of failing to parse.

- inbound: snell, cloudflared
- outbound: snell, bridge
- endpoint: openconnect, openvpn (client and server)
- dns transport: mdns, resolved, openconnect, openvpn
- service: api, oom-killer, usbip (server and client)

with_cloudflared, with_openconnect, with_openvpn and with_usbip are added to
build.sh, the Dockerfile and both release workflows. Verified the linux
amd64/arm64 and windows amd64 cross-builds CI ships.

Registry tests now assert the full expected type set rather than just
certificate providers, and the box tests write their cache file to a temp
directory instead of leaving core/cache.db behind.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
ebaeea6d9b frontend: bump to the 1.14 option shapes
Points the submodule at s-ui-frontend singbox-1.14, which stops emitting
tls.acme, rule-set download_detour and dns.independent_cache.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
f41da0dfdd database: migrate options deprecated in sing-box 1.14
One-shot migration over the stored config and TLS rows, guarded by a setting
so it runs once:

- dns.independent_cache is dropped (1.14 reads it only to warn; the value is
  never passed to the DNS client)
- experimental.cache_file.store_rdrc becomes store_dns
- route.rule_set[].download_detour becomes the http_client 1.14 builds for it
- inline tls.acme becomes tls.certificate_provider with type "acme"

Legacy DNS address filters and the `strategy` DNS rule action are NOT migrated
automatically. Converting them means inserting evaluate rules and reordering,
which changes how names resolve, so they are logged with the upstream
migration link for the operator to handle.

Tests cover each rewrite, that unrelated options survive, that a config with
nothing to migrate is left byte-identical, and that the migrated shapes build
a box with no deprecation warning.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
8089e95a5e core: register ACME and Tailscale certificate providers
The 1.14 upgrade wired up a certificate provider registry with only
origin_ca, so `tls.certificate_provider: {"type": "acme"}` failed to parse
with "unknown certificate provider type". Register ACME and Tailscale too,
behind the same build tags upstream uses, with stubs that report a helpful
error when the tag is absent.

This is what `tls.acme` migrates to in 1.14: the same fields move under
certificate_provider with `type: "acme"`, which parses clean with no
deprecation warning.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
6f046508db core: add config compatibility test for the 1.14 upgrade
Starts a real box for each config in testdata/configs and logs the
deprecation notes it triggers. Covers the eight re-copied protocol inbounds
plus the option shapes s-ui's UI can emit that 1.14 deprecates.

Confirms no config s-ui produces fails to start under 1.14; the deprecated
ones warn and keep working.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
afe16b4d2d Sing-Box v1.14.0-rc.2: compile-level upgrade
Re-sync core/protocol/* from upstream (they were verbatim copies), re-fork
core/box.go onto the new upstream box.go, and adapt to changed APIs:

- adapter.ConnectionTracker gained RoutedFlow; add no-op impls to both trackers
- log.ObservableFactory gained AttachPlatformWriter; add no-op impl
- box.Context now takes a CertificateProviderRegistry; wire one up with
  the origin_ca provider
- box.go now depends on debug*.go; copy them from upstream
- hysteria inbound moved QUIC option building into quic.go; copy it

Deps: sing v0.9.0-beta.4, sing-quic v0.7.0-beta.4, sing-tun v0.9.0-beta.2.

Runtime behaviour is not yet validated and config migration for options
deprecated in 1.14 is not done, so this is not ready for main.
2026-08-31 14:06:23 +02:00
LiGaAmG
bb4baebb13
fix(hysteria2): preserve user identity across hot updates (#1231)
* fix(hysteria2): use stable user identity on hot updates

Replace Service[int] (position-based) with Service[string] (name-based)
so that existing sessions retain a correct stable identity when the user
list changes via UpdateUsers. Remove the now-redundant userNameList field.

Fixes panic: runtime error: index out of range after user deletion,
and wrong username attribution when list positions shift.

* fix(hysteria2): gofmt struct field alignment after userNameList removal

* fix: extend stable user identity fix to hysteria, tuic, trojan, vless, vmess

The same Service[int] → Service[string] bug fixed for hysteria2 in the
previous commit affects all five remaining inbound protocols. When users
are deleted or reordered, integer position-based identity causes panics
(index out of range) and wrong username attribution in logs and traffic
stats.

Apply the same fix across hysteria v1, tuic, trojan, vless, and vmess:
- Service[int] → Service[string] in all five inbound structs
- Pass user.Name as the stable identity instead of the list index
- Remove the now-unnecessary cached `users []option.*User` fields from
  trojan, vless, and vmess structs (they existed solely to map indexes
  back to names)
- UpdateUsers helpers rebuilt to pass names, keeping auth/password
  fields unchanged

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ci: add go vet + gofmt check for patched protocols

* fix: gofmt struct field alignment in hysteria and tuic inbound

* fix: address review feedback on stable-identity PR

Three fixes from maintainer review:

1. Logging regression (trojan/vless/vmess): when a client has no name,
   the old code fell back to the index as a log label; the new code was
   emitting `[] inbound connection`. Align with the hysteria2 pattern:
   omit the `[name]` prefix entirely when name is empty.

2. Duplicate/empty client names: trojan's Service.UpdateUsers rejects a
   repeated identity, so two clients with the same name on the same
   inbound would make UpdateUsers fail. vmess silently overwrites the
   earlier entry. vless misattributes flow. Add server-side validation
   in ClientService.Save (new, edit, addbulk) that rejects empty names
   and names already in use on any shared inbound within the same tx.

3. Remove .github/workflows/check.yml: the workflow only triggered on
   the feature branch, so it would be permanently dead after merge.

* fix: make client name validation global and trim whitespace

* ci: temporarily re-add check workflow for CI verification

* ci: remove temporary check workflow

* validate client names on bulk save paths too

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Alireza Ahmadi <alireza7@gmail.com>
2026-08-31 13:57:48 +02:00
Alireza Ahmadi
88bde26fcf cert issue by CF token #1237
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-08-26 13:07:40 +02:00