• v0.1.1 4b9350c949

    JellyTau v0.1.1
    🏗️ Build and Test JellyTau / Run Tests (push) Successful in 12m25s
    Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m17s
    Traceability Validation / Check Requirement Traces (push) Successful in 16s
    Build & Release / Run Tests (push) Successful in 3m52s
    🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 9m52s
    Build & Release / Build Linux (push) Successful in 17m32s
    Build & Release / Build Windows (push) Successful in 13m14s
    Build & Release / Build Android (push) Successful in 29m7s
    Build & Release / Create Release (push) Successful in 13s
    Stable

    dtourolle released this 2026-07-25 07:26:04 +00:00 | 225 commits to master since this release

    🐛 Fixes

    • "More Episodes" is populated for series without season folders. The strip
      collapsed to just the current episode on some series, for two reasons: a series
      exposing episodes directly as children rather than under season folders yielded
      an empty season fetch, and isCurrentEpisode over-matched, because episodes
      with no season or episode number compared equal (undefined === undefined) and
      every one of them looked like the focused episode. Flat children are now grouped
      by season number under synthesized headers, and the strip's logic is extracted so
      both behaviours are unit-tested. (UR-058 → DR-087)

    • Autoplay advances in background audio mode. An episode handed off to the
      audio-only path is a MediaType::Audio item, so autoplay's video-only checks
      stopped recognising it as an episode and playback simply ended at the boundary.
      Episode identity is now carried through the handoff, and because the frontend's
      usual advance is a navigation that is unavailable while the WebView is
      suspended, the backend performs it directly — fetching the next episode,
      building its audio-only URL and loading it into the native player, preserving
      identity so the following boundary advances too. (UR-040, UR-023 → DR-052)

    Features

    • Skipping an episode marks it watched rather than paused. Skipping left a
      mid-episode resume point behind, so the skipped episode reappeared in Continue
      Watching with a partial progress bar — but skipping means "done with this one",
      not "stopped here". A one-shot suppression keeps the player's post-navigation
      unmount stop report from overwriting the 100% progress with the partial one, and
      Continue Watching now drops resume entries superseded by Next Up. (UR-059 →
      DR-088, DR-089)

    📋 Documentation

    • CLAUDE.md states the failing-test-first rule explicitly: write a test that
      reproduces the bug and watch it fail before applying the fix, and extract buried
      logic into a plain .ts module so it can be unit-tested. A test written against
      already-fixed code can pass for the wrong reason.

    Downloads

    Platform File
    Android jellytau-release.apk — sideload or adb install
    Windows (portable) jellytau.exe
    Linux (Debian/Ubuntu) jellytau_0.1.1_amd64.debsudo dpkg -i
    Windows jellytau_0.1.1_x64-setup.exe (NSIS installer)

    Report a problem: https://gitea.tourolle.paris/dtourolle/jellytau/issues

    Downloads