chore(release): bump to 0.2.0
🏗️ Build and Test JellyTau / Run Tests (push) Successful in 11m0s
Publish Documentation / Build & publish docs to gitea-pages (push) Has been cancelled
Traceability Validation / Check Requirement Traces (push) Has been cancelled
Build & Release / Run Tests (push) Successful in 11m20s
🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 8m20s
Build & Release / Build Linux (push) Failing after 16m33s
Build & Release / Build Windows (push) Successful in 13m46s
Build & Release / Build Android (push) Successful in 29m50s
Build & Release / Create Release (push) Has been skipped
🏗️ Build and Test JellyTau / Run Tests (push) Successful in 11m0s
Publish Documentation / Build & publish docs to gitea-pages (push) Has been cancelled
Traceability Validation / Check Requirement Traces (push) Has been cancelled
Build & Release / Run Tests (push) Successful in 11m20s
🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 8m20s
Build & Release / Build Linux (push) Failing after 16m33s
Build & Release / Build Windows (push) Successful in 13m46s
Build & Release / Build Android (push) Successful in 29m50s
Build & Release / Create Release (push) Has been skipped
Minor bump rather than patch: Android gains working equalizer, volume normalization and gapless playback, which are new user-facing capabilities. CHANGELOG entry written by hand rather than from `bun run release:notes`. The generated draft lists "Crossfade between audio tracks (UR-031)" as a feature of this release, which is false — the trace graph cannot distinguish code that plumbs a setting (settings.rs clamping, the backend.rs trait method, both legitimately tagged DR-034) from code that implements it, and crossfade is implemented nowhere. The release-notes tool documents its output as a reviewed draft; this is a concrete case of why. v0.1.3-v0.1.5 have no CHANGELOG entries; noted in the file rather than backfilled.
This commit is contained in:
@@ -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
|
IDs in parentheses point at [docs/requirements.md](docs/requirements.md); the
|
||||||
generated trace matrix lives in [docs/traceability.md](docs/traceability.md).
|
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.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Note: v0.1.3–v0.1.5 have no entries here. Their changes are in the git log
|
||||||
|
and docs/traceability.md.
|
||||||
|
-->
|
||||||
|
|
||||||
## v0.1.2
|
## v0.1.2
|
||||||
|
|
||||||
### ✨ Features
|
### ✨ Features
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jellytau",
|
"name": "jellytau",
|
||||||
"version": "0.1.5",
|
"version": "0.2.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "bun@1.3.5",
|
"packageManager": "bun@1.3.5",
|
||||||
|
|||||||
Generated
+1
-1
@@ -1994,7 +1994,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jellytau"
|
name = "jellytau"
|
||||||
version = "0.1.5"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "jellytau"
|
name = "jellytau"
|
||||||
version = "0.1.5"
|
version = "0.2.0"
|
||||||
description = "A Tauri App"
|
description = "A Tauri App"
|
||||||
authors = ["you"]
|
authors = ["you"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "jellytau",
|
"productName": "jellytau",
|
||||||
"version": "0.1.5",
|
"version": "0.2.0",
|
||||||
"identifier": "com.dtourolle.jellytau",
|
"identifier": "com.dtourolle.jellytau",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "bun run dev",
|
"beforeDevCommand": "bun run dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user