feedBack/lib/routers
K. O. A. 35c0d0ea0d
Some checks are pending
ship-ci / ci (push) Waiting to run
Pass per-stem name/description through to the stems payloads (#1013)
feedpak 1.16.0 (spec §5.3) added two OPTIONAL presentational fields to a
stems[] entry: `name` (display label, Readers fall back to the id) and
`description` (free text). The server dropped both while normalizing
manifest stems, so no client could ever display them.

Pass them through at the one place stem descriptors are built
(sloppak.load_song) and let both payload builders — the WS `ready` stems
list and the REST `/api/song/{f}?stems=1` preload list, which are pinned
against each other by test — carry them forward. Omit-when-absent, so a
stem without the fields does not grow null keys; non-string or blank
values are dropped rather than surfaced.

No behaviour change for existing packs or clients: the fields are
additive and every consumer that reads {id,url,default} keeps working
unchanged. The stems plugin / stem mixer display work lands separately.

Signed-off-by: topkoa <topkoa@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 11:45:16 -04:00
..
__init__.py fix(build): move appstate.py + routers/ under lib/ so the desktop app ships them (#836) 2026-07-10 17:16:34 +02:00
art.py refactor(server): extract the album-art routes into routers/art.py (R3) (#862) 2026-07-11 11:56:53 +02:00
artist_aliases.py refactor(server): extract the artist-alias routes into routers/artist_aliases.py (R3) (#838) 2026-07-10 18:55:03 +02:00
artist.py refactor(server): extract the artist routes into routers/artist.py (R3) (#870) 2026-07-11 15:49:37 +02:00
audio_effects.py fix(build): move appstate.py + routers/ under lib/ so the desktop app ships them (#836) 2026-07-10 17:16:34 +02:00
chart.py refactor(server): extract the chart routes into routers/chart.py (R3) (#846) 2026-07-10 22:15:25 +02:00
diagnostics.py refactor(server): extract the diagnostics routes into routers/diagnostics.py (R3) (#857) 2026-07-11 01:27:52 +02:00
enrichment.py refactor(server): extract the enrichment route handlers into routers/enrichment.py (R3) (#868) 2026-07-11 15:19:34 +02:00
library_extras.py refactor(server): batch the small meta_db user-state endpoints into routers/library_extras.py (R3) (#850) 2026-07-10 23:37:24 +02:00
library.py fix(library): tuning filter answers for your instrument, not always guitar (#1003) 2026-07-19 00:04:30 -05:00
loops.py fix(loops): take the DB lock for the count+insert and the list read (#840) 2026-07-10 19:16:01 +02:00
media.py refactor(server): extract the media/file-serving routes into routers/media.py (R3) (#869) 2026-07-11 15:36:22 +02:00
playlists.py feat(playlists): manual drag order + Sort A-Z for the playlist list (#1004) 2026-07-19 00:04:23 -05:00
profile.py refactor(server): extract the profile routes into routers/profile.py (R3) (#854) 2026-07-11 00:38:03 +02:00
progression.py refactor(server): extract the progression routes into routers/progression.py (R3) (#853) 2026-07-11 00:25:53 +02:00
settings.py refactor(server): extract the settings routes into routers/settings.py (R3) (#863) 2026-07-11 12:35:05 +02:00
shop.py refactor(server): extract the shop routes + inject get_progression_content into the seam (R3) (#851) 2026-07-10 23:42:02 +02:00
song.py Pass per-stem name/description through to the stems payloads (#1013) 2026-07-19 11:45:16 -04:00
stats.py feat(career): hours-per-genre odometer — honest wall-clock play time (#942) 2026-07-13 15:12:23 +02:00
tunings.py refactor(server): extract /api/tunings into routers/tunings.py + lib/appconfig.py (R3) (#858) 2026-07-11 01:43:19 +02:00
version.py refactor(server): extract the version route into routers/version.py (R3) (#856) 2026-07-11 00:56:36 +02:00
wanted.py refactor(server): extract the wishlist routes into routers/wanted.py (R3) (#847) 2026-07-10 22:20:10 +02:00
ws_highway.py Pass per-stem name/description through to the stems payloads (#1013) 2026-07-19 11:45:16 -04:00