[package] name = "solidcraft" description = "SolidCraft desktop app" version.workspace = true edition.workspace = true license.workspace = true publish = false default-run = "solidcraft" # The workspace lints, except unsafe_code: denied, not forbidden, so that src/open_documents.rs # (macOS file-open events), src/native_crash.rs (Windows exception filter) and src/native_frame.rs # (Windows resize border) can allow it: none has a safe API. Keep the rest in sync with [workspace.lints]. [lints.rust] unsafe_code = "deny" [lints.clippy] dbg_macro = "warn" todo = "warn" too_many_arguments = "allow" type_complexity = "allow" neg_cmp_op_on_partial_ord = "allow" [dependencies] solidcraft-engine = { workspace = true } solidcraft-ui-egui = { workspace = true } solidcraft-space-mouse = { workspace = true } eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "wayland", "x11", "links"] } egui = { workspace = true } serde_json = { workspace = true } log = { workspace = true } rfd = { workspace = true } # Checks eframe's settings file (app.ron) before eframe reads it (src/startup.rs). ron = "0.12" # Waits for wgpu's adapter list when choosing the graphics backend before the window opens. pollster = { workspace = true } getrandom = "0.3" # The update check (docs/updates.md): HTTPS with rustls, certificates from the operating system. ureq = { version = "3.4", default-features = false, features = ["rustls-no-provider", "platform-verifier"] } rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] } # API keys of the agent chat's API agents (docs/agent-chat.md) live in the system keychain: # Keychain on macOS, Credential Manager on Windows, the Secret Service (pure-Rust D-Bus) elsewhere. keyring = { version = "3.6", default-features = false, features = ["apple-native", "windows-native", "async-secret-service", "async-io", "crypto-rust"] } [target.'cfg(any(target_os = "windows", target_os = "linux"))'.dependencies] quick-xml = { workspace = true } [target.'cfg(target_os = "windows")'.dependencies] hidapi = { version = "2.6.7", default-features = false, features = ["windows-native"] } # The main window's handle for src/native_frame.rs (already in the tree through eframe and winit). raw-window-handle = "0.6" # Native crash capture (src/native_crash.rs): the exception filter, the faulting module, a minidump. # The window's resize border and DPI size (src/native_frame.rs): the window procedure, hit test, DPI. windows-sys = { version = "0.61", features = [ "Win32_Foundation", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_Kernel", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Threading", "Win32_UI_HiDpi", "Win32_UI_WindowsAndMessaging", ] } [target.'cfg(target_os = "macos")'.dependencies] # Files opened from Finder and the Dock (src/open_documents.rs); all already come with eframe and rfd. objc2 = "0.6" objc2-app-kit = { version = "0.3", default-features = false, features = ["std", "NSApplication", "NSResponder"] } objc2-foundation = { version = "0.3", default-features = false, features = ["std", "block2", "NSArray", "NSNotification", "NSOperation", "NSString", "NSURL"] } block2 = "0.6" [target.'cfg(all(unix, not(target_os = "macos")))'.dependencies] winit = { version = "0.30", default-features = false, features = ["x11"] } [build-dependencies] embed-resource = "3.0.11"