Desktop: the Tracks list looks like a spreadsheet, and horizontal scrolling is unusable #30

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

Report

The grid lines on the Tracks tab give it an ugly spreadsheet look — remove them, hide them better, or make them prettier. Separately, horizontal scrolling in that list feels impossible.

Findings

  • frontend/src/components/track-list/track-list.ts draws border-bottom rules on rows and the header (~lines 1036, 1121) and a 4px transparent bottom border on the resize/drop indicator (~1201).
  • Horizontal scrolling: computeDefaultWidths shares out the host's clientWidth minus the favourite column (24px) and the row padding (2x8px) — the columns are fitted to the viewport by construction, so there is nothing to scroll to and a column that needs more room is squeezed instead. body is overflow-x: auto but the list itself is not a horizontal scroller.

Direction

Two separable pieces:

  1. Visual: drop the vertical/row rules in favour of row hover + zebra-free spacing, keeping a single subtle header rule. Note the playing row's ::before marker lives in the row's own left padding — do not disturb it.
  2. Structural: decide whether the track list is fit-to-width (current) or a real horizontal scroller with per-column minimums. If the latter, the header must scroll in lockstep with the virtualized body, and the phone column set (PHONE_COLUMN_IDS) is unaffected.
**Report** The grid lines on the Tracks tab give it an ugly spreadsheet look — remove them, hide them better, or make them prettier. Separately, horizontal scrolling in that list feels impossible. **Findings** - `frontend/src/components/track-list/track-list.ts` draws `border-bottom` rules on rows and the header (~lines 1036, 1121) and a 4px transparent bottom border on the resize/drop indicator (~1201). - Horizontal scrolling: `computeDefaultWidths` shares out the host's `clientWidth` minus the favourite column (24px) and the row padding (2x8px) — the columns are fitted to the viewport by construction, so there is nothing to scroll to and a column that needs more room is squeezed instead. `body` is `overflow-x: auto` but the list itself is not a horizontal scroller. **Direction** Two separable pieces: 1. Visual: drop the vertical/row rules in favour of row hover + zebra-free spacing, keeping a single subtle header rule. Note the playing row's `::before` marker lives in the row's own left padding — do not disturb it. 2. Structural: decide whether the track list is fit-to-width (current) or a real horizontal scroller with per-column minimums. If the latter, the header must scroll in lockstep with the virtualized body, and the phone column set (`PHONE_COLUMN_IDS`) is unaffected.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yonlu/yellowjacket#30