• v0.5.0 3619f71aba

    JellyTau v0.5.0
    🏗️ Build and Test JellyTau / Run Tests (push) Successful in 6m55s
    Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m21s
    Traceability Validation / Check Requirement Traces (push) Successful in 15s
    Build & Release / Run Tests (push) Successful in 7m36s
    🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 2m57s
    Build & Release / Build Linux (push) Successful in 20m4s
    Build & Release / Build Windows (push) Successful in 8m42s
    Build & Release / Build Android (push) Successful in 30m30s
    Build & Release / Create Release (push) Successful in 17s
    Stable

    dtourolle released this 2026-08-11 19:22:21 +00:00 | 152 commits to master since this release

    Features

    • Android video can render on the device's own video surface. Settings →
      Video Playback → Native Video (experimental, off by default) hands
      decoding to ExoPlayer, which draws into a surface composited behind a
      transparent WebView, with the player controls layered on top of it.

      The backend had reported "this platform has a native video surface" on Android
      all along, but the frontend threw that answer away in two separate places, so
      the path had never actually run. Both are lifted. The setting can only ever
      suppress the backend's choice, never override it upward: turning it off
      forces the web player even where native is available, and turning it on does
      nothing on platforms whose backend never offered it — Linux cannot composite
      behind its webview, so it stays on the web player either way.

      Verified playing on a physical device. Still unverified: the mini-player
      transition, audio-track switching on the native path, and whether hardware
      decoding measurably improves battery or CPU — so the toggle stays off by
      default. (UR-003, UR-004 → DR-150)

    🐛 Fixes

    • The video surface now reaches the screen at all. The player built its
      video surface, handed it to ExoPlayer, and then never added it to the view
      hierarchy, because the Activity reference it needed was never supplied — so
      native video would have decoded to a surface nobody could see, whatever else
      was fixed. This also silently disabled picture-in-picture for video, which
      gated on that same never-attached surface. (UR-003, UR-041 → DR-151)

    • Platform playback support is no longer guessed from the browser user
      agent.
      The frontend re-derived "does this platform decode audio natively" by
      string-matching navigator.userAgent — a second copy of a decision the
      backend already makes, free to drift out of step with the backends it was
      describing. The backend now reports its own capabilities and the frontend
      consumes them. (UR-003, UR-005 → DR-152)

    🔧 Internal

    • The git tag is now the single source of truth for a release version. The
      version lived in four files that had to be edited in lockstep, and the release
      workflow rewrote exactly one of them — so a tagged build produced an installer
      named for the tag wrapped around package metadata naming the previous
      release, and the Linux job, which had no version step at all, shipped whatever
      happened to be committed. scripts/set-version.sh now writes all four from
      one argument and every release job calls it with the tag. The Android
      versionCode is derived in the same place, guarded by tests for the property
      that actually matters: it must increase monotonically and stay above the value
      already installed in the field, or Android silently refuses the update.
      (DR-153)

    Downloads

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

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

    Downloads