Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

android: recital albums show no composer; a lone track inherits the previous work's composer heading

Open Beginner friendly
#1,080 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
android, kotlin
Domain
frontend, mobile

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

bug impact:U2 P2 reach:R2 size:S

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):

  • composers and headings are computed from work blocks only; AlbumItem.Track rows never contribute a composer and never get a heading or subtitle.
  • lastComposer is 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from timusus/Shuttle2

All issues in timusus/Shuttle2

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.