mirror of
https://github.com/euzu/tuliprox.git
synced 2026-10-14 11:52:24 +02:00
feat(dvr)!: unify live and VOD/series recording into one recoverable DVR Merge fix/merge_live_and_vod_recording into develop. - One recording queue for scheduled live captures and VOD/series transfers, with a shared transition graph, provider-slot scheduling, resumable HTTP transfers (strong ETag / Last-Modified validation) and ffmpeg live capture. - Crash-recoverable persistence: B+Tree repository with a journal-first recovery history; one file can be shared by several library entries. - Admission checks quota and disk on request, at transfer start (real size) and before an entry attaches to a finished file; idempotent requests. - REST is command-only; state reaches clients via owner-filtered WebSocket snapshots. - Deleting a recording removes the file once no entry holds it; removing an entry keeps a finished file and cleans up orphaned partials. - User ids derive from the configured username (web:/api:); the identity registry is gone. - Spanish locale added; ru/ar completed; locale parity test. BREAKING CHANGE: `video.download` is now `video.recording` (nested `recording` keys move up, `download_priority`/`recording_priority` become `priority`); old configs fail to load with a migration hint. BREAKING CHANGE: `/api/v1/file/download*` and `/file/record` are removed in favour of `/api/v1/recording/*`. BREAKING CHANGE: `download.*` and `recording.write` permissions are replaced by `recording.read|create|manage|delete`; tokens from before the change must re-authenticate. BREAKING CHANGE: the old recording queue does not migrate; existing `identity_registry.json` is ignored.
49 lines
1.1 KiB
TOML
49 lines
1.1 KiB
TOML
[package]
|
|
name = "shared"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
aes = "0.8.4"
|
|
bitflags = "2.13.1"
|
|
ciborium = "0.2.2"
|
|
hex = "0.4.3"
|
|
serde_tuple = "1.1.3"
|
|
serde.workspace = true
|
|
rmp-serde = "1.3.1"
|
|
regex.workspace = true
|
|
log.workspace = true
|
|
url.workspace = true
|
|
indexmap = { workspace = true, features = ["serde"] }
|
|
pest.workspace = true
|
|
pest_derive.workspace = true
|
|
serde_json.workspace = true
|
|
base64.workspace = true
|
|
blake3.workspace = true
|
|
fastrand = { workspace = true, features = ["js"] }
|
|
zeroize.workspace = true
|
|
chrono.workspace = true
|
|
chrono-tz = "0.10.4"
|
|
ctr = "0.9.2"
|
|
bytes.workspace = true
|
|
lz4_flex.workspace = true
|
|
brotli.workspace = true
|
|
deunicode.workspace = true
|
|
unicode-normalization.workspace = true
|
|
serde-saphyr.workspace = true
|
|
dashmap.workspace = true
|
|
paste.workspace = true
|
|
thiserror.workspace = true
|
|
strum_macros.workspace = true
|
|
strum.workspace = true
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
js-sys = "0.3.104"
|
|
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
getrandom = "0.4.3"
|