v1.11.0
Additive (MINOR) release: multi-lingual lyric tracks, language tags, and language-tagged vocal
stems. Backward-compatible — a 1.0.0 pack is also a valid 1.11.0 pack, and an older reader ignores
the new optional keys and still loads the single lyrics pointer + stems as before.
Added
-
Multi-lingual packs (spec §5.5,
§5.1, §5.3): three OPTIONAL
additive keys so a pack can express language and carry more than one lyric representation —- a top-level
language(BCP 47) naming the song's
primary sung language; - a per-stem
languagehint tagging a language-specific vocal stem (e.g.vocals_ja/
vocals_enfor a song with two sung-language recordings); - a
lyric_trackslist of additional lyric files, each withid,file,language, and a
kindoforiginal/transliteration/translation, plus OPTIONALlyrics_source,
lyric_transcriptionprovenance, and astempointer pairing a sung original with its vocal
recording.
Each track is an ordinary
lyrics.json-shaped flat array, so
no new side-file schema is introduced — onlyschemas/manifest.schema.jsongrows (abcp47
$def, alyricTrack$def, thelyric_tracksarray, andlanguageon the manifest and on
$defs/stemEntry). The legacy singlelyricspointer is unchanged: whenlyric_tracksis absent
a reader behaves exactly as before, and when present a writer SHOULD still pointlyricsat the
primary-languageoriginaltrack's file for pre-1.11.0 readers. Exercised by the extended example
(an English original + a Japanese translation + a romaji transliteration, and alanguage-tagged
fullstem). - a top-level
Changed
- CI (no format change): the version-consistency guard (
tools/check_versions.py) now covers
every place the current version is written — the spec header, the §4.1feedpak_version
example + writer-SHOULD line, the README table and citation, and the extended example
manifest, in addition to the newestCHANGELOG.mdversion. A missed spot during a bump now
fails CI with a precise diff instead of drifting silently. - Docs (no format change): the hand-editing guide's
.jsoncsection now spells out the two
caveats — comments are the only relaxation (no trailing commas / JSON5), and a comment-bearing
.jsoncneeds a JSONC-aware reader, so keep distributed packs as comment-free.json.