Publish Documentation / Build & publish docs to gitea-pages (push) Canceled after 0s
🏗️ Build and Test JellyTau / Run Tests (push) Skipped
🏗️ Build and Test JellyTau / Android Compile Check (push) Skipped
🏗️ Build and Test JellyTau / Supply Chain (push) Failing after 27s
Traceability Validation / Check Requirement Traces (push) Successful in 12s
Build & Release / Run Tests (push) Successful in 18m0s
Build & Release / Build Linux (push) Failing after 17m37s
Build & Release / Build Windows (push) Successful in 15m36s
Build & Release / Build Android (push) Successful in 31m6s
Build & Release / Create Release (push) Skipped
Two user-visible features -- the app can update itself, and it can hand you a redacted diagnostics bundle -- plus the supply-chain, release integrity and build work behind them. A minor bump rather than a patch, matching how v0.9.0 was cut off v0.8.2 for a single new user requirement. This one carries two (UR-077, UR-078), both with UI in Settings. The CHANGELOG entry is the release body now: build-release.yml publishes the `## v0.10.0` section and fails if it is missing, instead of the fixed block of install instructions that every release from v0.0.1 to v0.9.1 carried verbatim.
125 lines
5.0 KiB
TOML
125 lines
5.0 KiB
TOML
[package]
|
|
name = "jellytau"
|
|
version = "0.10.0"
|
|
description = "A cross-platform Jellyfin client"
|
|
authors = ["Duncan Tourolle <duncan@tourolle.paris>"]
|
|
license = "MIT"
|
|
repository = "https://gitea.tourolle.paris/dtourolle/jellytau"
|
|
edition = "2021"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[lib]
|
|
# The `_lib` suffix may seem redundant but it is necessary
|
|
# to make the lib name unique and wouldn't conflict with the bin name.
|
|
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
|
|
name = "jellytau_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
# Keep debug info minimal to reduce target/ size in CI (line numbers in
|
|
# backtraces are preserved; the bulky full debuginfo is dropped).
|
|
[profile.dev]
|
|
debug = "line-tables-only"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
# protocol-asset serves cached thumbnails to the webview (asset://localhost on
|
|
# Linux/macOS, http://asset.localhost on Windows/Android); without it
|
|
# convertFileSrc yields a URL nothing answers. Paired with
|
|
# app.security.assetProtocol in tauri.conf.json, which scopes it to
|
|
# $APPDATA/thumbnails/** — the one directory still read through this protocol.
|
|
# Downloaded media went the same way until DR-137 moved it to the loopback media
|
|
# server, so the database, the encrypted-token fallback file and downloads/ are
|
|
# all outside the grant now.
|
|
# TRACES: UR-012, UR-071 | DR-134, DR-137, DR-198
|
|
tauri = { version = "2", features = ["protocol-asset"] }
|
|
tauri-plugin-opener = "2"
|
|
tauri-plugin-os = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
rand = "0.8"
|
|
tokio = { version = "1", features = ["sync", "rt-multi-thread", "time", "fs", "io-util", "macros"] }
|
|
tokio-util = "0.7"
|
|
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json"] }
|
|
urlencoding = "2"
|
|
futures-util = "0.3"
|
|
async-trait = "0.1"
|
|
|
|
# SQLite for offline storage
|
|
tokio-rusqlite = "0.6"
|
|
rusqlite = { version = "0.32", features = ["bundled"] }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
directories = "5"
|
|
|
|
# Secure credential storage (system keyring with encrypted file fallback)
|
|
keyring = "3"
|
|
aes-gcm = "0.10"
|
|
base64 = "0.22"
|
|
sha2 = "0.10"
|
|
getrandom = "0.2"
|
|
log = "0.4"
|
|
env_logger = "0.11"
|
|
|
|
# Persistent, rotating, redacted logging on every platform -- and on Android the
|
|
# only thing that puts Rust output into logcat at all (env_logger writes to
|
|
# stdout, which Android discards, which is why the backend was invisible on the
|
|
# platform where the hardest bugs live).
|
|
#
|
|
# TRACES: UR-078 | DR-218
|
|
tauri-plugin-log = "2"
|
|
|
|
# Zip for the diagnostics export bundle.
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
tauri-specta = { version = "=2.0.0-rc.21", features = ["derive", "typescript"] }
|
|
specta-typescript = "=0.0.9"
|
|
specta = { version = "=2.0.0-rc.22", features = ["chrono", "derive"] }
|
|
tiny_http = { version = "0.12.0", default-features = false }
|
|
|
|
# In-app update, desktop only.
|
|
#
|
|
# `cfg(desktop)` is not decoration: tauri-plugin-updater does not support
|
|
# Android at all -- an APK cannot replace itself, that is the package manager's
|
|
# job -- and building it for the Android target fails. Android is offered the
|
|
# releases page through tauri-plugin-opener instead (see the frontend's
|
|
# updateCheck module). tauri-plugin-process supplies the relaunch that has to
|
|
# follow a desktop install.
|
|
#
|
|
# The cfg is spelled out as "not android, not iOS" rather than `cfg(desktop)`:
|
|
# Cargo evaluates a [target.'cfg(...)'] table against *target-triple* cfgs only
|
|
# (target_os, target_arch, target_family, unix/windows). `desktop` is a cfg
|
|
# Tauri's build script emits for use in Rust source, so `cfg(desktop)` here
|
|
# matches nothing, silently drops the dependency, and the build then fails much
|
|
# later with "Permission updater:default not found".
|
|
#
|
|
# TRACES: UR-077 | DR-217
|
|
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
|
tauri-plugin-updater = "2"
|
|
tauri-plugin-process = "2"
|
|
|
|
# Linux-specific dependencies
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
hostname = "0.4"
|
|
libc = "0.2"
|
|
# The crates.io release of libmpv predates the MPV versions we support, so this
|
|
# tracks the upstream git repo.
|
|
#
|
|
# Pinned by `rev`, not `branch = "master"`. With a branch, the revision is
|
|
# whatever Cargo.lock happens to hold and any `cargo update` silently swaps in
|
|
# new upstream code -- for the one dependency here that is not from crates.io,
|
|
# is not signed, and links a C library into the player. The rev below is the
|
|
# commit the lockfile already resolved to, so this pins current behaviour rather
|
|
# than changing it. To take upstream fixes, bump this deliberately.
|
|
libmpv = { git = "https://github.com/ParadoxSpiral/libmpv-rs.git", rev = "3e6c389b716f52a595cc5e8e3fa1f96cb76b3de7" }
|
|
|
|
# JNI for Android ExoPlayer integration
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
jni = "0.21"
|
|
ndk-context = "0.1"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.24.0"
|
|
|