From d73d70ce0818198b5a0b42b11df8514ba4be3324 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:15:02 +0800 Subject: [PATCH 1/7] fix: fix allow api lan usage button --- ClashX/Base.lproj/Main.storyboard | 1 + .../Settings/GeneralSettingViewController.swift | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/ClashX/Base.lproj/Main.storyboard b/ClashX/Base.lproj/Main.storyboard index 32e43db..e4284e6 100644 --- a/ClashX/Base.lproj/Main.storyboard +++ b/ClashX/Base.lproj/Main.storyboard @@ -309,6 +309,7 @@ + diff --git a/ClashX/ViewControllers/Settings/GeneralSettingViewController.swift b/ClashX/ViewControllers/Settings/GeneralSettingViewController.swift index 9c3efde..70b38d4 100644 --- a/ClashX/ViewControllers/Settings/GeneralSettingViewController.swift +++ b/ClashX/ViewControllers/Settings/GeneralSettingViewController.swift @@ -16,6 +16,7 @@ class GeneralSettingViewController: NSViewController { @IBOutlet weak var reduceNotificationsButton: NSButton! @IBOutlet weak var useiCloudButton: NSButton! + @IBOutlet weak var allowApiLanUsageSwitcher: NSButton! @IBOutlet weak var proxyPortTextField: NSTextField! @IBOutlet weak var apiPortTextField: NSTextField! @@ -75,6 +76,10 @@ class GeneralSettingViewController: NSViewController { .bind { Settings.apiPort = $0 }.disposed(by: disposeBag) + + allowApiLanUsageSwitcher.rx.state.bind { state in + Settings.apiPortAllowLan = state == .on + }.disposed(by: disposeBag) } override func viewDidAppear() { From 5c9b35fbaccb90230ec1af52fe831c99958a971c Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:22:43 +0800 Subject: [PATCH 2/7] misc: allow user define standalone proxy port --- ClashX/goClash/main.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ClashX/goClash/main.go b/ClashX/goClash/main.go index 66ee869..30de6c9 100644 --- a/ClashX/goClash/main.go +++ b/ClashX/goClash/main.go @@ -100,8 +100,12 @@ func parseDefaultConfigThenStart(checkPort, allowLan bool, proxyPort uint32, ext if proxyPort > 0 { rawCfg.MixedPort = int(proxyPort) - rawCfg.SocksPort = 0 - rawCfg.Port = 0 + if rawCfg.Port == rawCfg.MixedPort { + rawCfg.Port = 0 + } + if rawCfg.SocksPort == rawCfg.MixedPort { + rawCfg.SocksPort = 0 + } } else { if rawCfg.MixedPort == 0 { if rawCfg.Port > 0 { From 2f5dc5c642f508bb4a6fd7bb5f1e9caa1a6cf904 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Fri, 24 Mar 2023 16:31:04 +0800 Subject: [PATCH 3/7] misc: some core does not have mean delay --- ClashX/Models/ClashProxy.swift | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ClashX/Models/ClashProxy.swift b/ClashX/Models/ClashProxy.swift index 3b8e897..6118168 100644 --- a/ClashX/Models/ClashProxy.swift +++ b/ClashX/Models/ClashProxy.swift @@ -59,7 +59,7 @@ typealias ClashProviderName = String class ClashProxySpeedHistory: Codable { let time: Date let delay: Int - let meanDelay: Int + let meanDelay: Int? class HisDateFormaterInstance { static let shared = HisDateFormaterInstance() @@ -71,9 +71,16 @@ class ClashProxySpeedHistory: Codable { } lazy var delayDisplay: String = { - switch meanDelay { - case 0: return NSLocalizedString("fail", comment: "") - default: return "\(meanDelay) ms" + if let meanDelay, meanDelay > 0 { + switch meanDelay { + case 0: return NSLocalizedString("fail", comment: "") + default: return "\(meanDelay) ms" + } + } else { + switch delay { + case 0: return NSLocalizedString("fail", comment: "") + default: return "\(delay) ms" + } } }() From d6a04af93052350030fdca0eef8419848c79bb43 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Mon, 27 Mar 2023 09:08:37 +0800 Subject: [PATCH 4/7] misc: fix speed issue when use remote conifg --- ClashX/AppDelegate.swift | 6 ++++-- ClashX/General/ApiRequest.swift | 14 ++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ClashX/AppDelegate.swift b/ClashX/AppDelegate.swift index a357f51..39a9805 100644 --- a/ClashX/AppDelegate.swift +++ b/ClashX/AppDelegate.swift @@ -121,8 +121,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { clashSetupLogger() clash_setTrafficBlock { [weak self] up, down in - DispatchQueue.main.async { - self?.didUpdateTraffic(up: Int(up), down: Int(down)) + if RemoteControlManager.selectConfig == nil { + DispatchQueue.main.async { + self?.didUpdateTraffic(up: Int(up), down: Int(down)) + } } } clashSetupTraffic() diff --git a/ClashX/General/ApiRequest.swift b/ClashX/General/ApiRequest.swift index ff3d8e0..2777427 100644 --- a/ClashX/General/ApiRequest.swift +++ b/ClashX/General/ApiRequest.swift @@ -346,10 +346,13 @@ extension ApiRequest { } private func requestTrafficInfo() { - if ApiRequest.useDirectApi() { return } + if ApiRequest.useDirectApi() { + trafficWebSocket?.disconnect(forceTimeout: 0.5) + return + } trafficWebSocketRetryTimer?.invalidate() trafficWebSocketRetryTimer = nil - trafficWebSocket?.disconnect(forceTimeout: 0, closeCode: 0) + trafficWebSocket?.disconnect(forceTimeout: 0.5) let socket = WebSocket(url: URL(string: ConfigManager.apiUrl.appending("/traffic"))!) @@ -362,10 +365,13 @@ extension ApiRequest { } private func requestLog() { - if ApiRequest.useDirectApi() { return } + if ApiRequest.useDirectApi() { + loggingWebSocket?.disconnect(forceTimeout: 1) + return + } loggingWebSocketRetryTimer?.invalidate() loggingWebSocketRetryTimer = nil - loggingWebSocket?.disconnect() + loggingWebSocket?.disconnect(forceTimeout: 1) let uriString = "/logs?level=".appending(ConfigManager.selectLoggingApiLevel.rawValue) let socket = WebSocket(url: URL(string: ConfigManager.apiUrl.appending(uriString))!) From 7c15841e80ba59a3530adfb34a65c8ed081e18d1 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Sat, 9 Jan 2021 22:28:21 +0800 Subject: [PATCH 5/7] chore: acceptsFirstMouse on dashboard webview --- .../ClashWebViewContoller.swift | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ClashX/ViewControllers/ClashWebViewContoller.swift b/ClashX/ViewControllers/ClashWebViewContoller.swift index dd8f7a0..73dc89a 100644 --- a/ClashX/ViewControllers/ClashWebViewContoller.swift +++ b/ClashX/ViewControllers/ClashWebViewContoller.swift @@ -201,13 +201,24 @@ extension ClashWebViewContoller: WKUIDelegate, WKNavigationDelegate { class CustomWKWebView: WKWebView { var dragableAreaHeight: CGFloat = 30 let alwaysDragableLeftAreaWidth: CGFloat = 150 + + private func isInDargArea(with event:NSEvent?) -> Bool { + guard let event = event else { return false } + let x = event.locationInWindow.x + let y = (window?.frame.size.height ?? 0) - event.locationInWindow.y + return x < alwaysDragableLeftAreaWidth || y < dragableAreaHeight + } + + override func acceptsFirstMouse(for event: NSEvent?) -> Bool { + if isInDargArea(with: event) { + return true + } + return super.acceptsFirstMouse(for: event) + } override func mouseDown(with event: NSEvent) { super.mouseDown(with: event) - let x = event.locationInWindow.x - let y = (window?.frame.size.height ?? 0) - event.locationInWindow.y - - if x < alwaysDragableLeftAreaWidth || y < dragableAreaHeight { + if isInDargArea(with: event) { window?.performDrag(with: event) } } From 19a4f8bfaf1dcfc263b0bc02f59bc0feb8b7f6d3 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Tue, 28 Mar 2023 10:29:14 +0800 Subject: [PATCH 6/7] misc: update core, enable crash collect --- .github/workflows/main.yml | 5 +- ClashX/AppDelegate.swift | 9 +- .../ClashWebViewContoller.swift | 4 +- ClashX/goClash/go.mod | 23 ++-- ClashX/goClash/go.sum | 119 ++++-------------- Podfile | 1 + Podfile.lock | 13 +- 7 files changed, 58 insertions(+), 116 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fe2178f..e33fd2a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -83,6 +83,7 @@ jobs: APPCENTER_API_TOKEN: ${{ secrets.APPCENTER_API_TOKEN }} APPCENTER_DISTRIBUTE_FILE: ClashX.dmg APPCENTER_OWNER_NAME: ${{ secrets.APPCENTER_OWNER_NAME }} + APPCENTER_DISTRIBUTE_DSYM: "ClashX.app.dSYM.zip" run: | appversion=`defaults read \`pwd\`/ClashX.app/Contents/Info.plist CFBundleShortVersionString` buildVersion=`defaults read \`pwd\`/ClashX.app/Contents/Info.plist CFBundleVersion` @@ -96,7 +97,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - files: ClashX.dmg + files: | + ClashX.app.dSYM.zip + ClashX.dmg draft: true prerelease: true diff --git a/ClashX/AppDelegate.swift b/ClashX/AppDelegate.swift index 39a9805..effdda3 100644 --- a/ClashX/AppDelegate.swift +++ b/ClashX/AppDelegate.swift @@ -15,6 +15,7 @@ import CocoaLumberjack import AppCenter import AppCenterAnalytics +import AppCenterCrashes let statusItemLengthWithSpeed: CGFloat = 72 @@ -59,8 +60,8 @@ class AppDelegate: NSObject, NSApplicationDelegate { var dashboardWindowController: ClashWebViewWindowController? func applicationWillFinishLaunching(_ notification: Notification) { + Logger.log("applicationWillFinishLaunching") signal(SIGPIPE, SIG_IGN) - // crash recorder failLaunchProtect() NSAppleEventManager.shared() .setEventHandler(self, @@ -82,13 +83,13 @@ class AppDelegate: NSObject, NSApplicationDelegate { } statusItemView.updateSize(width: statusItemLengthWithSpeed) statusMenu.delegate = self - registCrashLogger() DispatchQueue.main.async { self.postFinishLaunching() } } func postFinishLaunching() { + Logger.log("postFinishLaunching") defer { statusItem.menu = statusMenu DispatchQueue.main.asyncAfter(deadline: .now()+1) { @@ -151,6 +152,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { RemoteConfigManager.shared.autoUpdateCheck() setupNetworkNotifier() + registCrashLogger() } func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply { @@ -877,7 +879,8 @@ extension AppDelegate { #else DispatchQueue.main.asyncAfter(deadline: .now() + 5) { AppCenter.start(withAppSecret: "dce6e9a3-b6e3-4fd2-9f2d-35c767a99663", services: [ - Analytics.self + Analytics.self, + Crashes.self ]) } diff --git a/ClashX/ViewControllers/ClashWebViewContoller.swift b/ClashX/ViewControllers/ClashWebViewContoller.swift index 73dc89a..6677353 100644 --- a/ClashX/ViewControllers/ClashWebViewContoller.swift +++ b/ClashX/ViewControllers/ClashWebViewContoller.swift @@ -201,14 +201,14 @@ extension ClashWebViewContoller: WKUIDelegate, WKNavigationDelegate { class CustomWKWebView: WKWebView { var dragableAreaHeight: CGFloat = 30 let alwaysDragableLeftAreaWidth: CGFloat = 150 - + private func isInDargArea(with event:NSEvent?) -> Bool { guard let event = event else { return false } let x = event.locationInWindow.x let y = (window?.frame.size.height ?? 0) - event.locationInWindow.y return x < alwaysDragableLeftAreaWidth || y < dragableAreaHeight } - + override func acceptsFirstMouse(for event: NSEvent?) -> Bool { if isInDargArea(with: event) { return true diff --git a/ClashX/goClash/go.mod b/ClashX/goClash/go.mod index 5e5a9e8..c3c7d4a 100644 --- a/ClashX/goClash/go.mod +++ b/ClashX/goClash/go.mod @@ -3,7 +3,7 @@ module github.com/yichengchen/clashX/ClashX go 1.19 require ( - github.com/Dreamacro/clash v1.13.1-0.20230228052842-f78a7cb2cbe3 + github.com/Dreamacro/clash v1.14.1-0.20230326082223-7e2974f02ffa github.com/oschwald/geoip2-golang v1.8.0 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 ) @@ -13,27 +13,28 @@ require ( github.com/go-chi/chi/v5 v5.0.8 // indirect github.com/go-chi/cors v1.2.1 // indirect github.com/go-chi/render v1.0.2 // indirect - github.com/gofrs/uuid v4.4.0+incompatible // indirect + github.com/gofrs/uuid/v5 v5.0.0 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8 // indirect + github.com/insomniacslk/dhcp v0.0.0-20230307103557-e252950ab961 // indirect github.com/josharian/native v1.1.0 // indirect github.com/mdlayher/netlink v1.7.2-0.20221213171556-9881fafed8c7 // indirect github.com/mdlayher/socket v0.4.0 // indirect - github.com/miekg/dns v1.1.50 // indirect + github.com/miekg/dns v1.1.52 // indirect github.com/oschwald/maxminddb-golang v1.10.0 // indirect + github.com/pierrec/lz4/v4 v4.1.14 // indirect github.com/samber/lo v1.37.0 // indirect github.com/sirupsen/logrus v1.9.0 // indirect - github.com/u-root/uio v0.0.0-20221213070652-c3537552635f // indirect + github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/atomic v1.10.0 // indirect - golang.org/x/crypto v0.6.0 // indirect + golang.org/x/crypto v0.7.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/net v0.7.0 // indirect + golang.org/x/mod v0.8.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect - golang.org/x/tools v0.1.12 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/tools v0.6.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/ClashX/goClash/go.sum b/ClashX/goClash/go.sum index 2b9ef26..f0a9cb6 100644 --- a/ClashX/goClash/go.sum +++ b/ClashX/goClash/go.sum @@ -1,143 +1,74 @@ -github.com/Dreamacro/clash v1.13.1-0.20230228052842-f78a7cb2cbe3 h1:ZIRDYdwaOHfpgcbZlHzov+c/4BIcftiYfdpuPqmA2O0= -github.com/Dreamacro/clash v1.13.1-0.20230228052842-f78a7cb2cbe3/go.mod h1:0hkl4QlO1dxG82u72o5VWihNL1MZOq8MOndr8Hpv17A= +github.com/Dreamacro/clash v1.14.1-0.20230326082223-7e2974f02ffa h1:ha9reJ8txD0zD420txU3fOoFdm6KZ9iBRJ48PnHrBvc= +github.com/Dreamacro/clash v1.14.1-0.20230326082223-7e2974f02ffa/go.mod h1:ia2CU7V713H1QdCqMwOLK9U9V5Ay8X0voj3yQr2tk+I= github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fanliao/go-promise v0.0.0-20141029170127-1890db352a72/go.mod h1:PjfxuH4FZdUyfMdtBio2lsRr1AKEaVPwelzuHuh8Lqc= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4= github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-chi/render v1.0.2 h1:4ER/udB0+fMWB2Jlf15RV3F4A2FDuYi/9f+lFttR/Lg= github.com/go-chi/render v1.0.2/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0= -github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= -github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= +github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis= -github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8 h1:Z72DOke2yOK0Ms4Z2LK1E1OrRJXOxSj5DllTz2FYTRg= -github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8/go.mod h1:m5WMe03WCvWcXjRnhvaAbAAXdCnu20J5P+mmH44ZzpE= +github.com/insomniacslk/dhcp v0.0.0-20230307103557-e252950ab961 h1:x/YtdDlmypenG1te/FfH6LVM+3krhXk5CFV8VYNNX5M= +github.com/insomniacslk/dhcp v0.0.0-20230307103557-e252950ab961/go.mod h1:IKrnDWs3/Mqq5n0lI+RxA2sB7MvN/vbMBP3ehXg65UI= github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= -github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= -github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ= -github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqoO/u39cqLeBLebZ8fWdE96O7FxrAsRYhnVOdgHxok= -github.com/jsimonetti/rtnetlink v0.0.0-20201110080708-d2c240429e6c/go.mod h1:huN4d1phzjhlOsNIjFsw2SVRbwIHj3fJDMEU2SDPTmg= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7/go.mod h1:U6ZQobyTjI/tJyq2HG+i/dfSoFUt8/aZCM+GKtmFk/Y= -github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA= -github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= -github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY= -github.com/mdlayher/netlink v1.1.1/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o= github.com/mdlayher/netlink v1.7.2-0.20221213171556-9881fafed8c7 h1:HSkXG1bE/qcRuuPlZ2Jyf0Od8HLxOowi7CzKQqNtWn4= github.com/mdlayher/netlink v1.7.2-0.20221213171556-9881fafed8c7/go.mod h1:1ztDZHGbU5MjN5lNZpkpG8ygndjjWzcojp/H7r6l6QQ= -github.com/mdlayher/raw v0.0.0-20190606142536-fef19f00fc18/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg= -github.com/mdlayher/raw v0.0.0-20191009151244-50f2db8cc065/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg= github.com/mdlayher/socket v0.4.0 h1:280wsy40IC9M9q1uPGcLBwXpcTQDtoGwVt+BNoITxIw= github.com/mdlayher/socket v0.4.0/go.mod h1:xxFqz5GRCUN3UEOm9CZqEJsAbe1C8OwSK46NlmWuVoc= -github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.52 h1:Bmlc/qsNNULOe6bpXcUTsuOajd0DzRHwup6D9k1An0c= +github.com/miekg/dns v1.1.52/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= github.com/oschwald/geoip2-golang v1.8.0 h1:KfjYB8ojCEn/QLqsDU0AzrJ3R5Qa9vFlx3z6SLNcKTs= github.com/oschwald/geoip2-golang v1.8.0/go.mod h1:R7bRvYjOeaoenAp9sKRS8GX5bJWcZ0laWO5+DauEktw= github.com/oschwald/maxminddb-golang v1.10.0 h1:Xp1u0ZhqkSuopaKmk1WwHtjF0H9Hd9181uj2MQ5Vndg= github.com/oschwald/maxminddb-golang v1.10.0/go.mod h1:Y2ELenReaLAZ0b400URyGwvYxHV1dLIxBuyOsyYjHK0= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= +github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/samber/lo v1.37.0 h1:XjVcB8g6tgUp8rsPsJ2CvhClfImrpL04YpQHXeHPhRw= github.com/samber/lo v1.37.0/go.mod h1:9vaz2O4o8oOnK23pd2TrXufcbdbJIa3b6cstBWKpopA= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/u-root/uio v0.0.0-20221213070652-c3537552635f h1:dpx1PHxYqAnXzbryJrWP1NQLzEjwcVgFLhkknuFQ7ww= -github.com/u-root/uio v0.0.0-20221213070652-c3537552635f/go.mod h1:IogEAUBXDEwX7oR/BMmCctShYs80ql4hF0ySdzGxf7E= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA= +github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190418153312-f0ce4c0180be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606122018-79a91cf218c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/Podfile b/Podfile index e5e55e7..2b2d376 100644 --- a/Podfile +++ b/Podfile @@ -27,6 +27,7 @@ target 'ClashX' do pod 'WebViewJavascriptBridge' pod 'Starscream','3.1.1' pod 'AppCenter/Analytics' + pod 'AppCenter/Crashes' pod 'Sparkle','~>1.0' pod "FlexibleDiff" pod 'GzipSwift' diff --git a/Podfile.lock b/Podfile.lock index 5b79655..7d8bdb6 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,8 +1,10 @@ PODS: - Alamofire (5.6.4) - - AppCenter/Analytics (5.0.1): + - AppCenter/Analytics (5.0.2): + - AppCenter/Core + - AppCenter/Core (5.0.2) + - AppCenter/Crashes (5.0.2): - AppCenter/Core - - AppCenter/Core (5.0.1) - CocoaLumberjack/Core (3.8.0) - CocoaLumberjack/Swift (3.8.0): - CocoaLumberjack/Core @@ -23,6 +25,7 @@ PODS: DEPENDENCIES: - Alamofire (~> 5.0) - AppCenter/Analytics + - AppCenter/Crashes - CocoaLumberjack/Swift - FlexibleDiff - GzipSwift @@ -52,7 +55,7 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: 4e95d97098eacb88856099c4fc79b526a299e48c - AppCenter: 18153bb6bc4241d14c8cce57466ac1c88136b476 + AppCenter: 355ba776b273d30147c3ac385c558bec60a7d4b1 CocoaLumberjack: 78abfb691154e2a9df8ded4350d504ee19d90732 FlexibleDiff: b9ee9b8305b42c784f5dd40589203c97c55bbaa0 GzipSwift: 893f3e48e597a1a4f62fafcb6514220fcf8287fa @@ -65,6 +68,6 @@ SPEC CHECKSUMS: SwiftyJSON: 2f33a42c6fbc52764d96f13368585094bfd8aa5e WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29 -PODFILE CHECKSUM: 8723148a909e836604a13ea038cf5206d1d450a0 +PODFILE CHECKSUM: 9b9952fcf44ecd26932a2cf4bb79d03f8850d67b -COCOAPODS: 1.11.0 +COCOAPODS: 1.11.3 From b9c45071b6195822ab99cdd02fb8bce4a50cbe02 Mon Sep 17 00:00:00 2001 From: Miigon Date: Sat, 25 Mar 2023 21:31:11 +0800 Subject: [PATCH 7/7] ClashLogLevel.warning = "warning" instead of "warn" `log-level` should be `info / warning / error / debug / silent`, `warn` is not a valid log level. fixes #966 #982 --- ClashX/Models/ClashConfig.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ClashX/Models/ClashConfig.swift b/ClashX/Models/ClashConfig.swift index af112d2..85333c9 100644 --- a/ClashX/Models/ClashConfig.swift +++ b/ClashX/Models/ClashConfig.swift @@ -26,7 +26,7 @@ extension ClashProxyMode { enum ClashLogLevel: String, Codable { case info - case warning = "warn" + case warning case error case debug case silent