3x-ui/internal
MHSanaei 1259c20e5f
fix(tgbot): dedupe exhausted-client report by email (#5453)
A client linked to N inbounds has one ClientStats row per inbound, all
sharing the same email. getExhausted appended every row, so the admin
expiration/traffic report listed the same user once per inbound (N info
blocks and N buttons), which Telegram split into multiple messages.

Track seen emails and report each client once.
2026-06-20 21:39:55 +02:00
..
config Test-quality audit: fix 2 prod bugs, strengthen weak tests, add mutation/fuzz/CI tooling (#5345) 2026-06-15 15:17:03 +02:00
database perf(db): add an index on settings.key (#5359) 2026-06-20 15:08:54 +03:30
eventbus feat(notifications): event bus architecture with Telegram and SMTP subscribers (#5326) 2026-06-15 21:03:41 +02:00
logger refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
mtproto refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
sub fix(sub): SS2022 share links must not base64-encode userinfo (#5432) 2026-06-20 11:25:12 +02:00
util fix(sub): SS2022 share links must not base64-encode userinfo (#5432) 2026-06-20 11:25:12 +02:00
web fix(tgbot): dedupe exhausted-client report by email (#5453) 2026-06-20 21:39:55 +02:00
xray fix(xray): guard log-writer race and bound handler gRPC deadlines (#5442) 2026-06-20 18:10:18 +02:00