* feat: collect and save client certificate
* feat: use client certificate for Retrofit, Glide and ExoPlayer
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* Add Android Auto icons and improve media service browsing
* chore: changelog and build updated for release
* add grid/list setting for playlist, podcast and radio
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: enhance navigation
* fix: leaving settings always unlocks drawer
* feat: set app settings inside a frame layout
In order to add a toolbar with a back button in settings I needed to extend from a fragment
so I converted SettingsFragment into a fragment and created SettingsContainerFragment,
the latter is injected as a child of SettingsFragment inside a FrameLayout.
Since SettingsContainerFragment extends from PreferenceFragmentCompat, this allows
to swap it for other and, in the bigger picture, allow an arbitrary organization.
* fix: onStop declaration on wrong class
* fix: equalizer not respecting navigation ui directives
* Revert "fix: equalizer not respecting navigation ui directives"
This reverts commit eeb125542d41760059e3a7c7653abf4d54a538f0.
* fix: navbar + bottom sheet behavior on equalizer fragment
* Revert "fix: onStop declaration on wrong class"
This reverts commit 34d354d8039ac70798b880bf99c808ef00a1e330.
* Revert "feat: set app settings inside a frame layout"
This reverts commit 52cfd36b09c461de72bed9b07a8c8852856c3421.
* chore: set experimental label to settings title
Hide bottom navigation bar on portrait and unlock drawer on portrait
* feat: implement track removal from playlists with real-time UI updates
- Added 'Remove from playlist' option to song bottom sheet (appears only when inside a playlist)
- Implemented immediate UI refresh for track count and duration in playlist header
- Fixed a bug where shuffling for covers scrambled the actual playlist song order
- Improved PlaylistPageViewModel to clear stale data and handle isolated updates correctly
- Added dedicated success/failure messages for track removal in English and Italian
- Unified heart icon size to 14dp across all track list items
* fix: missing code from port process
The cherry-pick was missing the database getter
and the function to remove a song from a playlist
---------
Co-authored-by: beeetfarmer <176325048+beeetfarmer@users.noreply.github.com>
* feat: radio logos support for AndroidAuto
* resolve a merge conflict.
* fix auto lint
* fix auto lint
* fix auto break line
* fix auto break line
* fix auto break line
* fix: add alternate serialized name for InternetRadioStation homePageUrl to support both `homePageUrl` and `homepageUrl` JSON keys.
* improve internet radio station cover art handling by prioritizing home page URLs
* fix: remove unnecessary blank line and adjust formatting in MusicUtil
* refactor: improve formatting and clean up whitespace in MappingUtil and MusicUtil
* fix: lock buttons at dialog bottom
The previous implementation appended the buttons to the RecyclerView programmatically
this disabled the scroll and pushed the buttons outside the visible dialog area
if too there were too many playlists.
To fix this now the XML defines a fixed location for the buttons, enabling
the scroll of the RecyclerView and preventing the buttons to become unreachable
* feat: improve playlist chooser dialog UI
Implement it in the XML layout and not programmatically.
* fix: detached listeners from XML layout
* fix: missing dialog title
* feat: support dynamic metadata for internet radio stations
- Implemented `onMetadata` in `BaseMediaService` to extract "Artist - Title" info from ICY, ID3, and Vorbis streams.
- Added a fallback mechanism to periodically check HTTP headers (e.g., `icy-name`, `StreamTitle`) for radio metadata.
- Updated `PlayerControllerFragment` and `TrackInfoDialog` to display the station name alongside dynamic track information.
- Enhanced `TrackInfoDialog` layout to include a dedicated "Station" field for radio tracks.
- Modified `MappingUtil` to preserve station names in media metadata extras.
* fix crashing issue
* radio bob metadata works now. fix crashing issue
* Fixing unchecked operation warnings in SongHorizontalAdapter.java.
* optimizing a bit and better format for notification
* removed xml files affecting build and enviroment
* removed xml files affecting build and enviroment
* fix ui internet radio bottomview
* Revert "fix ui internet radio bottomview"
This reverts commit c237ed451ff436f4be964084b144d94f1ad37668.
* rebased to upstream/development and fixed metadata to show up for radio after the rebase
* misc.xml restored
* Apply suggestion from @eddyizm
---------
Co-authored-by: eddyizm <wtfisup@hotmail.com>
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: increase items per row on landscape view
This covers the catalogues: artist, album and genre; also the list of albums on artist view.
This was implemented by adierebel/tempo fork, I only cherry-picked some commits.
Co-authored-by: adierebel <adie.rebel@gmail.com>
* feat: add landscape layout to song listing views
This includes the playlist page and the album page.
* fix: bad scaling on small screens
This rollbacks to the original code by adierebel/tempo fork
* fix: remove hardcoded height blocking scroll
This was addressed in 989ca35, forgot to fix it here as well
* fix: wrap content height rather than inheriting it from parent
* feat: add ui of choice selector in setting for items per row
* feat: link getter to landscapes items per row setting an implement it
* fix: wrong default value
Co-authored-by: eddyizm <wtfisup@hotmail.com>
* feat: add default value on setting string
To introduce the new feature of landscape layouts.
Co-authored-by: eddyizm <wtfisup@hotmail.com>
---------
Co-authored-by: adierebel <adie.rebel@gmail.com>
Co-authored-by: eddyizm <wtfisup@hotmail.com>
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: add selector for playlist visiblity when adding a song
* fix: wrong number of arguments
* feat: make dialog text localized
* chore: add es, fr, it, pt localization for playlist visibility dialog
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feature: click on synced lyrics to navigate in song
* only update lyrics if needed
improves performance and allows user to scroll synced lyrics
* fix: don't scroll to start after end of song
Enable playback speed controls for music
Button is moved to the top left, next to bit rate, because it would
overlap with the "shuffle" button.
The speed rotation logic was cleaned up to 0.25x increments without all
the hard-coded constants and code duplication.
Co-authored-by: eddyizm <eddyizm@gmail.com>
* Add toast message for no artist info
* Add French strings for instant mix generation messages
* Add French string for music download directory
* Add neutral button string for download storage dialog
* Add French strings for download refresh features
* Add French translations for heart controls and loading
* Update French strings for starred albums and artists
* Add album count string to French resources
* Add French translations for player lyrics features
* Update French strings for pluralization and playlist
* Fix French translation for podcast info title
* Add and update French radio station strings
* Add settings for playlist duplicates in French strings
* Add download folder settings in French strings
* Add download folder settings and update equalizer summary
* Add support discussion and update strings in French
* Update French strings for UI elements
Updated French translations for heart control descriptions, mobile bitrate settings, queue syncing title, and added mini shuffle button settings.
* Update French strings for settings and lyrics
* Update French strings for offline sync settings
* Add playlist string to French resources
* Add French translations for asset links
* Revise French subtitles for starred artists and albums
Updated subtitles for starred artists and albums in French localization.
* Add French strings for widget and settings