[package]
name = "clash-verge"
version = "2.2.3-alpha"
description = "clash verge"
authors = ["zzzgydi", "wonfen", "MystiPanda"]
license = "GPL-3.0-only"
repository = "https://github.com/clash-verge-rev/clash-verge-rev.git"
default-run = "clash-verge"
edition = "2021"
build = "build.rs"

[package.metadata.bundle]
identifier = "io.github.clash-verge-rev.clash-verge-rev"

[build-dependencies]
tauri-build = { version = "2.1.0", features = [] }

[dependencies]
warp = "0.3"
anyhow = "1.0.97"
dirs = "6.0"
open = "5.3"
log = "0.4"
dunce = "1.0"
log4rs = "1"
nanoid = "0.4"
chrono = "0.4.40"
sysinfo = "0.34"
boa_engine = "0.20.0"
serde_json = "1.0"
serde_yaml = "0.9"
once_cell = "1.21.3"
port_scanner = "0.1.5"
delay_timer = "0.11.6"
parking_lot = "0.12"
percent-encoding = "2.3.1"
tokio = { version = "1.44", features = [
  "rt-multi-thread",
  "macros",
  "time",
  "sync",
] }
serde = { version = "1.0", features = ["derive"] }
reqwest = { version = "0.12", features = ["json", "rustls-tls", "cookies"] }
regex = "1.11.1"
sysproxy = { git = "https://github.com/clash-verge-rev/sysproxy-rs", rev = "3d748b5" }
image = "0.25.6"
imageproc = "0.25.0"
tauri = { version = "2.4.0", features = [
  "protocol-asset",
  "devtools",
  "tray-icon",
  "image-ico",
  "image-png",
] }
network-interface = { version = "2.0.1", features = ["serde"] }
tauri-plugin-shell = "2.2.0"
tauri-plugin-dialog = "2.2.0"
tauri-plugin-fs = "2.2.0"
tauri-plugin-process = "2.2.0"
tauri-plugin-clipboard-manager = "2.2.2"
tauri-plugin-deep-link = "2.2.0"
tauri-plugin-devtools = "2.0.0"
zip = "2.5.0"
reqwest_dav = "0.1.15"
aes-gcm = { version = "0.10.3", features = ["std"] }
base64 = "0.22.1"
getrandom = "0.3.2"
tokio-tungstenite = "0.26.2"
futures = "0.3"
sys-locale = "0.3.2"
async-trait = "0.1.88"
mihomo_api = { path = "src_crates/crate_mihomo_api" }
ab_glyph = "0.2.29"
tungstenite = "0.26.2"

[target.'cfg(windows)'.dependencies]
runas = "=1.2.0"
deelevate = "0.2.0"
winreg = "0.55.0"

[target.'cfg(target_os = "linux")'.dependencies]
users = "0.11.0"

[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-autostart = "2.2.0"
tauri-plugin-global-shortcut = "2.2.0"
tauri-plugin-updater = "2.6.1"
tauri-plugin-window-state = "2.2.1"

[features]
default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"]
verge-dev = []

[profile.release]
panic = "abort"
codegen-units = 1
lto = true
opt-level = "s"
strip = true

[profile.dev]
incremental = true

[profile.fast-release]
inherits = "release" # 继承 release 的配置
panic = "abort"      # 与 release 相同
codegen-units = 256  # 增加编译单元，提升编译速度
lto = false          # 禁用 LTO，提升编译速度
opt-level = 0        # 禁用优化，大幅提升编译速度
debug = true         # 保留调试信息
strip = false        # 不剥离符号，保留调试信息

[profile.fast-dev]
inherits = "dev"    # 继承 dev 的配置
codegen-units = 256 # 增加编译单元，提升编译速度
opt-level = 0       # 禁用优化，进一步提升编译速度
incremental = true  # 启用增量编译
debug = true        # 保留调试信息
strip = false       # 不剥离符号，保留调试信息

[lib]
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]

[dev-dependencies]
tempfile = "3.19.1"

[workspace]
members = ["src_crates/crate_mihomo_api"]

# [patch.crates-io]
# bitflags = { git = "https://github.com/bitflags/bitflags", rev = "2.9.0" }
# zerocopy = { git = "https://github.com/google/zerocopy", rev = "v0.8.24" }
# tungstenite = { git = "https://github.com/snapview/tungstenite-rs", rev = "v0.26.2" }
