[v0.8.7] - 2026-10-03
🚀 Features & Enhancements
- Client Traffic Reset in Edit Modals:
- Added a direct "Reset Traffic" action button and real-time upload/download usage indicators inside the Client Edit Modal (both Node Clients
/panel/clientsand Inbound Clients modal/panel/inbounds). - Resets usage (
up = 0,down = 0) reactively in both the database and UI without requiring a full page refresh. - Automatically re-enables the client across both
NodeClientandClientTrafficrecords when reset (provided the client is not expired), preventing background jobs from immediately re-exhausting the client. - Robustly matches traffic records by both
node_client_idand email, ensuring legacy records with NULL IDs are properly reset.
- Added a direct "Reset Traffic" action button and real-time upload/download usage indicators inside the Client Edit Modal (both Node Clients
- Subscription JSON URL in Client Info:
- Added Sub JSON URL row (
subJsonURI + subId) with a one-click copy button to the Client Details modal (detailModal) alongside standard subscription links.
- Added Sub JSON URL row (
🐛 Bug Fixes & Stability
- Zero-Downtime Client Expiration & Quota Management:
- Revoke expired and traffic-exhausted clients in-memory dynamically via the Xray
AlterInboundRemoveUserAPI rather than performing a full core restart. - Removed disruptive
needRestarttriggers indisableInvalidClientsandDisableExhausted, preventing disconnection of active connected users when other users expire or exceed data caps. - Replaced immediate hard restarts in
XrayTrafficJobwith graceful conditional restarts only when dealing with protocols that do not support dynamic user alteration (e.g., WireGuard).
- Revoke expired and traffic-exhausted clients in-memory dynamically via the Xray
- Client Renewal & Expiration Synchronization:
- Fixed client renewal via API keeping old expiration timestamps:
NodeClientController.updatenow merges partial updates and handles snake_case JSON keys (expiry_time,total_gb). - Bidirectionally synchronized
expiry_time,total_gb,enable, andresetbetweennode_clients,client_traffics, and inbound settings JSON during client updates and renewals. - Synchronized group traffic calculations and auto-renew jobs (
autoRenewClientsandNodeClientService.AutoRenew) to updatenode_clientsalongsideclient_traffics.
- Fixed client renewal via API keeping old expiration timestamps:
- Dynamic Client Provisioning & Inbound Sync:
- Dynamically add and remove clients on active inbounds via Xray API without service interruption.
- Synchronized
inbounds.settingsJSON withnode_client_linksto prevent resurrection or migration inconsistencies upon restart.
- Modal Stepper Input Fix:
- Fixed numeric stepper
<a-input-number>controls across all client and inbound modals (clients.html,client_modal.html,client_bulk_modal.html,form/client.html,form/inbound.html) where clicking the up/down arrows failed to increment or decrement Total GB flow.
- Fixed numeric stepper
⚡ Performance & Database Optimization
- SQLite Concurrency & Lock Prevention:
- Enabled SQLite Write-Ahead Logging (
PRAGMA journal_mode = WAL;), increasedbusy_timeoutto 10 seconds (10000ms), and setPRAGMA synchronous = NORMAL;to eliminatedatabase is locked/database is busyerrors under concurrent operations. - Configured Go database connection pool (
SetMaxOpenConns(25),SetMaxIdleConns(5),SetConnMaxLifetime(time.Hour)) to avoid transaction deadlocks while maximizing read throughput.
- Enabled SQLite Write-Ahead Logging (
- Logging & Core Performance:
- Optimized internal logger with early-return short-circuits on non-debug levels, thread-safe buffering, and precompiled regexes in log writers to minimize CPU and allocation overhead.
🎨 UI & Mobile Polish
- Mobile Long Link Text Wrapping:
- Added robust word wrapping (
word-break: break-all; overflow-wrap: anywhere; white-space: normal) for long subscription, Sub JSON, and configuration URLs in Client Info (clients.html) and Inbound Info (inbound_info_modal.html) modals to prevent text overflow on mobile screens.
- Added robust word wrapping (
- Inbounds Page Simplification:
- Cleaned up Inbounds management page (
inbounds.html) by removing the redundant filter switch and radio controls, maintaining a cleaner search bar interface.
- Cleaned up Inbounds management page (