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": "نام بسته‌های برنامه‌های اندروید",
"subHappPerAppListDesc": "نام بسته برنامه‌های اندروید برای شامل یا مستثنی کردن، جدا شده با کاما (مانند org.telegram.messenger).",
"subHappPresetIran": "دور زدن سایت‌های ایران (Iran Bypass)",
"subHappPresetChina": "دور زدن چین (China Direct)",
"subHappPresetAdblock": "مسدودسازی تبلیغات (AdBlock)",
"subHappPresetChina": "اتصال مستقیم چین (Bypass-CN)",
"subHappIncludeAdblock": "افزودن AdBlock",
"subHappApplyPreset": "اعمال الگو",
"subHappPresetGlobal": "پراکسی کل ترافیک (Global)",
"subHappPresetLocal": "پراکسی سراسری با اتصال مستقیم شبکه محلی",
"subHappPresetOff": "غیرفعال‌سازی روتینگ (happ://routing/off)",
"subHappColorBlue": "آبی (استاندارد / پیش‌فرض)",
"subHappColorGreen": "سبز (موفقیت)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "بای‌پس (مستثنی‌کردن برنامه‌های فهرست‌شده)",
"subHappPresetApplied": "الگوی روتینگ Happ اعمال شد",
"subHappPresets": "الگوهای آماده روتینگ",
"subHappPresetsDesc": "الگوهای آماده و بهینه‌سازی‌شده برای روتینگ در برنامه Happ.",
"subHappPresetsDesc": "یک الگوی پایه انتخاب کنید و در صورت نیاز مسدودسازی تبلیغات را فعال کنید، سپس آن را برای جایگزینی قوانین مسیریابی فعلی اعمال کنید.",
"subHappVisualBuilder": "سازنده بصری قوانین",
"subHappVisualBuilderDesc": "ایجاد آسان دیپ‌لینک روتینگ سفارشی بر اساس دامنه‌ها و آی‌پی‌ها.",
"subHappVisualBuilderDesc": "پروفایل مسیریابی فعلی را بارگیری کنید و قوانین یا کل JSON آن را ویرایش کنید.",
"subHappEditorBasic": "قوانین پایه",
"subHappEditorAdvanced": "ویرایشگر پیشرفته",
"subHappEditorListHint": "در هر خط یک قانون وارد کنید. سایر فیلدهای پروفایل حفظ می‌شوند.",
"subHappEditorAdvancedHint": "کل پروفایل JSON را ویرایش کنید. تغییرات با زبانه قوانین پایه همگام می‌شوند.",
"subHappEditorInvalidJson": "یک شیء JSON وارد کنید. فهرست‌های مسیریابی، در صورت وجود، باید آرایه‌هایی از رشته‌ها یا null باشند.",
"subHappEditorLoadInvalid": "قوانین فعلی، لینک مسیریابی معتبر Happ یا پروفایل معتبر JSON نیستند.",
"subHappEditorLoadRemote": "نشانی‌های راه دور در اینجا قابل بارگیری نیستند. ابتدا یک لینک مسیریابی Happ یا پروفایل JSON جای‌گذاری کنید.",
"subHappEditorLoadOff": "مسیریابی غیرفعال است. برای ساخت پروفایل، یک الگو اعمال کنید یا قوانین مسیریابی را پاک کنید.",
"subHappEditorNew": "در حال حاضر قانونی وجود ندارد. با یک پروفایل سفارشی خالی شروع کنید.",
"subHappBuildDeeplink": "تولید دیپ‌لینک",
"subHappModalTitle": "سازنده بصری قوانین روتینگ Happ",
"subHappDirectDomains": "دامنه‌های مستقیم (Direct)",