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": "Nama Paket Android",
"subHappPerAppListDesc": "Nama paket aplikasi Android yang disertakan atau dikecualikan, dipisahkan koma (mis. org.telegram.messenger).",
"subHappPresetIran": "Bypass Iran",
"subHappPresetChina": "Tiongkok Langsung",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "Tiongkok Langsung (Bypass-CN)",
"subHappIncludeAdblock": "Sertakan AdBlock",
"subHappApplyPreset": "Terapkan preset",
"subHappPresetGlobal": "Proxy Penuh",
"subHappPresetLocal": "Proxy Global dengan Pengecualian Jaringan Lokal",
"subHappPresetOff": "Nonaktifkan Routing (happ://routing/off)",
"subHappColorBlue": "Biru (Standar / Bawaan)",
"subHappColorGreen": "Hijau (Sukses)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Bypass (Kecualikan Aplikasi Terdaftar)",
"subHappPresetApplied": "Preset Happ diterapkan ke aturan routing",
"subHappPresets": "Preset Routing",
"subHappPresetsDesc": "Preset aturan routing siap pakai yang disesuaikan untuk klien Happ.",
"subHappPresetsDesc": "Pilih preset dasar dan opsi pemblokiran iklan, lalu terapkan untuk mengganti aturan routing saat ini.",
"subHappVisualBuilder": "Pembuat Aturan Visual",
"subHappVisualBuilderDesc": "Buat deeplink routing kustom dari daftar domain dan IP.",
"subHappVisualBuilderDesc": "Muat profil routing saat ini dan edit aturannya atau seluruh JSON.",
"subHappEditorBasic": "Aturan dasar",
"subHappEditorAdvanced": "Editor lanjutan",
"subHappEditorListHint": "Satu aturan per baris. Kolom lainnya dalam profil tetap dipertahankan.",
"subHappEditorAdvancedHint": "Edit seluruh profil JSON. Perubahan disinkronkan dengan tab aturan dasar.",
"subHappEditorInvalidJson": "Masukkan objek JSON. Daftar routing, jika ada, harus berupa array string atau null.",
"subHappEditorLoadInvalid": "Aturan saat ini bukan tautan routing Happ atau profil JSON yang valid.",
"subHappEditorLoadRemote": "URL jarak jauh tidak dapat dimuat di sini. Tempel tautan routing Happ atau profil JSON terlebih dahulu.",
"subHappEditorLoadOff": "Routing dinonaktifkan. Terapkan preset atau kosongkan aturan routing untuk membuat profil.",
"subHappEditorNew": "Belum ada aturan. Mulai dengan profil kustom yang kosong.",
"subHappBuildDeeplink": "Buat Deeplink",
"subHappModalTitle": "Pembuat Aturan Routing Visual Happ",
"subHappDirectDomains": "Domain Langsung (Bypass)",