Skip to content

Show composer in Album View - #272

Open
timrosenberg wants to merge 7 commits into
ghenry22:masterfrom
timrosenberg:feature/show-composers-in-album-view
Open

Show composer in Album View#272
timrosenberg wants to merge 7 commits into
ghenry22:masterfrom
timrosenberg:feature/show-composers-in-album-view

Conversation

@timrosenberg

Copy link
Copy Markdown

Summary

Adds the composer to Album View. Subsonic/OpenSubsonic servers already return displayComposer per song; the app fetched and cached it but never displayed it anywhere.

Changes

  • TrackRow gains an opt-in showComposer prop — when set and the track has a displayComposer, a third line renders below the artist line (icon + composer name, truncated to one line). Hidden entirely when there's no composer.
  • Album View is the only screen that passes it; queue, playlist, and search rows are unaffected.
  • Multi-composer tracks (e.g. "Alan Lerner & Frederick Loewe") render verbatim on the one line.
  • Composer Text carries an explicit accessibility label ("Composer: …") so VoiceOver never confuses it with the artist.

Testing

  • npx tsc --noEmit clean
  • npx jest --no-coverage green — 536 suites, 9420 tests
  • node scripts/validate-intl.js / validate-translations.js clean
  • npx madge --circular — no circular deps
  • New/updated tests: TrackRow.test.tsx (present/absent/multi-composer/truncation/a11y label), album-detail.composer-render.test.tsx (end-to-end on a mixed-composer album), details.test.ts (composer survives the DB round trip on the offline/cached read path)
  • Tested on iOS (iPhone + iPad simulator) against a real Navidrome library: single-composer albums, per-track composer variation, multi-composer credits, no-composer albums, multi-disc albums, Various Artists compilations, long composer lists (truncation), online vs. offline/downloaded parity, and VoiceOver reading order
  • Not tested on Android (no code path differs by platform, but flagging per the template's checklist)

claude and others added 7 commits August 20, 2026 03:21
Composer renders on its own line below the artist line, only when
showComposer is true and track.displayComposer is set. Rows without
a composer, or with showComposer false, are unchanged.
TrackRow: composer subtitle line behind showComposer
Turns on the composer subtitle line (TrackRow, issue #2) for Album View only,
by opting its TrackRow render site into showComposer. Queue, playlist, and
search rows that reuse TrackRow are untouched.
The render test already proves showComposer reaches TrackRow for the tracks
that carry a composer, and TrackRow's own suite covers the false/absent
cases. Two near-identical screen mock harnesses for one prop isn't worth
maintaining.
Album View: pass showComposer from album-detail
…d trip

Traced both offline read paths for a production gap: the normalized songs
table's mapper and the legacy cached_songs promoted-column list already carry
displayComposer both directions. This guards the path album-detail.tsx
actually reads on a cache hit (getAlbumDetail), which had no direct coverage.
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.

2 participants