3x-ui/frontend/src/pages/inbounds
MHSanaei 750bd93681
feat(clients): live WebSocket updates + Ended status surfacing
ClientsPage now subscribes to traffic / client_stats / invalidate
WebSocket events instead of polling /onlines every 10s. Per-row
traffic counters refresh in place, online state stays current, and
list-level mutations elsewhere trigger a refresh.

The client roll-up summary moves from InboundsPage to ClientsPage
where it belongs, restructured into six labeled stat tiles
(Total / Online / Ended / Expiring / Disabled / Active) with email
popovers on the ones with issues.

Auto-disabled clients (traffic exhausted or expiry passed) now
classify as 'depleted' even though clients.enable=false, so they
show up under the Ended filter and render a red Ended tag instead
of looking indistinguishable from an operator-disabled row.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 13:38:58 +02:00
..
InboundFormModal.vue refactor(inbounds): drop manual Fallbacks UI from inbound modal 2026-05-17 12:07:00 +02:00
InboundInfoModal.vue refactor(clients): finish migrating to ClientService + tidy IP routes 2026-05-17 11:25:24 +02:00
InboundList.vue feat(clients,inbounds): move search/filter to Clients page + small fixes 2026-05-17 12:37:05 +02:00
InboundsPage.vue feat(clients): live WebSocket updates + Ended status surfacing 2026-05-17 13:38:58 +02:00
QrCodeModal.vue fix: also hide QR code for ML-KEM-768 links (too long for QR generation) 2026-05-14 12:34:23 +02:00
QrPanel.vue feat: click QR to copy/save image instead of link text 2026-05-14 17:40:40 +02:00
useInbounds.js feat(clients): live WebSocket updates + Ended status surfacing 2026-05-17 13:38:58 +02:00