Skip to content

Per-download chooser & provider-sectioned search UI #13

Closed

Description

@ranokay

Question

Prototype the heart of the UX and iterate on a rough artifact the human reacts to:

  • Search results sectioned per provider (TIDAL, then Apple) in one page — how sections, badges, and provider filtering look and behave.
  • The per-download chooser: defaults-first (one click = saved defaults), full chooser one gesture away, covering provider, quality, stereo/Atmos-both, and lyrics/art options.
  • Where standalone lyrics / album-art download actions live on album, artist, and track pages.

Informed by the Apple catalog surface, the lyrics/art policy, and the dual-download semantics.

Activity

  1. ranokay commented on Sep 1, 2026

    @ranokay
    OwnerAuthor

    The audio-type control you'll build is now decided: ticket #12 resolved the dual-download semantics — the chooser offers stereo / Atmos / both (defaulting to settings, overriding for that click only; Atmos-only tracks collapse to Atmos), and every version gets its own queue row. Read that resolution before designing the control.

  2. self-assigned this
    on Sep 1, 2026
  3. ranokay commented on Sep 1, 2026

    @ranokay
    OwnerAuthor

    Resolution

    Verdict: Variant A — provider groups + split-button chooser. Prototyped three structurally different variants in the Waves console theme (prototype branch prototype/chooser-search-ui, tools/prototypes/chooser-search-ui.html — throwaway, fake data); the human reacted and picked A outright.

    What the spec inherits (the A answer)

    1. Search results sectioned per provider = top-level provider groups. A phosphor TIDAL group header followed by the familiar type sections (ARTISTS / ALBUMS / TRACKS / PLAYLISTS), then an APPLE MUSIC group with the same sections. No per-row provider badges — group membership carries the identity (B's chip-per-row + filter chips and C's provider tabs were the alternatives; both rejected).
    2. The chooser gesture is a split button on every download control: main face = one click with saved defaults (the queued toast confirms provider/tier/files); ▾ face (or right-click anywhere on the control) = the full chooser as an anchored popover, never a dialog on every click.
    3. Chooser content (identical across variants, settled by earlier tickets): provider segmented control (fixed on collection rows — a collection belongs to its provider), the provider's quality tiers with detail text (Apple: ALAC 24/192 · ALAC 16/44.1 · AAC 256; TIDAL: its four rungs), audio type stereo/Atmos/both (collapsing to ATMOS ONLY on Atmos-only tracks), lyrics embed/.lrc/.ttml quick toggles, art sidecar/embed toggles, SET AS DEFAULTS (writes back to Settings) + DOWNLOAD. Choice applies to that click only.
    4. Standalone lyrics/art actions are first-class buttons beside DOWNLOAD on album and artist pages ("LYRICS ONLY", "ART ONLY"). Per-track placement follows A's first-class philosophy: a compact hover affordance beside the track's split button (the A-consistent extension; exact glyph/spacing is implementation polish).
    5. Apple's group renders only when the provider is enabled+signed in (capability flags from the Provider seam); disabled = today's TIDAL-only page, unchanged.

    Captured

    The full three-variant prototype (including the rejected B and C) lives on the throwaway branch as the primary source; this main branch records only the verdict. The wiring of A into Main.qml is implementation work — the map ends at the spec.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions