[package]
name = "clash-verge"
version = "2.3.2"
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.3.0", features = [] }

[dependencies]
warp = "0.3.7"
anyhow = "1.0.98"
dirs = "6.0"
open = "5.3.2"
log = "0.4.27"
dunce = "1.0.5"
log4rs = "1.3.0"
nanoid = "0.4"
chrono = "0.4.41"
sysinfo = "=0.35.2"
boa_engine = "0.20.0"
serde_json = "1.0.140"
serde_yaml = "0.9.34"
once_cell = "1.21.3"
lazy_static = "1.5.0"
port_scanner = "0.1.5"
delay_timer = "0.11.6"
parking_lot = "0.12.4"
percent-encoding = "2.3.1"
tokio = { version = "1.46.1", features = [
  "rt-multi-thread",
  "macros",
  "time",
  "sync",
] }
serde = { version = "1.0.219", features = ["derive"] }
reqwest = { version = "0.12.22", features = ["json", "rustls-tls", "cookies"] }
regex = "1.11.1"
sysproxy = { git = "https://github.com/clash-verge-rev/sysproxy-rs" }
image = "0.25.6"
tauri = { version = "2.6.2", features = [
  "protocol-asset",
  "devtools",
  "tray-icon",
  "image-ico",
  "image-png",
] }
network-interface = { version = "2.0.1", features = ["serde"] }
tauri-plugin-shell = "2.3.0"
tauri-plugin-dialog = "2.3.0"
tauri-plugin-fs = "2.4.0"
tauri-plugin-process = "2.3.0"
tauri-plugin-clipboard-manager = "2.3.0"
tauri-plugin-deep-link = "2.4.0"
tauri-plugin-devtools = "2.0.0"
tauri-plugin-window-state = "2.3.0"
zip = "=4.2.0"
reqwest_dav = "0.2.1"
aes-gcm = { version = "0.10.3", features = ["std"] }
base64 = "0.22.1"
getrandom = "0.3.3"
futures = "0.3.31"
sys-locale = "0.3.2"
async-trait = "0.1.88"
mihomo_api = { path = "src_crates/crate_mihomo_api" }
libc = "0.2.174"
gethostname = "1.0.2"
hmac = "0.12.1"
sha2 = "0.10.9"
hex = "0.4.3"
scopeguard = "1.2.0"
tauri-plugin-notification = "2.3.0"
dashmap = "7.0.0-rc2"

[target.'cfg(windows)'.dependencies]
runas = "=1.2.0"
deelevate = "0.2.0"
winreg = "0.55.0"
winapi = { version = "0.3.9", features = [
  "winbase",
  "fileapi",
  "winnt",
  "handleapi",
  "errhandlingapi",
  "minwindef",
  "winerror",
  "tlhelp32",
  "processthreadsapi",
  "winhttp",
  "winreg",
] }

[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.5.0"
tauri-plugin-global-shortcut = "2.3.0"
tauri-plugin-updater = "2.9.0"

[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
codegen-units = 256 # 增加编译单元，提升编译速度
opt-level = 0       # 禁用优化，进一步提升编译速度
debug = true        # 保留调试信息
strip = false       # 不剥离符号，保留调试信息

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

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

[dev-dependencies]
criterion = "0.6.0"
tempfile = "3.20.0"

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

[[bench]]
name = "draft_benchmark"
harness = false
