[package] name = "voicebox" version = "0.5.0" description = "A production-quality desktop app for Qwen3-TTS voice cloning and generation" authors = ["you"] license = "" repository = "" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] tauri-build = { version = "2.0", features = [] } [dependencies] tauri = { version = "2.0", features = ["macos-private-api"] } tauri-plugin-dialog = "2.0" tauri-plugin-fs = "2.0" tauri-plugin-shell = "2.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tokio = { version = "1", features = ["full"] } reqwest = { version = "0.12", features = ["blocking", "json", "stream"] } hound = "3.5" base64 = "0.22" cpal = "0.15" symphonia = { version = "0.5", features = ["all"] } scopeguard = "1.2.0" [target.'cfg(target_os = "macos")'.dependencies] screencapturekit = { version = "1", features = ["async"] } coreaudio-sys = "0.2" objc = "0.2" core-foundation-sys = "0.8" [target.'cfg(target_os = "windows")'.dependencies] wasapi = "0.22" windows = { version = "0.62", features = [ "Win32_Foundation", "Win32_UI_WindowsAndMessaging", "Win32_UI_Accessibility", "Win32_UI_Input_KeyboardAndMouse", "Win32_System_Com", "Win32_System_DataExchange", "Win32_System_Memory", "Win32_System_Threading", ] } [target.'cfg(target_os = "linux")'.dependencies] webkit2gtk = "2.0" [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] tauri-plugin-updater = "2.0" tauri-plugin-process = "2.0" # Pinned to our fork of upstream main past PR #147 — the released 0.5.3 # crate crashes on macOS 14+ when listen() runs on a background thread # because rdev's convert() calls TSMGetInputSourceProperty off the main # queue. The main branch adds `set_is_main_thread(false)` to skip that # path (used at hotkey_monitor.rs:184). # # We pin to jamiepine/rdev instead of Narsil/rdev for supply-chain # durability: upstream has shipped no release since 2023-06 (crates.io # still lists 0.5.3), so an eventual 0.5.4 carrying this fix is unlikely, # and a git pin to a third-party repo breaks if the remote force-pushes, # renames, or disappears. The fork mirrors the pinned SHA and gives us a # place to cherry-pick future OS-compatibility fixes on our own timeline. rdev = { git = "https://github.com/jamiepine/rdev", rev = "c14f2dc5c8100a96c5d7e3013de59d6aa0b9eae2" } [features] # This feature is used for production builds or when `devPath` points to the filesystem custom-protocol = ["tauri/custom-protocol"]