github MakD/AFinity v0.12.02-beta

3 hours ago

v0.12.02-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

Transcoded downloads. Videos and music can now be downloaded at a lower quality, transcoded by your server. Set the defaults in Settings > Downloads & Storage (Video download quality, Music download quality), or long-press the download button on a movie, episode, season, series, music album or music playlist to choose for a single download. Files already within the chosen quality are downloaded unchanged. For videos, you can also choose which audio track to keep and burn in an image-based subtitle track such as PGS; text subtitles inside the file are saved alongside as separate files. A transcoding download shows "Converting" with the chosen quality and an estimated size, both on the Downloads screen and in the download notification, and a video the server cut short is reported as failed instead of being kept. Video transcodes run one at a time and can't be paused.

Rebuilt admin tools. The admin actions on item pages have been reworked:

  • Edit Images has a tab for each image type the item supports, including Thumb, Banner, Art and Disc, instead of one mixed grid. The current image is shown with its resolution and file size. Provider images can be filtered by provider, shown in all languages, and sorted by Recommended or Largest. Tapping an image opens a preview with its provider, resolution, rating or likes, language and file size before anything is applied. Backdrops can be reordered by pressing and holding, then dragging; the first one is the primary.
  • Identify shows what the item is currently matched as, with its file name. You can search by name, or by an IMDb, TMDB or TVDB ID alone. Each result lists its provider IDs, and a confirmation sheet appears before any metadata is replaced, with a switch to keep the item's current artwork. When a search with a year finds nothing, "Search Without Year" repeats it without the year. Collections can now be identified too.
  • Edit Metadata uses pickers for series status, display order and person type, and suggests parental ratings from your server. Existing cast and crew entries can be edited, not only added and removed. Save appears only when something has changed, a title is required, and leaving with unsaved edits asks first. Changing a series' display order warns that it triggers a full metadata refresh.
  • Refresh Metadata names the item it will refresh, notes when the items it contains are refreshed too, and adds a "Replace trickplay images" option. It confirms once the refresh is queued and shows an error if the request fails.
  • Delete is offered only when the server allows it for that item or episode. The dialog states what will be removed: the item and its files, the item with everything it contains, or only the collection or playlist itself. It stays open until the server has finished, and reports a permission problem or a failure in place.

Seerr requests. Failed requests can be retried from the request dialog. Specials can be requested when your Seerr server has them enabled, and the season picker lists the show's actual season numbers and leaves out seasons with no episodes. The Request button is disabled when your account isn't permitted to request movies or series.

Improvements

  • Seerr: the Requests list loads all of your requests (up to 1,000) instead of only the most recent ones.
  • Seerr: search, Discover and browse requests no longer force English. Titles and genres follow the language set in your Seerr account, and the movie and series browse lists are no longer limited to English-language originals.
  • Seerr: when you request on behalf of another user, the quota shown is for the relevant user.
  • Seerr: if your session is rejected by the server, the app signs you out of Seerr so you can sign in again.
  • Seerr: deleting media no longer flushes Seerr's cache or runs its clear-data job. The app only asks Seerr to re-check availability, and skips Seerr entirely when the deleted item had nothing there.
  • Seerr: requesting, approving and deleting no longer send an extra request first on servers that don't use CSRF protection.
  • Music: Most Played albums and Top Artists are now calculated from your track play counts, so they reflect what you have actually played, and Most Played is limited to the library you are viewing.
  • Logos on the home screen, item pages and in the player are requested as WebP, where the server resizes images, and logos for upcoming hero carousel slides are loaded ahead of time.
  • Image requests now tell the server which formats the app accepts, so it can choose a more efficient one when none is specified.
  • The hero carousel's page indicator is now drawn by the app instead of a third-party library, which removes a stray dot and a rough edge it used to show.
  • Dropdown menus in Settings and in the request dialog open aligned to the right, under the value they change.
  • Edit Images loads thumbnails at a reduced size instead of the full-resolution files.

Fixes

  • Refreshing an episode from a season or series page refreshed the whole season or series. It now refreshes only that episode.
  • The Refresh Metadata dialog could only be used once per visit to a page.
  • Deleting an episode or season no longer removes the Seerr requests for the whole series, and deleting a movie no longer touches a series that shares its TMDB ID.
  • After an episode is deleted from a season or series page, the episode list updates straight away.
  • Deleting an item only returns to the previous screen if that item's page is still open.
  • Saving a large series, applying an Identify match and deleting a large item no longer report a failure when the server simply needs more time.
  • Edit Metadata: community ratings no longer show long decimal tails (6.9 appeared as 6.900000095367432), decimals can be typed normally, and the value is limited to 0-10.
  • Edit Metadata: individual field locks are available when the item is not fully locked, a second failed save now shows an error, a genre, tag or studio that is still being typed is included when you save, and duplicates are ignored.
  • Edit Images, Identify and Edit Metadata show an error with a retry button when loading fails, instead of looking empty.
  • Identify no longer appears on seasons, episodes and other items the server cannot identify.
  • Seerr: a movie and a series that share a TMDB ID are no longer confused. One could take the other's request status, go missing from a browse list, or crash a Discover row.
  • Seerr: browse lists no longer stop loading early when a page comes back short. They continue to the last page the server reports.
  • Seerr: sorting series by title works, and watch-provider and status filters work with more than one selection.
  • Seerr: Upcoming Movies and Upcoming Series no longer include titles that are already released once a sort or filter is applied.
  • Seerr: An edit to a request that Seerr accepts without applying is reported as a failure.
  • Long-pressing the download button in an episode sheet on a season or series page now opens the download options, as it already did everywhere else.
  • A paused download can be resumed from an episode sheet on a season or series page, and resuming a paused season or series resumes all of its paused episodes. Neither did anything before.
  • Switching servers while the home screen is loading no longer shows the previous server's latest movies and shows.
  • Music: extra tracks on an artist page expand and collapse from the top.
  • Nightly builds are only produced when there is something new since the last release or the last nightly.

What's Changed

  • fix: specify top alignment for extra track expansion in MusicArtistScreen by @MakD in a2e5cd5
  • feat: enhance Jellyseerr request retries, special season support, and API handling by @MakD in 27bc85b
  • refactor: clean up redundant null checks and safe calls across codebase by @MakD in 174b194
  • refactor: derive top artists and albums from track play counts by @MakD in b2d91f8
  • fix: rethrow CancellationException during async operations and update build config by @MakD in 7f37e13
  • ci: refine nightly workflow trigger check using release and nightly tag history by @MakD in 8899c0d
  • fix: prevent stale home data updates when server changes in AppDataRepository by @MakD in 211c91a
  • fix: optimise logo image format and preloading in HeroCarousel by @MakD in c6a487b
  • refactor: add WebP format support and server resize awareness to logo image URLs by @MakD in 2bbb1f2
  • refactor: replace external pager indicator library with custom WormPagerIndicator by @MakD in 8e2dab4
  • feat: add support for transcoded video and audio downloads with customizable quality options by @MakD in 34ed596
  • refactor: introduce EndAlignedDropdownMenu and export Room schema version 82 by @MakD in a261135
  • feat: add default Accept header for image OkHttpClient requests by @MakD in e7c044a
  • feat: overhaul admin identify and image management tools with BoxSet support and reordering by @MakD in f1d33c9
  • feat: improve admin item deletion, metadata refresh, and metadata editing by @MakD in b49403a
  • feat: improve show download resuming, transcoding notifications, and quality picker defaults by @MakD in e883246
  • Translations update from Hosted Weblate by @weblate in #240
  • Translations update from Hosted Weblate by @weblate in #243
  • Translations update from Hosted Weblate by @weblate in #244

Full Changelog: v0.12.01-beta...v0.12.02-beta

Don't miss a new AFinity release

NewReleases is sending notifications on new releases.