# Cargo.toml — Phase 1 (Bootstrap). # # Dependency rationale lives in AGENTS.md §44. Only the crates actually used # by Phase 1 are listed; the remaining crates (reqwest / tungstenite / serde / # url / anyhow / ...) are added in later phases when their modules land. [package] name = "windows-gotify-client-rust" version = "0.1.0" edition = "2021" rust-version = "1.75" description = "Lightweight, modern, Windows-native Gotify desktop client (Rust + Slint)" license = "MIT" readme = "README.md" authors = ["KennethCheng "] [[bin]] name = "windows-gotify-client-rust" path = "src/main.rs" [dependencies] # --- UI --- # `slint` crate. The `slint!{}` macro is compiled in via the default feature # set in 1.x (verified against 1.18.0 — `internal-interpreter` was removed in # 1.x). The Windows GUI backend (`backend-winit`) is also part of defaults. # Phase 2 will likely switch from the embedded macro to `include_slint!()` # + standalone .slint files under `ui/`. slint = "1" # --- Logging --- tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } # --- Error handling --- thiserror = "2" # --- Serialization (Phase 2 C3 storage) --- serde = { version = "1", features = ["derive"] } serde_json = "1" # --- Networking (Phase 3 Gotify HTTP) --- reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] } # --- Date/time (Phase 3 C2 convert Gotify RFC3339) --- chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] } # --- Windows-only (Phase 6 integration) --- # `windows-sys` is the low-level ABI layer of `windows-rs`. We only pull # the focused feature subsets we actually use (mutex, registry, message # loop, windowing); AGENTS.md §1 forbids pulling the umbrella `windows` # crate wholesale. `Win32` is the umbrella feature that gates the # `Win32_*` sub-features. windows-sys = { version = "0.59", features = [ "Win32", "Win32_Foundation", "Win32_Security", "Win32_System_Threading", "Win32_System_Registry", "Win32_UI_WindowsAndMessaging", "Win32_UI_Shell", ] } # --- WebSocket (Phase 4 real-time stream) --- tungstenite = { version = "0.21", default-features = false, features = ["rustls-tls-webpki-roots", "handshake"] } url = "2" http = "1" # Slint's `.slint` files are compiled by `build.rs`; see build.rs. [build-dependencies] slint-build = "1" [profile.release] # See AGENTS.md §42. The `release-balanced` profile below is the practical # default after benchmarking — adjust if startup time regresses. opt-level = "z" lto = true codegen-units = 1 panic = "abort" strip = true [profile.release-balanced] inherits = "release" opt-level = 3