diff --git a/README.md b/README.md index 2db0ab1f..04147c5d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,15 @@ A Clash Meta GUI based on Tauri. +

+ Languages: + 简体中文 · + English · + Español · + Русский · + 日本語 +

+ ## Preview | Dark | Light | diff --git a/docs/README_en.md b/docs/README_en.md new file mode 100644 index 00000000..cc1762f7 --- /dev/null +++ b/docs/README_en.md @@ -0,0 +1,124 @@ +

+ Clash +
+ Continuation of Clash Verge +
+

+ +

+A Clash Meta GUI built with Tauri. +

+ +

+ Languages: + 简体中文 · + English · + Español · + Русский · + 日本語 +

+ +## Preview + +| Dark | Light | +| ----------------------------------- | ------------------------------------- | +| ![Dark Preview](./preview_dark.png) | ![Light Preview](./preview_light.png) | + +## Install + +Visit the [Release page](https://github.com/clash-verge-rev/clash-verge-rev/releases) to download the installer that matches your platform.
+We provide packages for Windows (x64/x86), Linux (x64/arm64), and macOS 10.15+ (Intel/Apple). + +#### Choosing a Release Channel + +| Channel | Description | Link | +| :---------- | :-------------------------------------------------------------------- | :------------------------------------------------------------------------------------- | +| Stable | Official builds with high reliability, ideal for daily use. | [Release](https://github.com/clash-verge-rev/clash-verge-rev/releases) | +| Alpha (EOL) | Legacy builds used to validate the publish pipeline. | [Alpha](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/alpha) | +| AutoBuild | Rolling builds for testing and feedback. Expect experimental changes. | [AutoBuild](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/autobuild) | + +#### Installation Guides & FAQ + +Read the [project documentation](https://clash-verge-rev.github.io/) for install steps, troubleshooting, and frequently asked questions. + +--- + +### Telegram Channel + +Join [@clash_verge_rev](https://t.me/clash_verge_re) for update announcements. + +## Promotion + +#### [Doggygo VPN — Performance-oriented global accelerator](https://verge.dginv.click/#/register?code=oaxsAGo6) + +- High-performance overseas network service with free trials, discounted plans, streaming unlocks, and first-class Hysteria protocol support. +- Register through the exclusive Clash Verge link to get a 3-day trial with 1 GB of traffic per day: [Sign up](https://verge.dginv.click/#/register?code=oaxsAGo6) +- Exclusive 20% off coupon for Clash Verge users: `verge20` (limited to 500 uses) +- Discounted bundle from ¥15.8 per month for 160 GB, plus an additional 20% off for yearly billing +- Operated by an overseas team with reliable service and up to 50% revenue share +- Load-balanced clusters with high-speed dedicated routes (compatible with legacy clients), exceptionally low latency, smooth 4K playback +- First global provider to support the `Hysteria2` protocol—perfect fit for the Clash Verge client +- Supports streaming services and ChatGPT access +- Official site: [https://狗狗加速.com](https://verge.dginv.click/#/register?code=oaxsAGo6) + +#### Build Infrastructure Sponsor — [YXVM Dedicated Servers](https://yxvm.com/aff.php?aff=827) + +Our builds and releases run on YXVM dedicated servers that deliver premium resources, strong performance, and high-speed networking. If downloads feel fast and usage feels snappy, it is thanks to robust hardware. + +🧩 Highlights of YXVM Dedicated Servers: + +- 🌎 Optimized global routes for dramatically faster downloads +- 🔧 Bare-metal resources instead of shared VPS capacity for maximum performance +- 🧠 Great for proxy workloads, hosting web/CDN services, CI/CD pipelines, or any high-load tasks +- 💡 Ready to use instantly with multiple datacenter options, including CN2 and IEPL +- 📦 The configuration used by this project is on sale—feel free to get the same setup +- 🎯 Want the same build environment? [Order a YXVM server today](https://yxvm.com/aff.php?aff=827) + +## Features + +- Built on high-performance Rust with the Tauri 2 framework +- Ships with the embedded [Clash.Meta (mihomo)](https://github.com/MetaCubeX/mihomo) core and supports switching to the `Alpha` channel +- Clean, polished UI with theme color controls, proxy group/tray icons, and `CSS Injection` +- Enhanced profile management (Merge and Script helpers) with configuration syntax hints +- System proxy controls, guard mode, and `TUN` (virtual network adapter) support +- Visual editors for nodes and rules +- WebDAV-based backup and sync for configurations + +### FAQ + +See the [FAQ page](https://clash-verge-rev.github.io/faq/windows.html) for platform-specific guidance. + +### Donation + +[Support Clash Verge Rev development](https://github.com/sponsors/clash-verge-rev) + +## Development + +See [CONTRIBUTING.md](../CONTRIBUTING.md) for detailed contribution guidelines. + +After installing all **Tauri** prerequisites, run the development shell with: + +```shell +pnpm i +pnpm run prebuild +pnpm dev +``` + +## Contributions + +Issues and pull requests are welcome! + +## Acknowledgement + +Clash Verge Rev builds on or draws inspiration from these projects: + +- [zzzgydi/clash-verge](https://github.com/zzzgydi/clash-verge): A Tauri-based Clash GUI for Windows, macOS, and Linux. +- [tauri-apps/tauri](https://github.com/tauri-apps/tauri): Build smaller, faster, more secure desktop apps with a web frontend. +- [Dreamacro/clash](https://github.com/Dreamacro/clash): A rule-based tunnel written in Go. +- [MetaCubeX/mihomo](https://github.com/MetaCubeX/mihomo): A rule-based tunnel written in Go. +- [Fndroid/clash_for_windows_pkg](https://github.com/Fndroid/clash_for_windows_pkg): A Clash GUI for Windows and macOS. +- [vitejs/vite](https://github.com/vitejs/vite): Next-generation frontend tooling with blazing-fast DX. + +## License + +GPL-3.0 License. See the [license file](../LICENSE) for details. diff --git a/docs/README_es.md b/docs/README_es.md new file mode 100644 index 00000000..f8760092 --- /dev/null +++ b/docs/README_es.md @@ -0,0 +1,124 @@ +

+ Clash +
+ Continuación de Clash Verge +
+

+ +

+Una interfaz gráfica para Clash Meta construida con Tauri. +

+ +

+ Idiomas: + 简体中文 · + English · + Español · + Русский · + 日本語 +

+ +## Vista previa + +| Oscuro | Claro | +| ----------------------------------- | ----------------------------------- | +| ![Vista oscura](./preview_dark.png) | ![Vista clara](./preview_light.png) | + +## Instalación + +Visita la [página de lanzamientos](https://github.com/clash-verge-rev/clash-verge-rev/releases) y descarga el instalador que corresponda a tu plataforma.
+Ofrecemos paquetes para Windows (x64/x86), Linux (x64/arm64) y macOS 10.15+ (Intel/Apple). + +#### Cómo elegir el canal de lanzamiento + +| Canal | Descripción | Enlace | +| :---------- | :----------------------------------------------------------------------------- | :------------------------------------------------------------------------------------- | +| Stable | Compilaciones oficiales de alta fiabilidad; ideales para el uso diario. | [Release](https://github.com/clash-verge-rev/clash-verge-rev/releases) | +| Alpha (EOL) | Compilaciones heredadas usadas para validar el flujo de publicación. | [Alpha](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/alpha) | +| AutoBuild | Compilaciones continuas para pruebas y retroalimentación. Espera cambios beta. | [AutoBuild](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/autobuild) | + +#### Guías de instalación y preguntas frecuentes + +Consulta la [documentación del proyecto](https://clash-verge-rev.github.io/) para encontrar los pasos de instalación, solución de problemas y preguntas frecuentes. + +--- + +### Canal de Telegram + +Únete a [@clash_verge_rev](https://t.me/clash_verge_re) para enterarte de las novedades. + +## Promociones + +#### [Doggygo VPN — Acelerador global orientado al rendimiento](https://verge.dginv.click/#/register?code=oaxsAGo6) + +- Servicio internacional de alto rendimiento con prueba gratuita, planes con descuento, desbloqueo de streaming y soporte de protocolo Hysteria de primera clase. +- Regístrate mediante el enlace exclusivo de Clash Verge y obtén una prueba de 3 días con 1 GB de tráfico diario: [Regístrate](https://verge.dginv.click/#/register?code=oaxsAGo6) +- Cupón exclusivo de 20% de descuento para usuarios de Clash Verge: `verge20` (limitado a 500 usos) +- Plan promocional desde ¥15.8 al mes con 160 GB, más 20% de descuento adicional por pago anual +- Equipo ubicado en el extranjero para un servicio confiable, con hasta 50% de comisión compartida +- Clústeres balanceados con rutas dedicadas de alta velocidad (compatibles con clientes antiguos), latencia extremadamente baja, reproducción 4K sin interrupciones +- Primer proveedor global que soporta el protocolo `Hysteria2`, ideal para el cliente Clash Verge +- Desbloquea servicios de streaming y acceso a ChatGPT +- Sitio oficial: [https://狗狗加速.com](https://verge.dginv.click/#/register?code=oaxsAGo6) + +#### Patrocinador de la infraestructura de compilación — [Servidores dedicados YXVM](https://yxvm.com/aff.php?aff=827) + +Las compilaciones y lanzamientos del proyecto se ejecutan en servidores dedicados de YXVM, que proporcionan recursos premium, alto rendimiento y redes de alta velocidad. Si las descargas son rápidas y el uso es fluido, es gracias a este hardware robusto. + +🧩 Ventajas de los servidores dedicados YXVM: + +- 🌎 Rutas globales optimizadas para descargas significativamente más rápidas +- 🔧 Recursos bare-metal, en lugar de VPS compartidos, para obtener el máximo rendimiento +- 🧠 Ideales para proxys, alojamiento de sitios web/CDN, pipelines de CI/CD o cualquier carga elevada +- 💡 Listos para usar al instante, con múltiples centros de datos disponibles (incluidos CN2 e IEPL) +- 📦 La misma configuración utilizada por este proyecto está disponible para su compra +- 🎯 ¿Quieres el mismo entorno de compilación? [Solicita un servidor YXVM hoy](https://yxvm.com/aff.php?aff=827) + +## Funciones + +- Basado en Rust de alto rendimiento y en el framework Tauri 2 +- Incluye el núcleo integrado [Clash.Meta (mihomo)](https://github.com/MetaCubeX/mihomo) y permite cambiar al canal `Alpha` +- Interfaz limpia y elegante con controles de color de tema, iconos de grupos proxy/bandeja y `CSS Injection` +- Gestión avanzada de perfiles (herramientas Merge y Script) con sugerencias de sintaxis para configuraciones +- Control del proxy del sistema, modo guardián y soporte para `TUN` (adaptador de red virtual) +- Editores visuales para nodos y reglas +- Copias de seguridad y sincronización mediante WebDAV + +### Preguntas frecuentes + +Visita la [página de FAQ](https://clash-verge-rev.github.io/faq/windows.html) para obtener instrucciones específicas por plataforma. + +### Donaciones + +[Apoya el desarrollo de Clash Verge Rev](https://github.com/sponsors/clash-verge-rev) + +## Desarrollo + +Consulta [CONTRIBUTING.md](../CONTRIBUTING.md) para conocer las pautas de contribución. + +Después de instalar todos los requisitos de **Tauri**, ejecuta el entorno de desarrollo con: + +```shell +pnpm i +pnpm run prebuild +pnpm dev +``` + +## Contribuciones + +Se agradecen los issues y pull requests. + +## Agradecimientos + +Clash Verge Rev se basa en, o se inspira en, los siguientes proyectos: + +- [zzzgydi/clash-verge](https://github.com/zzzgydi/clash-verge): Interfaz gráfica para Clash basada en Tauri. Compatible con Windows, macOS y Linux. +- [tauri-apps/tauri](https://github.com/tauri-apps/tauri): Construye aplicaciones de escritorio más pequeñas, rápidas y seguras con un frontend web. +- [Dreamacro/clash](https://github.com/Dreamacro/clash): Túnel basado en reglas escrito en Go. +- [MetaCubeX/mihomo](https://github.com/MetaCubeX/mihomo): Túnel basado en reglas escrito en Go. +- [Fndroid/clash_for_windows_pkg](https://github.com/Fndroid/clash_for_windows_pkg): Interfaz de Clash para Windows y macOS. +- [vitejs/vite](https://github.com/vitejs/vite): Herramientas de frontend de nueva generación con una experiencia rapidísima. + +## Licencia + +Licencia GPL-3.0. Consulta el [archivo de licencia](../LICENSE) para más detalles. diff --git a/docs/README_ja.md b/docs/README_ja.md new file mode 100644 index 00000000..c2ed71e2 --- /dev/null +++ b/docs/README_ja.md @@ -0,0 +1,124 @@ +

+ Clash +
+ Clash Verge の継続プロジェクト +
+

+ +

+Tauri で構築された Clash Meta GUI。 +

+ +

+ 言語: + 简体中文 · + English · + Español · + Русский · + 日本語 +

+ +## プレビュー + +| ダーク | ライト | +| --------------------------------------- | ---------------------------------------- | +| ![ダークプレビュー](./preview_dark.png) | ![ライトプレビュー](./preview_light.png) | + +## インストール + +[リリースページ](https://github.com/clash-verge-rev/clash-verge-rev/releases) から、ご利用のプラットフォームに対応したインストーラーをダウンロードしてください。
+Windows (x64/x86)、Linux (x64/arm64)、macOS 10.15+ (Intel/Apple) をサポートしています。 + +#### リリースチャンネルの選び方 + +| チャンネル | 説明 | リンク | +| :---------- | :--------------------------------------------------------------- | :------------------------------------------------------------------------------------- | +| Stable | 安定版。信頼性が高く、日常利用に最適です。 | [Release](https://github.com/clash-verge-rev/clash-verge-rev/releases) | +| Alpha (EOL) | 公開フローの検証に使用した旧テスト版。 | [Alpha](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/alpha) | +| AutoBuild | 継続的に更新されるテスト版。フィードバックや新機能検証向けです。 | [AutoBuild](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/autobuild) | + +#### インストール手順と FAQ + +詳しい導入手順やトラブルシュートは [ドキュメントサイト](https://clash-verge-rev.github.io/) を参照してください。 + +--- + +### Telegram チャンネル + +更新情報は [@clash_verge_rev](https://t.me/clash_verge_re) をフォローしてください。 + +## プロモーション + +#### [Doggygo VPN — 高性能グローバルアクセラレータ](https://verge.dginv.click/#/register?code=oaxsAGo6) + +- 無料トライアル、割引プラン、ストリーミング解放、世界初の Hysteria プロトコル対応を備えた高性能海外ネットワークサービス。 +- Clash Verge 専用リンクから登録すると、3 日間・1 日 1 GB の無料体験が利用できます。 [登録はこちら](https://verge.dginv.click/#/register?code=oaxsAGo6) +- Clash Verge 利用者限定 20% オフクーポン: `verge20`(先着 500 名) +- 月額 15.8 元で 160 GB を利用できるプラン、年額契約ならさらに 20% オフ +- 海外チーム運営による高信頼サービス、収益シェアは最大 50% +- 負荷分散クラスタと高速専用回線(旧クライアント互換)、極低レイテンシで 4K も快適 +- 世界初の `Hysteria2` プロトコル対応。Clash Verge クライアントとの相性抜群 +- ストリーミングおよび ChatGPT の利用にも対応 +- 公式サイト: [https://狗狗加速.com](https://verge.dginv.click/#/register?code=oaxsAGo6) + +#### ビルド環境スポンサー — [YXVM 専用サーバー](https://yxvm.com/aff.php?aff=827) + +本プロジェクトのビルドとリリースは、YXVM の専用サーバーによって支えられています。高速ダウンロードや快適な操作性は、強力なハードウェアがあってこそです。 + +🧩 YXVM 専用サーバーの特長: + +- 🌎 最適化されたグローバル回線で圧倒的なダウンロード速度 +- 🔧 VPS とは異なるベアメタル資源で最高性能を発揮 +- 🧠 プロキシ運用、Web/CDN ホスティング、CI/CD など高負荷ワークロードに最適 +- 💡 複数データセンターから即時利用可能。CN2 や IEPL も選択可 +- 📦 本プロジェクトが使用している構成も販売中。同じ環境を入手できます +- 🎯 同じビルド体験をしたい方は [今すぐ YXVM サーバーを注文](https://yxvm.com/aff.php?aff=827) + +## 機能 + +- 高性能な Rust と Tauri 2 フレームワークに基づくデスクトップアプリ +- 組み込みの [Clash.Meta (mihomo)](https://github.com/MetaCubeX/mihomo) コアを搭載し、`Alpha` チャンネルへの切り替えも可能 +- テーマカラーやプロキシグループ/トレイアイコン、`CSS Injection` をカスタマイズできる洗練された UI +- 設定ファイルの管理および拡張(Merge・Script 支援)、構成シンタックスヒントを提供 +- システムプロキシ制御、ガード機能、`TUN`(仮想ネットワークアダプタ)モード +- ノードとルールのビジュアルエディタ +- WebDAV による設定のバックアップと同期 + +### FAQ + +プラットフォーム別の案内は [FAQ ページ](https://clash-verge-rev.github.io/faq/windows.html) を参照してください。 + +### 寄付 + +[Clash Verge Rev の開発を支援する](https://github.com/sponsors/clash-verge-rev) + +## 開発 + +詳細な貢献ガイドは [CONTRIBUTING.md](../CONTRIBUTING.md) をご覧ください。 + +**Tauri** の前提条件を整えたら、以下のコマンドで開発サーバーを起動できます: + +```shell +pnpm i +pnpm run prebuild +pnpm dev +``` + +## コントリビューション + +Issue や Pull Request を歓迎します。 + +## 謝辞 + +Clash Verge Rev は、以下のプロジェクトに影響を受けています。 + +- [zzzgydi/clash-verge](https://github.com/zzzgydi/clash-verge): Tauri ベースの Clash GUI。Windows / macOS / Linux に対応。 +- [tauri-apps/tauri](https://github.com/tauri-apps/tauri): Web フロントエンドで小型・高速・安全なデスクトップアプリを構築するためのフレームワーク。 +- [Dreamacro/clash](https://github.com/Dreamacro/clash): Go 製のルールベーストンネル。 +- [MetaCubeX/mihomo](https://github.com/MetaCubeX/mihomo): Go 製のルールベーストンネル。 +- [Fndroid/clash_for_windows_pkg](https://github.com/Fndroid/clash_for_windows_pkg): Windows / macOS 向けの Clash GUI。 +- [vitejs/vite](https://github.com/vitejs/vite): 次世代のフロントエンドツール群。高速な開発体験を提供。 + +## ライセンス + +GPL-3.0 ライセンス。詳細は [LICENSE](../LICENSE) を参照してください。 diff --git a/docs/README_ru.md b/docs/README_ru.md new file mode 100644 index 00000000..f01bf7e8 --- /dev/null +++ b/docs/README_ru.md @@ -0,0 +1,120 @@ +

+ Clash +
+ Continuation of Clash Verge +
+

+ +

+Clash Meta GUI базируется на Tauri. +

+ +

+ Языки: + 简体中文 · + English · + Español · + Русский · + 日本語 +

+## Предпросмотр + +| Тёмная тема | Светлая тема | +| ---------------------------------- | ------------------------------------ | +| ![Тёмная тема](./preview_dark.png) | ![Светлая тема](./preview_light.png) | + +## Установка + +Пожалуйста, перейдите на страницу релизов, чтобы скачать соответствующий установочный пакет: [Страница релизов](https://github.com/clash-verge-rev/clash-verge-rev/releases)
+Перейти на [Страницу релизов](https://github.com/clash-verge-rev/clash-verge-rev/releases) to download the corresponding installation package
+Поддержка Windows (x64/x86), Linux (x64/arm64) и macOS 10.15+ (intel/apple). + +#### Как выбрать дистрибутив? + +| Версия | Характеристики | Ссылка | +| :-------------------- | :------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------- | +| Stable | Официальный релиз, высокая надежность, подходит для повседневного использования. | [Release](https://github.com/clash-verge-rev/clash-verge-rev/releases) | +| Alpha(неиспользуемый) | Тестирование процесса публикации. | [Alpha](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/alpha) | +| AutoBuild | Версия с постоянным обновлением, подходящая для тестирования и обратной связи. Может содержать дефекты. | [AutoBuild](https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/autobuild) | + +#### Инструкции по установке и ответы на часто задаваемые вопросы можно найти на [странице документации](https://clash-verge-rev.github.io/) + +--- + +### TG канал: [@clash_verge_rev](https://t.me/clash_verge_re) + +## Продвижение + +#### [Doggygo VPN —— технический VPN-сервис (айрпорт)](https://verge.dginv.click/#/register?code=oaxsAGo6) + +- Высокопроизводительный иностранный VPN-сервис (айрпорт) с бесплатным пробным периодом, выгодными тарифами, возможностью разблокировки потокового ТВ и первым в мире поддержкой протокола Hysteria. +- Зарегистрируйтесь по эксклюзивной ссылке Clash Verge и получите 3 дня бесплатного использования, 1 Гб трафика в день: [регистрация](https://verge.dginv.click/#/register?code=oaxsAGo6) +- Эксклюзивный промо-код на скидку 20% для Clash Verge: verge20 (только 500 штук) +- Специальный тарифный план всего за 15,8 юаней в месяц, 160 Гб трафика, скидка 20% при оплате за год +- Команда за рубежом, без риска побега, до 50% кэшбэка +- Архитектура с балансировкойнагрузки, высокоскоростная выделенная линия (совместима со старыми клиентами), чрезвычайно низкая задержка, без проблем в часы пик, 4K видео загружается мгновенно +- Первый в мире VPN-сервис (айрпорт), поддерживающий протокол Hysteria, теперь доступен более быстрый протокол `Hysteria2` (лучшее сочетание с клиентом Clash Verge) +- Разблокировка потоковые сервисы и ChatGPT +- Официальный сайт: [https://狗狗加速.com](https://verge.dginv.click/#/register?code=oaxsAGo6) + +#### Среда сборки и публикации этого проекта полностью поддерживается выделенным сервером [YXVM](https://yxvm.com/aff.php?aff=827) + +Благодарим вас за предоставление надежной бэкэнд-среды с эксклюзивными ресурсами, высокой производительностью и высокоскоростной сетью. Если вы считаете, что загрузка файлов происходит достаточно быстро, а использование — достаточно плавно, то это потому, что мы используем серверы высшего уровня! + +🧩 Преимущества выделенного сервера YXVM: + +- 🌎 Премиум-сеть с оптимизацией обратного пути для молниеносной скорости загрузки +- 🔧 Выделенные физические серверные ресурсы, не имеющие аналогов среди VPS, обеспечивающие максимальную производительность +- 🧠 Идеально подходит для прокси, хостинга веб-сайтов/CDN-сайтов, рабочих процессов CI/CD или любых приложений с высокой нагрузкой +- 💡 Поддержка использования сразу после включения, выбор нескольких дата-центров, CN2 / IEPL на выбор +- 📦 Эта конфигурация в настоящее время доступна для покупки — не стесняйтесь заказывать ту же модель! +- 🎯 Хотите попробовать такую же сборку? [Закажите выделенный сервер YXVM прямо сейчас!](https://yxvm.com/aff.php?aff=827) + +## Фичи + +- Основан на произвоительном Rust и фреймворке Tauri 2 +- Имеет встроенное ядро [Clash.Meta(mihomo)](https://github.com/MetaCubeX/mihomo) и поддерживает переключение на ядро версии `Alpha`. +- Чистый и эстетичный пользовательский интерфейс, поддержка настраиваемых цветов темы, значков прокси-группы/системного трея и `CSS Injection`。 +- Управление и расширение конфигурационными файлами (Merge и Script), подсказки по синтаксису конфигурационных файлов. +- Режим системного прокси и защита, `TUN (Tunneled Network Interface)` режим. +- Визуальное редактирование узлов и правил +- Резервное копирование и синхронизация конфигурации WebDAV + +### FAQ + +Смотрите [Страница часто задаваемых вопросов](https://clash-verge-rev.github.io/faq/windows.html) + +### Донат + +[Поддержите развитие Clash Verge Rev](https://github.com/sponsors/clash-verge-rev) + +## Разработка + +Дополнительные сведения смотреть в файле [CONTRIBUTING.md](../CONTRIBUTING.md). + +Для запуска сервера разработки выполните следующие команды после установки всех необходимых компонентов для **Tauri**: + +```shell +pnpm i +pnpm run prebuild +pnpm dev +``` + +## Вклад + +Обращения и запросы на PR приветствуются! + +## Благодарность + +Clash Verge rev был основан на этих проектах или вдохновлен ими, и так далее: + +- [zzzgydi/clash-verge](https://github.com/zzzgydi/clash-verge): Графический интерфейс Clash на основе tauri. Поддерживает Windows, macOS и Linux. +- [tauri-apps/tauri](https://github.com/tauri-apps/tauri): Создавайте более компактные, быстрые и безопасные настольные приложения с веб-интерфейсом. +- [Dreamacro/clash](https://github.com/Dreamacro/clash): Правило-ориентированный туннель на Go. +- [MetaCubeX/mihomo](https://github.com/MetaCubeX/mihomo): Правило-ориентированный туннель на Go. +- [Fndroid/clash_for_windows_pkg](https://github.com/Fndroid/clash_for_windows_pkg): Графический интерфейс пользователя для Windows/macOS на основе Clash. +- [vitejs/vite](https://github.com/vitejs/vite): Инструменты нового поколения для фронтенда. Они быстрые! + +## Лицензия + +GPL-3.0 License. Подробности смотрите в [Лицензии](../LICENSE). diff --git a/package.json b/package.json index f3f07cb0..6b21e8c5 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "terser": "^5.44.0", "typescript": "^5.9.3", "typescript-eslint": "^8.46.1", - "vite": "^7.1.10", + "vite": "^7.1.11", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-svgr": "^4.5.0", "vitest": "^3.2.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ded0ff1..67a3042c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -167,10 +167,10 @@ importers: version: 19.2.2(@types/react@19.2.2) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) + version: 7.2.1(terser@5.44.0)(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) '@vitejs/plugin-react': specifier: 5.0.4 - version: 5.0.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) + version: 5.0.4(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) adm-zip: specifier: ^0.5.16 version: 0.5.16 @@ -250,14 +250,14 @@ importers: specifier: ^8.46.1 version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) vite: - specifier: ^7.1.10 - version: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.11 + version: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) vite-plugin-monaco-editor: specifier: ^1.1.0 version: 1.1.0(monaco-editor@0.54.0) vite-plugin-svgr: specifier: ^4.5.0 - version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 version: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) @@ -4147,8 +4147,8 @@ packages: peerDependencies: vite: '>=2.6.0' - vite@7.1.10: - resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} + vite@7.1.11: + resolution: {integrity: sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -6144,7 +6144,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-legacy@7.2.1(terser@5.44.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-legacy@7.2.1(terser@5.44.0)(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) @@ -6159,11 +6159,11 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.44.0 - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.0.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-react@5.0.4(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -6171,7 +6171,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -6183,13 +6183,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -8866,7 +8866,7 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -8885,18 +8885,18 @@ snapshots: dependencies: monaco-editor: 0.54.0 - vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.46.2) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1): + vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1): dependencies: esbuild: 0.25.4 fdir: 6.5.0(picomatch@4.0.3) @@ -8916,7 +8916,7 @@ snapshots: dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -8934,7 +8934,7 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) vite-node: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: diff --git a/src/hooks/use-verge.ts b/src/hooks/use-verge.ts index bbe33b81..1e7d7afc 100644 --- a/src/hooks/use-verge.ts +++ b/src/hooks/use-verge.ts @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import { useCallback, useEffect, useRef } from "react"; import { useTranslation } from "react-i18next"; import useSWR from "swr"; @@ -8,7 +8,8 @@ import { showNotice } from "@/services/noticeService"; export const useVerge = () => { const { t } = useTranslation(); - const { isTunModeAvailable, isLoading } = useSystemState(); + const { isTunModeAvailable, isServiceMode, isLoading } = useSystemState(); + const disablingRef = useRef(false); const { data: verge, mutate: mutateVerge } = useSWR( "getVergeConfig", @@ -25,25 +26,50 @@ export const useVerge = () => { const { enable_tun_mode } = verge ?? {}; - // 当服务不可用且TUN模式开启时自动关闭TUN - useEffect(() => { - if (enable_tun_mode && !isTunModeAvailable && !isLoading) { - console.log("[useVerge] 检测到服务不可用,自动关闭TUN模式"); + const mutateVergeRef = useRef(mutateVerge); + const tRef = useRef(t); + const enableTunRef = useRef(enable_tun_mode); + const isLoadingRef = useRef(isLoading); + const isServiceModeRef = useRef(isServiceMode); - patchVergeConfig({ enable_tun_mode: false }) - .then(() => { - mutateVerge(); - showNotice( - "info", - t("TUN Mode automatically disabled due to service unavailable"), - ); - }) - .catch((err) => { - console.error("[useVerge] 自动关闭TUN模式失败:", err); - showNotice("error", t("Failed to disable TUN Mode automatically")); - }); + mutateVergeRef.current = mutateVerge; + tRef.current = t; + enableTunRef.current = enable_tun_mode; + isLoadingRef.current = isLoading; + isServiceModeRef.current = isServiceMode; + + const doDisable = useCallback(async () => { + try { + if (isServiceModeRef.current === true) return; + await patchVergeConfig({ enable_tun_mode: false }); + await mutateVergeRef.current?.(); + showNotice( + "info", + tRef.current( + "TUN Mode automatically disabled due to service unavailable", + ), + ); + } catch (err) { + console.error("[useVerge] 自动关闭TUN模式失败:", err); + showNotice( + "error", + tRef.current("Failed to disable TUN Mode automatically"), + ); + } finally { + disablingRef.current = false; } - }, [isTunModeAvailable, isLoading, enable_tun_mode, mutateVerge, t]); + }, []); + + useEffect(() => { + if (isTunModeAvailable === true) return; + if (isLoadingRef.current === true) return; + if (enableTunRef.current !== true) return; + if (isServiceModeRef.current === true) return; + if (disablingRef.current) return; + + disablingRef.current = true; + void doDisable(); + }, [isTunModeAvailable, doDisable]); return { verge,