github MakD/AFinity v0.12.06-beta

4 hours ago

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

Skip recaps, previews and commercials. The player now handles every media segment type Jellyfin supports, not just intros and outros. (#274)

  • Settings > Playback > Interface has Skip Preview, Skip Recap and Skip Commercials next to Skip Intro and Skip Outro. Each one can be set to Disabled, Show button or Auto-skip. The new ones start as Disabled.
  • Auto-skip shows a short countdown on the skip button before it jumps, and the button says what it is skipping.
  • Items with several segments of the same type, such as more than one commercial break, are all handled.

Custom seek steps. Settings > Playback > Interface now has Seek back and Seek forward, each with 5, 10, 15 or 30 seconds. The defaults stay at 10 seconds back and 30 seconds forward. (#276)

  • The on-screen buttons, double-tap and picture-in-picture all use these steps, and the button icons show the number of seconds.
  • Picture-in-picture now has seek back and seek forward buttons.
  • Double-tapping shows a ripple on that side of the screen, and tapping again adds to the total, so you can see how far you've jumped.

New Chromecast remote. Tapping the Cast notification now opens AFinity's own remote for whatever is playing, instead of the generic Google Cast screen.

  • Video: choose the audio track, subtitles and streaming quality from one sheet, and jump between chapters. The next episode in the queue plays even when the remote isn't open.
  • Music: swipe the cover to change tracks, show lyrics, and use shuffle and repeat.
  • Audiobooks: chapters, bookmarks and the sleep timer.
  • Playback speed while casting ranges from 0.5× to 2×.
  • Video sent to a Cast device now includes the episode and season, air or release date, and rating, and starts at the right position.

4K requests in Seerr. Requests for the 4K version of a movie or show are tracked separately from the standard version and are marked with a 4K badge. When the 4K version is in your Jellyfin library, the Seerr details page has an Open 4K in Library button.

Also new: a Large option in Settings > Appearance > Content Layout > Card Size · Netflix Sans in Settings > Appearance > Theme > App Font · each library and studio remembers its own sort order · redesigned ranking numbers on ranked rows.

Improvements

  • Small screens, landscape and large text: layouts across the app now adapt better to small phones, landscape and larger system font sizes.
    • On narrow screens the player's bottom controls move onto two rows, and the center buttons, pause screen and next-up card get smaller.
    • Dialogs and sheets scroll when their content doesn't fit, including when the keyboard is open, and long titles and labels are shortened instead of overlapping.
    • The top bar is slimmer in landscape, and status bar icons stay readable on light and dark backgrounds.
    • The splash screen and the session remote in the Control Panel fit short landscape screens.
    • Hero carousel buttons scale with the system font size, and landscape hero logos are sized to fit the screen.
    • Settings and the Control Panel use two panes on wider screens and in landscape, and keep the page you had open when you rotate.
  • The music and audiobook players follow the light theme instead of always being dark. Item pages in landscape keep a dark hero area so text stays readable over the backdrop.
  • Watched status, favourites and resume positions changed on another device are picked up when the app reconnects to your server, and item pages show the latest state when you open them.
  • The playback speed selector closes as soon as you choose a speed.
  • Server restart notices in Settings, the Control Panel and Plugins say which server needs restarting and why: which plugin or plugins changed, or that server settings changed.
  • Control Panel: active sessions show a Paused badge instead of a play/pause button.
  • Deleting an item or a recording and refreshing metadata now confirm with an in-app message instead of a system toast.
  • Rating tiles on item pages show their status next to the score.
  • More of the app's text can now be translated, including ratings, durations, player controls and error messages.
  • Updated the Google Cast framework, MediaRouter, the Jellyfin SDK, OkHttp, DataStore and other libraries.
  • Updated translations: French, Russian and Swedish.

Fixes

  • Audiobooks: some books could keep loading and never start, or stop at the end of a chapter instead of continuing to the next one. Audiobooks now play their files directly instead of splitting them into chapters, and the audio buffer is capped to avoid using too much memory. (#283)
  • Removing a finished download from an item page now deletes it. If the storage it was saved to, such as an SD card, isn't available, the download is still removed from the app.
  • Live TV: adding or removing a channel favourite updates the Channels list and the guide straight away.

What's Changed

  • build: Bump app version to 0.12.06-beta and update jellyfinCore by @MakD in 915f52a
  • fix(player): Simplify Audiobookshelf track playback and cap audio buffer size by @MakD in 0422f02
  • refactor(ui): Replace admin action Toasts with custom snackbars by @MakD in b3e20b4
  • feat(settings): Provide detailed context and plugin names in server restart notices by @MakD in 5a12d8b
  • fix(ui): Make EmptyState scrolling optional and adjust EditImagesScreen layout by @MakD in d3f172c
  • fix(ui): Refine settings adaptive navigation and rating tile layouts by @MakD in 04c747d
  • fix(layout): Apply fixed heights to horizontal lists and responsive dialog sizing by @MakD in 42e1a59
  • ui: Refactor gradient drawing with drawWithCache and improve theme color adaptability by @MakD in 794772e
  • ui(typography): Standardize font padding and line height across typography styles by @MakD in 69664b3
  • fix(ui): Standardize window metric utilities and refine player overlay layouts by @MakD in 5f12ae9
  • ui(locale): Extensively localize hardcoded UI strings and improve error layouts by @MakD in 203945e
  • fix(ui): Fix layout overflows, adjust card scaling, and add text truncation by @MakD in d580c15
  • fix(ui): Refine layout padding, text overflow protection, and responsive metadata components by @MakD in f79d4ce
  • fix(ui): Improve scrollability and layout bounds across sheets and dialogs by @MakD in 0cf6046
  • ui: Standardize adaptive layout directives and refine component responsiveness by @MakD in 58f3a92
  • fix(layout): Improve dynamic sizing for UI components, carousels, and player offsets by @MakD in fa08008
  • ui(player): Adapt player controls and overlays for compact screens by @MakD in e2635ef
  • fix(player): Support dynamic light and dark theme styling in audio player UI by @MakD in 8ff513e
  • fix(hero): Enforce dark color scheme for landscape item hero section by @MakD in fa30b38
  • fix(layout): Support compact screen heights in splash screen and session remote sheet by @MakD in 1e20597
  • fix(repository): Include AfinitySeason in series ID resolution by @MakD in e3fe4db
  • ui: Standardize snackbar bottom padding and dynamic player time label width by @MakD in 150d865
  • ui(ranking): Redesign ranked card digits and add Netflix Sans font option by @MakD in 2fadd41
  • refactor(ui): Simplify responsive card sizing and remove custom row bleed system by @MakD in 99ebab0
  • feat(requests): Add 4K Jellyfin media support for Jellyseerr requests by @MakD in 16dc8d1
  • refactor(ui): Standardize card sizing, row layouts, and unify badge components by @MakD in 740738c
  • ui(components): Unify section typography and generalize detail action layout by @MakD in e421fc2
  • refactor(ui): Unify screen layouts, introduce design system components, and decouple navigation by @MakD in 2e7b35c
  • ui(topappbar): Adapt app bar dimensions and status bar icon appearance for landscape by @MakD in a01a66f
  • feat(sync): Resync user data on WebSocket connection and reconcile stale item data by @MakD in 42e1d48
  • build(deps): update library dependencies in version catalog by @MakD in c23675c
  • feat(library): Persist sort preferences per library by @MakD in 99af04a
  • feat(player): Add customizable seek steps and double-tap seek feedback overlay by @MakD in a8ee267
  • feat(player): Expand media segment skipping support and preferences by @MakD in c2a129d
  • ui(carousel): Dynamically scale landscape hero logos and fix layout overflow by @MakD in a9adf1f
  • fix(download): Handle completed download deletion and clean up local database records by @MakD in 43ea8f1
  • fix(ui): Replace AndroidView with Compose Text in episode list HTML rendering by @MakD in cb90178
  • feat(player): Dismiss playback speed selector upon selection by @MakD in 74ffa73
  • feat(cast): Unify cast remote UI and introduce background playback synchronization by @MakD in fc8d504
  • feat(cast): Replace expanded controller with router activity and refine playback controls by @MakD in 8f39b31
  • build(deps): update mediarouter and playServicesCastFramework by @MakD in 2de2a07
  • fix(ui): Refine hero carousels, landscape detail themes, and media info animations by @MakD in ee8e7f8
  • feat(admin): replace session play/pause button with paused badge by @MakD in 7508c88
  • ui(carousel): Add font scaling support to hero buttons and improve accessibility by @MakD in 25de6e0
  • fix(livetv): Implement immediate cache updates for channel favorite status by @MakD in 18d7cb3
  • Translations update from Hosted Weblate by @weblate in #271
  • Translations update from Hosted Weblate by @weblate in #272
  • Translations update from Hosted Weblate by @weblate in #273
  • Translations update from Hosted Weblate by @weblate in #275
  • Translations update from Hosted Weblate by @weblate in #277
  • Translations update from Hosted Weblate by @weblate in #279
  • Translations update from Hosted Weblate by @weblate in #281
  • Translations update from Hosted Weblate by @weblate in #282

Full Changelog: v0.12.05-beta...v0.12.06-beta

Don't miss a new AFinity release

NewReleases is sending notifications on new releases.