Skip to content

Ng changes#1

Merged
TrackArcher merged 53 commits into
mainfrom
ng-changes
Mar 29, 2026
Merged

Ng changes#1
TrackArcher merged 53 commits into
mainfrom
ng-changes

Conversation

@TrackArcher
Copy link
Copy Markdown
Owner

No description provided.

…rcular similar artists, and improved top songs display
…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
… 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.
- 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.
beeetfarmer and others added 23 commits February 20, 2026 03:49
- 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
@TrackArcher TrackArcher merged commit 5ffd38b into main Mar 29, 2026
3 checks passed
@TrackArcher TrackArcher deleted the ng-changes branch April 13, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants