Add Xray WireGuard Inbounds & MASQUE, Major Bug Fixes & Performance Boost
v5.4.1...v5.5.0
This release includes security fixes. Updating is recommended.
🚀 Enhancements
- core: Apply routing, balancer and outbound edits without restarting nodes (#1030)
- xray: Support Xray WireGuard inbounds using existing peer allocation (#996)
- core-editor: MASQUE and XDrive forms for inbounds and outbounds (#1049)
- xray: Add MASQUE transport and settings (#1025), MASQUE XMUX settings in subscriptions and MASQUE password in user proxy settings
- xray: Add XDrive transport support (a7b10f31)
- finalmask: Add Xray udphop UDP mask and exp noise type (#974), update xdns and xicmp masks
- dashboard: Show the minimum Xray version for udphop and exp (#986)
- admin: Passkey (WebAuthn) login for admins (98befb12)
- statistics: Break traffic usage down by core and admin (#924)
- nodes: Persistent node and core config ordering (#875)
- users: Display and sort registered HWID counts (#951)
- cleanup: Delete inactive users by last activity (#913)
- settings: On-hold timeout action options (#901)
- core: Optional WireGuard server interface MTU (#917)
- subscription: Header placement option for CDN-blocked headers (#959)
- dashboard: Select optional Xray API services in both core editors (#662)
- wireguard: Faster allocation and subscription config caching (b606dbc2)
🔥 Performance
- stats: Speed up usage charts and Clash subscriptions (#1060)
- users: Honor bulk history loading and aggregate reloads (#1000)
- group: Make group list, sync, bulk operations and delete scale to 50k+ users (#967)
- groups: Add reverse group membership indexes (#772)
- hosts: Batch manager updates for bulk enable and disable (#945)
- templates: Avoid loading group members and batch list relations (#944)
- statistics: Reduce query load on large installs (#865)
- dashboard: Defer user dialogs and chart dependencies (#856)
- admin: Avoid history loads and per-user inbound queries (#855)
- nats: Avoid repeated serialization when sizing user batches (#853)
- usage: Coalesce PostgreSQL history writes (#787)
- usage: Reduce PostgreSQL write amplification (#778)
- users: Avoid full-table sorts in list queries (#774)
🩹 Fixes
- nodes: Add a keep-alive heartbeat and keep dead nodes from stalling the health check (#1069)
- hosts: Isolate broken hosts and stale xHTTP download hosts (#1053)
- dashboard: Users table selection and user dialog values (#1054)
- users: Keep traffic recorded during usage resets, batch the SQL (#1059)
- usage: Keep history writing after a node delete, faster on MySQL (#1058)
- notification: Stop dropping rate-limited Telegram messages (#1057)
- users: On-hold timeout action, bulk actions and input validation (#1056)
- core-editor: Flag WireGuard remoteDNS "local" unless an older Xray is known (#1051)
- core-editor: WireGuard inbound and outbound forms (#1048), manual WireGuard peers removed from the Xray editor
- dashboard: Stop generating WireGuard user peer keys (f24fdb7d)
- usage: Honor a zero node usage ratio in traffic accounting (db3ccde9)
- finalmask: Unify FinalMask settings across hosts and the config generator, clearer noise field labels (7c06b92c)
- hosts: Allow clearing KCP and WireGuard MTU fields (b34a797f)
- hosts: Show MASQUE settings in the transport tab for all hosts (e38184f2)
- hosts: Allow an empty fingerprint (13d5e677)
- dashboard: Allow updating explicitly selected Xray pre-releases (#1035)
- subscription: Stop XDrive hosts from breaking every subscription (#1011)
- wireguard: Treat Xray inbounds as managed only with a client subnet (#1010)
- node: Verify broken backend health before reattaching (#1009)
- xray: Keep serveOnNode certificates in fallback chains (#1006)
- templates: Preserve reset cycles in partial updates (#1003)
- hosts: Validate bulk selections and save batches atomically (#999)
- users: Preserve omitted next plans in partial updates (#998)
- xray: WireGuard inbound validation and address handling (63f99151), address example (#1002)
- node: Make large WireGuard edits and restarts reliable (#908)
- node: Let lifecycle operations preempt user sync (#903)
- node: Make user synchronization reliable and avoid redundant work (#896)
- node: Debounce health failures and recovery (#950)
- notification: Make notification delivery bounded and recoverable (#947)
- dashboard: Restore typechecking and preserve host form values (#857)
- users: Preserve on-hold next-plan activation (#948)
- core: Restart affected nodes after core deletion (#934)
- core-editor: Allow loopback tunnel targets (#905)
- core-editor: Keep new header and attribute rows visible (#949)
- finalmask: Support stable fragment schema (#864), fix maxSplit serialization (#965)
- subscription: Build Hysteria2 hosts whose FinalMask has no udp mask (#993)
- subscription: Strip
/from subscriptionurl_prefix(16ce46d8) - dashboard: Send chart ranges with one UTC offset across DST (#989)
- dashboard: List the API section in the command menus (#995)
- dashboard: Copy API keys and links over plain HTTP (#984, #907)
- dashboard: Cancel obsolete API requests at the HTTP transport (#852)
- charts: Use the app theme provider and distinguish series independently of the accent theme (#985, #952)
- node: Give maintenance RPCs a timeout longer than node-serviced's, send core versions with a v prefix (926f4274)
- db: Store node CPU usage as a float (8ece6944)
🏡 Chore
- Bump pasarguard-node-bridge to 0.9.4 (#1065)
- Update core-kit and xray-config-kit to 0.2.12 and 0.4.1
- Dependency updates
⚠️ Notes
- Update nodes to v0.5.5 first. Xray WireGuard inbounds and applying routing, balancer and outbound edits without a restart need node v0.5.5; older nodes restart as before.
- New settings:
NODE_HEALTH_PROBE_TIMEOUT(default 5 s) andNODE_HEALTH_MAX_BACKOFF(default 60 s, 0 turns the backoff off). - A node
keep_alivebelow 20 s (40 s with several workers) now logs a warning. 120-300 s is recommended on unstable links. - The core save option is now labelled "Sync Nodes".
❤️ Contributors
- T3ST3ST3R0N (@T3ST3ST3R0N)
- Hoseyn (@dr-hoseyn)
- Mohammad (@ImMohammad20000)
- Sina (@x0sina)
- bitwiresys (@bitwiresys)
- Mark (@mark-avd)
- DrSaeedHub (@DrSaeedHub)
- wahh3b (@wahh3b-lgtm)
- Multi-Engineer-dev (@Multi-Engineer-dev)
- Mobin Alipour (@mobinalipour)
- KlimSemikin (@KlimSemikin)
- Kaushik Reddy Lingireddy (@Lingikaushikreddy)
- Iaroslav (@Rerowros)
- ChownYourLife (@ChownYourLife)