mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-15 05:40:47 +08:00
Ship a native WidgetKit extension (routing mode, TUN and system proxy toggles) as part of every macOS build. The extension talks to the Rust backend over an App Group Unix socket with mutual code-signing checks, reuses the backend i18n catalogs, and stays inert on macOS < 14. A beforeBundle hook builds, localizes and pre-signs the extension before Tauri signs the host; pnpm build resolves a single local signing identity automatically and CI keeps using its injected credentials. An Xcode style-preview host is included for iterating on the widget layout. The i18n cleanup scanner now also scans Swift sources so widget-only keys are not flagged unused. Signed-off-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
160 lines
4.3 KiB
TOML
160 lines
4.3 KiB
TOML
[workspace]
|
|
members = [
|
|
"src-tauri",
|
|
"crates/clash-verge-draft",
|
|
"crates/clash-verge-media-unlock",
|
|
"crates/clash-verge-logging",
|
|
"crates/clash-verge-signal",
|
|
"crates/tauri-plugin-clash-verge-sysinfo",
|
|
"crates/clash-verge-i18n",
|
|
"crates/clash-verge-limiter",
|
|
"crates/clash-verge-widget",
|
|
]
|
|
resolver = "2"
|
|
|
|
[profile.release]
|
|
panic = "unwind"
|
|
codegen-units = 1
|
|
lto = "thin"
|
|
opt-level = 3
|
|
debug = 1
|
|
strip = "none"
|
|
overflow-checks = false
|
|
split-debuginfo = "unpacked"
|
|
rpath = false
|
|
|
|
[profile.dev]
|
|
incremental = true
|
|
codegen-units = 64
|
|
opt-level = 0
|
|
debug = true
|
|
strip = "none"
|
|
overflow-checks = true
|
|
lto = false
|
|
rpath = false
|
|
|
|
[profile.fast-release]
|
|
inherits = "release"
|
|
codegen-units = 64
|
|
incremental = true
|
|
lto = false
|
|
opt-level = 0
|
|
debug = true
|
|
strip = false
|
|
|
|
[profile.debug-release]
|
|
inherits = "fast-release"
|
|
codegen-units = 1
|
|
split-debuginfo = "unpacked"
|
|
|
|
[workspace.dependencies]
|
|
clash-verge-draft = { path = "crates/clash-verge-draft" }
|
|
clash-verge-media-unlock = { path = "crates/clash-verge-media-unlock" }
|
|
clash-verge-logging = { path = "crates/clash-verge-logging" }
|
|
clash-verge-signal = { path = "crates/clash-verge-signal" }
|
|
clash-verge-i18n = { path = "crates/clash-verge-i18n" }
|
|
clash-verge-limiter = { path = "crates/clash-verge-limiter" }
|
|
clash-verge-widget = { path = "crates/clash-verge-widget" }
|
|
tracing-estuary = { git = "https://github.com/Tunglies/tracing-estuary.git", branch = "main" }
|
|
tauri-plugin-clash-verge-sysinfo = { path = "crates/tauri-plugin-clash-verge-sysinfo" }
|
|
tracing = "0.1"
|
|
|
|
tauri = { version = "2.11.5" }
|
|
tauri-plugin-clipboard-manager = "2.3.2"
|
|
parking_lot = { version = "0.12.5", features = ["hardware-lock-elision"] }
|
|
anyhow = "1.0.104"
|
|
chrono = "0.4.45"
|
|
criterion = { version = "0.8.2", features = ["async_tokio"] }
|
|
tokio = { version = "1.53.1", features = [
|
|
"rt-multi-thread",
|
|
"macros",
|
|
"time",
|
|
"sync",
|
|
] }
|
|
flexi_logger = "0.31.10"
|
|
log = "0.4.33"
|
|
regex = "1.13.1"
|
|
reqwest = { version = "0.13.4", features = ["json", "cookies", "gzip", "rustls", "form"] }
|
|
rust_iso3166 = "0.2.0"
|
|
|
|
smartstring = { version = "1.0.1" }
|
|
|
|
serde = { version = "1.0.229" }
|
|
serde_json = { version = "1.0.151" }
|
|
serde_yaml_ng = { version = "0.10.0" }
|
|
bitflags = { version = "2.13.1" }
|
|
socket2 = "0.6.5"
|
|
|
|
# *** For Windows platform only ***
|
|
deelevate = "0.2.0"
|
|
windows-sys = { version = "0.61.2", features = [
|
|
"Win32_Foundation",
|
|
"Win32_NetworkManagement_IpHelper",
|
|
"Win32_Networking_WinSock",
|
|
"Win32_Security",
|
|
"Win32_Security_Authorization",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_Threading",
|
|
"Win32_System_JobObjects"
|
|
] }
|
|
# *********************************
|
|
|
|
[workspace.lints.clippy]
|
|
# fallible_impl_from = "deny" // 过于激进,暂时不开启
|
|
# implicit_clone = "deny" // 可能会造成额外开销,暂时不开启
|
|
# option_if_let_else = "deny" // 过于激进,暂时不开启
|
|
# self_only_used_in_recursion = "deny" // Since 1.92.0
|
|
async_yields_async = "deny"
|
|
await_holding_lock = "deny"
|
|
branches_sharing_code = "deny"
|
|
clone_on_ref_ptr = "warn"
|
|
cloned_instead_of_copied = "deny"
|
|
cognitive_complexity = "deny"
|
|
collection_is_never_read = "deny"
|
|
copy_iterator = "deny"
|
|
correctness = { level = "deny", priority = -1 }
|
|
dbg_macro = "warn"
|
|
equatable_if_let = "deny"
|
|
expect_used = "warn"
|
|
expl_impl_clone_on_copy = "deny"
|
|
future_not_send = "deny"
|
|
iter_on_empty_collections = "deny"
|
|
iter_on_single_items = "deny"
|
|
iter_with_drain = "deny"
|
|
large_const_arrays = "warn"
|
|
large_futures = "deny"
|
|
large_stack_arrays = "warn"
|
|
large_types_passed_by_value = "deny"
|
|
missing_const_for_fn = "deny"
|
|
mutex_atomic = "deny"
|
|
mutex_integer = "deny"
|
|
needless_collect = "deny"
|
|
needless_continue = "deny"
|
|
needless_pass_by_ref_mut = "deny"
|
|
needless_raw_string_hashes = "deny"
|
|
option_as_ref_cloned = "deny"
|
|
or_fun_call = "deny"
|
|
panic = "deny"
|
|
pathbuf_init_then_push = "deny"
|
|
rc_clone_in_vec_init = "warn"
|
|
rc_mutex = "deny"
|
|
redundant_clone = "deny"
|
|
redundant_else = "deny"
|
|
significant_drop_in_scrutinee = "deny"
|
|
significant_drop_tightening = "deny"
|
|
string_lit_as_bytes = "deny"
|
|
suspicious = { level = "deny", priority = -1 }
|
|
suspicious_operation_groupings = "deny"
|
|
todo = "warn"
|
|
trait_duplication_in_bounds = "deny"
|
|
tuple_array_conversions = "deny"
|
|
unimplemented = "deny"
|
|
unnecessary_self_imports = "deny"
|
|
unnecessary_wraps = "deny"
|
|
unused_async = "deny"
|
|
unused_trait_names = "deny"
|
|
unwrap_used = "warn"
|
|
use_self = "deny"
|
|
useless_let_if_seq = "deny"
|
|
wildcard_imports = "deny"
|