Add utls_unsupported() and stop emitting uTLS for transports/types that can’t use it (hysteria, hysteria2, tuic, naive, or quic) to avoid startup fatal/dial errors. Expose optional url fields for urltest outbounds. Harden subscription import/update: treat explicit nulls as deletions, skip uci.set() when a value is null to avoid libuci errors and stale values. Changes in generate_client.uc and update_subscriptions.uc.
Add parsing support for Xray/V2Ray JSON subscription formats by introducing parse_xray_outbound and parse_xray_config. The new parser converts an Xray outbound (vless, vmess, trojan, shadowsocks, socks, http, hysteria) and its streamSettings into HomeProxy node configs, mapping TLS/Reality settings, transports (ws, grpc, h2/http, httpupgrade, xhttp), and protocol-specific fields. Special handling for hysteria (v1/v2) is included and skipped when sing-box lacks QUIC. The main subscription logic is updated to detect and decode arrays of full Xray configs (common from some providers) and fall back to existing JSON or base64 decoding; existing Shadowsocks SIP008 detection is preserved.
Introduce XHTTP packet-up controls and split-download support across UI, parsers and generators.
- htdocs/luci-static/resources/view/homeproxy/node.js: parse additional xhttp fields from links (scMaxEachPostBytes / sc_min_each_post_bytes and scMinPostsIntervalMs / sc_min_posts_interval_ms), add UI inputs for padding, packet-up limits and detailed split-download settings (host/path/server/port/SNI/ALPN/insecure).
- po/ru/homeproxy.po: add Russian translations for all new UI labels and help texts.
- root/etc/homeproxy/scripts/generate_client.uc: add xhttp_download() helper to build a per-core download transport, emit both camelCase (hiddify) and snake_case (sing-box) xhttp options, and attach the download section under the appropriate core-specific key.
- root/etc/homeproxy/scripts/update_subscriptions.uc: accept both dialects when parsing xhttp options (camelCase and snake_case) and handle both downloadSettings (hiddify) and download (sing-box), normalizing host/server/port and TLS/alpn/utls fields.
These changes ensure compatibility with both hiddify-core and sing-box dialects and expose finer-grained xhttp controls in the UI.
Add a new HomeProxy diagnostics page (htdocs/.../diagnostics.js) for core/config/DNS/nftables checks and report generation. Introduce ShadowTLS options (flag + password) in node settings and wire dependencies for Shadowsocks. Refactor core installation flow in status.js into prepare/download/install_pkg/install_kmods steps with new RPC calls, improving download/install error handling and progress messages. Update UI copy in client.js, and refresh localization strings and backend ucode/scripts to match the new features.
New Features
Outbound Interface Binding
Added Binded interface field to every outbound node — allows pinning a proxy node to a specific network interface. using SO_BINDTODEVICE
The bind_interface value is preserved across subscription updates and not overwritten when nodes are refreshed
Status Page — IP Check
Added Direct IP button: shows the current exit IP and latency of the direct outbound
Added Proxy IP button: shows the exit IP, latency, and active node name of the currently selected proxy in the URLTest/Fallback group
Status Page — YouTube Check
Added YouTube connectivity check alongside the existing Google, Yandex, Baidu, Speedtest checks
Clash API
sing-box Clash API now enabled on 127.0.0.1:9090 for all routing modes
Build
Added luci-i18n-homeproxy-zh-cn package to the build pipeline — Chinese Simplified translation is now distributed as a standalone installable package, for both main and legacy (OpenWRT 23.05) releases
Translations
Added Russian and Chinese Simplified translations for all new UI strings
Fixed missing Russian translation for unchecked
Add support for the Mieru protocol and extend outbound generation and subscription parsing to handle new fields and edge cases. Changes include: generate_client.uc - treat mieru server_port as 0, add portBindings, multiplexing, handshake_mode, and mie ru-specific handling; add naive-specific quic, extra_headers and udp_over_tcp branching and preserve ssh udp_over_tcp behavior. update_subscriptions.uc - parse naive extra headers and params (quic, uot, sni), add robust SSH parsing to avoid parseURL corruption (extract user/host/port, private keys, host keys, passphrases, and ssh_udp_over_tcp handling), add tuic zero_rtt and heartbeat params, and implement a new 'mieru' URI parser. Adjust validation to skip port checks for mieru and improve node cache handling when updating existing nodes so newly parsed fields are preserved.
Adds a new 'custom_json' routing mode that can use a user-provided client config; UI changes in client.js to expose custom_json options and trigger subscription updates via RPC. node.js: require rpc, add NaïveProxy node type and XHTTP transport with UI fields (xhttp_mode, xhttp_headers), and adjust field dependencies. generate_client.uc: add TLS fragment support, normalize TLS ALPN to an array, handle xhttp mode/headers, rename log/output filenames, add default_mark and use it in routing, and write out hiddify-c.json. update_subscriptions.uc: import urldecode_params and extend URI parsing (naive, ssh, enhanced trojan parsing including xhttp and hiddify extras), add WireGuard parsing, and make base64 node decoding more robust. init.d: support custom_json by copying user-supplied config or generating config as appropriate and include custom_json in DNSMasq routing cases. Add an RPC method (subscription_update) in luci.homeproxy to run the subscription updater.