Skip to content

Little fixes everywhere 2#987

Merged
theovilardo merged 6 commits intomasterfrom
little-fixes-everywhere-2
Feb 5, 2026
Merged

Little fixes everywhere 2#987
theovilardo merged 6 commits intomasterfrom
little-fixes-everywhere-2

Conversation

@theovilardo
Copy link
Copy Markdown
Owner

General fixes and added littel features

- **Settings & UI Structure**:
    - Refactors `SettingsCategoryScreen` to use a new `SettingsSubsection` component, grouping related settings into titled blocks (e.g., "Library Structure", "Sync and Scanning", "Global Theme").
    - Reorganizes various settings items (Excluded Directories, Artists, Lyrics Priority, etc.) into these subsections for better visual hierarchy.
    - Adds a new "Maintenance" section in Developer settings for forcing daily mix and stats regeneration.
- **Navigation**:
    - Implements custom horizontal slide and fade transitions for the main root screens (Home, Search, Library) in `AppNavigation`.
    - Introduces `mainRootDirection` logic to determine slide direction based on tab index, ensuring a consistent spatial mental model when switching tabs.
- **Library Screen**:
    - Increases the font size of album titles in the library view from `18.sp` to `22.sp`.
    - Adjusts spacing between album titles and artist names for improved readability.
- **Components**:
    - Adds `SettingsSubsection` and `SettingsSubsectionHeader` helper composables to standardize the appearance of grouped settings items.
### Proposed Commit Message

Refactor Stats screen with enhanced data visualization and UI refinements

- **Stats Screen**:
    - Overhauls the "Listening Timeline" with specialized vertical and horizontal bar charts tailored to different time ranges (Day, Week, Month, Year, All).
    - Introduces `TimelineChartSpec` to manage layout logic, including dynamic item widths, scrolling thresholds, and label formatting for better density handling.
    - Implements a new `CategoryHorizontalBarChart` for top categories, featuring color palettes that dynamically match the selected dimension (Artist, Album, Genre, Song).
    - Replaces static "Listening timeline" text with dynamic supporting copy that explains data grouping per time range.
    - Enhances card visuals using container-specific color schemes and improved typography via custom variable fonts (`gflex_variable`, `genre_variable`).
    - Optimizes list performance by switching from manual horizontal scrolling to `LazyRow` for timeline entries.
- **UI/UX Refinements**:
    - Adds a `showTabIndicator` toggle to `LibraryScreen` and `EqualizerScreen` to selectively hide tab row indicators for a cleaner look.
    - Refines `StatsTimeRange` selector to support conditional indicators and improved spacing.
    - Updates `HighlightRow` and category badges with more consistent sizing and secondary metadata visibility.
- **Styling**:
    - Centralizes text styles for stats titles, axis labels, and metric values to ensure visual consistency across different chart types.
    - Refines color mappings for top artists and albums to use semantic container colors (secondary and tertiary).
…ng list UI

- **New Track Concentration Card**:
    - Introduces a "Track Concentration" section featuring a custom-drawn donut chart to visualize listening distribution across top tracks.
    - Adds detailed metrics for "Top 3 share", "Average plays per track", and total "Unique tracks" within the selected range.
    - Implements `TrackDistributionOverview` and helper components to display data slices with color-coded labels and percentages.
- **Enhanced Song List Visualization**:
    - Overhauls the "Tracks in this range" card with a more compact, structured layout using `Surface` containers for each entry.
    - Integrates `CategoryRankBadge` to highlight top-ranked songs with dynamic color schemes (Primary, Secondary, Tertiary).
    - Adds an explicit "Most played tracks" supporting description and replaces the simple text button with a full-width "Show all/Collapse" toggle.
    - Uses `animateContentSize` for smooth transitions when expanding or collapsing the song list.
- **UI & Styling Refinements**:
    - Updates several section titles to use `titleLargeEmphasized` for better visual hierarchy.
    - Simplifies background gradients in `StatsOverviewCard` and bar charts to solid colors or subtle transparencies for a cleaner look.
    - Adjusts spacing and padding across various stats cards to improve consistency and information density.
    - Updates `LinearProgressIndicator` styling with rounded caps and adjusted track heights.
… navigation gestures

- **Folder Management & SD Card Support**:
    - Introduces `FolderSource` to toggle between Internal Storage and SD Card.
    - Updates `MusicRepositoryImpl` to filter and build folder hierarchies based on the selected storage source.
    - Adds a storage source switcher within the library sorting bottom sheet.
    - Implements `StorageUtils` integration to detect available storage volumes and paths.
- **Enhanced Sorting**:
    - Expands folder sorting options to include song count (ascending/descending) and subfolder count (ascending/descending).
    - Persists folder sort preferences via `UserPreferencesRepository`.
    - Updates `LibraryStateHolder` and `LibraryScreen` to handle the new sorting logic and UI indicators.
- **Navigation & Gestures**:
    - Adds a "Behavior" settings category with a toggle for "Back gesture controls folders."
    - Implements `BackHandler` in `LibraryScreen` to allow the system back gesture to navigate up the folder hierarchy before exiting the tab.
    - Refactors `Breadcrumbs` to support dynamic root paths and labels based on the active storage source.
- **UI & View Models**:
    - Updates `PlayerUiState` and `SettingsViewModel` to track folder source, root paths, and gesture preferences.
    - Refines `LibrarySortBottomSheet` to support optional source-toggle content.
    - Improves folder path normalization and hierarchy resolution to ensure consistent behavior across different storage types.
- **Library & Navigation**:
    - Introduces a "Locate" action that allows users to quickly scroll to the currently playing song within the Songs, Liked, and Folders tabs.
    - Implements state management to track the visibility and action callbacks for the locate button independently for different library tabs.
    - Adds logic to monitor list scroll position using `snapshotFlow`, dynamically showing or hiding the locate button based on whether the current song is already visible on screen.
- **UI Components**:
    - Updates `LibraryActionRow` to include a new `MyLocation` icon button next to the sort button.
    - Adds smooth animations (slide and fade) for the locate button's appearance.
    - Refines the shape of action buttons using `animateDpAsState` to create a cohesive grouped appearance when the locate button is visible.
- **Tab Implementations**:
    - Updates `LibrarySongsTab`, `LibraryLikedSongsTab`, and `LibraryFolderDetail` to support current song location tracking and scroll-to-item functionality.
    - Integrates `DisposableEffect` to clean up visibility and action states when tabs are disposed or navigated away from.
- **Sync Management**:
    - Refactors `SyncManager.sync()` to be lifecycle-aware using `sharingScope`, implementing a check against the last sync timestamp.
    - Increases the minimum sync interval from 5 minutes to 6 hours (`MIN_SYNC_INTERVAL_MS`) to reduce redundant background work.
    - Removes the forced `mediaStoreObserver` rescan and the `onResume` sync trigger in `MainActivity` to prevent excessive syncing.
- **MainViewModel**:
    - Introduces `hasCompletedInitialSync` StateFlow to track if the library has ever been successfully synchronized.
    - Updates `isSyncing` and `isLibraryEmpty` initial states to `false` for more predictable UI behavior on startup.
- **UI & Performance**:
    - Refines the loading screen logic in `MainActivity` to only show the splash/loading state if the library is empty and an initial sync has never been completed.
    - Cleans up unused `SyncManager` injection in `MainActivity`.
@theovilardo theovilardo merged commit 4f82059 into master Feb 5, 2026
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.

1 participant