github Incognito-Coder/tx-ui v0.9.6

2 hours ago

[v0.9.6] - 2026-11-02

🚀 Features & Enhancements

  • WireGuard Client Configuration & QR Code Preshared Keys:

    • Interoperable PSK Delivery: Standardized preshared key handling (preSharedKey and psk) across client configuration file downloads (.conf) and share link URLs.
    • Complete URL Query Parameters: Added pre_shared_key, preshared_key, and psk URL parameters to wireguard:// links and QR codes, ensuring compatibility across diverse client apps (v2rayN, NekoBox, Shadowrocket, Streisand, etc.).
    • Client Modal & Bulk Sync: Synchronized preSharedKey and psk across client creation/edit forms, bulk client generation, and detail modal downloads.
    • Key Transparency: Added Public Key, Private Key, and Preshared Key fields directly into the Client Details modal table.
    • Subscription Service Parity: Ensured preshared keys are preserved in both standard URI (subService.go) and JSON (subJsonService.go) subscription outputs.
  • Xray-core v26.10.31 Integration (26.10.21 -> 26.10.31):

    • Dependency Upgrade: Upgraded github.com/xtls/xray-core from commit 1b1647cd9ddf (v26.10.21) to commit a4a3dff5b20c (v26.10.31).
    • XHTTP Transport Enhancements:
      • Added support for OPTIONS as uplinkHTTPMethod in stream_xhttp.html (matching Xray-core #7290).
      • Added configurable HTTP/2 server parameters (h2Params) in xHTTPStreamSettings model (inbound.js) and UI (stream_xhttp.html) for fine-grained tuning of Go's http.HTTP2Config on SplitHTTP servers (Xray-core #7295).
    • XDRIVE Transport S3 Storage Backend:
      • Integrated native "s3" service backend in XDriveStreamSettings (inbound.js, outbound.js), inbounds (stream_xdrive.html), and outbounds (outbound.html).
      • Added support for S3 endpoint, region, bucket, path-style addressing, and S3 credentials (AccessKeyID, SecretAccessKey, session token) (Xray-core #7231).
      • Integrated multi-slot ring buffering session management for Google Drive backend (Xray-core #7217).
    • TUN Inbound WFP Leak Protection:
      • Enhanced autoSystemWfpBlockLeak in tun.html with tag mode to support custom tcp/<port> and udp/<port> leak-blocking rules (e.g. tcp/853, udp/853), alongside windnsclient, dns, and misconfigtun (Xray-core #7288).
    • Security & Network Core Fixes:
      • Disabled MPTCP by default on listeners to mitigate Linux CVE-2026-98432 while preserving explicit sockopt.tcpMptcp opt-in (Xray-core #7291).
      • Geodata streaming gzip decompression for asset downloads, download size limit (256 MiB), and mandatory .dat file extensions with >= 1 minute interval guards (Xray-core #7267, #7294).
      • Freedom outbound deprecation warnings guiding migration of legacy fragment and noises to Finalmask (Xray-core #7242).
      • WebSocket transport EOF handling on normal close frames (Xray-core #7236).
      • API commands fix for xray api bi balancer1 balancer2 (Xray-core #7299) and xray api adrules (Xray-core #7276).
      • QUIC sniffer gap rejection in CRYPTO data (Xray-core #7292).
    • Internationalization (i18n):
      • Added localized S3 parameters (s3Endpoint, s3Region, s3Bucket, s3PathStyle, s3SecretsDesc) across all 13 supported languages.
    • Docker & Documentation Alignment:
      • Updated DockerInit.sh binary download URL to v26.10.31.
      • Updated mock Xray version in interactive documentation (docs.html) to v26.10.31.
      • Updated feature lists in all language README files to reflect v26.10.31 features.

🐛 Bug Fixes

  • WireGuard Inbound Client Management & Stability:
    • Idempotent Client Traffic Creation: Resolved UNIQUE constraint failed: client_traffics.inbound_id, client_traffics.email on inbound updates by making AddClientStat update existing records without wiping traffic usage counters.
    • Dynamic Inbound Client Addition (Zero Restart): Implemented AddUser support for the wireguard protocol in xray/api.go via Xray's HandlerService gRPC API, eliminating forced Xray restarts when adding WireGuard clients.
    • AllowedIPs CIDR Normalization: Guaranteed valid subnet prefixes (/32 for IPv4, /128 for IPv6) in WireGuard peer configurations, fixing client ping/connectivity issues caused by unadorned IP addresses.
    • Schema Fallback Resiliency: Added fallback between peers and clients setting keys in GetClients, BuildInboundConfig, AddInboundClient, and wireguardClientsAsPeers to prevent empty peer arrays.
  • Core Lifecycle & API Port Readiness:
    • Eliminated Transient Connection Refusals: Resolved connection refused debug errors during Xray restarts by verifying that the gRPC API port is actively accepting TCP connections before Process.Start() returns.
    • Graceful Termination Wait in Process.Stop(): Added process exit tracking via doneChan and isStopping flag, ensuring the terminated Xray core fully exits and releases all network ports/sockets before a new instance is spawned.
    • Atomic Restart Lifecycle Tracking: Added isRestarting state tracking in XrayService to prevent concurrent traffic jobs from dialing unready endpoints.
    • Duplicate Log Suppression: Removed redundant Failed to fetch Xray traffic debug logging in GetXrayTraffic.
  • Auto-Delete Depleted Clients Enforcement:
    • Updated AutoDeleteDepletedClientsJob to check autoDeleteDay <= 0 at the very entry point, ensuring the job does not run or log when disabled (autoDeleteDay = 0).
  • UI & Inbound API Robustness:
    • Login Secret Reactivity: Initialized loginSecret in the User class constructor (login.html) to guarantee Vue reactivity and eliminated button spinner flickering on page load.
    • Comprehensive Xray Process Nil-Guards: Added nil-safe checks to *xray.Process methods and guarded live Xray API invocations across InboundService with p != nil && p.IsRunning().
    • API Timeout Contexts: Added 5-second timeout contexts to AddInbound, DelInbound, and AddUser gRPC calls in XrayAPI.

Don't miss a new tx-ui release

NewReleases is sending notifications on new releases.