android: recital albums show no composer; a lone track inherits the previous work's composer heading
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
Research direction
Start in android/presentation/src/commonMain/kotlin/com/simplecityapps/shuttle/ui/screens/library/albums/detail/AlbumRows.kt, focusing on buildAlbumRows and how it handles work blocks versus lone tracks. Add the recital case to the classical test media described in #1079, then add a buildAlbumRows test for a lone track between works by different composers and a recital with one work block. Done means composer headings follow composer runs across both item types, untagged lone tracks do not break a run, and a lone track’s Now Playing composer line is checked.
Written by the indexing model from the issue text.
Description
On a recital album (one performer, works by many composers, most of them single tracks) the classical album page shows no composer anywhere, and a lone track between two works sits under the wrong composer heading.
Example: user-supplied Naxos "Guitar Recital" (Anabel Montesinos, 2003): 11 tracks, 8 composers, one two-movement work (Coste, tracks 2–3), every other track a lone piece with its own COMPOSER. Rendering today: eyebrow is null (mixed composers), no composer headings (only one work block, so composers.size > 1 is false), and every track subtitle is empty because artist equals album artist. Eight composers vanish.
Cause, both in buildAlbumRows (android/presentation/src/commonMain/kotlin/com/simplecityapps/shuttle/ui/screens/library/albums/detail/AlbumRows.kt):
composersandheadingsare computed from work blocks only;AlbumItem.Trackrows never contribute a composer and never get a heading or subtitle.lastComposeris only updated on work blocks, so with headings on, a lone Arcas track between a Coste work and a Mertz work renders under "Coste".
Expected: composer runs are computed over every item (works and lone tracks). When the album has more than one composer, a heading opens each run, lone tracks included; a lone track with no composer tag breaks no run (bonus-track rule already used for the eyebrow). The Now Playing composer line should hold for these tracks too (check composerDisplayName on a lone track). Add the recital to the classical test media (see #1079) and a buildAlbumRows test for: lone track between two works by different composers; recital with one work block.
Impact U2 (composer is the primary way a classical listener reads a recital) · Reach R2 (one report; recital and competition discs are a common album type) · Implemented: no · Design fit: fits (#1065 "composer headings where the composer changes between works, as on a recital" was the intent, tracks were missed) · Complexity: S
- Dominant language
- Kotlin
- Stars
- 231
- Forks
- 28
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from timusus/Shuttle2
-
enhancement impact:U1 P3 reach:R2 size:S
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement impact:U2 P2 reach:R2 size:S
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
support/scripts/asc: S2 bundle id resolves to the Podcasts app (bundleId filter is a prefix match)Openbug next-release
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug design impact:U1 later P3 reach:R2 size:S
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
All issues in timusus/Shuttle2
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
ankidroid/Anki-Android#22677 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
yschimke/homeassistant-remotecompose#1038 ·
Maintainers usually reply within 1 day
-
area:data-quality importer size:S
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
enorm-labs/event-junkie#3707 ·
Maintainers usually reply within 1 day
-
area/ui priority/p2 type/bug
Difficulty 1/5 Under an hour Newbie friendliness 94/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
commons-app/apps-android-commons#7072 ·
Maintainers usually reply within 1 day