run, check, entries, status, and sync now treat SubRip (.srt) and WebVTT (.vtt) as first-class locale files. This release also speeds up run planning and several parsers, and keeps the bundled Crowdin client aligned with API v2.
View the GitHub release · Full changelog
Breaking changes
None.Features
- Add SubRip and WebVTT support. Cue payload text is keyed as
srt.0001/vtt.0001. Cue numbers, timestamps, positioning, WebVTT headers, andNOTE/STYLE/REGIONblocks stay in the file. Writeback reuses an existing target only when cue IDs and timings still match the source, so equal cue counts cannot attach new text to stale timestamps. WebVTT checks keep class spans (<c.red>), voice tags, and karaoke timestamps.
Fixes
- When
--configis omitted andi18n.ymlis missing, fall back toi18n.jsonconly if that file exists; otherwise look fori18n.yml. (#1920) - Align the bundled Crowdin API client with v2 optional fields: report
individualRates,TargetLanguageIDon string comments,FileID/LabelIDs/CroQLon string translations,Forceon app install, and pointerConfigon custom fields. (#1980, #1972, #1960, #1930, #1898, #1886, #1871)
Performance
- Faster
runplanning: skip FormatJS JSON detection whendefaultMessageis absent, skip prompt token substitution on plain prompts, and hash source text without copying the string. About 14% faster on large catalogs and 27% fewer allocations (BenchmarkPlanTasksLarge: ~52.4 ms → ~45.0 ms; 150k → 110k allocs/op). (#1978) - Prompt-context sanitizer: single-line inputs allocate nothing; multiline inputs are about 4× faster and use 87% less memory. Large planning runs drop about 10,000 allocations. (#1927)
- GNU gettext PO parse/marshal is about 18% faster; parse allocations are cut about 48%. (#1895)
- JSONC comment extraction is about 15% faster. (#1957)
- Extra-placeholder scan in segment validation is about 53% faster. (#1869)
- Liquid, HTML, and Markdown segment keys use 1,000 fewer heap allocations per parser benchmark. (#1885)
Tests
- Subtitle parser edges, lockfile codec, path resolver tokens, path-guard symlink chains, storage-adapter registry, and progress UI renderer.
- Segment-validation fast paths.

