[package] name = "ch-j-server-manager" version = "0.1.1" description = "CH-J Server Manager — desktop SSH/SFTP client and server manager (Rust + Tauri 2 core)." authors = ["Josef Chudy "] license-file = "../legal/LICENSE" homepage = "https://www.sm.ch-j.de" edition = "2021" rust-version = "1.90" publish = false [features] # Serve the bundled UI through the app protocol (tauri://localhost) also in `tauri dev`; # the window navigation policy accepts only bundled app pages, never a localhost dev server. custom-protocol = ["tauri/custom-protocol"] # Test-only UI automation (never enabled for release builds). smoke = ["dep:objc2", "dep:objc2-web-kit", "dep:objc2-app-kit", "dep:objc2-foundation", "dep:block2"] [lib] name = "chj_core" crate-type = ["rlib"] [[bin]] name = "ch-j-server-manager" path = "src/main.rs" [build-dependencies] tauri-build = { version = "=2.7.4", features = [] } [dependencies] tauri = { version = "=2.12.5", features = ["image-png"] } tauri-plugin-dialog = "=2.8.3" tauri-plugin-single-instance = "=2.5.4" tauri-plugin-updater = "=2.14.0" tauri-plugin-clipboard-manager = "2" tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["preserve_order"] } tokio = { version = "1", features = ["full"] } thiserror = "2" uuid = { version = "1", features = ["v4"] } rand = "0.8" base64 = "0.22" hex = "0.4" regex = "1" once_cell = "1" parking_lot = "0.12" chrono = { version = "0.4", default-features = false, features = ["clock", "std"] } zeroize = "1" fs4 = { version = "0.13", features = ["sync"] } url = "2" futures = "0.3" tokio-util = "0.7" idna = "1" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "http2"] } zip = { version = "2", default-features = false, features = ["deflate"] } tar = "0.4" indexmap = "2" # Diagnostics hickory-resolver = { version = "0.25", default-features = false, features = ["system-config", "tokio"] } rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] } tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] } rustls-pemfile = "2" webpki-roots = "1" x509-parser = { version = "0.17", features = ["verify"] } flate2 = "1" brotli = "8" zstd = "0.13" # Key Generator (RustCrypto, PKCS#8 interoperable with OpenSSL/OpenSSH) rsa = { version = "0.9", features = ["std"] } p256 = { version = "0.13", features = ["ecdsa", "pkcs8"] } p384 = { version = "0.13", features = ["ecdsa", "pkcs8"] } p521 = { version = "0.13", features = ["ecdsa", "pkcs8"] } ed25519-dalek = { version = "2", features = ["pkcs8", "rand_core"] } dsa = "0.6" pkcs8 = { version = "0.10", features = ["encryption", "pem", "std"] } pkcs5 = { version = "0.7", features = ["pbes2"] } num-bigint-dig = "0.8" # Hash & Checksum (local files; same 49 algorithms as 0.1.0) digest = "0.10" sha3 = "0.10" blake2 = "0.10" blake3 = { version = "1", default-features = false, features = ["std"] } k12 = "0.3" ripemd = "0.1" whirlpool = "0.10" tiger = "0.2" md-5 = "0.10" xxhash-rust = { version = "0.8", features = ["xxh32", "xxh64", "xxh3"] } highway = "1" crc = "3" adler = "1" # Update trust (OpenPGP detached signatures, SHA-512) pgp = "0.21" # Cryptography (vault compatibility: scrypt + AES-256-GCM) scrypt = { version = "0.11", default-features = false } aes-gcm = "0.10" sha2 = "0.10" sha1 = "0.10" hmac = "0.12" subtle = "2" # SSH / SFTP (ring backend: no CMake/NASM needed on the build machines) russh = { version = "=0.64.1", default-features = false, features = ["ring", "rsa", "flate2", "dsa"] } russh-sftp = "=3.0.1" [target.'cfg(unix)'.dependencies] libc = "0.2" [dev-dependencies] murmur3 = "0.5" tempfile = "3" # Development builds keep line tables only (backtraces) so debug/test artifacts stay small on # the build machines (disk budget, rules §4A). Release builds are unaffected. [profile.dev] debug = "line-tables-only" [profile.dev.package."*"] debug = false [profile.release] codegen-units = 1 lto = true opt-level = "s" panic = "unwind" strip = true # Only for screenshots in `smoke` builds; the versions are those Tauri already uses. [target.'cfg(target_os = "macos")'.dependencies] objc2 = { version = "0.6", optional = true } objc2-web-kit = { version = "0.3", optional = true, default-features = false, features = ["std", "block2", "objc2-app-kit", "WKWebView", "WKSnapshotConfiguration"] } objc2-app-kit = { version = "0.3", optional = true, default-features = false, features = ["std", "NSImage", "NSImageRep", "NSBitmapImageRep"] } objc2-foundation = { version = "0.3", optional = true, default-features = false, features = ["std", "NSData", "NSDictionary", "NSError", "NSString"] } block2 = { version = "0.6", optional = true }