chore(release): v0.14.0
🏗️ Build and Test JellyTau / Run Tests (push) Skipped
🏗️ Build and Test JellyTau / Android Compile Check (push) Skipped
🏗️ Build and Test JellyTau / Supply Chain (push) Successful in 7m22s
📱 Test APK / Build test APK (push) Successful in 23m39s
Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 3m36s
Traceability Validation / Check Requirement Traces (push) Successful in 10s
Build & Release / Run Tests (push) Successful in 10m16s
Build & Release / Build Linux (push) Successful in 14m14s
Build & Release / Build Windows (push) Successful in 11m32s
Build & Release / Build Android (push) Successful in 20m33s
Build & Release / Create Release (push) Successful in 44s

mpv plays all video on Linux and Windows, and the built-in web video
player is gone from every platform. Windows plays audio through mpv.
mpv commands can no longer be injected through a title, and mpv now
verifies TLS; the page loses its network access. Subtitles and audio
tracks work in desktop video.
This commit is contained in:
2026-09-25 04:19:06 -04:00
parent 1677f5f299
commit a67452bc80
6 changed files with 52 additions and 5 deletions
+47
View File
@@ -9,6 +9,53 @@ generated trace matrix lives in [docs/traceability.md](docs/traceability.md).
For how long each fixed defect had been shipping before it was found, see
[docs/defect-windows.md](docs/defect-windows.md).
## v0.14.0
Video on the desktop is played by mpv, on Linux and now on Windows, and the
built-in web player is gone from every platform. Windows gets real audio
playback too.
### 🔒 Security
- **A track title can no longer run a command on Linux.** mpv was handed stream
URLs and downloaded-file paths as a single command string, in which `;` starts
a new command — so a file whose title tag carried one could run a program
when it played. Every mpv command now passes its arguments separately.
(DR-298)
- **mpv checks the server's certificate.** It did not by default, and the
addresses it opens carry your login token, so anyone able to intercept the
connection could read it. It also no longer hands a failed address to
youtube-dl. (DR-299)
- **The app's web page can no longer reach the network.** It needed that only
for the web video player; everything now goes through the backend, so the
permission was just a way out for anything injected into the page.
### ✨ Features
- **mpv plays all video on Linux and Windows.** On Windows it draws into the app
window under the controls; on Linux it no longer needs the experimental
switch. Video still arrives transcoded to h264 for now — asking the server for
the original file is the next step. (DR-235, DR-237)
- **Windows plays audio through mpv**, so volume, the equalizer, volume
normalization and gapless playback now work there. The installer ships
mpv's LGPL-licensed library and its licence text. (DR-237)
### 🐛 Fixes
- **Subtitles and audio-track switching work in desktop video.** mpv now loads
the subtitle list and switches subtitles and audio tracks itself; before this
they did nothing once mpv drew the picture. (DR-023, DR-024)
- **Downloaded songs with a space in their title play offline on Linux.**
(DR-298)
- **A queued download on Windows keeps the path it was saved under**, rather
than having its separators rewritten. (DR-211)
### 🧹 Removed
- **The built-in web video player and the "Native Video" setting.** There is
nothing left to switch between: every platform plays video natively.
(DR-235)
## v0.13.3
### 🐛 Fixes
+1 -1
View File
@@ -1,6 +1,6 @@
# Code Traceability Matrix
**Generated:** 9/24/2026, 11:06:05 PM
**Generated:** 9/25/2026, 4:18:02 AM
## Summary
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jellytau",
"version": "0.13.3",
"version": "0.14.0",
"description": "A cross-platform Jellyfin client built with Tauri, SvelteKit and Rust.",
"author": "Duncan Tourolle <duncan@tourolle.paris>",
"license": "MIT",
+1 -1
View File
@@ -2275,7 +2275,7 @@ dependencies = [
[[package]]
name = "jellytau"
version = "0.13.3"
version = "0.14.0"
dependencies = [
"aes-gcm",
"argon2",
+1 -1
View File
@@ -4,7 +4,7 @@ name = "jellytau"
# `player-conformance`, and a second binary makes a bare `cargo run` —
# which `tauri dev` issues — ambiguous.
default-run = "jellytau"
version = "0.13.3"
version = "0.14.0"
description = "A cross-platform Jellyfin client"
authors = ["Duncan Tourolle <duncan@tourolle.paris>"]
license = "MIT"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "JellyTau",
"version": "0.13.3",
"version": "0.14.0",
"identifier": "com.dtourolle.jellytau",
"build": {
"beforeDevCommand": "bun run dev",