github benjaminRoberts01375/Stingray v1.1.0

2 months ago

A wack ton of changes to the little things

Media

  • Added tone mapping support (Jellyfin doesn't really natively support HDR).
    • Only works when not transcoding video.
  • Improved next episode suggestion.
  • Support libraries with sub-folders.
  • Improve permissions for connecting to Jellyfin libraries.
  • Reset playback if the amount watched is less than 10% or greater than 90% watched.

UI

  • Media posters now correctly center their images.
  • Episodes with a non 16:9 aspect ratio thumbnails now have improved thumbnails.
  • Added server name to footer.
  • Display system info when Stingray fails to load.
    • Do not show Jellyfin server name or version when not filled out.
  • Remove references to collections.
  • Play buttons now dynamically show context menus based on media state.
Single Version of Media Multiple Versions of Media
Watched None single unwatched multiple unwatched
Watched Some single continue multiple continue
  • Correctly place specials in episode and season selector.
    Specials

  • Added Special Features for content that supports it.
    Special Features

Performance

  • Improved performance on the home screen.

Errors

  • Introduced "Recursive Errors" creating a stack trace of error chains.
  • MediaModel and SlimMedia are now much less likely to cause library loading failures.
  • Improved error display with new summary and detailed stack trace views.
New Error Summary New Stack Trace Error
New Error Message New Large Error Message

Bug Fixes

  • Play button is now much more likely to select the right episode.

Cleanups & DX

  • Abstracted the idea of Jellyfin ticks into TimeScale.
  • getUpNext(for season: any TVSeasonProtocol) has been moved into a dedicated extension for any TVSeasonProtocol arrays and renamed to upNext()
  • The MediaType enum now holds any TVSeasonProtocol
  • TVSeasonProtocol.id is no longer the ID provided by the server.
  • Use the TVSeasonProtocol's name instead of season number, and delete the season number field.
  • System info is now its own view.
  • New protocol: Displayable which ensures a data structure has an id, imageBlurHashes, and imageTags.
  • Rename the TopShelf's advanced network protocol to TopShelfNetworkProtocol for clarity.
  • Button functionality has been moved into the MediaCard to remove duplicate code.
  • Introduced decodeFieldSafely<T: Decodable>(_ type: T.Type, forKey key: Key, default defaultValue: T, errBucket: inout [RError], errLabel: String) to safely decode JSON fields, and add errors to an "error bucket".
    • The error bucket is an array of errors that can be checked at a later date. This allows for JSON to decode as best it can, continuing even if there are missing/incorrect fields along the way.
  • Document pretty much every model.

Don't miss a new Stingray release

NewReleases is sending notifications on new releases.