* update Tanstack
fix issue where tracks didn't restore properly, meaning that playback on a cold start wasn't possible
styling changes to bottom tab bar icons, settings tab pages
network context optimization
* miniplayer optimizations, adding performance monitor in more places
* mini player styling
* tab navigation styling
item context query optimization
* Fix issue where add to playlist could be cut off when there are a lot of playlists
resize card on discover and home screens
removes hooks from player provider in lieu of nonreactive functions and data fetching. In testing this fixed the issue where the player provider was rerendering when the queue or the currently active track changed
Use a UUID to distinguish between DeviceProfiles, not the name. This means that media info from Jellyfin will be properly refetched if the user selects a different audio quality
mini player rendering optimization fixes, since we don't need that rerendering 4 times a second when updates are only distinguishable every whole second. Also brings some style fixes that reduces vertical height usage
update sentry sdk while we're in there doing debugging
Add lyrics support in the player!
Adds a new button to the bottom of the player that will appear if lyrics are available for a song
Hitting the button will move the user to a new screen in the player stack that will show an animated view of the song's lyrics
Remove Home and Library Context Providers, move their data fetching functionality to reusable Tanstack Query hooks
Fix an issue playlists not showing up after creating
fix issue where the home screen didn't fully load on sign in
will use and store data retrieved from the server first, else will rely on a fetch
this addresses battery life issues, as these queries were firing network requests far more frequently and for each item, causing unnecessary network usage and overhead
update tanstack query to the latest while we're in there
Refactors haptic feedback usage to use a hook that will determine based on the user input if a haptic feedback event should be triggered. This fixes the issue where users would get haptic feedback even if the toggle for reducing it was enabled
Refactors login flow to use external hooks to clean up components and split display vs functional logic
Fixes DNS lookups in login flow. Now when a hostname connection fails, Jellify will properly perform a DNS lookup to determine the proper IP address of the Jellyfin server
This should address issues with users connecting over Tailscale or relying on a custom DNS entry configured locally
* update react navigation
Get alphabetical selector working for albums. Now an A-Z will appear to the right of the albums list and users can use that to get to a certain letter of albums in the list
Under the hood - also updates the dependencies for React Native and Tanstack Query
Make gesture in the alphabetical selector better, especially when tapping on a letter. When users tap on a letter now, they will be brought to that section of the artists list
Fix issue where Artists in the Library would show "0 Albums". This will now instead display the artist's genres instead
Moves the network status state to a Zustand Store for better reusability and to reduce the complexity of the network context
No new user facing changes
*Mostly* backend work in the settings tab
Migrate settings context over to MMKV backed Zustand store. Update hooks as needed
Update info tab styling - making the patreon patrons list it's own section. A perfect time to remind everyone you can sponsor Jellify on GitHub or Patreon :)
Joining the patreon as a paid member will get your name displayed in the info area of the settings tab
Implements proper server negotation for performing transcoding
Depending on the user's platform (i.e. iOS, Android) and the desired quality specified in the settings, Jellify will playback a transcoded audio file from Jellyfin
This is helpful when the source audio file is not compatible with the user's device (i.e. playing back an ALAC encoded .M4A on Android) or if the user want to stream at a lower quality to save bandwidth
This also drives downloads in different qualities, meaning the download quality selector in the Settings is now working properly. When a track is downloaded, it will download at the quality selected by the user, and in a format compatible with the device
There is also a toggle in the "Player" Settings for displaying a badge in the player that shows the quality and container of the audio being played
Adds Google Cast Speaker Support!
A new button is now present in the bottom left of the player screen. Pressing this button will prompt the user to pick a Cast enabled speaker. Once a speaker is selected, the player controls in Jellify will control the playback of the Cast speaker.
Fix an issue where the queue didn't restore on opening the app
Add download button to the item menu - this works for tracks and albums
Fix issue where playback would start automatically on android
* player style fixes
* fix content sheet for android
* context sheet prefetching in item card, item row, and track components
context sheet header styling
fix issue where nowplaying was incorrect after the queue was initialized from storage