Skip to content

Add optional track row cover thumbnails#966

Open
ihor-developer wants to merge 1 commit into
martpie:masterfrom
ihor-developer:feature/track-row-covers
Open

Add optional track row cover thumbnails#966
ihor-developer wants to merge 1 commit into
martpie:masterfrom
ihor-developer:feature/track-row-covers

Conversation

@ihor-developer

Copy link
Copy Markdown

Hi! This PR adds an optional setting to show album cover thumbnails directly in regular track rows.

The feature is disabled by default, so the current compact list experience stays unchanged unless the user explicitly enables it. When enabled, library and playlist rows get a small cover thumbnail at the start of the row. For the currently playing track, the existing animated playing indicator is reused in that same thumbnail slot instead of showing the cover, so the playing state remains clear without duplicating visuals.

I tried to keep the implementation small and aligned with the existing Museeks architecture:

  • Reuses the existing Cover component and cover loading pipeline.
  • Reuses the existing PlayingIndicator, with a larger variant for thumbnail rows.
  • Adds the preference through the existing config/settings flow.
  • Keeps grouped artist/compilation lists unchanged for now because those lists are not virtualized yet, and enabling per-row covers there could load too many covers at once.
  • Keeps default behavior visually and functionally unchanged.

I like the direction Museeks is going in: clean, simple, and focused. This feature is meant to fit that direction by making track lists a little easier to visually scan without turning the UI into something noisy or overly configurable.

Screenshots

Setting

setting

Dark theme

dark

Light theme

light

Notes on translations

The English and Russian translations have been checked. The Russian copy is:

  • Показывать обложки треков
  • Показывать миниатюры обложек альбомов в строках треков

The other translations were added as best-effort translations and should ideally be validated by native speakers or regular contributors for those languages.

Validation

I ran:

cargo test --manifest-path src-tauri/Cargo.toml
vp build
vp test
vp check --no-fmt

Results:

  • Rust tests passed.
  • Frontend build passed.
  • Test suite passed.
  • vp check --no-fmt passed with existing warnings only.

I did not run a broad vp check --fix because the repository currently has unrelated formatting differences, and I wanted to avoid formatting churn outside this feature.

Implementation details

  • Added a new persisted config field: track_view_covers, defaulting to false.
  • Added a checkbox in Interface settings: "Show track covers".
  • Passed the setting into TrackList.
  • Limited row thumbnails to the virtualized default track list layout.
  • Increased row height only when thumbnails are enabled in that virtualized layout.
  • Added a decorative mode to Cover so row thumbnails do not add redundant screen reader text.
  • Updated generated TypeScript typings and Lingui catalogs.

Compatibility and performance

The feature is cross-platform and uses the existing cover-art pipeline, so it does not add OS-specific behavior.

In default mode there should be no meaningful performance or memory impact because row covers are not mounted.

When enabled, thumbnails are only used in the virtualized default list, so cover loading stays bounded to visible rows plus overscan. Grouped lists are intentionally left unchanged until they are virtualized or cover loading is optimized further.

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