Files
Tunglies 71429f9a42 feat!: migrate to tauri 3.0.0-alpha
Move the app onto the tauri v3 alpha line (tauri 3.0.0-alpha.4 with
the matching plugin alphas):

- the runtime is injected explicitly (tauri-runtime-wry +
  .runtime(Wry::default())) and tauri::Wry generics give way to the
  DynRuntime defaults (menu/tray types spell it out); the devtools
  feature moved onto the runtime crate; run_on_main_thread arrives
  via tauri::Manager; TrayIcon access uses with_inner_blocking.
- tauri-specta rides the tauri team's tauri-v3 port until it
  publishes, and that port pins the unpublished specta rc.26 line, so
  both resolve through [patch.crates-io] git entries - drop them once
  specta rc.26 and tauri-specta ship on crates.io. dev's specta IPC
  bindings, the frontend-contract export and its CI/pre-push parity
  checks keep working on top; bindings.ts regenerates with rc.26's
  named inline types (IVergeTestItem gains a _Serialize write shape,
  test-viewer normalizes new items to it).
- the tray-icon patch stays dropped (upstream 0.25.1 ships the macOS
  27 click-reentrancy fix); dev's muda patch is kept since tauri
  alpha.4 still rides muda 0.20.
- tauri-plugin-mihomo points at the plugin's migration branch
  (clash-verge-rev/tauri-plugin-mihomo#13) until it merges.
- the perf-harness feature and its main.rs wiring stay parked until
  tauri-plugin-wdio-webdriver publishes a tauri 3 release (1.5.0
  still requires tauri ^2.10); scripts/perf/app.rs stays for the
  restore.
- plugin-updater's JS API adapts to check() returning null instead of
  an Update with .available and the removed allowDowngrades option
  (the version comparison in checkUpdateSafe already guards
  downgrades); autostart renames ManagerExt::autolaunch to autostart.

Manifests and lockfiles on both sides: pnpm 12.11.2, @tauri-apps
api/cli alphas, minimumReleaseAgeExclude entries for the alpha.4 CLI
binaries.
2026-10-12 19:04:38 +08:00

164 lines
5.1 KiB
TOML
Executable File

[package]
name = "clash-verge"
version = "2.5.9"
description = "clash verge"
authors = ["zzzgydi", "Tunglies", "wonfen", "MystiPanda"]
license = "GPL-3.0-only"
repository = "https://github.com/clash-verge-rev/clash-verge-rev.git"
default-run = "clash-verge"
build = "build.rs"
edition = "2024"
rust-version = "1.99"
[lib]
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[features]
default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"]
verge-dev = ["clash-verge-logging/color", "clash_verge_service_ipc/development-channel"]
dev-sidecar = ["verge-dev"]
tauri-dev = ["dep:tauri-plugin-devtools"]
tokio-trace = ["clash-verge-logging/tokio-trace"]
chrome-trace = ["clash-verge-logging/chrome-trace"]
clippy = ["tauri/test"]
# The perf-harness feature and its main.rs wiring are parked until
# tauri-plugin-wdio-webdriver publishes a tauri 3 release; restore both
# from git history together with the crate dependency.
[package.metadata.bundle]
identifier = "io.github.clash-verge-rev.clash-verge-rev"
[build-dependencies]
tauri-build = { version = "3.0.0-alpha.3", features = [] }
[dependencies]
clash-verge-draft = { workspace = true }
clash-verge-media-unlock = { workspace = true }
clash-verge-logging = { workspace = true }
clash-verge-signal = { workspace = true }
clash-verge-i18n = { workspace = true }
clash-verge-limiter = { workspace = true }
tauri-plugin-clash-verge-sysinfo = { workspace = true }
tauri-plugin-clipboard-manager = { workspace = true }
tauri = { workspace = true, features = [
"protocol-asset",
"tracing",
"tray-icon",
"image-ico",
"image-png",
] }
tauri-runtime-wry = { workspace = true, features = ["devtools"] }
parking_lot = { workspace = true }
anyhow = { workspace = true }
tokio = { workspace = true }
log = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
serde_yaml_ng = { workspace = true }
smartstring = { workspace = true, features = ["serde"] }
bitflags = { workspace = true }
socket2 = { workspace = true }
warp = { version = "0.4.3", features = ["server"] }
open = "5.4.4"
rfd = { version = "0.16.0", default-features = false, features = ["common-controls-v6"] }
dirs = "7.0.0"
dunce = "1.0.5"
nanoid = "0.5"
chrono = { workspace = true }
boa_engine = "0.22.0"
percent-encoding = "2.3.2"
reqwest = { workspace = true }
regex = { workspace = true }
sysproxy = { git = "https://github.com/clash-verge-rev/sysproxy-rs.git", branch = "main", features = [
"guard",
] }
network-interface = { version = "2.0.5", features = ["serde"] }
tauri-plugin-shell = "3.0.0-alpha.2"
tauri-plugin-opener = "3.0.0-alpha.2"
tauri-plugin-dialog = "3.0.0-alpha.3"
tauri-plugin-fs = "3.0.0-alpha.2"
tauri-plugin-process = "3.0.0-alpha.2"
tauri-plugin-deep-link = "3.0.0-alpha.2"
tauri-plugin-window-state = "3.0.0-alpha.2"
zip = "9.0.1"
flate2 = "1.1.10"
reqwest_dav = "0.3.3"
aes-gcm = { version = "0.11.1" }
base64 = "0.23.1"
minisign-verify = "0.3.0"
sha2 = "0.11"
getrandom = "0.4.3"
futures = "0.3.34"
gethostname = "1.1.0"
scopeguard = "1.2.0"
tauri-plugin-notification = "3.0.0-alpha.2"
tokio-stream = "0.1.19"
backon = { version = "1.6.0", features = ["tokio-sleep"] }
tauri-plugin-http = "3.0.0-alpha.2"
tracing = { workspace = true }
tauri-plugin-devtools = { version = "3.0.0-alpha.0", optional = true }
tauri-plugin-mihomo = { git = "https://github.com/clash-verge-rev/tauri-plugin-mihomo", branch = "feat/tauri-v3" }
async-trait = "0.1.92"
clash_verge_service_ipc = { git = "https://github.com/clash-verge-rev/clash-verge-service-ipc.git", tag = "v2.7.6", version = "2.7.6", features = [
"client",
] }
arc-swap = "1.9.2"
tokio-rustls = "0.26.6"
rustls = { version = "0.23.45", features = ["ring"] }
webpki-roots = "1.0.9"
dark-light = "3.0.0"
bytes = "1.12.1"
tokio-util = { version = "0.7.19", features = ["time"] }
specta = { version = "=2.0.0-rc.26", features = ["derive", "function", "serde_json"] }
tauri-specta = { version = "=2.0.0-rc.25", features = ["derive", "typescript"] }
specta-typescript = "=0.0.13"
[target.'cfg(unix)'.dependencies]
libc = "0.2.190"
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6.5"
objc2-foundation = { version = "0.3.2", features = [
"NSString",
"NSDictionary",
"NSAttributedString",
] }
objc2-app-kit = { version = "0.3.2", features = [
"NSAttributedString",
"NSStatusItem",
"NSStatusBarButton",
"NSButton",
"NSControl",
"NSResponder",
"NSView",
"NSFont",
"NSFontDescriptor",
"NSColor",
"NSParagraphStyle",
"NSStringDrawing",
"NSText",
] }
[target.'cfg(windows)'.dependencies]
deelevate = { workspace = true }
runas = "=1.2.0"
winreg = "0.56.0"
windows-service = "0.8.1"
windows = { version = "0.62.2", features = ["Win32_Globalization"] }
windows-sys.workspace = true
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-autostart = "3.0.0-alpha.2"
tauri-plugin-global-shortcut = "3.0.0-alpha.2"
tauri-plugin-updater = "3.0.0-alpha.2"
[dev-dependencies]
criterion = { workspace = true }
tokio = { workspace = true, features = ["test-util"] }
warp = { version = "0.4.3", features = ["test"] }
[lints]
workspace = true