diff --git a/CHANGELOG.md b/CHANGELOG.md index c2d029e3..ec8153b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,63 @@ Entries are grouped by the capability they change, not by commit. Requirement IDs in parentheses point at [docs/requirements.md](docs/requirements.md); the generated trace matrix lives in [docs/traceability.md](docs/traceability.md). +## v0.2.0 + +### ✨ Features + +- **Audio settings now work on Android.** The equalizer, volume normalization + and gapless playback controls in Settings › Audio previously rendered on + Android and did nothing — `ExoPlayerBackend` was the only backend that never + implemented `set_audio_settings`, and the trait's default silently reported + success while applying nothing. All three now take effect: + - **Equalizer** — the canonical 10-band ISO curve is resampled onto whatever + bands the device's equalizer actually exposes (commonly 5), by nearest + centre frequency. + - **Volume normalization** — via `LoudnessEnhancer`. Note this is a gain + stage, not a true EBU R128 normalizer like the Linux `dynaudnorm` path, so + it approximates rather than matches Linux behaviour. + - **Gapless playback** — honours the setting via `pauseAtEndOfMediaItems` + (ExoPlayer is gapless by default, so this disables it when you turn it off). + + The effects re-attach automatically when ExoPlayer rebuilds its audio sink on + a format change, so the equalizer no longer stops applying part-way through a + queue. (UR-027, UR-032, UR-033 → DR-030, DR-035, DR-036, IR-004) + + ⚠️ **Not yet verified on a physical device.** `AudioEffect` availability and + band layouts vary by device and OEM ROM; where an effect is unavailable it is + logged and skipped rather than crashing playback. + +### 📋 Documentation + +- **Playback backend unification investigation.** Six new specs in + [docs/specs/](docs/specs/) record why the playback backends cannot be unified + onto a single engine: every candidate (mpv, GStreamer, libVLC) fails the same + webview-compositing constraint, because WebKitGTK/WebView2/Android WebView each + own their compositor surface and native video cannot interleave with HTML. + Audio *can* unify; video cannot. Also specifies the Android native-video spike, + a Windows native audio backend, and the `libmpv2` migration. + +### 🐛 Corrected requirement statuses + +These were documented as working and were not. No behaviour changed — the docs +were wrong. + +- **Crossfade (UR-031, DR-034) was marked "Done (Linux only)". It is implemented + nowhere**, and is architecturally blocked on mpv: its audio chain is + single-stream, and FFmpeg's `acrossfade` requires two inputs. Real crossfade + would need two libmpv instances. +- The platform parity matrix listed crossfade as a Linux/Android gap (it is + neither) and omitted the equalizer (which was a genuine gap, now closed). +- `nativeAdapter.ts` cited tauri#10152 as blocking native Android video. That + issue is a stale feature request; the capability shipped in September 2024. + What remains unproven is SurfaceView-behind-WebView compositing, now tracked + by a spec rather than asserted as an upstream blocker. + + + ## v0.1.2 ### ✨ Features diff --git a/package.json b/package.json index 9c47d91f..a246ec90 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jellytau", - "version": "0.1.5", + "version": "0.2.0", "description": "", "type": "module", "packageManager": "bun@1.3.5", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index b8db9c6d..0c9a9124 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1994,7 +1994,7 @@ dependencies = [ [[package]] name = "jellytau" -version = "0.1.5" +version = "0.2.0" dependencies = [ "aes-gcm", "async-trait", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 58af9a77..05ed8ead 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jellytau" -version = "0.1.5" +version = "0.2.0" description = "A Tauri App" authors = ["you"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ff24dd3e..9bb07b31 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "jellytau", - "version": "0.1.5", + "version": "0.2.0", "identifier": "com.dtourolle.jellytau", "build": { "beforeDevCommand": "bun run dev",