Ng changes#1
Merged
Merged
Conversation
…rcular similar artists, and improved top songs display
…, and refined mini player UI
…hreshold setting - update artist images to circular shape across library and dialogues - center artist names below images in library and catalogue - improve player visibility in light mode by using theme-aware colors - fix favorite button state synchronization between mini and full player - add user-configurable scrobble threshold percentage setting
- Move title and artist labels 10dp down in now playing screen - Update project to use Java 17 for compilation and Kotlin - Refactor player controller layout and logic for improved UI and overflow menu
- Add support for up to 7 configurable metadata fields in Now Playing screen - Implement MetadataConfigurationFragment for reordering and toggling fields - Add preferences for metadata field order and visibility - Dynamically update player UI when metadata preferences change - Include file format suffix in bitrate metadata field - Adjust Now Playing layout for better spacing with dynamic content - Fix play count display by using long instead of int
- Implement real-time search filtering in playlist chooser dialog - Add a direct 'Add to Playlist' button to the Now Playing screen - Refactor player controller to handle dynamic metadata and direct playlist actions - Fix layout constraints and namespaces in dialogs
- Add 'Sequential (Like Spotify)' play next behavior with automatic reset on song transition - Fix crash when using mini player controls after app restart by using MediaBrowser directly - Ensure music stops correctly when app is swiped away from recent tasks - Add safety null checks in PlayerControllerFragment to prevent initialization crashes
…gs to home screen
… management - Added playlist pinning with Room persistence (added songCount and duration columns) - Bumped database version to 15 to handle schema changes and clear duplicates - Enhanced PlaylistCatalogueFragment with long-click popup menu for Pin/Unpin, Edit, and Delete - Improved Home screen Pinned Playlists section to sync with local pinned state - Optimized updatePlaylist to rename on server and sync local database without creating duplicates - Fixed a NullPointerException crash in HomeTabMusicFragment when clicking tracks while sections are hidden
… PlaylistChooserDialog - Added checkbox-based multi-selection for playlists in Add to Playlist dialog - Implemented consolidated summary feedback including playlist names for added/skipped/failed tracks - Updated PlaylistRepository to support callbacks for asynchronous batch operations - Enhanced DialogFragment logic to ensure custom layout is used correctly and dialog persists until batch completion - Added Italian translations for new feedback strings
…aylist tabs - Added global playlistUpdateTrigger in PlaylistRepository to notify listeners of changes - Integrated automatic server sync for pinned playlists when changes are detected - Updated PlaylistCatalogueViewModel and HomeViewModel to auto-refresh data on playlist modifications - Ensured track counts and durations update instantly after batch song additions - Added manual background refresh for pinned playlists on Home tab creation
- Implemented global star rating display for tracks across all lists and dialogs - Reduced favorite heart icon size from 18dp to 14dp for better visual balance - Fixed missing ratings in Home tab (History/Top Songs) by mapping Navidrome 'rating' field - Improved real-time playlist updates by making allPlaylistsLiveData static in PlaylistRepository - Fixed playlist search/filter logic and improved RecyclerView layout constraints
- 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
Adds a Last.fm API integration that fetches and displays the user's scrobble count for the current track. Settings provide username and API key fields. Multi-artist names are split to use the first artist.
Allow sorting playlist songs by Default (server order), Artist (first artist alphabetically), or Title via a toolbar sort icon.
Replace nested PreferenceScreen navigation with a ChipGroup of 4 tabs (Appearance, Library, Playback, General). Consolidate 6 categories into 4, remove section dividers, and add content insets for card backgrounds.
Add app-wide event channels in MediaManager for favorite and rating changes so all screens update immediately without re-fetching from the server. Fix play count display using a session-scoped increment map to keep the count accurate across metadata rebuilds and in the track info dialog.
…fo to song bottom sheet
- Migrate password, token, salt, and Last.fm API key to EncryptedSharedPreferences (AES256-GCM) with automatic migration from plaintext prefs on first launch - Gate all four HTTP logging interceptors on BuildConfig.DEBUG; use NONE in release to prevent credentials and responses leaking to logcat - Add input validation to AlbumArtContentProvider: reject invalid URIs, null/empty album IDs, and path-traversal attempts - Remove android:usesCleartextTraffic="true" from main manifest (network_security_config handles this); remove user CA trust anchor from release config; add debug-only override that restores user CA trust for development - Move Google Cast meta-data from main manifest to tempus-flavor manifest so the degoogled build has zero Google service references - Enable -renamesourcefileattribute SourceFile in ProGuard; add keep rules for security-crypto and Tink; add -dontwarn for Tink optional deps that cause R8 failures (com.google.api.client, org.joda.time) - Remove Log.d/Log.e calls from NavidromeClient and Preferences that logged server URLs, auth-adjacent state, and sort preferences unconditionally - Downgrade okhttp3:logging-interceptor from 5.0.0-alpha.14 to stable 4.12.0 - Add @IgnoredOnParcel to Playlist.isPinned (was missing alongside @ignore) - Remove Albums dock item option from DockConfigurationFragment - Update settings screen: remove Community/Support and unDraw sections, move version entry into Info section; update GitHub links to fork URL - Bump version name to 0.1.0
…zontalAdapter - Remove getItemViewType() override that returned position — RecyclerView treated every row as a unique type and could never recycle ViewHolders, causing unbounded allocations on large lists (e.g. 500 songs = 500 ViewHolder instances, zero reuse) - Cache ic_star and ic_star_outlined drawables once in onCreateViewHolder instead of calling AppCompatResources.getDrawable() five times per bind - Cache DownloadTracker reference instead of fetching it on every bind - Replace notifyDataSetChanged() with DiffUtil in publishResults() and sort() so only changed rows are redrawn; remove the redundant notifyDataSetChanged() from setItems() - Add SongDiffCallback using song ID for identity and relevant fields for content equality - Remove Log.i/Log.e from onClick
Building and signing releases locally instead of via CI. Added *.keystore to .gitignore to prevent accidental commits of signing keys.
- rename app display branding strings across locales to Rollynn - update client and network user-agent identifiers to Rollynn - bump app version to v0.2.0 (versionCode 24) - enlarge now-playing album art area and reduce spacing to metadata
- apply accent-aware player background color to expanded player and system bars - prevent collapsed mini-player area tint leak by keeping sheet root transparent - enforce strict player metadata text colors (black in light mode, white in dark mode) - remove top spacing artifact between status bar and player content
- align player spacing and controls, and keep track info button on cover page only - update system bar color handling to follow app theme/player context with proper icon contrast - stabilize starred tracks sampling/loading and keep latest releases carousel sizing consistent
Increase cover-art HTTP timeout from 1.2s to 8s and remove long-lived failed-request suppression in IPv6StringLoader to prevent valid artist images from being skipped on slower networks.
Resolve landscape player crashes by making controller view bindings type-safe and null-safe across orientation-specific layouts. Improve mini-player sizing logic in landscape and lock MainActivity to portrait to prevent broken rotated UI.
# Conflicts: # README.md # app/build.gradle # app/schemas/com.cappielloantonio.tempo.database.AppDatabase/14.json # app/src/main/java/com/cappielloantonio/tempo/App.java # app/src/main/java/com/cappielloantonio/tempo/database/AppDatabase.java # app/src/main/java/com/cappielloantonio/tempo/provider/AlbumArtContentProvider.java # app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java # app/src/main/java/com/cappielloantonio/tempo/subsonic/RetrofitClient.kt # app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java # app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistHorizontalAdapter.java # app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java # app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java # app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt # app/src/main/res/layout-land/activity_main.xml # app/src/main/res/layout-land/inner_fragment_player_controller_layout.xml # app/src/main/res/layout/activity_main.xml # app/src/main/res/layout/fragment_settings.xml # app/src/main/res/layout/inner_fragment_player_controller_layout.xml # app/src/main/res/values-es-rES/strings.xml # app/src/main/res/values-ru/strings.xml # app/src/main/res/values/strings.xml # app/src/main/res/xml/global_preferences.xml
# Conflicts: # README.md # app/src/degoogled/java/com/elzify/music/ui/fragment/ToolbarFragment.java # app/src/main/java/com/elzify/music/App.java # app/src/main/java/com/elzify/music/broadcast/receiver/ConnectivityStatusBroadcastReceiver.java # app/src/main/java/com/elzify/music/database/AppDatabase.java # app/src/main/java/com/elzify/music/database/dao/ScrobbleDao.java # app/src/main/java/com/elzify/music/interfaces/HomeRearrangementCallback.java # app/src/main/java/com/elzify/music/model/Scrobble.kt # app/src/main/java/com/elzify/music/repository/LrcGetRepository.java # app/src/main/java/com/elzify/music/repository/SongRepository.java # app/src/main/java/com/elzify/music/service/BaseMediaService.kt # app/src/main/java/com/elzify/music/subsonic/RetrofitClient.kt # app/src/main/java/com/elzify/music/ui/activity/MainActivity.java # app/src/main/java/com/elzify/music/ui/activity/base/BaseActivity.java # app/src/main/java/com/elzify/music/ui/adapter/AlbumCarouselAdapter.java # app/src/main/java/com/elzify/music/ui/adapter/ArtistCarouselAdapter.java # app/src/main/java/com/elzify/music/ui/adapter/SongHorizontalAdapter.java # app/src/main/java/com/elzify/music/ui/dialog/HomeRearrangementDialog.java # app/src/main/java/com/elzify/music/ui/dialog/TrackInfoDialog.java # app/src/main/java/com/elzify/music/ui/fragment/ArtistPageFragment.java # app/src/main/java/com/elzify/music/ui/fragment/DockConfigurationFragment.java # app/src/main/java/com/elzify/music/ui/fragment/HomeTabMusicFragment.java # app/src/main/java/com/elzify/music/ui/fragment/MetadataConfigurationFragment.java # app/src/main/java/com/elzify/music/ui/fragment/PlayerBottomSheetFragment.java # app/src/main/java/com/elzify/music/ui/fragment/PlayerControllerFragment.java # app/src/main/java/com/elzify/music/ui/fragment/PlayerCoverFragment.java # app/src/main/java/com/elzify/music/ui/fragment/PlaylistCatalogueFragment.java # app/src/main/java/com/elzify/music/ui/fragment/PlaylistPageFragment.java # app/src/main/java/com/elzify/music/ui/fragment/SettingsFragment.java # app/src/main/java/com/elzify/music/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java # app/src/main/java/com/elzify/music/viewmodel/HomeViewModel.java # app/src/main/java/com/elzify/music/viewmodel/PlayerBottomSheetViewModel.java # app/src/main/java/com/elzify/music/viewmodel/PlaylistChooserViewModel.java # app/src/main/java/com/elzify/music/viewmodel/RatingViewModel.java # app/src/main/java/com/elzify/music/viewmodel/SongBottomSheetViewModel.java # app/src/main/java/com/elzify/music/viewmodel/SongListPageViewModel.java # app/src/main/res/values-ca/strings.xml # app/src/main/res/values-de/strings.xml # app/src/main/res/values-es-rES/strings.xml # app/src/main/res/values-fr/strings.xml # app/src/main/res/values-it/strings.xml # app/src/main/res/values-ko/strings.xml # app/src/main/res/values-pl/strings.xml # app/src/main/res/values-pt/strings.xml # app/src/main/res/values-ro/strings.xml # app/src/main/res/values-ru/strings.xml # app/src/main/res/values-tr/strings.xml # app/src/main/res/values-zh/strings.xml # app/src/main/res/values/strings.xml # app/src/main/res/xml/global_preferences.xml # app/src/tempus/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.