feat(metadata): implement single-track metadata editor page (§A7)
Replace the placeholder with a controlled form for title/artist/album/ year/genre/track number, an AcoustID "find matches" action showing ranked candidates with confidence, a diff/apply picker, a re-enrich button, and save via PUT /metadata. Adds matches/apply API endpoints, mappers, types, and en/ru i18n strings. Batch editor remains a placeholder (deferred).
This commit is contained in:
@@ -281,6 +281,39 @@ const en = {
|
||||
manual: 'Edited manually — not auto-updated',
|
||||
},
|
||||
},
|
||||
metadataEditor: {
|
||||
error: 'Failed to load track',
|
||||
saved: 'Metadata saved.',
|
||||
saveError: 'Failed to save metadata.',
|
||||
save: 'Save',
|
||||
fields: {
|
||||
title: 'Title',
|
||||
artist: 'Artist',
|
||||
album: 'Album',
|
||||
year: 'Year',
|
||||
genre: 'Genre',
|
||||
trackNumber: 'Track number',
|
||||
},
|
||||
autoEnrich: {
|
||||
title: 'AcoustID lookup',
|
||||
hint: 'Identify this track by audio fingerprint.',
|
||||
findMatches: 'Find matches',
|
||||
reEnrich: 'Re-run enrichment',
|
||||
enqueued: 'Enrichment queued — refresh in a moment.',
|
||||
error: 'Could not look up matches.',
|
||||
noMatches: 'No matches found.',
|
||||
},
|
||||
matches: {
|
||||
use: 'Use',
|
||||
unknownTitle: 'Unknown title',
|
||||
},
|
||||
diff: {
|
||||
title: 'Apply this match?',
|
||||
noChanges: 'No changes from current values.',
|
||||
cancel: 'Cancel',
|
||||
apply: 'Apply',
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
||||
export default en;
|
||||
|
||||
Reference in New Issue
Block a user