mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-05-30 20:09:29 +02:00
fdecf445ec
Intercept the main window CloseRequested event so the user can choose between minimizing the app to the system tray and quitting, instead of the close button immediately tearing the process down. - Add an on_window_event handler that prevents close, emits close-confirm-requested, and lets the next CloseRequested through once confirm_quit flips a QUIT_CONFIRMED flag. - Add a TrayIconBuilder in the main process with Show / Quit menu items and a left-click handler that restores the window. Tray icon is decoded via the image crate so the donut glyph renders on every platform. - Add hide_to_tray command used by the dialog's Minimize action. - New CloseConfirmDialog React component mounted in app/page.tsx. - Enable Tauri features tray-icon and image-png. - Add closeConfirm strings across all eight locale files. The existing standalone donut-daemon tray binary is left untouched.
195 lines
5.3 KiB
TOML
195 lines
5.3 KiB
TOML
[package]
|
|
name = "donutbrowser"
|
|
version = "0.24.4"
|
|
description = "Simple Yet Powerful Anti-Detect Browser"
|
|
authors = ["zhom@github"]
|
|
edition = "2021"
|
|
default-run = "donutbrowser"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[lib]
|
|
# The `_lib` suffix may seem redundant but it is necessary
|
|
# to make the lib name unique and wouldn't conflict with the bin name.
|
|
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
|
|
name = "donutbrowser_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
doctest = false
|
|
|
|
[[bin]]
|
|
name = "donutbrowser"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "donut-proxy"
|
|
path = "src/bin/proxy_server.rs"
|
|
|
|
[[bin]]
|
|
name = "donut-daemon"
|
|
path = "src/bin/donut_daemon.rs"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
resvg = "0.47"
|
|
|
|
[dependencies]
|
|
serde_json = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
tauri = { version = "2", features = ["devtools", "test", "tray-icon", "image-png"] }
|
|
tauri-plugin-opener = "2"
|
|
tauri-plugin-fs = "2"
|
|
tauri-plugin-shell = "2"
|
|
tauri-plugin-deep-link = "2"
|
|
tauri-plugin-single-instance = "2"
|
|
tauri-plugin-dialog = "2"
|
|
tauri-plugin-macos-permissions = "2"
|
|
tauri-plugin-log = "2"
|
|
tauri-plugin-clipboard-manager = "2"
|
|
log = "0.4"
|
|
env_logger = "0.11"
|
|
|
|
directories = "6"
|
|
reqwest = { version = "0.13", default-features = false, features = ["native-tls", "json", "stream", "socks", "charset", "http2", "system-proxy"] }
|
|
tokio = { version = "1", features = ["full", "sync"] }
|
|
tokio-util = "0.7"
|
|
sysinfo = "0.39"
|
|
lazy_static = "1.5"
|
|
base64 = "0.22"
|
|
libc = "0.2"
|
|
async-trait = "0.1"
|
|
futures-util = "0.3"
|
|
zip = { version = "8", default-features = false, features = ["deflate-flate2"] }
|
|
tar = "0"
|
|
bzip2 = "0"
|
|
flate2 = "1"
|
|
lzma-rs = "0"
|
|
msi-extract = "0"
|
|
|
|
uuid = { version = "1.23", features = ["v4", "serde"] }
|
|
url = "2.5"
|
|
blake3 = "1"
|
|
globset = "0.4"
|
|
mime_guess = "2"
|
|
once_cell = "1"
|
|
urlencoding = "2.1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
chrono-tz = "0.10"
|
|
axum = { version = "0.8.9", features = ["ws"] }
|
|
tower = "0.5"
|
|
tower-http = { version = "0.6", features = ["cors"] }
|
|
rand = "0.10.1"
|
|
utoipa = { version = "5", features = ["axum_extras", "chrono"] }
|
|
utoipa-axum = "0.2"
|
|
argon2 = "0.5"
|
|
aes-gcm = "0.10"
|
|
aes = "0.9"
|
|
cbc = "0.2"
|
|
ring = "0.17"
|
|
sha2 = "0.11"
|
|
shadowsocks = { version = "1.24", default-features = false, features = ["aead-cipher"] }
|
|
hyper = { version = "1.8", features = ["full"] }
|
|
hyper-util = { version = "0.1", features = ["full"] }
|
|
http-body-util = "0.1"
|
|
clap = { version = "4", features = ["derive"] }
|
|
async-socks5 = "0.6"
|
|
|
|
# Camoufox/Playwright integration
|
|
playwright = { git = "https://github.com/zhom/playwright-rust", branch = "master" }
|
|
|
|
# Wayfern CDP integration
|
|
tokio-tungstenite = { version = "0.29", features = ["native-tls"] }
|
|
rusqlite = { version = "0.39", features = ["bundled"] }
|
|
serde_yaml = "0.9"
|
|
toml = "1.1"
|
|
thiserror = "2.0"
|
|
regex-lite = "0.1"
|
|
tempfile = "3"
|
|
maxminddb = "0.28"
|
|
quick-xml = { version = "0.40", features = ["serialize"] }
|
|
|
|
# VPN support
|
|
boringtun = "0.7"
|
|
smoltcp = { version = "0.13", default-features = false, features = ["std", "medium-ip", "proto-ipv4", "proto-ipv6", "socket-tcp", "socket-udp"] }
|
|
|
|
# Daemon dependencies (tray icon)
|
|
tray-icon = "0.24"
|
|
tao = "0.35"
|
|
image = "0.25"
|
|
dirs = "6"
|
|
crossbeam-channel = "0.5"
|
|
sys-locale = "0.3"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
nix = { version = "0.31", features = ["signal", "process"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
core-foundation = "0.10"
|
|
objc2 = "0.6.3"
|
|
objc2-app-kit = { version = "0.3.2", features = ["NSWindow", "NSApplication", "NSRunningApplication"] }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
winreg = "0.56"
|
|
windows = { version = "0.62", features = [
|
|
"Win32_Foundation",
|
|
"Win32_System_ProcessStatus",
|
|
"Win32_System_Threading",
|
|
"Win32_System_Diagnostics_Debug",
|
|
"Win32_System_SystemInformation",
|
|
"Win32_System_IO",
|
|
"Win32_Security",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_Registry",
|
|
"Win32_UI_Shell",
|
|
] }
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.24.0"
|
|
wiremock = "0.6"
|
|
hyper = { version = "1.8", features = ["full"] }
|
|
hyper-util = { version = "0.1", features = ["full"] }
|
|
http-body-util = "0.1"
|
|
tower = "0.5"
|
|
tower-http = { version = "0.6", features = ["fs", "trace"] }
|
|
futures-util = "0.3"
|
|
serial_test = "3"
|
|
|
|
# Integration test configuration
|
|
[[test]]
|
|
name = "donut_proxy_integration"
|
|
path = "tests/donut_proxy_integration.rs"
|
|
|
|
[[test]]
|
|
name = "sync_e2e"
|
|
path = "tests/sync_e2e.rs"
|
|
|
|
[[test]]
|
|
name = "vpn_integration"
|
|
path = "tests/vpn_integration.rs"
|
|
|
|
[profile.dev]
|
|
codegen-units = 256
|
|
incremental = true
|
|
opt-level = 0
|
|
# Split debuginfo on macOS for faster linking (ignored on other platforms)
|
|
split-debuginfo = "unpacked"
|
|
|
|
[profile.release]
|
|
codegen-units = 1
|
|
opt-level = 3
|
|
lto = "thin"
|
|
# Split debuginfo on macOS for faster linking (ignored on other platforms)
|
|
split-debuginfo = "unpacked"
|
|
|
|
[profile.test]
|
|
# Optimize test builds for faster compilation
|
|
codegen-units = 256
|
|
incremental = true
|
|
|
|
[features]
|
|
# by default Tauri runs in production mode
|
|
# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` points to the filesystem
|
|
default = ["custom-protocol"]
|
|
# this feature is used used for production builds where `devPath` points to the filesystem
|
|
# DO NOT remove this
|
|
custom-protocol = ["tauri/custom-protocol"]
|