[package] name = "psysonic" version = "1.41.0" description = "Psysonic Desktop Music Player" authors = [] license = "" repository = "" default-run = "psysonic" edition = "2021" rust-version = "1.89" [lib] name = "psysonic_lib" crate-type = ["staticlib", "cdylib", "rlib"] [[bin]] name = "psysonic" path = "src/main.rs" [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] tauri = { version = "2", features = ["tray-icon", "image-png"] } tauri-plugin-single-instance = "2" tauri-plugin-shell = "2" tauri-plugin-global-shortcut = "2" tauri-plugin-store = "2" tauri-plugin-dialog = "2" tauri-plugin-fs = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" rodio = { version = "0.19", default-features = false, features = ["symphonia-all"] } symphonia = { version = "0.5", default-features = false, features = ["flac", "mp3", "pcm", "aac", "alac", "isomp4", "vorbis", "ogg", "wav", "adpcm"] } reqwest = { version = "0.12", default-features = false, features = ["stream", "json", "multipart", "rustls-tls", "rustls-tls-native-roots", "blocking"] } futures-util = "0.3" md5 = "0.7" tokio = { version = "1", features = ["rt", "time", "sync"] } biquad = "0.4" ringbuf = "0.3" tauri-plugin-window-state = "2.4.1" tauri-plugin-process = "2" tauri-plugin-updater = "2" souvlaki = { version = "0.8", default-features = false, features = ["use_zbus"] } discord-rich-presence = "0.2" url = "2" thread-priority = "1" lofty = "0.22" sysinfo = { version = "0.33", default-features = false, features = ["disk"] } id3 = "1.16.4" symphonia-adapter-libopus = "0.2.7" [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(target_os = "linux")'.dependencies] zbus = { version = "5.9", default-features = false, features = ["blocking-api"] } # Match wry/tauri’s WebKitGTK stack — used only to turn off kinetic wheel scrolling. webkit2gtk = { version = "2.0", default-features = false, features = ["v2_40"] } [target.'cfg(windows)'.dependencies] windows = { version = "0.58", features = [ "Win32_Foundation", "Win32_Graphics", "Win32_Graphics_Gdi", "Win32_System_Com", "Win32_UI_Controls", "Win32_UI_Shell", "Win32_UI_WindowsAndMessaging", ] } [patch.crates-io] # Local patch for Symphonia's isomp4 demuxer: # - Fixes descriptor.unwrap() panic on malformed esds atoms (older iTunes M4A) # - Tolerates SL predefined=0x01 (null) used by some older iTunes-purchased files # - Gracefully skips malformed trak atoms (e.g. MJPEG cover-art streams) instead # of failing the entire probe symphonia-format-isomp4 = { path = "patches/symphonia-format-isomp4" } # Local patch for cpal's CoreAudio backend on macOS: # - Forces IOType::DefaultOutput for all output streams so that macOS never # triggers the TCC microphone-permission prompt. Upstream cpal uses # IOType::HalOutput when the user pins a non-default device, which routes # through AUHAL — that component is flagged as input-capable and triggers # the mic consent dialog on first launch / after each update. # - Tradeoff: output-device selection is a no-op on macOS (stream follows # system default). Surfaced in the Settings UI. cpal = { path = "patches/cpal-0.15.3" }