github MakD/AFinity v0.12.04-beta

5 hours ago

v0.12.04-beta

Important

AFinity requires Jellyfin 12.0 or newer. If you're still on Jellyfin 10.x, stay on v0.10.10-beta until you upgrade.

New features

Vulkan and HDR in MPV. MPV now runs on a new libmpv build with Vulkan support, so HDR video can be sent to an HDR display as HDR instead of being tone-mapped to SDR. Settings > Playback > MPV Options has a new Vulkan compatibility entry. Tap it to check this device: the check shows the Vulkan version and whether the display supports HDR, and tells you whether HDR passthrough is available.

  • The GPU API option appears only after the device passes the check, and the HDR output options only when Vulkan is selected. The result is remembered, so the check runs once per device.
  • If Vulkan is selected but the device hasn't passed the check, MPV uses OpenGL instead.

Warning

Vulkan is experimental. Passing the check means this device supports Vulkan and HDR, not that every file will play smoothly. With Vulkan, MPV copies each decoded frame from the hardware decoder before drawing it, which is more work than OpenGL. On high-bitrate files such as 4K remuxes, or on less powerful devices, you may see dropped frames or stutter. If that happens, set GPU API back to OpenGL in Settings > Playback > MPV Options.

Popular tracks from Last.fm. Add a Last.fm API key in Settings > Connect Services > API keys (previously called Ratings). Artist pages then order their top tracks by Last.fm listeners, and popular tracks on artist and album pages are marked with a flame. Popularity is stored for a week, or a day for recent releases. Settings > Appearance > Content Layout > Popular tracks by Last.fm turns it off, which sorts by your own play count instead.

Libraries in the menu. Settings > Appearance > Navigation > Show Libraries in Menu now has three options: Off, Libraries screen, and Each library. Each library lists every library directly in the navigation drawer, and library screens get a menu button to open the drawer.

Changelog in Settings. Settings > About > Changelog shows the release notes for the version you have installed, with the same formatting as the update dialog. If you're offline, it shows the last copy it loaded, if there is one.

Server settings laid out like Jellyfin's dashboard. The Control Panel now uses the same groups as the Jellyfin web dashboard:

  • Server: General and Users.
  • Libraries: Libraries, Display, Metadata and NFO Settings.
  • Playback: Transcoding, Resume, Streaming and Trickplay. Resume and Streaming are now separate pages, as in Jellyfin.
  • Devices: Devices and Activity.
  • Advanced: Networking, API Keys, Backups, Server Logs and Scheduled Tasks.
  • Plugins.

Improvements

  • Clearer playback errors:
    • A video or audio output that fails to start gets its own message, suggesting a different GPU API or audio output.
    • A Live TV channel that's offline says so.
    • When the server can't start a video, the message says that rather than a generic error.
    • Admins also see the server's transcoding error.
  • Live TV: playback speed controls, long-press speed-up and the < and > shortcuts are turned off on live channels, and speed returns to 1× when live playback starts.
  • Starting another video while the player is already open, for example in picture-in-picture, switches the player to the new video.
  • The home screen carousel preloads the previous slide as well as the next, so swiping back shows its images straight away.
  • Bottom sheets share one style and behaviour across the app.
  • The update dialog shows Note, Tip, Important, Warning and Caution boxes in release notes the way GitHub does, with their own colour and icon in light and dark themes, instead of showing the raw [!WARNING] text.
  • Android 17: Finding servers on your network on the sign-in screen now waits for local network access to be granted, and starts once it is. Network broadcast discovery stops after 5 seconds instead of waiting indefinitely.

Fixes

  • Control Panel: a session's remote control now shows "Playback stopped" when nothing is playing, hiding the playback controls instead of showing an "Unknown" title. Sending a message still works.
  • Modal bottom sheet jump loop fixed.
  • Links to commits, issues, and pull requests in the update dialog's release notes opened a broken address. They now open the right page.
  • On Android 17, the server search on the sign-in screen could keep loading and then disappear without finding anything when local network access hadn't been granted.

What's Changed

  • feat: enhance changelog display with styled alerts and improved link formatting by @MakD in a916764
  • feat(changelog): Add changelog screen and API to fetch release notes by @MakD in d211bf5
  • refactor: reorganize server settings and control panel by @MakD in 555e5f0
  • fix: improve local network permission handling by @MakD in 8934b25
  • feat: add Vulkan/HDR device compatibility check by @MakD in b24d579
  • refactor: migrate modal bottom sheets to AfinityModalBottomSheet by @MakD in 50295c7
  • ci: upgrade stale action from v9 to v11 by @MakD in 1fdf633
  • ci: update CI workflow for master branch and concurrency by @MakD in 5b75a7a
  • ci: add stale issue management workflow by @MakD in 4627d13
  • feat: add option to display individual libraries in navigation drawer by @MakD in ac9b6d5
  • perf: prefetch adjacent hero carousel images bidirectionally by @MakD in e55b504
  • feat: improve error diagnostics and migrate to updated libmpv by @MakD in 1dfb932
  • refactor: adopt kotlin.time.Duration across delays, timeouts, and debounces by @MakD in 3e99208
  • feat: migrate to mpv-android and enhance playback handling by @MakD in 6ba9947
  • feat: integrate Last.fm popular tracks and artist ranking by @MakD in 00e5990
  • ci: remove nightly build workflow by @MakD in ee35bef
  • fix: handle stopped playback state in remote control sheet by @MakD in 2234854
  • Translations update from Hosted Weblate by @weblate in #257
  • Translations update from Hosted Weblate by @weblate in #260
  • Translations update from Hosted Weblate by @weblate in #261

Full Changelog: v0.12.03-beta...v0.12.04-beta

Don't miss a new AFinity release

NewReleases is sending notifications on new releases.