chore(release): bump to 0.4.0
This commit is contained in:
@@ -6,6 +6,69 @@ 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.4.0
|
||||||
|
|
||||||
|
### ✨ Features
|
||||||
|
|
||||||
|
- **Favourites, across libraries.** A `/library/favorites` page renders
|
||||||
|
favourites from every library with All / Movies / Shows / Music scope tabs,
|
||||||
|
reusing the standard grid so card shape still follows the media — a mixed All
|
||||||
|
tab reads as posters, squares and thumbnails side by side. Home carries
|
||||||
|
favourite rows below Recently Added, and a row with no items does not render
|
||||||
|
at all, so a fresh install shows no empty rows. Server favourite state is
|
||||||
|
mirrored into the local database as results are cached, so offline browsing
|
||||||
|
sees the same favourites as the server; a toggle made offline is never
|
||||||
|
overwritten by a stale server value before it has been pushed.
|
||||||
|
(UR-067, UR-069 → DR-113, DR-114, DR-115, DR-117, DR-118)
|
||||||
|
|
||||||
|
- **Search answers from the local index.** The instant leg read only downloaded
|
||||||
|
items, so with no downloads it returned nothing and every keystroke fell
|
||||||
|
through to a full `Recursive=true` server query. It now reads the whole synced
|
||||||
|
catalog through the same availability CTE `get_items` uses, gated on the same
|
||||||
|
`include_catalog_browse` flag, so search and browse cannot diverge. The index
|
||||||
|
also gained MusicArtist, Playlist and People — the very groups search sorts
|
||||||
|
results into. Re-indexing moved from a frontend startup call to a Rust
|
||||||
|
background task with a 6h TTL, so a long session no longer searches a stale
|
||||||
|
catalog. (UR-065 → DR-108, DR-110, DR-111)
|
||||||
|
|
||||||
|
### 🐛 Fixes
|
||||||
|
|
||||||
|
- **Playback no longer restarts an episode at random on a flaky connection.**
|
||||||
|
Background audio-only playback of a video streams a progressive mp3 transcode
|
||||||
|
over plain HTTP, which is chunked and so declares no length: when the
|
||||||
|
connection dropped mid-episode, ExoPlayer saw end-of-input and reported
|
||||||
|
`STATE_ENDED`, indistinguishable from the real end. The app ran its
|
||||||
|
end-of-episode logic mid-episode and playback parked in `STATE_ENDED`, where
|
||||||
|
the next play intent from the lockscreen, notification or a Bluetooth
|
||||||
|
reconnect seeks an ended player to position 0 — surfacing as "the episode
|
||||||
|
randomly restarted". The item's runtime is now what decides: an end reported
|
||||||
|
well short of it re-opens the stream where it stopped. (UR-040 → DR-129)
|
||||||
|
|
||||||
|
- **A network hiccup no longer kills playback outright.** Music and video
|
||||||
|
declare a length, so a cut connection reaches them as an *error* rather than a
|
||||||
|
phantom end — and every error stopped the player. A recoverable error now gets
|
||||||
|
one bounded attempt at re-opening the stream where it stopped, with a growing
|
||||||
|
backoff, leaving the rest of the queue intact. On Linux, MPV additionally
|
||||||
|
reconnects inside the demuxer so ordinary blips never surface at all, and
|
||||||
|
`EndFile(ERROR)` — previously a bare log line that left playback halted while
|
||||||
|
the UI still showed "playing" — is now reported and recovered.
|
||||||
|
(UR-004, UR-040 → DR-129, DR-130)
|
||||||
|
|
||||||
|
- **The player no longer reads 0:00 as a track ends on Linux.** MPV exposes
|
||||||
|
`time-pos` and `duration` as properties of the *loaded* file, so at EOF it
|
||||||
|
unloads and both stop resolving — reporting zero at exactly the moment
|
||||||
|
end-of-file handling asks where playback reached. The last reading seen while
|
||||||
|
media was loaded is now kept and used as the fallback. (UR-005 → DR-130)
|
||||||
|
|
||||||
|
- **Server-side deletions propagate to the local catalog.** `DELETE FROM items`
|
||||||
|
existed nowhere, so items removed on the server lingered locally forever. A
|
||||||
|
post-crawl mark-and-sweep now removes them, scoped to crawled types, skipping
|
||||||
|
downloaded items, and refusing to run after a partial crawl. Separately,
|
||||||
|
`items_fts` grew a full duplicate index on every catalog pass; it is now a
|
||||||
|
real upsert, with a migration rebuilding existing indexes. (DR-110)
|
||||||
|
|
||||||
|
- **Android system bars and display cutout are handled correctly.** (UR-066)
|
||||||
|
|
||||||
## v0.2.0
|
## v0.2.0
|
||||||
|
|
||||||
### ✨ Features
|
### ✨ Features
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jellytau",
|
"name": "jellytau",
|
||||||
"version": "0.3.0",
|
"version": "0.4.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.3.0"
|
version = "0.4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "jellytau"
|
name = "jellytau"
|
||||||
version = "0.3.0"
|
version = "0.4.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.3.0",
|
"version": "0.4.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