[workspace] resolver = "2" members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"] [workspace.package] version = "0.7.1" edition = "2024" license = "MIT" authors = ["Nils Pukropp "] rust-version = "1.96" [workspace.dependencies] proton-sdk = { version = "0.1" } proton-drive-rs = { version = "0.1" } # Internal crates. pdfs-core = { path = "crates/pdfs-core" } pdfs-fuse = { path = "crates/pdfs-fuse" } tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "fs", "io-util", "time", "signal"] } serde = { version = "1", features = ["derive"] } serde_json = "1" thiserror = "2" anyhow = "1" # Non-poisoning mutexes. A handler that panics while holding a lock must not # wedge every later acquisition of it: `Workers` catches the unwind to keep the # pool alive, and `std::sync::Mutex` would defeat that by poisoning the state # the recovered worker needs. parking_lot = "0.12" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } directories = "5" ignore = "0.4" sha2 = "0.10" # Thumbnail generation for photos the server has none for. Decoders only for the # formats a camera or phone actually produces — the rest of the crate's codecs # would be dead weight in the daemon. image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif", "tiff", "bmp", "rayon"] } rusqlite = { version = "0.32", features = ["bundled"] } keyring = { version = "3", features = ["sync-secret-service", "crypto-rust"] } clap = { version = "4", features = ["derive"] } rpassword = "7" fuser = "0.17" libc = "0.2"