Releases: MakD/AFinity
v0.7.1-beta
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
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
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
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
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
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
v0.6.1-beta
Release Notes
Major Changes
-
Enhanced Audiobookshelf Experience
Significant improvements to the Audiobookshelf integration with better navigation, progress tracking, and content discovery.- Unified Library View: Merged individual library screens into the main libraries tab with an A-Z scroller for quick navigation
- Episode Sorting: Sort podcast episodes by publication date, title, season, episode number, or filename (ascending/descending)
- Real-time Progress Updates: Progress indicators update automatically across the app without manual refresh
- Status Indicators:
- "Finished" badge on completed items
- Progress bars and remaining time on in-progress episodes
- Checkmark icons on finished episodes
- "Listen Again" for completed content, "Continue Listening" for in-progress
- Rich Metadata Display:
- Language indicators with flag icons
- Explicit content and abridged status chips
- Publisher, publication year, and tags
- Genre chips in item headers
- Improved Episode UI:
- Expandable episode descriptions with HTML rendering for links
- Episode lists are now in dedicated full-screen dialogues for better focus
- Individual progress tracking per episode
Minor Updates
- UI Refinements
- Progress bars repositioned as overlays on cover art for a cleaner look
- Improved duration formatting for chapters and episodes (e.g., "1h 30m", "< 1m")
- Better language code to flag resolution
- Updated explicit content icon design
- Performance Improvements
- Chapter and episode lists now use lazy loading for better performance with long lists
- Optimised state management for expanded episodes
What's Changed
Full Changelog: v0.6.0-beta...v0.6.1-beta
v0.6.0-beta
Release Notes
Major Changes
-
Audiobookshelf Integration (Optional)
Added support for connecting to Audiobookshelf servers for audiobook and podcast playback.Note: Audiobookshelf integration is completely optional. Afinity remains primarily a Jellyfin client. For any issues with this integration, please open bug reports in the Afinity repository, not the official Audiobookshelf repository.
- Connect Audiobookshelf server via Settings (credentials stored per Jellyfin user)
- Browse libraries with tabbed navigation (Home, Series, individual libraries)
- Genre-based discovery and series collections
- Dedicated audio player with background playback, media notifications, and lock screen controls
- Sleep timer, playback speed control, and chapter navigation
- Progress syncing with Audiobookshelf server
- Persistent mini-player for navigation during playback
- Integration with main search (includes Audiobookshelf content when searching)
- Automatic session management (closes when logging out or switching Jellyfin servers)
Minor Updates
- Code Quality: Added ktfmt for consistent code formatting across the project
- Icon Updates: Replaced Seerr icon with official logo, updated Audiobookshelf-related icons
- UI Refinements: Improved keyboard handling in bottom sheets, better notification permission flow
What's Changed
Full Changelog: v0.5.4-beta...v0.6.0-beta
v0.5.4-beta
Release Notes
Major Changes
- Advanced MPV Configuration Options
Introduced comprehensive MPV player configuration settings for enhanced control over playback performance and hardware compatibility.- Hardware decoding options: Disabled, MediaCodec, MediaCodec (Copy)
- Video output selection: gpu, gpu-next
- Audio output options: AudioTrack, OpenSL ES, AAudio
- Settings accessible when MPV is selected as the video engine
- Updated default configuration: MediaCodec (Copy) for hardware decoding, gpu-next for video output
- Audio and Subtitle Language Preferences
Implemented automatic track selection based on user-configured language preferences.- Configure preferred audio and subtitle languages in Player settings
- Language selection dialogue with search functionality
- Cross-engine compatibility (ExoPlayer and MPV)
- Subtitle track selector displays codec format (SRT, ASS, PGS) for improved identification
- Settings apply automatically at playback initialisation
Minor Updates
- Settings UI Refinements
- Implemented smooth animations for conditional settings visibility
- Improved visual feedback when toggling between player configurations
- Enhanced user experience for MPV options and subtitle styling controls
What's Changed
Full Changelog: v0.5.3-beta...v0.5.4-beta
v0.5.3-beta
Release Notes
Major Changes
- Resumable Downloads
Downloads can now be paused and resumed from where they left off, making the download process more robust and resilient to network interruptions.- Pause active downloads and resume later without starting over
- Downloads automatically resume from the last downloaded byte after failures
- Retry failed downloads with one tap
- Subtitles and audio streams are properly registered for offline playback
- Download controls now correctly operate on selected episodes
- Server-Scoped Downloads
The download system has been completely refactored to properly handle multiple servers and users.- Downloads, storage calculations, and offline content are now scoped to the active session
- Switching servers/users shows the correct download status for that session
- Storage usage is calculated separately per server
- Total storage display shows space used across all servers
- Offline content filtering works correctly per session
Note: Existing downloads from previous versions are now orphaned. Users are recommended to re-download content to correctly map downloads with their server and user account.
- Internationalization Support
Complete externalisation of UI strings to support future translations.- All user-facing text moved to string resources
- Centralised text management for easier maintenance
- Foundation for multi-language support
- Accessibility improvements with localised content descriptions
Minor Updates
- Downloads UI Redesign
- Modern unified StatusHub showing download usage, device storage, and settings
- Circular progress indicator for device storage visualisation
- Cleaner card designs for active and completed downloads
- Device storage stats now displayed
- Wi-Fi Only Downloads
- New setting to restrict downloads to Wi-Fi connections
- Warning displayed when allowing mobile data downloads
- Prevents unexpected mobile data charges
- Collections Sorting
- Collections now sorted by release date for chronological order
Performance Improvements
- Live TV Optimisations
- Faster channel availability check with reduced data transfer
- Reduced "On Now" program limit from 50 to 20 for better performance
Bug Fixes
- Fixed discovered servers using name/ID instead of network address for connection
- Fixed layout shift on login screen during server discovery
What's Changed
- Translations update from Hosted Weblate by @weblate in #41
- Translations update from Hosted Weblate by @weblate in #42
New Contributors
Full Changelog: v0.5.2-beta...v0.5.3-beta