feat(happ): add routing editor, optional ad blocking, and LAN bypass preset (#6545)

* feat(happ): make ad blocking optional in routing presets

Add an independent AdBlock toggle for Iran, China, and global presets, applied only when generating routing rules. Update the China preset to Bypass-CN and cover preset behavior and localized controls.

* feat: add visual routing editor with JSON support and localization updates

- Implemented a new modal for editing routing profiles with basic and advanced tabs.
- Added functionality to load, parse, and generate routing profiles in JSON format.
- Enhanced user experience with validation and error handling for JSON input.
- Updated translations for Russian, Turkish, Ukrainian, Vietnamese, Chinese (Simplified and Traditional) to include new routing editor terms.
- Created helper functions for managing routing profiles and generating deep links.
- Added unit tests for routing editor functionalities and JSON handling.

* feat: update routing editor to preserve null lists in profiles and enhance validation messages
This commit is contained in:
NgaiYeanCoi
2026-09-27 04:57:01 +08:00
committed by GitHub
parent 94fa317e76
commit 5e15120cec
22 changed files with 1363 additions and 209 deletions
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Nombres de paquete de Android",
"subHappPerAppListDesc": "Nombres de paquete de aplicaciones Android separados por comas que se incluirán o excluirán (p. ej. org.telegram.messenger).",
"subHappPresetIran": "Irán: omitir proxy",
"subHappPresetChina": "China: conexión directa",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "China: conexión directa (Bypass-CN)",
"subHappIncludeAdblock": "Incluir AdBlock",
"subHappApplyPreset": "Aplicar preajuste",
"subHappPresetGlobal": "Todo por proxy",
"subHappPresetLocal": "Proxy global con exclusión de la red local",
"subHappPresetOff": "Desactivar enrutamiento (happ://routing/off)",
"subHappColorBlue": "Azul (estándar / predeterminado)",
"subHappColorGreen": "Verde (éxito)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Omitir (excluir apps de la lista)",
"subHappPresetApplied": "Preajuste de Happ aplicado a las reglas de enrutamiento",
"subHappPresets": "Preajustes de enrutamiento",
"subHappPresetsDesc": "Preajustes de reglas de enrutamiento preconfigurados para clientes Happ.",
"subHappPresetsDesc": "Elige un preajuste base y si deseas bloquear anuncios; luego aplícalo para reemplazar las reglas de enrutamiento actuales.",
"subHappVisualBuilder": "Generador visual de reglas",
"subHappVisualBuilderDesc": "Crear un deeplink de enrutamiento personalizado a partir de listas de dominios e IPs.",
"subHappVisualBuilderDesc": "Carga el perfil de enrutamiento actual y edita sus reglas o el JSON completo.",
"subHappEditorBasic": "Reglas básicas",
"subHappEditorAdvanced": "Editor avanzado",
"subHappEditorListHint": "Una regla por línea. Se conservan los demás campos del perfil.",
"subHappEditorAdvancedHint": "Edita el perfil JSON completo. Los cambios se sincronizan con la pestaña de reglas básicas.",
"subHappEditorInvalidJson": "Introduce un objeto JSON. Las listas de enrutamiento, si existen, deben ser matrices de cadenas de texto o null.",
"subHappEditorLoadInvalid": "Las reglas actuales no son un enlace de enrutamiento de Happ ni un perfil JSON válidos.",
"subHappEditorLoadRemote": "No se pueden cargar URL remotas aquí. Primero pega un enlace de enrutamiento de Happ o un perfil JSON.",
"subHappEditorLoadOff": "El enrutamiento está desactivado. Aplica un preajuste o vacía las reglas de enrutamiento para crear un perfil.",
"subHappEditorNew": "No hay reglas actuales. Empieza con un perfil personalizado vacío.",
"subHappBuildDeeplink": "Generar deeplink",
"subHappModalTitle": "Generador visual de reglas de enrutamiento de Happ",
"subHappDirectDomains": "Dominios directos (sin proxy)",