Skip to content

Releases: MakD/AFinity

v0.7.5-beta

14 Mar 19:27

Choose a tag to compare

Release Notes

v0.7.5-beta

Major Features

  • Added Jellyfin intro support, allowing intros to play before the main content playback.
  • Introduced in-app language switching, enabling users to select the app language independently of the system locale.
  • Upgraded search experience with unified results (Movies, Shows, Episodes, Box Sets, Seerr, and Audiobookshelf) in a single search.
  • Added Metacritic User rating support in the metadata row with dynamic colour-coded icons.

Improvements

  • Improved authentication and session handling by decoupling server URL state from repositories, enabling cleaner multi-server support and more reliable session management.
  • Enhanced image loading performance with dynamic server-side image resizing and optimised Coil networking for faster concurrent image downloads.
  • Optimised episode loading and paging using server-side pagination to reduce memory usage and improve performance.
  • Improved person item fetching by using server-side role filters instead of client-side filtering.
  • Enhanced home screen responsiveness with immediate local updates to Continue Watching and Next Up after playback progress sync.
  • Improved player transitions and control behavior, preventing UI flashes during intro-to-content playback transitions.

Fixes

  • Fixed player control visibility issues during playback transitions.
  • Various performance improvements and internal refactors to simplify repositories, session handling, and UI components.

What's Changed

  • Translations update from Hosted Weblate by @weblate in #82

Full Changelog: v0.7.4-beta...v0.7.5-beta

v0.7.4-beta

07 Mar 13:21

Choose a tag to compare

Release Notes

v0.7.4-beta

Major Features

  • Added Jellyfin Merge Versions plugin support with a pre-play version picker, in-player version switching, and smarter autoplay that matches previously selected versions by @DarkseidAM
  • Introduced external metadata integrations with support for TMDB reviews and MDBList ratings (Trakt, Letterboxd, Metacritic, Roger Ebert, etc.), including secure API key configuration in settings, local caching for external metadata with a dedicated database cache and 48-hour refresh logic for improved performance and offline support.
  • Added bulk downloads for seasons and entire series with organised folder structures and unified progress tracking.

Major Improvements

  • Improved BoxSet handling with support for seasons and episodes, including accurate runtime and “Ends At” calculations based on collection contents.
  • Enhanced runtime and completion time calculations across movies, episodes, seasons, and shows.
  • Improved special features support, allowing trailers and extras to be played directly from the item detail screen with clear labels.
  • Enhanced download reliability and background workers, including better concurrency handling and improved foreground notifications.
  • Improved app startup reliability with retry logic, fallback handling, and more resilient data loading.

UI & UX Improvements

  • Redesigned download settings UI with richer metadata, improved layout, and consistent artwork handling.
  • Improved metadata display, including better formatting for long “Ends At” times and runtime calculations.
  • Refined Home and media browsing UI with reusable components, standardised loading/error states, and improved accessibility scaling.

Fixes

  • Fixed session switching not updating the API client token, preventing authentication state desynchronization.
  • Fixed missing runtime metadata for some seasons with improved fallback logic.
  • Improved offline metadata retrieval and general UI consistency.

What's Changed

  • feat(player): add support for Jellyfin Merge Versions plugin by @DarkseidAM in #75
  • Translations update from Hosted Weblate by @weblate in #78
  • fix(item): restore interceptPlayClick to suppress version dialogue for movies by @DarkseidAM in #80

New Contributors

Full Changelog: v0.7.3-beta...v0.7.4-beta

v0.7.3-beta

03 Mar 07:44

Choose a tag to compare

Release Notes

v0.7.3-beta

Critical Fixes

  • Fixed playback & watched-state sync inconsistencies across series, seasons, and related views
  • Improved offline startup and reconnection handling with smarter retry logic

Major Improvements

  • Home data reload now powered by WorkManager (resilient background retries)
  • Faster content load immediately after login
  • Added Audiobookshelf audio enhancements:
    • 5-band equaliser with presets
    • Volume boost
    • Native silence skipping
  • Added aggregated runtime, episode counts, and “Ends at” completion time
  • Implemented a robust image fallback system to prevent missing artwork

UI & Minor Updates

  • Prevented duplicate activity instances when returning from playback
  • Improved Live TV row flexibility
  • Refined episode card layout & metadata wrapping
  • Optimised IMDb logo asset

What's Changed

  • Translations update from Hosted Weblate by @weblate in #73

Full Changelog: v0.7.2-beta...v0.7.3-beta

v0.7.2-beta

28 Feb 09:08

Choose a tag to compare

Release Notes

Major Changes

  • Image Cache Management
    New controls for managing image cache in Downloads & Storage settings.

    • Toggle image caching on/off
    • Configurable cache size (256MB to 2GB)

Minor Updates

  • Item State Synchronisation Improvements

    • Fixed cache updates for genre caches, person sections, and latest media lists
    • Played items now correctly removed from "Latest" sections
    • Library filters correctly re-evaluated after item updates
    • "Mark Season as Watched/Unwatched" functionality fixed
    • Thread-safe state mutations using StateFlow.update
  • Audiobookshelf

    • Shared element transitions between MiniPlayer and full player
    • Redesigned MiniPlayer with swipe-to-dismiss and dynamic background
    • Concurrent data loading for better performance
    • Genre fetching now per-library for non-admin users
  • Connection Improvements

    • Jellyseerr and Audiobookshelf now automatically test both HTTPS and HTTP protocols on login
  • UI Enhancements

    • New Libraries section on Home screen
    • Redesigned splash screen with gradient logo and animations
    • The person detail screen shows the death date and age for deceased individuals
    • Fixed image and blurHash priority in episode cards
  • Performance & Stability

    • Improved WebSocket connection handling
    • Session switching logic simplified
    • Build caching and parallel execution enabled
    • Various concurrency improvements

Dependency Updates

  • Gradle: 9.1.0 → 9.3.1
  • AGP: 9.0.0 → 9.0.1
  • Kotlin: 2.3.0 → 2.3.10
  • Coil: 3.3.0 → 3.4.0
  • Various other library updates

What's Changed

  • Translations update from Hosted Weblate by @weblate in #70
  • Translations update from Hosted Weblate by @weblate in #71

Full Changelog: v0.7.1-beta...v0.7.2-beta

v0.7.1-beta

24 Feb 11:05

Choose a tag to compare

Release Notes

Major Changes

  • Live UI Updates on Playback Events
    The app now updates across all screens instantly when the playback state changes, without requiring manual refresh.

    • Watched status, favourites, and playback progress update immediately on Home, Search, Library, and Detail screens
    • Smart partial updates instead of full-screen reloads for better performance
    • Paginated lists (Library, Genre Results) update individual items without reloading the entire list
    • Episode status changes reflect instantly across related screens
  • Enhanced Network Security
    Improved security by enforcing HTTPS and issuing warnings for insecure connections.

    • Defaults to HTTPS when entering server addresses without a protocol
    • Warning banners are displayed when using HTTP on public networks
    • Sensitive information (tokens, API keys, credentials) redacted from debug logs
    • Network security policy enforces encryption for external APIs while allowing local HTTP connections
    • Automatic protocol detection tries both HTTPS and HTTP for better compatibility

Minor Updates

  • Login Screen Redesign

    • Two-pane layout on tablets and landscape orientation
    • Server discovery/selection on left, connection/login forms on right
    • Improved spacing and IME handling
  • Chromecast Improvements

    • Better content type detection for improved compatibility
    • Native subtitle track switching without media reload (for text-based subtitles), Image-based subtitles (PGS, VOBSUB) still require media reload
    • Fixed resource cleanup to prevent crashes
  • Long-Press Fast-Forward

    • Press and hold on the player screen to temporarily speed up to 2x
    • Visual indicator shows "2x Speed" while active
    • Disabled when player controls are locked
  • UI Refinements

    • Bottom sheets no longer settle in a half-expanded state
    • Genre results now use infinite scrolling instead of a fixed limit
    • Language icon added next to flag in Audiobookshelf item headers
    • Improved watchlist count performance with cached StateFlow

What's Changed

Full Changelog: v0.7.0-beta...v0.7.1-beta

v0.7.0-beta

22 Feb 07:00

Choose a tag to compare

Release Notes

Major Changes

  • Chromecast Support
    Added complete Chromecast integration for video playback to compatible devices.

    • Cast video content to any Chromecast device on your network
    • Full remote control interface with play/pause, seek, and volume controls
    • Seamless playback position transfer when switching between local and cast playback
    • Cast-specific settings for bitrate (quality), audio/subtitle tracks, and playback speed
    • Episode list ("Up Next") for series with quick episode switching during cast sessions
    • System output switcher integration for unified device selection
    • Playback progress synced with the Jellyfin server during cast sessions
    • Automatic resume on local device when disconnecting

    Note: Enable HEVC in Chromecast settings only if your Chromecast device supports hardware decoding of HEVC/H.265 video. If unsure, leave it disabled - the server will transcode to H.264 instead.


Minor Updates

  • Improved Request Caching

    • Requests are now cached immediately upon fetch for faster offline access
    • Media details are enriched asynchronously in the background without blocking the UI
    • Existing cached data preserved when enrichment fails
    • Batch database operations for better performance
  • Genre Backdrops

    • Refactored duotone backdrop generation for more consistent visuals
    • Improved backdrop diversity across genre cards
  • UI Refinements

    • Episode overlay play button icon updated for consistency
    • Cast device chooser respects system light/dark theme
  • Bug Fixes

    • Fixed request approval now correctly applies the default server/profile/root folder when not specified
    • Fixed screen orientation during cast sessions

What's Changed

Full Changelog: v0.6.5-beta...v0.7.0-beta

v0.6.5-beta

17 Feb 16:05

Choose a tag to compare

Release Notes

Major Changes

  • Advanced Request Management
    Users with manage permissions can now view, edit, and act on Jellyseerr requests directly from the app.
    • View detailed request information, including server, quality profile, and root folder
    • Edit pending requests before approval (4K status, server, quality profile)
    • Approve or decline requests with optional override settings
    • Delete requests from the management dialogue
    • Fixed permission validation logic
    • Fixed incorrect status display for 4K requests
  • Favourite People
    Added support for favouriting and browsing people from Jellyfin.
    • New "People" section on Favourites screen
    • Favourite button on person detail screen

Minor Updates

  • Library: Sort order now persists across sessions, updated Watched/Unwatched filter icons
  • Request Cards: Requester avatar now displayed, updated approve/decline button design
  • UI Fixes: MiniPlayer now respects system navigation bars, trickplay preview maintains correct aspect ratio for portrait videos

What's Changed

  • Translations update from Hosted Weblate by @weblate in #56
  • Translations update from Hosted Weblate by @weblate in #57
  • Translations update from Hosted Weblate by @weblate in #59
  • Translations update from Hosted Weblate by @weblate in #61

Full Changelog: v0.6.4-beta...v0.6.5-beta

v0.6.4-beta

15 Feb 18:49

Choose a tag to compare

Release Notes

Critical Fixes

  • Fixed Audiobookshelf Token Refresh
    Resolved critical issue where failed token refresh would leave the app in an unrecoverable state.

    • System now properly logs out users when the refresh token is invalid
    • Refresh requests correctly send an empty JSON body and parse nested response
    • Invalid tokens are immediately cleared from secure storage
    • App correctly reflects logged-out state after authentication failures

Major Changes

  • Advanced Jellyseerr Request Options
    Added support for advanced request configuration with 4K requests and quality profiles.

    • 4K Requests: Users with REQUEST_4K permissions can now request 4K versions
    • Server Selection: Choose a specific Sonarr/Radarr server for the request
    • Quality Profiles: Select a quality profile from available options
    • Root Folder Display: Shows the configured root folder for the selected server
    • Available to users with REQUEST_ADVANCED or MANAGE_REQUESTS permissions
    • Redesigned request dialogue with a modern, tile-based layout
  • Manual Screen Rotation Control
    Added manual orientation control for the video player with automatic aspect ratio detection.

    • New rotation button in player controls to toggle between portrait and landscape
    • Player automatically detects video aspect ratio and sets initial orientation
    • Manual override available via rotation button
    • Player UI now respects system safe drawing areas (no overlap with navigation bars or cutouts)

Minor Updates

  • Improved Audiobookshelf Podcast Playback

    • Podcast series now resumes from the most recently listened-to, unfinished episode
    • Falls back to the first episode in sort order if no listening history exists
    • Tapping individual episodes resumes from the saved position instead of the start
    • Player correctly seeks a specific timestamp within podcast playlists
  • UI Refinements

    • Adjusted "Explicit" and "Abridged" icon sizes for better alignment
    • Updated Jellyseerr/Seerr logo after merger and rebranding
    • Improved visual presentation of advanced request options

What's Changed

Full Changelog: v0.6.3-beta...v0.6.4-beta

v0.6.3-beta

13 Feb 16:46

Choose a tag to compare

Release Notes

Major Changes

  • Automatic Token Refresh for Audiobookshelf
    Implemented automatic access token refreshing for Audiobookshelf connections.

    • System automatically refreshes expired tokens using the refresh token
    • Failed requests due to expired tokens are automatically retried with a new token
    • More resilient connection to Audiobookshelf servers
    • Playback continues uninterrupted even if authentication expires during an active session
    • Improved overall reliability of Audiobookshelf integration

Minor Updates

  • Improved Library Fetching

    • Changed to use UserViewsApi instead of admin-only LibraryApi for more reliable library retrieval (Fixes #51)
    • Removed "Mixed" collection type from supported types
  • Better Post-Login Experience

    • Audiobookshelf libraries now automatically refresh immediately after login
    • More responsive user experience when connecting to Audiobookshelf
  • Reduced Log Noise

    • Changed decryption error logging to debug level for non-critical missing data scenarios

What's Changed

Full Changelog: v0.6.2-beta...v0.6.3-beta

v0.6.2-beta

11 Feb 05:09

Choose a tag to compare

Release Notes

Critical Bug Fixes

Important: This release fixes critical issues with Audiobookshelf podcast playback. Users are strongly recommended to update immediately.

  • Fixed Server Crash Issue
    Resolved a critical bug that could crash the Audiobookshelf server when starting podcast playback.

  • Fixed Podcast Playlist and Progress Tracking
    Completely overhauled podcast playlist handling and progress syncing.

    • Podcast playlists now correctly load the entire sorted episode list instead of single episodes
    • Each episode in a playlist is now tracked as a distinct playback session
    • Progress for individual episodes accurately saved to Audiobookshelf server
    • Proper session management when transitioning between episodes
    • Progress syncing now works correctly for all podcast playback scenarios

What's Changed

Full Changelog: v0.6.1-beta...v0.6.2-beta