Summary
The record labels feature is still modeled as label content plus a dependent release list. That release dependency should be deprecated, and labels should be represented through the music entity system instead.
Current coupling
apps/vps/src/db/label.schema.ts defines labelsRelations.releases, so labels are directly tied to releases.
apps/vps/src/db/release.schema.ts requires labelId on every release.
apps/vps/src/services/release.service.ts resolves releases by label slug, validates label existence on create, and powers the label release listing API.
apps/vps/src/routes/content/release.routes.ts and release.handlers.ts expose /content/labels/:labelSlug/releases.
apps/www/src/routes/labels/$labelSlug.tsx renders a label page with a releases table and load-more flow.
apps/www/src/lib/http.ts has useReleasesByLabel, which hardcodes that page shape.
apps/www/src/routes/label-upload.lazy.tsx is a standalone label editor, separate from the music catalog.
apps/vps/src/routes/redirect/handlers/release.ts uses the label title as creator context for release OG/share pages.
apps/vps/src/routes/redirect/seo/sitemap.utils.ts, apps/vps/src/routes/admin/admin.handlers.ts, and apps/www/src/routes/admin/_components/-ContentTab.tsx all treat labels and releases as separate content types.
apps/vps/src/db/music-entity.schema.ts, apps/vps/src/routes/music/*, apps/www/src/routes/admin/music.tsx, and packages/ui/src/components/music-entity-*.tsx only support artist, album, track, and playlist today. There is no label music entity type yet.
Impact
This is wider than a single page swap. It affects:
- DB schema and relations
- content API contracts
- public label pages
- admin label/content surfaces
- SEO/sitemap/share metadata
- music entity type unions, seed data, and UI
- tests and any migration/backfill path
Desired direction
- Model record labels through the music entity system instead of release-backed label pages.
- Remove the label-to-release dependency from the feature surface.
- Add whatever music entity support is needed for labels end-to-end before deleting the old path.
Acceptance criteria
- Record labels no longer depend on releases for their core feature behavior.
- Label pages are powered by music entities, not a release list.
- Music entity type support includes labels where needed across DB, API, admin UI, and shared UI.
- Old release-backed label code paths are removed or clearly deprecated after migration.
- Existing label data remains accessible during/after migration.
Summary
The record labels feature is still modeled as label content plus a dependent release list. That release dependency should be deprecated, and labels should be represented through the music entity system instead.
Current coupling
apps/vps/src/db/label.schema.tsdefineslabelsRelations.releases, so labels are directly tied to releases.apps/vps/src/db/release.schema.tsrequireslabelIdon every release.apps/vps/src/services/release.service.tsresolves releases by label slug, validates label existence on create, and powers the label release listing API.apps/vps/src/routes/content/release.routes.tsandrelease.handlers.tsexpose/content/labels/:labelSlug/releases.apps/www/src/routes/labels/$labelSlug.tsxrenders a label page with a releases table and load-more flow.apps/www/src/lib/http.tshasuseReleasesByLabel, which hardcodes that page shape.apps/www/src/routes/label-upload.lazy.tsxis a standalone label editor, separate from the music catalog.apps/vps/src/routes/redirect/handlers/release.tsuses the label title as creator context for release OG/share pages.apps/vps/src/routes/redirect/seo/sitemap.utils.ts,apps/vps/src/routes/admin/admin.handlers.ts, andapps/www/src/routes/admin/_components/-ContentTab.tsxall treat labels and releases as separate content types.apps/vps/src/db/music-entity.schema.ts,apps/vps/src/routes/music/*,apps/www/src/routes/admin/music.tsx, andpackages/ui/src/components/music-entity-*.tsxonly supportartist,album,track, andplaylisttoday. There is nolabelmusic entity type yet.Impact
This is wider than a single page swap. It affects:
Desired direction
Acceptance criteria