[workspace] members = [ "crates/api_models", "crates/server", "crates/config", "crates/dsp", "crates/hardware", "crates/metadata", "crates/playback", "crates/sync", "crates/wire", "crates/mount_helper", "crates/podcast", "web-ui", "crates/desktop", ] default-members = [ # "web-ui", "crates/api_models", "crates/server", "crates/config", "crates/dsp", "crates/hardware", "crates/metadata", "crates/playback", "crates/sync", "crates/wire", "crates/mount_helper", "crates/podcast", ] resolver = "2" [workspace.package] # Single source of truth for the release version. # Read by: build scripts (CARGO_PKG_VERSION), cargo-deb, cargo-generate-rpm, # cargo-packager and Makefile.toml (RELEASE_VERSION env derives from it). version = "5.7.0" [workspace.dependencies] anyhow = "1" cfg-if = "1" env_logger = "0.11" fjall = "3" serde_json = "1" tokio-stream = "0.1" ureq = "3" feed-rs = "2" sha1 = "0.11" [workspace.dependencies.chrono] version = "0.4" features = ["serde"] [workspace.dependencies.futures] version = "0.3" default-features = false [workspace.dependencies.log] version = "0.4" [workspace.dependencies.serde] version = "1" features = ["derive"] [workspace.dependencies.cpal] git = "https://github.com/ljufa/cpal.git" branch = "v_0.18.1_patched" [workspace.dependencies.symphonia] git = "https://github.com/ljufa/Symphonia.git" branch = "break_infinite_loop" features = ["all"] [workspace.dependencies.symphonia-metadata] git = "https://github.com/ljufa/Symphonia.git" branch = "break_infinite_loop" [workspace.dependencies.tokio] version = "1" features = [ "full", "tracing", ] [workspace.dependencies.uuid] version = "1" features = [ "serde", "v4", ] [profile.release] opt-level = 3 # Thin LTO + single codegen unit per crate: near fat-LTO size at a fraction # of its build time (crates still compile in parallel across the graph). codegen-units = 1 debug = 0 debug-assertions = false strip = true lto = "thin" [profile.release.package.rsplayer_web_ui] opt-level = "s" debug = false # The profile `dx build --release` uses for the web UI. Without one here dx # derives it from [profile.release], strip = true included, and since LLVM # 23 (rustc 1.99) stripping a .wasm removes every custom section, among them # the one wasm-bindgen reads ("the `__wasm_bindgen_unstable` custom section # is missing"). dx runs wasm-opt on the wasm-bindgen output, which drops # what isn't needed. [profile.wasm-release] inherits = "release" strip = false # Cold multiroom transport plumbing: iroh 1.0 unconditionally links its relay # and DNS clients, but rsplayer runs LAN-only (RelayMode::Disabled) so these # never execute — optimize them for size. [profile.release.package.iroh-relay] opt-level = "s" [profile.release.package.iroh-dns] opt-level = "s" [profile.release.package.hickory-resolver] opt-level = "s" [profile.release.package.hickory-proto] opt-level = "s" [profile.release.package.hickory-net] opt-level = "s" [profile.release.package.reqwest] opt-level = "s" [profile.release.package.hyper] opt-level = "s" [profile.release.package.hyper-util] opt-level = "s" [profile.release.package.h2] opt-level = "s" [profile.release.package.tokio-websockets] opt-level = "s" [profile.release.package.tokio-tungstenite] opt-level = "s" [profile.release.package.tungstenite] opt-level = "s" # fjall fork (3.1.10 + Database::rotate_journal) so db_maintenance::flush_all # can drop the fully flushed journal instead of replaying up to 64 MB of it # on every start. [patch.crates-io] fjall = { git = "https://github.com/ljufa/fjall.git", branch = "v_3.1.10_patched" }