• v0.5.4 9858b7cb92

    v0.5.4
    🏗️ Build and Test JellyTau / Run Tests (push) Failing after 2m9s
    🏗️ Build and Test JellyTau / Android Compile Check (push) Skipped
    Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m37s
    Traceability Validation / Check Requirement Traces (push) Successful in 26s
    Build & Release / Run Tests (push) Failing after 5m56s
    Build & Release / Build Linux (push) Skipped
    Build & Release / Build Windows (push) Skipped
    Build & Release / Build Android (push) Skipped
    Build & Release / Create Release (push) Skipped

    dtourolle released this 2026-08-15 22:46:44 +00:00 | 140 commits to master since this release

    Supersedes v0.5.3, which shipped with Android video showing no picture. Install
    this instead — v0.5.3 is not recommended.

    Fixed since v0.5.3

    • Android video plays again. v0.5.3 made native hardware decoding the default,
      and on device that produced sound with a blank screen: ExoPlayer decoded
      correctly into its own surface, but that surface sits behind the app's web
      view and the step that clears the layers above it never took effect, so the
      picture was rendering out of sight. Native decoding is opt-in again, in
      Settings › Native Video, and is described there as incomplete. Picture-in-
      picture is unaffected — it does not depend on that setting.

    Everything else from v0.5.3

    • Streaming bandwidth cap: choose a ceiling once and every video honours it,
      live TV included, surviving a restart; a single video can be moved to another
      ceiling from the player, resuming where it was.
    • Mark as watched — or unwatched — for an episode, season, series or movie, from
      where it is shown. Works offline; a season or series covers its episodes.
    • Downloads no longer mix media: opening a downloaded library listed every
      downloaded item on the server, films under Music and albums under TV.
    • Pause and resume work. Neither did anything before: no cancellation existed in
      the download stack, so a paused download ran on and overwrote its own row, and
      a resumed one sat until something unrelated pumped the queue.
    • Downloads at a chosen bitrate are no longer corrupted by their own retries. A
      transcode ignores Range and answers with the whole stream; the worker appended
      it to what was already on disk, so each retry concatenated another full copy.
    • Partial files are reaped. The worker wrote movie.part while every cleanup
      path deleted movie.mp4.part, so cancelled and failed downloads leaked their
      partials indefinitely.
    • Background-audio handoff no longer loses time. The offset between the handoff
      stream and the real episode was applied only where a position was displayed,
      so progress reported to the server, and the position playback resumed from,
      were short by however far in the screen was locked.
    • Full-screen video on Android hides the system bars.
    • Picture-in-picture works. It required a video surface the shipping
      configuration never had, so the button could not work however it was pressed.
    • Pages no longer inherit the previous page's scroll position, and Back returns
      to where you were.
    • Season headers no longer overlap their buttons on narrow screens.
    • Favourites is a labelled destination in the library grid.
    • Android versionCode: v0.5.2 shipped 5002 while the stamping formula produced
      1503 for 0.5.3 — lower, so Android refused the update as a downgrade. Every
      0.5.x release built from it was un-installable for anyone on v0.5.2.
    Downloads