mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-09-29 21:02:09 +02:00
Introduce a per-file Hi-Res authenticity checker and optional auto re-download for flagged fake Hi-Res downloads. Adds Rust checker modules (fft, evidence, FLAC/WAV decoding, tests) and a mobile API (check_hires_authenticity). Wire platform bindings for Android/iOS and PlatformBridge. Add Dart HiResCheckService, UI HiResCheckCard, settings toggle (redownloadFakeHiRes) and integration in the download pipeline to quarantine and replace suspicious files with LOSSLESS when safe. Adds claxon FLAC dependency.
75 lines
2.8 KiB
TOML
75 lines
2.8 KiB
TOML
[workspace]
|
|
members = ["crates/core", "crates/network", "crates/providers", "crates/extensions", "crates/mobile", "crates/bindgen"]
|
|
resolver = "3"
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.98.1"
|
|
license = "MIT"
|
|
publish = false
|
|
|
|
[workspace.dependencies]
|
|
image = { version = "=0.25.10", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
|
|
spotiflac-core = { path = "crates/core" }
|
|
spotiflac-extensions = { path = "crates/extensions" }
|
|
spotiflac-network = { path = "crates/network" }
|
|
spotiflac-providers = { path = "crates/providers" }
|
|
rquickjs = { version = "=0.13.0", features = ["bindgen"] }
|
|
base64 = "0.23"
|
|
sha2 = "0.11"
|
|
sha1 = "0.11"
|
|
md-5 = "0.11"
|
|
hmac = "0.13"
|
|
aes-gcm = "=0.11.1"
|
|
aes = { version = "=0.9.3", features = ["zeroize"] }
|
|
blowfish = { version = "=0.10.0", features = ["zeroize"] }
|
|
zeroize = "1.8"
|
|
getrandom = "0.4"
|
|
tempfile = "3.27"
|
|
zip = { version = "=8.6.0", default-features = false, features = ["deflate-flate2-zlib-rs"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = { version = "1.0", features = ["float_roundtrip", "raw_value"] }
|
|
thiserror = "2.0"
|
|
uniffi = { version = "=0.32.1", default-features = false }
|
|
tokio = { version = "=1.53.1", features = ["rt-multi-thread", "net", "time", "sync", "io-util", "macros"] }
|
|
hyper = { version = "=1.11.1", features = ["client", "http1", "http2"] }
|
|
hyper-util = { version = "=0.1.20", features = ["client-legacy", "http1", "http2", "tokio"] }
|
|
hyper-rustls = { version = "=0.27.9", default-features = false, features = ["http1", "http2", "ring", "tls12"] }
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
|
|
rustls-native-certs = "=0.8.4"
|
|
rustls-platform-verifier = "=0.7.0"
|
|
rustls-pemfile = "2.2"
|
|
http = "1.4"
|
|
http-body-util = "0.1"
|
|
bytes = "1.11"
|
|
futures-util = "0.3"
|
|
tokio-util = { version = "0.7", features = ["io"] }
|
|
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
|
|
tower-service = "0.3"
|
|
hickory-proto = { version = "=0.26.3", default-features = false, features = ["std"] }
|
|
cookie = "0.18"
|
|
url = "2.5"
|
|
regex = "=1.13.1"
|
|
scraper = { version = "=0.27.0", default-features = false }
|
|
# Keep the parser compatible with scraper's HtmlTreeSink implementation.
|
|
html5ever = "=0.39.0"
|
|
# Match the Unicode 15 tables used by the Go backend's title/artist matching.
|
|
unicode-normalization = "=0.1.22"
|
|
unicode-general-category = "=0.6.0"
|
|
time = { version = "=0.3.55", features = ["parsing"] }
|
|
# Pure-Rust FLAC decoder for the Hi-Res authenticity check.
|
|
claxon = "=0.4.3"
|
|
chrono = { version = "=0.4.45", default-features = false, features = ["clock"] }
|
|
tz-rs = "=0.7.3"
|
|
httpdate = "=1.0.3"
|
|
cap-std = "=4.0.3"
|
|
rustix = { version = "=1.1.4", features = ["fs"] }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
codegen-units = 1
|