Desktop: move the release-version selector out of the album detail's primary position #17

Closed
opened 2026-08-18 05:54:00 +00:00 by logan · 1 comment
Collaborator

Report

Choosing which release version of an album you are looking at is an advanced, metadata-editing task. It should not sit prominently above the tracklist.

Findings

  • explore-album-details.ts renders the selector above the tracklist; it is already suppressed when there is nothing to choose (distinctTracklistCount() <= 1, ~line 2919), which was the fix for it appearing with several identical options.
  • The entry marked "in your library" (★ plus the words) is the one carrying real information for a normal user.

Direction

Demote it: a small "Other versions" control near the release metadata, or inside a details/disclosure below the tracklist, or in the page's overflow menu. Keep the ★/"in your library" marking wherever it lands. Do not remove it — matching the wrong release is a real problem and this is how it gets fixed.

**Report** Choosing which release version of an album you are looking at is an advanced, metadata-editing task. It should not sit prominently above the tracklist. **Findings** - `explore-album-details.ts` renders the selector above the tracklist; it is already suppressed when there is nothing to choose (`distinctTracklistCount() <= 1`, ~line 2919), which was the fix for it appearing with several identical options. - The entry marked "in your library" (★ plus the words) is the one carrying real information for a normal user. **Direction** Demote it: a small "Other versions" control near the release metadata, or inside a details/disclosure below the tracklist, or in the page's overflow menu. Keep the ★/"in your library" marking wherever it lands. Do not remove it — matching the wrong release is a real problem and this is how it gets fixed.
logan self-assigned this 2026-08-19 05:16:30 +00:00
logan added the
Status
In Progress
label 2026-08-19 05:16:31 +00:00
Author
Collaborator

Claiming this. Branch: feat/17-demote-version-selector. It is the
Phase 1 item #73 pairs with #38 as "same page, same pass"; #38 is
merged, so this is what that pass left.

Approach: a disclosure below the tracklist, of the three the
Direction offers. The overflow-menu option needs a menu this page does
not have, and "near the release metadata" puts a control in the header
whose panel would have to live somewhere else — which splits
aria-controls from the thing it names. A disclosure is the pattern
config-section and explore-artist-details already use five times
over: a real <button aria-expanded aria-controls> with the body
rendered unconditionally and toggled with hidden, because
aria-controls has to name an element that is in the DOM.

Read first, and the control is louder than the report says. Three
things sit in that primary slot today, not one:

  1. the selector itself, which is at least already guarded by
    distinctTracklistCount() <= 1;
  2. a Versions / Loading releases… block that is not guarded, so
    it takes the primary position on every album load — beside
    renderTracklist's own Loading tracks…, which is the same fetch
    said twice;
  3. a Versions / <error> block, also unguarded, which is the same
    error catalog-scope-notice is already showing at the top of the
    page with a retry — because every path that sets errorReleases
    also sets catalogFailed, which is the only route to unavailable.

And renderVersionMeta explains, in prose above the tracklist, how the
standard version is picked "by weighing how many physical releases
share it, release status, and release date". That is a sentence about
our clustering algorithm in the most valuable space on the page.

So the loading block goes, the error moves into the tracklist
section — renderTracklist currently returns nothing on
errorReleases and relies on the version selector to have said it,
which is exactly the coupling that makes this a demotion rather than a
move — and the selector plus its meta prose go into the disclosure.

What must not be lost: the ★ and the words "in your library" on the
matching entry (a <select> cannot be styled per option), and a
statement of which version is on screen once the user has chosen a
non-default one. A demoted control that leaves the tracklist silently
detached from the header would be a worse page, not a quieter one.

The "Show the whole album" switch stays where it is — it is #7's
control, it is not a metadata-editing task, and it belongs next to the
list it changes.

Claiming this. Branch: `feat/17-demote-version-selector`. It is the Phase 1 item #73 pairs with #38 as "same page, same pass"; #38 is merged, so this is what that pass left. **Approach: a disclosure below the tracklist**, of the three the Direction offers. The overflow-menu option needs a menu this page does not have, and "near the release metadata" puts a control in the header whose panel would have to live somewhere else — which splits `aria-controls` from the thing it names. A disclosure is the pattern `config-section` and `explore-artist-details` already use five times over: a real `<button aria-expanded aria-controls>` with the body rendered unconditionally and toggled with `hidden`, because `aria-controls` has to name an element that is in the DOM. **Read first, and the control is louder than the report says.** Three things sit in that primary slot today, not one: 1. the selector itself, which is at least already guarded by `distinctTracklistCount() <= 1`; 2. a `Versions / Loading releases…` block that is **not** guarded, so it takes the primary position on every album load — beside `renderTracklist`'s own `Loading tracks…`, which is the same fetch said twice; 3. a `Versions / <error>` block, also unguarded, which is the same error `catalog-scope-notice` is already showing at the top of the page with a retry — because every path that sets `errorReleases` also sets `catalogFailed`, which is the only route to `unavailable`. And `renderVersionMeta` explains, in prose above the tracklist, how the standard version is picked "by weighing how many physical releases share it, release status, and release date". That is a sentence about our clustering algorithm in the most valuable space on the page. So the loading block goes, the error moves into the **tracklist** section — `renderTracklist` currently returns `nothing` on `errorReleases` and relies on the version selector to have said it, which is exactly the coupling that makes this a demotion rather than a move — and the selector plus its meta prose go into the disclosure. **What must not be lost:** the ★ and the words "in your library" on the matching entry (a `<select>` cannot be styled per option), and a statement of *which* version is on screen once the user has chosen a non-default one. A demoted control that leaves the tracklist silently detached from the header would be a worse page, not a quieter one. The "Show the whole album" switch stays where it is — it is #7's control, it is not a metadata-editing task, and it belongs next to the list it changes.
logan closed this issue 2026-08-19 05:38:27 +00:00
gitea-actions bot removed the
Status
In Progress
label 2026-08-19 05:38:38 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yonlu/yellowjacket#17