93 Commits

Author SHA1 Message Date
Violet Caulfield 7e897aab75 Bugfix/support albums in carplay (#888)
* lots of carplay stuff

* dehookify, carplayify

* player rerender and hook optimization

* make query fetching a lot lazier

* flex miniplayer better

* persistence settings, player screen optimizations

* rollback tamagui upgrade

* fix tests

* fixing add to playlist sheet when there are a lot of playlists

* make the add to playlist mutation less dependent on hooks

* carplay enhancements

* add autoscroll to queue screen

* fix queue autoscroll

* fix unnecessary rerenders

* organize utils folder better

make artist name joining consistent

* fix entire list rerendering on reorder in queue
2026-01-02 10:21:01 -06:00
Violet Caulfield d06e6f36fc Feature/flatten recently played tracks into albums (#878)
* Flatten Multiple Recently Played Tracks into Albums

Flattens multiple recent tracks from the same album into an album navigation card

This one is for you Quen <3

When 3 songs or more from an album are in the recently played section, their album will be rendered instead

* fix navigation in the "play it again" list

* fix playing back stuff

* fix playback indexes for recently played

* fixes to the recently played flashlist

* calm it down on animations lol

* make the item context fire less often

* dememoize and stylize

* make this warm context fire less

* animation changes

* smol animation fixes

* adjusting query staletimes

* make the suggestions query fire once a day

* fix jest

* remove useCallback hooks

* fix key usage here

* I don't think these are necessary since we have a separate query for handling user data

* just to compare

* de memoize some more stuff

* fix this button finally

* put this nitro adapter back in

* git blame pikachu

* bruh

* fix up, clean up

* dehookify

* dehookify more

* add track press

* remove some more imports

* styling consitency

* search page improvements

* smol fixes
2025-12-30 16:27:09 -06:00
Violet Caulfield a84986ae6e RN Upgrade, Tidying Up Configs (#875)
* react native upgrade

tidying up configs and moving to the config folder

* remove unneeded patch file and dns dependencies
2025-12-28 18:12:19 -06:00
Violet Caulfield b71708afaf Bump some Deps, Fix some Shit (#864)
update some dependencies (pager view, nitro ota)

adjustments to carplay setup
2025-12-21 22:05:23 -06:00
skalthoff 238dd0340a Fixing Le Bugers: UI Polish & Performance Tuning (#724)
* fix: update sort icon name and label in ArtistTabBar

* fix: optimize image URL generation and improve performance in Playlists and Tracks components

* homescreen improvements

* deduplicate tracks in FrequentlyPlayedTracks and RecentlyPlayed components

* enhance storage management with versioning and slimmed track persistence

* refactor HorizontalCardList to allow customizable estimatedItemSize

* update sort button label in ArtistTabBar for clarity

* refactor media info fetching and improve search debounce logic

* refactor navigation parameters in artist and track components for simplicity

* refactor PlayPauseButton to manage optimistic UI state and improve playback handling

* Cut queue remap churn, speed lyric lookup, clean cast listener cleanup, and avoid redundant HEADs on downloads

* Revert "Cut queue remap churn, speed lyric lookup, clean cast listener cleanup, and avoid redundant HEADs on downloads"

This reverts commit 1c63b748b6.

* Cut queue remap churn, speed lyric lookup, clean cast listener cleanup, and avoid redundant HEADs on downloads

* Revert "Cut queue remap churn, speed lyric lookup, clean cast listener cleanup, and avoid redundant HEADs on downloads"

This reverts commit f9e0e82e57.

* Reapply "Cut queue remap churn, speed lyric lookup, clean cast listener cleanup, and avoid redundant HEADs on downloads"

This reverts commit 6710d3404c.

* Update project configuration: refine build phases, adjust code signing identity, and format flags

* Fix TypeScript errors in Search component and improve playback state handler in Player queries

* Refactor ItemRow component to accept queueName prop and update queue handling

* lot's o fixes to item cards and item rows

* memoize tracks component

* fix jest

* simplify navigation in FrequentArtists, FrequentlyPlayedTracks, RecentArtists, and RecentlyPlayed components

* Update axios version and enhance image handling options in components

* Enhance ItemImage component with imageOptions for better image handling in PlayerHeader and Miniplayer

* moves buffers to player config

---------

Co-authored-by: Violet Caulfield <42452695+anultravioletaurora@users.noreply.github.com>
Co-authored-by: Violet Caulfield <violet@cosmonautical.cloud>
2025-12-03 20:07:30 -06:00
skalthoff 86788ba919 add appKilledPlaybackBehavior to stop playback and remove notification on app kill (#720)
* add appKilledPlaybackBehavior to stop playback and remove notification on app kill

* add additional RNTP mocks

---------

Co-authored-by: Violet Caulfield <42452695+anultravioletaurora@users.noreply.github.com>
2025-11-24 20:26:05 -06:00
Ritesh Shukla ca46bc2054 Make violet suck less (#708)
making the queue list items more easily dragged
2025-11-23 08:40:07 -06:00
skalthoff b378799d55 add OLED theme support and update theme settings (#611) 2025-10-28 22:42:36 -07:00
Violet Caulfield b5104ef76f Dep Updates, Smol Bug Fixes (#550)
* fixes to query gctime

ios project updates

dependency updates

fix issue where long pressing on an item row wouldn't show the correct item

* 1 -> 2 column patreon member list
2025-10-05 13:25:39 -05:00
Violet Caulfield 74efea0ebc Settings refactor to zustand + MMKV (#495)
*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
2025-08-28 22:24:53 -05:00
Violet Caulfield 2961ca39bb Introduction of Transcoding Support (#490)
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
2025-08-28 13:04:38 -05:00
Violet Caulfield ec07b47b6f Player Rewrite (#484)
Rewrite player backend to be more efficient on CPU usage and memory usage
2025-08-25 14:32:34 -05:00
Violet Caulfield 1d0641f2ae lots of context prefetching and favorites prefetching improvements 2025-08-20 21:33:04 -05:00
Violet Caulfield 8a191b91ab context sheet prefetching
unit tests

update rn screens
2025-08-20 15:02:52 -05:00
Violet Caulfield 0d66f59798 restore progress update event interval 2025-08-18 02:57:02 -05:00
Violet Caulfield 05966f2d60 gctime fix 2025-08-17 12:31:40 -05:00
Violet Caulfield 5a723bcefe getting context sheet navigation to work 2025-08-15 11:32:13 -05:00
Violet Caulfield b6eda3ee8a player fixes, test fixes 2025-08-14 09:39:49 -05:00
Violet Caulfield aefcef4aed navigation stack refactor 2025-08-14 06:29:01 -05:00
Violet Caulfield 8ee7c93f22 player context selector 2025-08-12 20:24:17 -05:00
Violet Caulfield a9d103b3b3 Fix TextTickers, MP3 Playback Fixes, Fix Blurred Background in Player (Android), Audio Normalization (#471)
Deps updates, fixes text tickers not ticking

Fix blurred background on android

fix library selector being disabled when multiple libraries do exist

Fix issue where mp3 containers ('mpeg') would crash the app

* update readme, fix maestro
2025-08-09 12:32:09 -05:00
Violet Caulfield 9df5b0aa7f add library flow, organize login files (#456) 2025-07-24 03:45:25 -05:00
Violet Caulfield 2f3f290850 Style Enhancements, Dependency Upgrades (#437)
update deps

small styling changes for text

make password a secure text entry always

fix signOut, update maestro tests
2025-07-13 14:04:18 -05:00
Violet Caulfield 3a7fe51e8f 0.13.0 (#428)
* Gapless playback (#372)

* Add gapless playback prefetch logic for next track

* Enhance player context to support multiple track downloads and prevent redundant prefetching

* Add download quality settings and integrate into track mapping and network contexts (#386)

* Add Shuffle

* Add Library Selection screen and navigation to account tab

* player redesign featuring blurred background artwork

* add repeat modes to player
2025-07-07 16:47:55 -05:00
Ritesh Shukla 506a4606c9 Add Strict Mode (#411) 2025-06-10 14:42:22 -05:00
Ritesh Shukla 20937ff359 Implement OTA Updates (#364)
Implements OTA updates, fetched via GitHub from our `App-Bundles` repository

All Typescript changes can be delivered this way

All native changes will need to go through the traditional `publish-beta` workflow, which is now run manually
2025-05-15 11:04:50 -05:00
Violet Caulfield b5ea805c32 Update success color for light mode (#351)
Update success color on light mode - it's a bit too bright

Headway on custom theme support

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 05:09:00 -05:00
Violet Caulfield b455208588 Update React Native to 0.79.2, Bump Dependencies, Updates to Settings Tab, Add opt in Logging and telemetry (#338)
Welcome to Jellify 0.12.2!

This update comes with a much anticipated developer feature - and that is opt-in logging and telemetry. This is purely an opt-in feature, and can be toggled at anytime either when logging in for the first time, or in the settings tab. Under no circumstances will this ever be required to use Jellify, and all data that is collected is anonymized

The Settings tab has had a facelift, stealing design queues from the library page. This is where adjustable settings will make their home in updates to come, as well as how beta testing larger features will occur with “Labs”

This update also fixes issues with playback reporting, where the Jellyfin server wasn’t marking songs as played. This was not intended and has been fixed for those using the Last.FM plugin for scrobbling

There is also a slew of upgrades to underlying dependencies to make sure we are up to date on that front 

Thanks for reading! ~Violet
2025-05-10 03:01:06 -05:00
Violet Caulfield 8a69960a97 Add Revamped Library, bugfixes (#333)
Adds a revamped library page - where items aren't limited to just a user's favorites.

Fixes scrubber lag in player screen

Reorganizes component folder into separate components - providers - screens for better visibility and separation of concerns

Addresses some styling issues with text and font legibility
2025-05-09 08:06:35 -05:00
Violet Caulfield ae7aef5df3 Instant Mix Buildout, Fix Android Playback Controls, Update Toast Styling (#316)
Adds an Instant Mix Button and Screen - users can view an instant mix from the album page by tapping on the Compass icon (which is styled for Dark and Light mode, respectfully)

Fixes Android playback controls not showing up - this is a regression introduced by React Native's New Architecture and is being rolled back. A future update will fix this and get Android builds back on the New Architecture

Adds Tamagui styling to toasts so that they are more homogenous with the rest of the UI
2025-05-01 10:46:03 -05:00
Ritesh Shukla 100acd7641 Remove Expo + Code Cleanup +. Test Cases Fix (#312) 2025-05-01 03:22:45 -05:00
Violet Caulfield 34382d45a9 UI Overflow Fixes, Move Source to src Folder (#311)
Fix issue where player elements would be falling off of the screen

Move source files into `src` folder for project organization
2025-04-30 10:40:31 -05:00
Ritesh Shukla 6b0706d730 Error Boundary Addition (#297)
Error Boundary addition - if _Jellify_ encounters a fatal error - users will be given the ability to reload the app

---------

Co-authored-by: Ritesh Shukla <ritesh.shukla2@M-LD4JMWLW26.local>
Co-authored-by: Violet Caulfield <42452695+anultravioletaurora@users.noreply.github.com>
2025-04-28 08:22:49 -05:00
Violet Caulfield a08e66546c Offline Mode MVP (#272)
* OfflineMode

* Template addition and Fixes

* More Changes

* More Changes

* smol updates to provider

run yarn format

* update internet connection watcher colors and verbiage

remove react native file access dependency

* Offline changes

* UI tweaks for offline indicator

* get jest to pass

---------

Co-authored-by: Ritesh Shukla <ritesh.shukla2@129net231.unica.it>
Co-authored-by: Ritesh Shukla <ritesh.shukla2@M-LD4JMWLW26.local>
Co-authored-by: Ritesh Shukla <75062358+riteshshukla04@users.noreply.github.com>
2025-04-22 12:07:55 -05:00
Violet Caulfield d8d2336806 we'll need to bust the cache for this upgrade 2025-04-16 14:43:39 -05:00
Violet Caulfield f7f8f7fda7 remove unused import 2025-04-11 08:19:33 -05:00
Violet Caulfield b1153e4dc4 fix ios 2025-03-29 09:29:44 -05:00
Violet Caulfield 4abb2ca33f caching changes 2025-03-27 06:08:36 -05:00
Violet Caulfield 46a1f8737d busted 2025-03-26 06:39:56 -05:00
Violet Caulfield 7096a72a69 cache performance tuning 2025-03-26 06:23:55 -05:00
Violet Caulfield bca262d66b tanstack query optimizations 2025-03-25 20:55:00 -05:00
Violet Caulfield 57062ff9d0 set max age on persistence 2025-03-24 23:00:32 -05:00
Violet Caulfield cddcd59ddb fix issue where playlists were created publicly by default 2025-03-22 10:23:32 -05:00
Violet Caulfield 1ec875faa7 add background runtime to jellify 2025-02-16 11:36:35 -06:00
Violet Caulfield 5af2099f03 player init stuff 2025-02-15 12:58:44 -06:00
Violet Caulfield 287c75cc4c fix build 2025-02-15 07:49:20 -06:00
Violet Caulfield faf1d1fe3f move player init 2025-02-15 07:47:56 -06:00
Violet Caulfield 5ec3253fc1 fix build? 2025-02-10 07:33:11 -06:00
Violet Caulfield 06867da3f3 move some stuff to the background threadc 2025-02-09 17:22:26 -06:00
Violet Caulfield 0d387bdcb2 Fix gesture handler 2025-02-03 23:00:41 -06:00