mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-04-13 05:20:28 +08:00
* chore: notice i18n * feat: add script to clean up unused i18n keys * chore: cleanup i18n keys * refactor(i18n/proxies): migrate proxies UI to structured locale keys * chore: i18n for rule module * chore: i18n for profile module * chore: i18n for connections module * chore: i18n for settings module * chore: i18n for verge settings * chore: i18n for theme settings * chore: i18n for theme * chore(i18n): components.home.* * chore(i18n): remove unused i18n keys * chore(i18n): components.profile.* * chore(i18n): components.connection * chore(i18n): pages.logs.* * chore(i18n): pages.*.provider * chore(i18n): components.settings.externalCors.* * chore(i18n): components.settings.clash.* * chore(i18n): components.settings.liteMode.* * chore(i18n): components.settings.backup.* * chore(i18n): components.settings.clash.port.* * chore(i18n): components.settings.misc.* * chore(i18n): components.settings.update.* * chore(i18n): components.settings.sysproxy.* * chore(i18n): components.settings.sysproxy.* * chore(i18n): pages.profiles.notices/components.providers.notices * refactor(notice): unify showNotice usage * refactor(notice): add typed showNotice shortcuts, centralize defaults, and simplify subscriptions * refactor: unify showNotice usage * refactor(notice): unify showNotice API * refactor(notice): unify showNotice usage * chore(i18n): components.test.* * chore(i18n): components.settings.dns.* * chore(i18n): components.home.clashInfo.* * chore(i18n): components.home.systemInfo.* * chore(i18n): components.home.ipInfo/traffic.* * chore(i18n): navigation.* * refactor(i18n): remove pages.* namespace and migrate route texts under module-level page keys * chore(i18n): common.* * chore(i18n): common.* * fix: change error handling in patch_profiles_config to return false when a switch is in progress * fix: improve error handling in patch_profiles_config to prevent requests during profile switching * fix: change error handling in patch_profiles_config to return false when a switch is in progress fix: ensure CURRENT_SWITCHING_PROFILE is reset after config updates in perform_config_update and patch_profiles_config * chore(i18n): restructure root-level locale keys into namespaces * chore(i18n): add missing i18n keys * docs: i18n guide * chore: adjust i18n * refactor(i18n): align UI actions and status labels with common keys * refactor(i18n): unify two-name locale namespaces * refactor(i18n/components): unify locale keys and update component references * chore(i18n): add shared and entities namespaces to all locale files * refactor(i18n): consolidate shared and entity namespaces across features * chore(deps): update npm dependencies to ^7.3.5 (#5310) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * refactor(i18n): migrate shared editor modes and consolidate entities namespaces * tmp * refactor(i18n): flatten locales and move theme/validation strings * docs: CONTRIBUTING_i18n.md * refactor(i18n): restructure feedback and profile namespaces for better organization * refactor(i18n): unify settings locale structure and update references * refactor(i18n): reorganize locale keys for home, proxies, rules, connections, logs, unlock, and tests * refactor(i18n/feedback/layout): unify shared toasts & normalize layout namespace * refactor(i18n): centralize common UI strings in shared * refactor(i18n): flatten headers and unify locale schema * refactor(i18n): consolidate duplicate per-feature translations into shared namespace * refactor(i18n): split locales into per-namespace files * style: lint * refactor(i18n): unify unlock UI translations under tests namespace * feat(i18n): add type-checked translation keys * style: eslint import order * feat(i18n): replace ad-hoc loader with rust-i18n backend bundles * chore(prebuild): remove locale-copy step * fix(i18n, notice): propagate runtime params and update cleanup script path * fix(i18n,notice): make locale formatting idempotent and guard early notice translations * fix(i18n): resolve locale aliases and match OS codes correctly * fix(unlock): use i18next-compatible double-brace interpolation in failure notice * fix(i18n): route unlock error notices through translation keys * fix(i18n): i18n types * feat(i18n): localize upgrade notice for Clash core viewer * fix(notice): ensure runtime overrides apply to prefix translations * chore(i18n): replace literal notices with translation keys * chore(i18n): types * chore(i18n): regen typings before formatting to keep keys in sync * chore(i18n): simply labels * chore(i18n): adjust translation * chore: remove eslint-plugin-i18next * chore(i18n): add/refine Korean translations across frontend scopes and Rust backend (#5341) * chore(i18n): translate settings.json (missed in previous pass) (#5343) * chore(i18n): add/refine Korean translations across frontend scopes and Rust backend * chore(i18n): add/refine Korean translations across frontend scopes and Rust backend * fix(i18n-tauri): quote placeholder-leading value in ko.yml to prevent rust_i18n parse panic * chore(i18n): translate settings.json (forgot to include previously) --------- Co-authored-by: rozan <34974262+thelojan@users.noreply.github.com>
247 lines
6.6 KiB
TOML
Executable File
247 lines
6.6 KiB
TOML
Executable File
[package]
|
|
name = "clash-verge"
|
|
version = "2.4.4"
|
|
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"
|
|
edition = "2024"
|
|
build = "build.rs"
|
|
|
|
[package.metadata.bundle]
|
|
identifier = "io.github.clash-verge-rev.clash-verge-rev"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2.5.1", features = [] }
|
|
|
|
[dependencies]
|
|
warp = { version = "0.4.2", features = ["server"] }
|
|
anyhow = "1.0.100"
|
|
open = "5.3.2"
|
|
log = "0.4.28"
|
|
dunce = "1.0.5"
|
|
nanoid = "0.4"
|
|
chrono = "0.4.42"
|
|
sysinfo = { version = "0.37.2", features = ["network", "system"] }
|
|
boa_engine = "0.21.0"
|
|
serde_json = "1.0.145"
|
|
serde_yaml_ng = "0.10.0"
|
|
once_cell = "1.21.3"
|
|
port_scanner = "0.1.5"
|
|
delay_timer = "0.11.6"
|
|
parking_lot = "0.12.5"
|
|
percent-encoding = "2.3.2"
|
|
tokio = { version = "1.48.0", features = [
|
|
"rt-multi-thread",
|
|
"macros",
|
|
"time",
|
|
"sync",
|
|
] }
|
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
reqwest = { version = "0.12.24", features = ["json", "cookies"] }
|
|
regex = "1.12.2"
|
|
sysproxy = { git = "https://github.com/clash-verge-rev/sysproxy-rs" }
|
|
tauri = { version = "2.9.2", features = [
|
|
"protocol-asset",
|
|
"devtools",
|
|
"tray-icon",
|
|
"image-ico",
|
|
"image-png",
|
|
] }
|
|
network-interface = { version = "2.0.3", features = ["serde"] }
|
|
tauri-plugin-shell = "2.3.3"
|
|
tauri-plugin-dialog = "2.4.2"
|
|
tauri-plugin-fs = "2.4.4"
|
|
tauri-plugin-process = "2.3.1"
|
|
tauri-plugin-clipboard-manager = "2.3.2"
|
|
tauri-plugin-deep-link = "2.4.5"
|
|
tauri-plugin-window-state = "2.4.1"
|
|
zip = "6.0.0"
|
|
reqwest_dav = "0.2.2"
|
|
aes-gcm = { version = "0.10.3", features = ["std"] }
|
|
base64 = "0.22.1"
|
|
getrandom = "0.3.4"
|
|
futures = "0.3.31"
|
|
sys-locale = "0.3.2"
|
|
libc = "0.2.177"
|
|
gethostname = "1.1.0"
|
|
scopeguard = "1.2.0"
|
|
tauri-plugin-notification = "2.3.3"
|
|
tokio-stream = "0.1.17"
|
|
isahc = { version = "1.7.2", default-features = false, features = [
|
|
"text-decoding",
|
|
"parking_lot",
|
|
] }
|
|
backoff = { version = "0.4.0", features = ["tokio"] }
|
|
compact_str = { version = "0.9.0", features = ["serde"] }
|
|
tauri-plugin-http = "2.5.4"
|
|
flexi_logger = "0.31.7"
|
|
console-subscriber = { version = "0.5.0", optional = true }
|
|
tauri-plugin-devtools = { version = "2.0.1" }
|
|
tauri-plugin-mihomo = { git = "https://github.com/clash-verge-rev/tauri-plugin-mihomo" }
|
|
clash_verge_logger = { git = "https://github.com/clash-verge-rev/clash-verge-logger" }
|
|
async-trait = "0.1.89"
|
|
smartstring = { version = "1.0.1", features = ["serde"] }
|
|
clash_verge_service_ipc = { version = "2.0.21", features = [
|
|
"client",
|
|
], git = "https://github.com/clash-verge-rev/clash-verge-service-ipc" }
|
|
arc-swap = "1.7.1"
|
|
rust-i18n = "3.1.5"
|
|
|
|
[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",
|
|
] }
|
|
windows-sys = { version = "0.61.2", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Graphics_Gdi",
|
|
"Win32_System_SystemServices",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
] }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
signal-hook = "0.3.18"
|
|
|
|
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
|
tauri-plugin-autostart = "2.5.1"
|
|
tauri-plugin-global-shortcut = "2.3.1"
|
|
tauri-plugin-updater = "2.9.0"
|
|
|
|
[features]
|
|
default = ["custom-protocol"]
|
|
custom-protocol = ["tauri/custom-protocol"]
|
|
verge-dev = ["clash_verge_logger/color"]
|
|
tauri-dev = []
|
|
tokio-trace = ["console-subscriber"]
|
|
clippy = ["tauri/test"]
|
|
tracing = []
|
|
|
|
[[bench]]
|
|
name = "draft_benchmark"
|
|
path = "benches/draft_benchmark.rs"
|
|
harness = false
|
|
|
|
[profile.release]
|
|
panic = "abort"
|
|
codegen-units = 1
|
|
lto = "thin"
|
|
opt-level = 3
|
|
debug = false
|
|
strip = true
|
|
overflow-checks = false
|
|
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
|
|
|
|
[lib]
|
|
name = "app_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.7.0", features = ["async_tokio"] }
|
|
|
|
[lints.clippy]
|
|
# Core categories - most important for code safety and correctness
|
|
correctness = { level = "deny", priority = -1 }
|
|
suspicious = { level = "deny", priority = -1 }
|
|
|
|
# Critical safety lints - warn for now due to extensive existing usage
|
|
unwrap_used = "warn"
|
|
expect_used = "warn"
|
|
panic = "deny"
|
|
unimplemented = "deny"
|
|
|
|
# Development quality lints
|
|
todo = "warn"
|
|
dbg_macro = "warn"
|
|
#print_stdout = "warn"
|
|
#print_stderr = "warn"
|
|
|
|
# Performance lints for proxy application
|
|
clone_on_ref_ptr = "warn"
|
|
rc_clone_in_vec_init = "warn"
|
|
large_stack_arrays = "warn"
|
|
large_const_arrays = "warn"
|
|
|
|
# Security lints
|
|
#integer_division = "warn"
|
|
#lossy_float_literal = "warn"
|
|
#default_numeric_fallback = "warn"
|
|
|
|
# Mutex and async lints - strict control
|
|
async_yields_async = "deny" # Prevents missing await in async blocks
|
|
mutex_atomic = "deny" # Use atomics instead of Mutex<bool/int>
|
|
mutex_integer = "deny" # Use AtomicInt instead of Mutex<int>
|
|
rc_mutex = "deny" # Single-threaded Rc with Mutex is wrong
|
|
unused_async = "deny" # Too many false positives in Tauri/framework code
|
|
await_holding_lock = "deny"
|
|
large_futures = "deny"
|
|
future_not_send = "deny"
|
|
|
|
# Common style improvements
|
|
redundant_else = "deny" # Too many in existing code
|
|
needless_continue = "deny" # Too many in existing code
|
|
needless_raw_string_hashes = "deny" # Too many in existing code
|
|
|
|
# Disable noisy categories for existing codebase but keep them available
|
|
#style = { level = "allow", priority = -1 }
|
|
#complexity = { level = "allow", priority = -1 }
|
|
#perf = { level = "allow", priority = -1 }
|
|
#pedantic = { level = "allow", priority = -1 }
|
|
#nursery = { level = "allow", priority = -1 }
|
|
#restriction = { level = "allow", priority = -1 }
|
|
|
|
or_fun_call = "deny"
|
|
cognitive_complexity = "deny"
|
|
useless_let_if_seq = "deny"
|
|
use_self = "deny"
|
|
tuple_array_conversions = "deny"
|
|
trait_duplication_in_bounds = "deny"
|
|
suspicious_operation_groupings = "deny"
|
|
string_lit_as_bytes = "deny"
|
|
significant_drop_tightening = "deny"
|
|
significant_drop_in_scrutinee = "deny"
|
|
redundant_clone = "deny"
|
|
# option_if_let_else = "deny" // 过于激进,暂时不开启
|
|
needless_pass_by_ref_mut = "deny"
|
|
needless_collect = "deny"
|
|
missing_const_for_fn = "deny"
|
|
iter_with_drain = "deny"
|
|
iter_on_single_items = "deny"
|
|
iter_on_empty_collections = "deny"
|
|
# fallible_impl_from = "deny" // 过于激进,暂时不开启
|
|
equatable_if_let = "deny"
|
|
collection_is_never_read = "deny"
|
|
branches_sharing_code = "deny"
|