Introduce Zapret (nfqws2) integration across UI, init, firewall and RPC. Adds UI controls to enable/install Zapret, a strategy preset picker, strategy tester, and a Discord-voice opt-in; plumbing in client.js and node.js to install/manage and test strategies. Add zapret_test.sh to run isolated strategy tests against several sites. Enable runtime nfqws2 instance via init script (procd) and ensure HomeProxy runs its own nfqws2 with admin-specified strategy. Update nft rules and firewall_post.ut to mark and queue zapret flows (including both TCP and UDP/QUIC handling) and to respect zapret marks; generate_client.uc emits zapret outbound, optional voice-port routing, adds sniff action for QUIC routing, and tweaks default uTLS fingerprint to 'edge'. Add RPC handlers (zapret_status, zapret_prepare_install, zapret_install_pkg, zapret_remove, zapret_strategy_test) to support detection, installation and testing from the web UI. Minor: register 'zapret-out' as a routing option and wire it into rule generation.
Several small but important updates:
- UI (htdocs/luci-static/resources/view/homeproxy/client.js): add Cloudflare (1.1.1.1) and Google (8.8.8.8) DNS presets; restrict the "Same as main node" (main-out) option to non-custom routing modes and only when a main_node exists; always expose ByeDPI outbound when enabled; rename "Proxy filter mode" to "Proxy mode for devices" and add explanatory hints for gaming/global proxy IP options.
- Node UI (htdocs/luci-static/resources/view/homeproxy/node.js): fix closure variable (i -> k) to avoid iteration bug and shorten the probe hint text.
- Generator (root/etc/homeproxy/scripts/generate_client.uc): add xhttp_padding() to coerce disabled xhttp padding values ('0', '0-0' or empty) to the safe default '100-1000' and apply it when emitting sing-box/hiddify xhttp fields to prevent fatal core errors.
- Init script (root/etc/init.d/homeproxy): restore subscription auto-update cron entry on start when enabled (adds daily run at configured hour and restarts cron), reintroducing behavior lost during a prior init rewrite.
- Translations (po/ru/homeproxy.po): add and update Russian translations for the new/changed UI strings.
These changes prevent runtime failures for certain provider configs, restore missing auto-update behavior, improve UI clarity, and fix a node probing bug.
Introduce a Connectivity diagnostics section (connection checks, exit IP / active node info) with new RPCs and live polling; move connection-check UI out of status into diagnostics and add translations. Add active URLTest node display and several routing/DNS UI tweaks for 'proxy_banned_ru' mode (russia-dns, secure-dns, main-out, byedpi-out). Rework ByeDPI presets: group presets by letter, add community presets, improve "Test all" flow with ordered execution, a Stop button, clearer progress/messages and updated translations. Fix template/comment text (replace crude QUIC comment), and harden client config generation by recognizing built-in DNS tags and skipping empty/dangling routing node outbounds to avoid crashes. Minor README_ru wording update and assorted i18n strings added.
Rename project and packages to Re:HomeProxy (luci-app-re-homeproxy), update package metadata and build scripts, and adjust UI labels and menus accordingly. Improve core install flow: add RAM detection, overlay-compression heuristics, automatic selection between full and compact (UPX) builds, stricter storage/RAM checks, and a variant argument for prepare_install; fetch sing-box-extended releases more robustly. Fix runtime behavior: init.d restores a default config when missing, add packaged homeproxy.default, prefer user-preferred core in ucode, and suppress top-level TLS for Shadowsocks in generated client configs. UI tweaks include better install/remove UX, gating "Same as main node" for custom routing, and updated diagnostics/status strings. Update translations (po files) and rpcd/menu/acl renames to match the rebrand.
Move ByeDPI configuration and testing UI from the Client tab to the Node Settings page and add an integrated installer/prepare flow. client.js: add fs/ui requires, new RPC declarations and core_mgmt download helper, change ByeDPI flag to auto-install on first enable with a modal-driven install flow and requirement checks; remove the large in-page ByeDPI settings block (now on Node page). node.js: add a full ByeDPI tab (presets, command options, strategy tester, test-all runner, UDP-over-TCP and QUIC-block flags) with RPC-based testing and curl detection. status.js: disable package removal when ByeDPI is selected as the main node and pass a flag to the card builder. Update po and pot translation strings and adjust several UI texts and warnings. Also update init/scripts/ucode files related to ByeDPI packaging and management.
Introduce local ByeDPI (ciadpi) integration: add a ByeDPI tab in Client settings (presets, cmd options, tester, UDP-over-TCP and QUIC-blocking), a ByeDPI card on the Status page with install/remove/update actions and live status, and route support (byedpi-out) in generated client configs. Add RPC handlers for byedpi status, prepare/install/remove, strategy test and custom core detection; update ucode to detect custom core paths and expose core info. Init script now launches ciadpi when enabled and can add an nft rule to block QUIC; generate_client handles byedpi outbound fallback. Also update menu ordering and add translation strings for new core descriptions.
Add a new /usr/share/homeproxy/scripts/core_mgmt.uc to handle core info, remote checks, install and remove operations (apk/opkg, GitHub API, package downloads). Update LuCI frontend to call the new script (fs.exec_direct) instead of in-process rpc methods, adjust core descriptions and translations, and conditionally hide China/GFW list version fields when routing_mode is proxy_banned_ru. In generate_client.uc prefer direct-out for ruleset downloads if the main node (or urltest nodes) use WireGuard/AmneziaWG. Also ensure RUN_DIR exists earlier in the init script and remove the old core_* rpc handlers from luci.homeproxy.
Add small UI enhancements and adjust DNS/routing defaults for the Russia (proxy_banned_ru) mode. Changes include:
- UI: add icons and clearer labels in htdocs/.../client.js (main node, secure/russia DNS labels, flags, source/node labels, Separate URLTest). Reorder and rename some DNS options.
- DNS: switch default secure DNS to Cloudflare DoH (https://cloudflare-dns.com/dns-query) and update DoH/DoT option entries and default.
- Routing: change default config (root/etc/config/homeproxy) to routing_mode=proxy_banned_ru, routing_port=all, disable ipv6_support, enable proxy_calls and no_proxy_torrents by default.
- generate_client.uc: use new secure DNS default, add comment about Cloudflare DoH via proxy, add early resolve rule, and reorder/modify torrent and VoIP proxy rules so torrent bypass has priority and port/protocol mappings are corrected.
- init script: include proxy_banned_ru in dnsmasq configuration branch.
- Localization: update template and translations (fa_IR, ru, zh_Hans) to reflect new strings.
These changes aim to improve UX, prefer Cloudflare DoH for encrypted DNS by default, prevent DNS leaks, and refine routing behavior for the RU-specific proxy mode.
Expose and persist a preferred core option across UI and runtime. UI: show a 'Preferred core' dropdown in routing when multiple cores are available and populate it with auto/hiddify/singbox (htdocs/luci-static/.../client.js). Translations: add msgid for 'Preferred core' to POT and update fa_IR, ru, zh_Hans PO files. Init script: read config preferred_core, try the preferred core first and fall back to any installed core, keeping previous error behavior if none found (root/etc/init.d/homeproxy). Backend: rpcd ucode now reports available_cores by checking /usr/bin/hiddify-core and /usr/bin/sing-box (root/usr/share/rpcd/ucode/luci.homeproxy).
Detect and expose core type/version reliably and add MTProxy inbound
- LuCI: fall back to /var/run/homeproxy/core.info when RPC lacks core info; load features before rendering status view.
- init: write core_type and version to /var/run/homeproxy/core.info on start.
- rpcd ucode: improve kernel module detection (use /sys/module), normalize access checks and parse core version/tags more robustly.
- UI: remove ip-full from Tun prerequisite message; only show direct/proxy IP checks for hiddify cores.
- Server view: add MTProxy server options (secrets, domain fronting, timeouts, concurrency) and expose MTProxy type when using singbox core.
- Client generator: emit MTProxy fields (secrets -> users, domain fronting, timeouts, concurrency) and propagate xhttp x_padding_bytes when using singbox.
- Node parsing: handle amnezia last_config JSON, fix labels and host/port resolution, and extract xhttp fields (path/host/mode/padding).
Detect active core (hiddify-core vs sing-box) and update UI and runtime generation to handle both.
- htdocs/*: Update client/server status rendering to show detected core name/version or a "no core installed" message; adjust UI descriptions to "multi-core" wording; rename runtime log label to "core client".
- root/etc/homeproxy/scripts/generate_client.uc: Detect active core and set is_hiddify/is_singbox flags; make sniff/sniff_override/set_system_proxy fields conditional for hiddify; add sing-box-specific sniff route entry while keeping other route entries intact.
- root/etc/init.d/homeproxy: Select appropriate run command (srun for hiddify, run for sing-box) and use it when launching the core.
These changes enable support for both hiddify-core and sing-box, avoiding inappropriate configuration options for the inactive core and providing clearer UI feedback about which core is installed.
Support for AmneziaWG (vpn://) links and sing-box core was added across UI, backend and init scripts. UI: parseVpnLink() handles AmneziaVPN vpn:// payloads; node editor adds amneziawg type and numerous Amnezia-specific fields; share import now accepts vpn:// links, deduplicates inputs and imports vpn + URI configs. View changes: renderStatus shows detected core name (hiddify-core or sing-box). Backend: generate_client treats amneziawg as a wireguard endpoint with extra amnezia parameters and includes amneziawg nodes in endpoint/outbound selection. Init script: start logic now prefers hiddify-core or sing-box and logs the actual binary started. RPCD: feature detection updated to probe for sing-box and parse its version/tags.
Add a pre-start check in start_service to verify $PROG exists and is executable. If the binary is missing, log an error advising to install hiddify-core and return status 1 to avoid continuing with an invalid runtime state.
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.
Migrate the project from sing-box to hiddify-core across packaging, init scripts, UI and runtime helpers. Removed sing-box package dependency from build/IPK/Makefile and updated GitHub Actions usages (checkout/upload-artifact pinned to v4). UI and status/log viewers now reference hiddify-c/hiddify-core and log filenames were renamed. init.d was rewritten to use /usr/bin/hiddify-core, load client config from /etc/homeproxy/hiddify-c.json, simplify routing/tproxy setup, adjust dnsmasq handling, and run hiddify-c via procd; log cleaner and ACL/ucode RPC checks were updated accordingly. Overall this change migrates runtime/service names, config paths and version parsing to hiddify-core.