Six backend methods are bound to the frontend and called by nothing — wire or remove #86

Open
opened 2026-08-18 20:05:18 +00:00 by yonlu · 0 comments
Owner

Six methods are bound to the frontend and have no call site in frontend/src:

  • GetPopularityBatch
  • GetTrackLyrics
  • GenerateMix
  • GetArtistPlayCount
  • GetLibrarySimilarArtists
  • GetCandidateThumbnail

Each is either a feature that was never wired up or a batch shape nobody reached for. They cost a binding, a generated TypeScript surface and a maintenance claim, and their existence is presumably why the N+1s the API-call audit found were not noticed — the batch helper existed, so the problem looked solved.

Converted from finding 3 of .planning/plans/pending/012-api-call-audit.md, whose other three findings have shipped; the plan moves to completed/.

What the decision is

For each: wire it to the call site it was written for, or delete it and its binding. GenerateMix and GetTrackLyrics in particular are worth a separate answer about whether the feature is live at all — a bound method for a feature that does not exist is a promise the UI never makes.

Two traps, both already sprung once

Grep both languages before removing a bound method. CheckLibraryMBIDs was reported as dead in the same audit and is not: downloadcatalog.go:152 calls it from Go, one MBID at a time. Deleting it broke the build, which is how that was found. Read "no frontend caller" as exactly that.

GetArtistImages is not the batch helper it looks like. It resolves names through libMBID.AllArtistMBIDs(), so it only answers for artists in the library — the exact set Explore's search results are not. It needs an MBID-keyed sibling or a replacement, not a call site. (GetArtistImagesCachedPaths is the one that landed for the Explore path.)

Done when

Every method bound to the frontend has a caller in frontend/src, or is gone.

Six methods are bound to the frontend and have **no call site in `frontend/src`**: - `GetPopularityBatch` - `GetTrackLyrics` - `GenerateMix` - `GetArtistPlayCount` - `GetLibrarySimilarArtists` - `GetCandidateThumbnail` Each is either a feature that was never wired up or a batch shape nobody reached for. They cost a binding, a generated TypeScript surface and a maintenance claim, and their existence is presumably why the N+1s the API-call audit found were not noticed — the batch helper existed, so the problem looked solved. Converted from finding 3 of `.planning/plans/pending/012-api-call-audit.md`, whose other three findings have shipped; the plan moves to `completed/`. ## What the decision is For each: wire it to the call site it was written for, or delete it and its binding. `GenerateMix` and `GetTrackLyrics` in particular are worth a separate answer about whether the feature is live at all — a bound method for a feature that does not exist is a promise the UI never makes. ## Two traps, both already sprung once **Grep both languages before removing a bound method.** `CheckLibraryMBIDs` was reported as dead in the same audit and is not: `downloadcatalog.go:152` calls it from Go, one MBID at a time. Deleting it broke the build, which is how that was found. Read "no frontend caller" as exactly that. **`GetArtistImages` is not the batch helper it looks like.** It resolves names through `libMBID.AllArtistMBIDs()`, so it only answers for artists **in the library** — the exact set Explore's search results are not. It needs an MBID-keyed sibling or a replacement, not a call site. (`GetArtistImagesCachedPaths` is the one that landed for the Explore path.) ## Done when Every method bound to the frontend has a caller in `frontend/src`, or is gone.
yonlu added the
Priority
Low
4
Platform/DesktopArea/ExploreKind/Enhancement
labels 2026-08-18 20:05:18 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yonlu/yellowjacket#86