thehardwarestore.ai

where AI agents shop for the right tools

$ show clash-verge-rev/clash-verge-rev

[account ↗] [repo ↗] APPLICATION ★ 148705 10676 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Clash Verge Rev is a cross-platform desktop proxy management GUI built with Tauri 2 (Rust backend) and React 19 (TypeScript frontend). It serves as the control interface for the mihomo (Clash Meta) proxy core, enabling users to manage proxy subscriptions, switch proxy groups, toggle system proxy and TUN mode, view real-time traffic and connection details, and configure advanced settings like DNS overrides, script enhancements, and backup to WebDAV. The architecture is modular: a Rust backend handles core lifecycle, config management (using a unique 'Draft' transactional pattern), system integration (tray, hotkeys, auto-launch), and IPC with a privileged service on Windows. The frontend uses MUI, SWR, and virtual lists for a responsive UI with drag-and-drop profile/group editing, a built-in Monaco editor for YAML/JS configs, and real-time WebSocket-based data visualization. The repository also includes a Rust workspace with several crates (media unlock checker, i18n, logging, signal handling, rate limiter, system info plugin) that could be extracted and reused in other Tauri applications.

RATING8.6/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS172
VELOCITY0.97
OPEN ISSUES501
CLOSED ISSUES5561
LAST COMMIT2 weeks ago
@dnd-kit/collision (npm) ^0.5.0
@dnd-kit/dom (npm) ^0.5.0
@dnd-kit/helpers (npm) ^0.5.0
@dnd-kit/react (npm) ^0.5.0
@emotion/react (npm) ^11.14.0
@emotion/styled (npm) ^11.14.1
@juggle/resize-observer (npm) ^3.4.0
@monaco-editor/react (npm) ^4.7.0
@mui/icons-material (npm) ^9.4.0
@mui/material (npm) ^9.4.0
@tanstack/react-virtual (npm) ^3.14.13
@tauri-apps/api (npm) 2.11.1
@tauri-apps/plugin-clipboard-manager (npm) ^2.3.3
@tauri-apps/plugin-dialog (npm) ^2.7.3
@tauri-apps/plugin-fs (npm) ^2.5.2
@tauri-apps/plugin-http (npm) ~2.6.1
@tauri-apps/plugin-opener (npm) 2.5.5
@tauri-apps/plugin-updater (npm) 2.12.0
ahooks (npm) ^3.10.0
cidr-block (npm) ^2.3.0
compare-versions (npm) ^6.1.1
dayjs (npm) 1.11.23
foxact (npm) ^0.3.12
foxts (npm) ^5.9.1
i18next (npm) ^26.4.2
js-yaml (npm) ^5.4.2
lodash-es (npm) ^4.18.1
meta-json-schema (npm) ^1.19.31
monaco-editor (npm) ^0.56.0
monaco-yaml (npm) ^5.5.1
nanoid (npm) ^6.0.1
qrcode.react (npm) ^4.2.0
react (npm) 19.3.0
react-dom (npm) 19.3.0
react-error-boundary (npm) 6.1.5
react-hook-form (npm) ^7.88.0
react-i18next (npm) 17.0.14
react-markdown (npm) 10.1.0
react-router (npm) ^8.4.0
rehype-raw (npm) ^7.0.0
rehype-sanitize (npm) ^6.0.0
remark-gfm (npm) ^4.0.1
swr (npm) ^2.5.1
tauri-plugin-mihomo-api (npm) github:clash-verge-rev/tauri-plugin-mihomo#main
types-pac (npm) ^1.0.3
validator (npm) ^13.15.35
@actions/github (npm) ^9.1.1
@biomejs/biome (npm) ^2.5.14
@eslint-react/eslint-plugin (npm) ^5.20.5
@eslint/js (npm) ^10.0.1
@tauri-apps/cli (npm) 2.11.4
@types/lodash-es (npm) ^4.17.12
@types/node (npm) ^24.13.6
@types/react (npm) 19.3.0
@types/react-dom (npm) 19.3.0
@types/validator (npm) ^13.15.10
@vitejs/plugin-legacy (npm) ^8.2.3
@vitejs/plugin-react (npm) ^6.1.1
@wdio/tauri-service (npm) 1.4.0
adm-zip (npm) ^0.6.1
axios (npm) ^1.20.0
cli-color (npm) ^2.0.4
commander (npm) ^15.0.0
cross-env (npm) ^10.1.0
eslint (npm) ^10.11.0
eslint-import-resolver-typescript (npm) ^4.4.5
eslint-plugin-es-x (npm) ^10.0.1
eslint-plugin-import-x (npm) ^4.17.1
eslint-plugin-react-compiler (npm) 19.1.0-rc.2
eslint-plugin-react-hooks (npm) ^7.1.1
eslint-plugin-react-refresh (npm) ^0.5.7
eslint-plugin-sukka (npm) ^10.2.0
eslint-plugin-unused-imports (npm) ^4.4.1
glob (npm) ^13.0.6
globals (npm) ^17.12.0
https-proxy-agent (npm) ^9.1.0
husky (npm) ^9.1.7
jiti (npm) ^2.7.0
knip (npm) 6.35.1
lint-staged (npm) ^17.5.1
sass (npm) ^1.104.1
tar (npm) ^7.5.22
terser (npm) ^5.51.2
typescript (npm) ^6.0.3
typescript-eslint (npm) ^8.70.0
vite (npm) ^8.3.0
vite-plugin-svgr (npm) ^5.2.0
vitest (npm) ^5.0.1
webdriverio (npm) 9.31.9
ws (npm) 8.21.3
Files by Type (count)
JSON
162
Rust
147
TSX
129
TypeScript
121
YAML
40
Markdown
24
Other (.mjs)
21
Other (.svg)
20
Other (.png)
17
TOML
15
Shell
10
Other (.ico)
10
Files by Type (size)
Other (.ttf)
23MB
Other (.car)
1MB
Rust
1MB
JSON
947KB
TSX
936KB
Other (.png)
879KB
YAML
659KB
TypeScript
474KB
Other (.icns)
469KB
Other (.ico)
376KB
Lock File
241KB
Markdown
216KB

The LLM identified 6 files worth highlighting for reuse:

Provides `Draft<T>` and `DraftTransaction` for atomic, rollback-aware config mutations. The pattern allows multiple concurrent readers while serializing writes with optimistic locking. Reusable in any Rust application requiring safe, consistent updates to a shared configuration with conflict detection.

file: crates/clash-verge-draft/src/lib.rs ↗ | tags: #transactional-state #copy-on-write #concurrency

Implements a config enhancement pipeline that merges user profiles with app defaults, applies JavaScript scripts via Boa engine, enforces authoritative fields (ports, secret, mode), and handles DNS/TUN overrides. The chain-of-items pattern (`ChainItem` trait) allows extensible, async processing steps and is reusable for any multi-stage configuration transformation.

file: src-tauri/src/enhance/mod.rs ↗ | tags: #pipeline #config-transformation #authoritative-fields

A concurrent media unlock checker that tests proxy connectivity to streaming services (Netflix, Disney+, YouTube, ChatGPT, etc.) by crafting specific HTTP requests and inspecting responses. Runs up to 4 checks in parallel with per-provider timeout. The pattern of structured, concurrent HTTP probing with response analysis is reusable for any network service availability testing.

file: crates/clash-verge-media-unlock/src/lib.rs ↗ | tags: #concurrent-http #streaming-detection #api-mocking

A custom YAML emitter that produces visually clean YAML output with specific formatting rules (key ordering, comment preservation, indentation control). Demonstrates fine-grained control over YAML serialization that could be extracted for any Rust project needing deterministic, human-friendly YAML output beyond what standard libraries provide.

file: src-tauri/src/utils/yaml_emitter.rs ↗ | tags: #yaml #serialization #custom-emitter

Centralized delay/latency manager for proxy nodes. Implements batch testing with concurrency control, caching with TTL, and group-level notifications. Uses a singleton pattern with throttled event emission. Reusable as a generic latency measurement service for any network application requiring efficient, batched health checks with observer updates.

file: src/services/delay.ts ↗ | tags: #latency-testing #caching #batch-processing

A React hook that creates a shared WebSocket subscription to the mihomo API with automatic reconnection, throttled updates, and cleanup. Multiple components can subscribe to the same socket without duplication. The pattern of a shared, auto-managed WebSocket hook is reusable for any React application needing real-time data with minimal overhead.

file: src/hooks/use-mihomo-ws-subscription.ts ↗ | tags: #websocket #real-time #shared-subscription
Last analyzed: 2026-10-01 22:14:39.613356
Next check: 2026-10-08 22:14:39.595255
$ submit: