mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-28 07:14:40 +08:00
feat(current-proxy-card): add toggle for automatic delay detection
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
- 改进 Windows 和 Unix 的 服务连接方式以及权限,避免无法连接服务或内核
|
||||
- 修改内核默认日志级别为 Info
|
||||
- 支持通过桌面快捷方式重新打开应用
|
||||
- 主界面“当前节点”卡片每 5 分钟自动测试延迟
|
||||
- 主界面“当前节点”卡片新增自动延迟检测开关(默认关闭)
|
||||
- 支持订阅界面输入链接后回车导入
|
||||
|
||||
### 🐞 修复问题
|
||||
|
||||
@@ -131,6 +131,9 @@ pub struct IVerge {
|
||||
/// 默认的延迟测试超时时间
|
||||
pub default_latency_timeout: Option<i32>,
|
||||
|
||||
/// 是否自动检测当前节点延迟
|
||||
pub enable_auto_delay_detection: Option<bool>,
|
||||
|
||||
/// 是否使用内部的脚本支持,默认为真
|
||||
pub enable_builtin_enhanced: Option<bool>,
|
||||
|
||||
@@ -483,6 +486,7 @@ impl IVerge {
|
||||
patch!(auto_check_update);
|
||||
patch!(default_latency_test);
|
||||
patch!(default_latency_timeout);
|
||||
patch!(enable_auto_delay_detection);
|
||||
patch!(enable_builtin_enhanced);
|
||||
patch!(proxy_layout_column);
|
||||
patch!(test_list);
|
||||
@@ -568,6 +572,7 @@ pub struct IVergeResponse {
|
||||
pub auto_check_update: Option<bool>,
|
||||
pub default_latency_test: Option<String>,
|
||||
pub default_latency_timeout: Option<i32>,
|
||||
pub enable_auto_delay_detection: Option<bool>,
|
||||
pub enable_builtin_enhanced: Option<bool>,
|
||||
pub proxy_layout_column: Option<i32>,
|
||||
pub test_list: Option<Vec<IVergeTestItem>>,
|
||||
@@ -642,6 +647,7 @@ impl From<IVerge> for IVergeResponse {
|
||||
auto_check_update: verge.auto_check_update,
|
||||
default_latency_test: verge.default_latency_test,
|
||||
default_latency_timeout: verge.default_latency_timeout,
|
||||
enable_auto_delay_detection: verge.enable_auto_delay_detection,
|
||||
enable_builtin_enhanced: verge.enable_builtin_enhanced,
|
||||
proxy_layout_column: verge.proxy_layout_column,
|
||||
test_list: verge.test_list,
|
||||
|
||||
@@ -101,6 +101,7 @@ export const CurrentProxyCard = () => {
|
||||
const theme = useTheme();
|
||||
const { proxies, clashConfig, refreshProxy } = useAppData();
|
||||
const { verge } = useVerge();
|
||||
const autoDelayEnabled = verge?.enable_auto_delay_detection ?? false;
|
||||
|
||||
// 统一代理选择器
|
||||
const { handleSelectChange } = useProxySelection({
|
||||
@@ -452,6 +453,7 @@ export const CurrentProxyCard = () => {
|
||||
|
||||
useEffect(() => {
|
||||
if (isDirectMode) return;
|
||||
if (!autoDelayEnabled) return;
|
||||
if (!state.selection.group || !state.selection.proxy) return;
|
||||
|
||||
let disposed = false;
|
||||
@@ -481,6 +483,7 @@ export const CurrentProxyCard = () => {
|
||||
isDirectMode,
|
||||
state.selection.group,
|
||||
state.selection.proxy,
|
||||
autoDelayEnabled,
|
||||
]);
|
||||
|
||||
// 自定义渲染选择框中的值
|
||||
|
||||
@@ -29,6 +29,7 @@ export const MiscViewer = forwardRef<DialogRef>((props, ref) => {
|
||||
autoCheckUpdate: true,
|
||||
enableBuiltinEnhanced: true,
|
||||
proxyLayoutColumn: 6,
|
||||
enableAutoDelayDetection: false,
|
||||
defaultLatencyTest: "",
|
||||
autoLogClean: 2,
|
||||
defaultLatencyTimeout: 10000,
|
||||
@@ -45,6 +46,7 @@ export const MiscViewer = forwardRef<DialogRef>((props, ref) => {
|
||||
autoCheckUpdate: verge?.auto_check_update ?? true,
|
||||
enableBuiltinEnhanced: verge?.enable_builtin_enhanced ?? true,
|
||||
proxyLayoutColumn: verge?.proxy_layout_column || 6,
|
||||
enableAutoDelayDetection: verge?.enable_auto_delay_detection ?? false,
|
||||
defaultLatencyTest: verge?.default_latency_test || "",
|
||||
autoLogClean: verge?.auto_log_clean || 0,
|
||||
defaultLatencyTimeout: verge?.default_latency_timeout || 10000,
|
||||
@@ -61,6 +63,7 @@ export const MiscViewer = forwardRef<DialogRef>((props, ref) => {
|
||||
auto_check_update: values.autoCheckUpdate,
|
||||
enable_builtin_enhanced: values.enableBuiltinEnhanced,
|
||||
proxy_layout_column: values.proxyLayoutColumn,
|
||||
enable_auto_delay_detection: values.enableAutoDelayDetection,
|
||||
default_latency_test: values.defaultLatencyTest,
|
||||
default_latency_timeout: values.defaultLatencyTimeout,
|
||||
auto_log_clean: values.autoLogClean as any,
|
||||
@@ -265,6 +268,25 @@ export const MiscViewer = forwardRef<DialogRef>((props, ref) => {
|
||||
</Select>
|
||||
</ListItem>
|
||||
|
||||
<ListItem sx={{ padding: "5px 2px" }}>
|
||||
<ListItemText
|
||||
primary={t("Auto Delay Detection")}
|
||||
sx={{ maxWidth: "fit-content" }}
|
||||
/>
|
||||
<TooltipIcon
|
||||
title={t("Auto Delay Detection Info")}
|
||||
sx={{ opacity: "0.7" }}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={values.enableAutoDelayDetection}
|
||||
onChange={(_, c) =>
|
||||
setValues((v) => ({ ...v, enableAutoDelayDetection: c }))
|
||||
}
|
||||
sx={{ marginLeft: "auto" }}
|
||||
/>
|
||||
</ListItem>
|
||||
|
||||
<ListItem sx={{ padding: "5px 2px" }}>
|
||||
<ListItemText
|
||||
primary={t("Default Latency Test")}
|
||||
|
||||
@@ -327,6 +327,8 @@
|
||||
"Auto Log Clean": "تنظيف السجلات تلقائيًا",
|
||||
"Never Clean": "عدم التنظيف أبدًا",
|
||||
"Retain _n Days": "الاحتفاظ لمدة {{n}} يومًا",
|
||||
"Auto Delay Detection": "اكتشاف التأخير التلقائي",
|
||||
"Auto Delay Detection Info": "يختبر زمن استجابة العقدة الحالية على نحو دوري في الخلفية",
|
||||
"Default Latency Test": "اختبار التأخير الافتراضي",
|
||||
"Default Latency Test Info": "يُستخدم فقط لاختبار طلب HTTP العميل. لن يؤثر على ملف التكوين",
|
||||
"Default Latency Timeout": "مهلة التأخير الافتراضية",
|
||||
|
||||
@@ -323,6 +323,8 @@
|
||||
"Auto Log Clean": "Protokolle automatisch bereinigen",
|
||||
"Never Clean": "Nie bereinigen",
|
||||
"Retain _n Days": "{{n}} Tage behalten",
|
||||
"Auto Delay Detection": "Automatische Latenzprüfung",
|
||||
"Auto Delay Detection Info": "Überprüft regelmäßig im Hintergrund die Latenz des aktuellen Knotens",
|
||||
"Default Latency Test": "Standard-Testlink",
|
||||
"Default Latency Test Info": "Dies wird nur für HTTP-Client-Anfragentests verwendet und hat keine Auswirkungen auf die Konfigurationsdatei.",
|
||||
"Default Latency Timeout": "Test-Timeout",
|
||||
|
||||
@@ -374,6 +374,8 @@
|
||||
"Auto Log Clean": "Auto Log Clean",
|
||||
"Never Clean": "Never Clean",
|
||||
"Retain _n Days": "Retain {{n}} Days",
|
||||
"Auto Delay Detection": "Auto Delay Detection",
|
||||
"Auto Delay Detection Info": "Periodically test the current node latency in the background",
|
||||
"Default Latency Test": "Default Latency Test",
|
||||
"Default Latency Test Info": "Used for HTTP client request testing only and won't make a difference to the configuration file",
|
||||
"Default Latency Timeout": "Default Latency Timeout",
|
||||
|
||||
@@ -323,6 +323,8 @@
|
||||
"Auto Log Clean": "Limpiar registros automáticamente",
|
||||
"Never Clean": "No limpiar",
|
||||
"Retain _n Days": "Retener {{n}} días",
|
||||
"Auto Delay Detection": "Detección automática de latencia",
|
||||
"Auto Delay Detection Info": "Prueba periódicamente la latencia del nodo actual en segundo plano",
|
||||
"Default Latency Test": "Enlace de prueba de latencia predeterminado",
|
||||
"Default Latency Test Info": "Solo se utiliza para pruebas de solicitudes de clientes HTTP y no afectará al archivo de configuración.",
|
||||
"Default Latency Timeout": "Tiempo de espera de la prueba de latencia",
|
||||
|
||||
@@ -329,6 +329,8 @@
|
||||
"Auto Log Clean": "پاکسازی خودکار لاگ",
|
||||
"Never Clean": "هرگز پاک نکن",
|
||||
"Retain _n Days": "نگهداری به مدت {{n}} روز",
|
||||
"Auto Delay Detection": "تشخیص تأخیر خودکار",
|
||||
"Auto Delay Detection Info": "بهصورت دورهای تأخیر گره فعلی را در پسزمینه آزمایش میکند",
|
||||
"Default Latency Test": "آزمون تأخیر پیشفرض",
|
||||
"Default Latency Test Info": "فقط برای تست درخواستهای کلاینت HTTP استفاده میشود و بر فایل پیکربندی تأثیری نخواهد داشت",
|
||||
"Default Latency Timeout": "زمان انتظار تأخیر پیشفرض",
|
||||
|
||||
@@ -360,6 +360,8 @@
|
||||
"Auto Log Clean": "Pembersihan Log Otomatis",
|
||||
"Never Clean": "Jangan Pernah Bersihkan",
|
||||
"Retain _n Days": "Simpan {{n}} Hari",
|
||||
"Auto Delay Detection": "Deteksi Latensi Otomatis",
|
||||
"Auto Delay Detection Info": "Secara berkala menguji latensi node saat ini di latar belakang",
|
||||
"Default Latency Test": "Tes Latensi Default",
|
||||
"Default Latency Test Info": "Digunakan hanya untuk pengujian permintaan klien HTTP dan tidak akan mempengaruhi file konfigurasi",
|
||||
"Default Latency Timeout": "Waktu Habis Latensi Default",
|
||||
|
||||
@@ -326,6 +326,8 @@
|
||||
"Auto Log Clean": "ログを自動的にクリーンアップ",
|
||||
"Never Clean": "クリーンアップしない",
|
||||
"Retain _n Days": "{{n}}日間保持",
|
||||
"Auto Delay Detection": "自動遅延検出",
|
||||
"Auto Delay Detection Info": "バックグラウンドで現在のノードのレイテンシーを定期的にテストします",
|
||||
"Default Latency Test": "デフォルトの遅延テストURL",
|
||||
"Default Latency Test Info": "HTTPクライアントリクエストテストにのみ使用され、設定ファイルには影響しません。",
|
||||
"Default Latency Timeout": "テストタイムアウト時間",
|
||||
|
||||
@@ -398,5 +398,7 @@
|
||||
"View Profile-Script": "프로필-스크립트 보기",
|
||||
"View Profile-Merge": "프로필-병합 보기",
|
||||
"Update Successful": "업데이트 성공",
|
||||
"Update Failed": "업데이트 실패"
|
||||
"Update Failed": "업데이트 실패",
|
||||
"Auto Delay Detection": "자동 지연 감지",
|
||||
"Auto Delay Detection Info": "백그라운드에서 현재 노드의 지연을 주기적으로 검사합니다"
|
||||
}
|
||||
|
||||
@@ -352,6 +352,8 @@
|
||||
"Auto Log Clean": "Автоматическая очистка логов",
|
||||
"Never Clean": "Никогда не очищать",
|
||||
"Retain _n Days": "Сохранять {{n}} дней",
|
||||
"Auto Delay Detection": "Автоматическое измерение задержки",
|
||||
"Auto Delay Detection Info": "Периодически проверяет задержку текущего узла в фоновом режиме",
|
||||
"Default Latency Test": "Ссылка на тест задержки",
|
||||
"Default Latency Test Info": "Используется только для тестирования HTTP-запросов клиента и не влияет на файл конфигурации",
|
||||
"Default Latency Timeout": "Таймаут задержки по умолчанию",
|
||||
|
||||
@@ -350,6 +350,8 @@
|
||||
"Auto Log Clean": "Otomatik Günlük Temizleme",
|
||||
"Never Clean": "Asla Temizleme",
|
||||
"Retain _n Days": "{{n}} Gün Sakla",
|
||||
"Auto Delay Detection": "Otomatik Gecikme Tespiti",
|
||||
"Auto Delay Detection Info": "Arka planda mevcut düğümün gecikmesini periyodik olarak test eder",
|
||||
"Default Latency Test": "Varsayılan Gecikme Testi",
|
||||
"Default Latency Test Info": "Yalnızca HTTP istemci isteği testi için kullanılır ve yapılandırma dosyasında bir fark yaratmaz",
|
||||
"Default Latency Timeout": "Varsayılan Gecikme Zaman Aşımı",
|
||||
|
||||
@@ -328,6 +328,8 @@
|
||||
"Auto Log Clean": "Логларны автоматик чистарту",
|
||||
"Never Clean": "Беркайчан чистартмаска",
|
||||
"Retain _n Days": "{{n}} көн саклау",
|
||||
"Auto Delay Detection": "Автоматик тоткарлык ачыклау",
|
||||
"Auto Delay Detection Info": "Фон режимында хәзерге төен тоткарлыгын периодик тикшерә",
|
||||
"Default Latency Test": "Тоткарлануны тикшерү сылтамасы (defaults)",
|
||||
"Default Latency Test Info": "Бу фәкать клиентның HTTP сораулары тесты өчен кулланыла, конфигурация файлына йогынты ясамый",
|
||||
"Default Latency Timeout": "Тоткарлануның стандарт таймауты",
|
||||
|
||||
@@ -374,6 +374,8 @@
|
||||
"Auto Log Clean": "自动清理日志",
|
||||
"Never Clean": "不清理",
|
||||
"Retain _n Days": "保留 {{n}} 天",
|
||||
"Auto Delay Detection": "自动延迟检测",
|
||||
"Auto Delay Detection Info": "后台定时检测当前节点延迟",
|
||||
"Default Latency Test": "默认测试链接",
|
||||
"Default Latency Test Info": "仅用于 HTTP 客户端请求测试,不会对配置文件产生影响",
|
||||
"Default Latency Timeout": "测试超时时间",
|
||||
|
||||
@@ -331,6 +331,8 @@
|
||||
"Auto Log Clean": "自動清理日誌",
|
||||
"Never Clean": "不清理",
|
||||
"Retain _n Days": "保留 {{n}} 天",
|
||||
"Auto Delay Detection": "自動延遲偵測",
|
||||
"Auto Delay Detection Info": "在背景定時檢測當前節點延遲",
|
||||
"Default Latency Test": "默認測試鏈接",
|
||||
"Default Latency Test Info": "僅用於 HTTP 客戶端請求測試,不會對配置文件產生影響",
|
||||
"Default Latency Timeout": "測試超時時間",
|
||||
|
||||
1
src/services/types.d.ts
vendored
1
src/services/types.d.ts
vendored
@@ -850,6 +850,7 @@ interface IVergeConfig {
|
||||
auto_check_update?: boolean;
|
||||
default_latency_test?: string;
|
||||
default_latency_timeout?: number;
|
||||
enable_auto_delay_detection?: boolean;
|
||||
enable_builtin_enhanced?: boolean;
|
||||
auto_log_clean?: 0 | 1 | 2 | 3 | 4;
|
||||
proxy_layout_column?: number;
|
||||
|
||||
Reference in New Issue
Block a user