Release v0.27.0
Machine translations now arrive as drafts you review, not as finished work you trust blindly. verbaly translate marks everything it writes as an unreviewed draft, a new verbaly review command lets you approve them, and verbaly check --drafts can block a merge until a human has signed off. The translation model also gets told where each string lives in your code, so it translates with context. No breaking changes.
Highlights
- Machine output is a draft until you say otherwise.
verbaly translatestill fills the gaps, but every string it writes is now flagged as an unreviewed draft. Your catalogs stay exactly as clean as before: the review state lives in a separate.verbaly-drafts.jsonfile next to them. - Approve translations when you have read them.
verbaly reviewlists everything waiting for a human;verbaly review --approveaccepts it (all of it, or one locale at a time). Importing a translator's file counts as review too, so the draft flag clears automatically. - Block merges on unreviewed machine text.
verbaly check --draftsfails CI while any machine translation is still unreviewed. Plainverbaly checkis unchanged, so nothing breaks until you opt in. - Better translations, because the model gets context.
verbaly translatenow tells the provider which source files each string appears in, so tone and length fit where the text is actually used. - See what needs review at a glance.
verbaly status(and--json) now report the count of unreviewed drafts per locale.
For the full details of this release, see the repository changelog.