Both: let the user scale album art size and grid spacing #49

Open
opened 2026-08-18 05:58:15 +00:00 by logan · 0 comments
Collaborator

Report

I want to control the scale of the album art across the views. On desktop I sometimes want lots of small albums at once, and sometimes a high-res wall for a smaller collection. On a small phone I mostly want them small, but I want the option. Same for the spacing between albums: sometimes an edge-to-edge grid, sometimes distinct, well-spaced cards.

Findings

  • frontend/src/components/cover-grid/cover-grid.ts already scales its card font sizes from custom properties (--album-name-font etc., ~lines 711-731), so a size scale is partly parameterised already.
  • Cover art is stored in three tiers (_sm/_md/_lg, largest recorded as cover_art.file_path; the full-resolution original is deliberately not kept — the grid capped at 350px and the largest tier is 400). A larger scale than ~400px has no bytes behind it, which is the real constraint on "high-res wall".
  • The grid is virtualized and cover-grid splits into two virtualizers; card size feeds the row-height measurement, and the same is true of artists-view/genres-view.
  • Pick the tier for the box you are drawing (getCoverUrl() is the model) — a scale control must switch tiers, not upscale the small one.

Direction

A size control (3-4 steps) and a spacing control, persisted per view and per platform, applied as custom properties. Decide what the top step means given the 400px ceiling: either accept 400px as the max, or reconsider keeping a larger tier for people who want the wall (that costs disk — the original used to be 1,134 MB of a 1.4 GB covers directory, which is why it was dropped).

**Report** I want to control the scale of the album art across the views. On desktop I sometimes want lots of small albums at once, and sometimes a high-res wall for a smaller collection. On a small phone I mostly want them small, but I want the option. Same for the spacing between albums: sometimes an edge-to-edge grid, sometimes distinct, well-spaced cards. **Findings** - `frontend/src/components/cover-grid/cover-grid.ts` already scales its card font sizes from custom properties (`--album-name-font` etc., ~lines 711-731), so a size scale is partly parameterised already. - Cover art is stored in three tiers (`_sm`/`_md`/`_lg`, largest recorded as `cover_art.file_path`; the full-resolution original is deliberately not kept — the grid capped at 350px and the largest tier is 400). **A larger scale than ~400px has no bytes behind it**, which is the real constraint on "high-res wall". - The grid is virtualized and `cover-grid` splits into two virtualizers; card size feeds the row-height measurement, and the same is true of `artists-view`/`genres-view`. - Pick the tier for the box you are drawing (`getCoverUrl()` is the model) — a scale control must switch tiers, not upscale the small one. **Direction** A size control (3-4 steps) and a spacing control, persisted per view and per platform, applied as custom properties. Decide what the top step means given the 400px ceiling: either accept 400px as the max, or reconsider keeping a larger tier for people who want the wall (that costs disk — the original used to be 1,134 MB of a 1.4 GB covers directory, which is why it was dropped).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yonlu/yellowjacket#49