Profiles can be locked, the player learns a few manners, and item pages show much more of what
your server knows. A profile can now sit behind a PIN, or a pattern on the phone, that never
leaves the device. The player gets a sleep timer and an "Up next" card with a countdown at the
end of an episode. Movie and show pages add the critic score, tagline, studios, every trailer,
extras, collections and "More like this", each with a switch if you'd rather not see it. mpv gets
a round of fixes and now follows your subtitle style, and something you downloaded opens even
when the server doesn't answer.
Added
- Profile lock: an optional 4 to 6 digit PIN per profile, asked when switching to the profile and
when the app starts in it. It is stored on the device only (#299). - Profile lock with a pattern on the phone, as an alternative to the PIN (#330).
- Sleep timer on phone and TV: 15 to 90 minutes, or until the end of the episode (#298).
- "Up next" card with a countdown in the last seconds of an episode, or from the start of the
outro, on phone and TV (#272). - Movie and show pages show what Jellyfin already sends: the Rotten Tomatoes score, tagline,
studios or networks, every trailer, the air schedule of a running show, the watch count and
last played date, a 3D badge, extras, collections and "More like this"; links to IMDb, TMDB,
TVDB and Trakt on the phone (#332). - Subtitle style: an "Override embedded styles" switch that applies your style to tracks that
bring their own, such as ASS (#300). - mpv follows the subtitle style settings: colour, outline, background, font and size (#308).
Changed
- Settings → Interface → Detail pages: one page with a switch for each part of a movie or show
page. "Display cast and crew" and "Display Extra Info" moved there (#332). - Downloaded movies and episodes open and play from the local copy when the server fails or
takes more than three seconds to answer (#281). - Playback starts a little sooner: media streams over the connection the app already has open,
and the saved audio and subtitle choice is applied with the first track selection instead of
after it (#296).
Fixed
- Phones switch the display to the video's frame rate again, so 24 fps video no longer plays at
the panel's maximum refresh rate (#338). - Tablet: the title and text of a movie, show or episode page sit under the backdrop instead of
over it, where bright artwork made them hard to read (#339). - The app's session disappears from the server's dashboard when the app closes or a login is
removed, instead of staying listed until the server restarts (#336). - The PIN prompt stays usable with the keyboard up, and Change PIN on TV no longer keeps the old
PIN (#329). - Show backdrops and logos are requested with the series' own image tags, so a series without a
logo no longer causes a failed request (#319). - A show that airs every day reads "Airs daily" (#332).
- mpv: play and pause survive loading and item changes (#305); a file mpv cannot open reports an
error instead of buffering forever (#306); lock screen and Bluetooth controls get the position
and the queue (#304); no more crash when backing out of the player (#318).
Maintenance
- Dependencies: Material 3 adaptive 1.3.0 (#337).
What's Changed
- fix(player): give the media session mpv's position and queue (#304) by @midasvo in #317
- fix(images): build show backdrop and logo from the series' own tags by @midasvo in #319
- fix(player): stop mpv calls after release (#318) by @midasvo in #320
- fix(player): surface mpv load errors and replace the TODO stubs (#306) by @midasvo in #321
- fix(player): keep mpv's state machine in step with mpv (#305) by @midasvo in #325
- feat(subtitles): add an "Override embedded styles" switch (#300) by @midasvo in #323
- feat(player): sleep timer on phone and TV by @midasvo in #322
- feat(mpv): apply the subtitle style settings to mpv (#308) by @midasvo in #324
- perf(player): saved track choice in the first selection, OkHttp media data source by @midasvo in #326
- feat(player): up next card with a countdown at the end of an episode by @midasvo in #327
- feat: open and play downloaded items from the online repository (#281, step 1 of 3) by @midasvo in #328
- feat(profiles): lock a profile behind a local PIN (#299) by @midasvo in #329
- feat(profiles): unlock a profile with a pattern on phone (#330) by @midasvo in #333
- fix(session): end the server session when the app closes or a login is removed by @midasvo in #336
- fix(deps): update androidx.compose.material3.adaptive to v1.3.0 by @renovate[bot] in #337
- fix(player): hint the display with the video frame rate on phones too by @midasvo in #341
- test(player): guardrails against losing the display frame rate hint by @midasvo in #342
- feat(film): show the metadata Jellyfin already sends, plus extras and similar (#332) by @midasvo in #335
- fix(tablet): draw the item hero's text under the backdrop, not over it (#339) by @midasvo in #340
- chore(skills): keep the F-Droid merge request at the latest release by @midasvo in #343
- docs: correct the agent files, mark finished research and add a contributing guide by @midasvo in #344
- chore(release): v2.3.0 by @midasvo in #345
Full Changelog: v2.2.0...v2.3.0
Which APK? ephyra-v<version>-libre-<abi>.apk is for phones and tablets,
ephyra-v<version>-libre-tv-<abi>.apk for Android TV. Most phones need arm64-v8a;
32-bit TV boxes such as the Xiaomi Mi Box need armeabi-v7a. In Obtainium, filter the TV APK
with .*-tv-armeabi-v7a\.apk.