3x-ui/frontend/src
MHSanaei ad56b1bbd7
fix(clients): preserve ClientRecord on inbound delete + filter Attached inbounds to multi-client protocols
Replace the global orphan sweep in setRemoteTrafficLocked with a
per-inbound diff cleanup: only delete a ClientRecord whose email
disappeared from a snap-tracked inbound (i.e. a node-side delete).
Inbounds that vanished entirely from the snap (e.g. admin deleted
the inbound on master) aren't iterated, so a client whose last
attachment came from that inbound is now left alone instead of
being deleted alongside the inbound.

ClientFormModal and ClientBulkAddModal now filter the Attached
inbounds dropdown to protocols that actually support multiple
clients: shadowsocks, vless, vmess, trojan, hysteria, hysteria2,
and portfallback (which routes through VLESS settings).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 00:29:20 +02:00
..
api feat(clients): add top-level Clients tab and CRUD API 2026-05-17 07:28:55 +02:00
components feat(clients): add top-level Clients tab and CRUD API 2026-05-17 07:28:55 +02:00
composables fix(inbounds): hide node UI when no enabled node exists 2026-05-13 17:42:40 +02:00
entries feat(clients): add top-level Clients tab and CRUD API 2026-05-17 07:28:55 +02:00
i18n fix: split locale chunks by removing eager i18n glob 2026-05-15 10:50:40 +02:00
models fix(shadowsocks): generate valid ss2022 keys and per-client method for legacy ciphers 2026-05-18 00:19:09 +02:00
pages fix(clients): preserve ClientRecord on inbound delete + filter Attached inbounds to multi-client protocols 2026-05-18 00:29:20 +02:00
utils feat(ui): use the host as the browser tab title prefix 2026-05-13 14:23:57 +02:00