[workspace] resolver = "2" members = [ "crates/focuser-common", "crates/focuser-core", "crates/focuser-app", "crates/focuser-devserver", "crates/focuser-cli", "crates/focuser-native", "crates/focuser-ui", ] [workspace.package] version = "0.11.5" edition = "2024" license = "MIT" repository = "https://github.com/aadeshrao123/Focuser" description = "Open-source cross-platform website and application blocker" [workspace.dependencies] # Shared across crates serde = { version = "1", features = ["derive"] } serde_json = "1" tokio = { version = "1", features = ["full"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } thiserror = "2" anyhow = "1" chrono = { version = "0.4", features = ["serde"] } rusqlite = { version = "0.32", features = ["bundled", "serde_json"] } uuid = { version = "1", features = ["v4", "serde"] } directories = "6" clap = { version = "4", features = ["derive"] } regex = "1" glob-match = "0.2" argon2 = "0.5" # Pulled in transitively by argon2; declared explicitly to turn on # `getrandom` so its re-exported `rand_core::OsRng` is available for # generating unlock challenges too, rather than adding a second RNG crate. password-hash = { version = "0.5", features = ["getrandom"] } # Rust -> TypeScript type/command generation. # Pinned with `=` because the v2 line is pre-release; v1 supports Tauri v1 only, # so it is not an option here. Upgrade deliberately, never by caret. specta = { version = "=2.0.0-rc.25", features = ["derive", "chrono", "uuid"] } specta-typescript = "0.0.12" tauri-specta = { version = "=2.0.0-rc.25", features = ["derive", "typescript"] } # Internal crates focuser-common = { path = "crates/focuser-common" } focuser-core = { path = "crates/focuser-core" } focuser-app = { path = "crates/focuser-app" }