3x-ui/internal
MHSanaei 6aa87f4e57
fix(clients): finish deleting from every inbound when one fails
Delete aborted its per-inbound loop on the first error, so a client
attached to inbounds across several nodes lost at most one per attempt:
the loop never reached the remaining nodes, the record cleanup after
the loop never ran, and each retry started over with whatever was left.
Operators with many nodes had to delete the same client once per node.

Collect per-inbound failures and keep going so every reachable inbound
and node is cleaned in a single pass, then keep the client record only
when something failed - its settings JSON still holds the client there,
so the next delete retries exactly the leftovers - and return the
joined failures instead of silently reporting success. DeleteByEmail's
legacy fallback loop gets the same treatment.

Closes #5845
2026-07-11 22:48:57 +02:00
..
config fix: make all self-managed file downloads/installs atomic, with real completion status (#5711) 2026-07-02 18:19:33 +02:00
database fix(node): never sweep a node's inbounds before their first adoption 2026-07-11 22:48:57 +02:00
eventbus style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
logger fix(inbounds): apply runtime changes after the DB commit (#5768) 2026-07-08 22:12:28 +02:00
mtproto refactor: modernize Go with strings.SplitSeq and maps.Copy 2026-07-08 22:10:54 +02:00
sub fix(sub): apply host Allow Insecure to Hysteria2 subscription links (#5866) 2026-07-09 02:03:05 +02:00
tunnelmonitor style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
util fix(link): reject non-finite and clamp out-of-range quicParams from fm= 2026-07-05 21:16:56 +02:00
web fix(clients): finish deleting from every inbound when one fails 2026-07-11 22:48:57 +02:00
xray refactor(frontend): replace axios with the native Fetch API 2026-07-08 01:09:18 +02:00