Release v0.9.0
[0.9.0] — 2026-07-06
Machine translation closes the loop. verbaly translate fills the "" holes check reports — pluggable provider interface with Claude as the reference implementation. Ready to publish. No breaking changes; no runtime impact (core untouched, ~3KB intact).
Added
verbaly translate(@verbaly/compilerCLI): fills missing translations per target locale, batched (default 20 per request,translate.batchSizein config). Flags:--dry-run(list what would be translated, write nothing),--locales es,pt(target filter),--model(override for the claude provider). The full flow is now write →extract→translate→checkgreen → build passes.- Provider interface, no lock-in:
translate.providerinverbaly.config.{ts,js}accepts a function({ sourceLocale, targetLocale, messages }) => Promise<Record<key, translation>>. Exported:translateCatalogs,structureMatches, typesTranslateProvider/TranslateRequest/TranslateOptions/TranslateResult/TranslateConfig. - Claude reference provider (
claudeProvider, also exported): official@anthropic-ai/sdkas an optional peerDependency (lazy-loaded with an install hint, same pattern as esbuild for TS configs). Default modelclaude-sonnet-5— balanced quality/cost for a translation workload (translate.modelor--modelto override), thinking disabled (translation needs no reasoning); structured outputs (output_config.formatwith a per-batch JSON schema) guarantee a valid key→translation map. Auth viaANTHROPIC_API_KEY(or anant auth loginprofile — the SDK resolves it). - Structural validation post-translation: params (
{name}, variant blocks) and tags (<em>) must survive verbatim — a translation that renames/drops them is rejected and the entry stays"", socheckkeeps reporting it. Rejections are listed in the CLI output.
Notes
- New deps:
@anthropic-ai/sdk >=0.110.0(optional peer + devDep^0.110.0). Zero impact when unused — the provider module lazy-imports it. - Catalog writes only touch locales that got translations; source catalog never modified.
- 197 tests (core 88 · compiler 75 · vue 10 · svelte 9 · react 8 · vite 7). Bench re-run: lookup 30.7×, interpolation 12×, plural 4.9×, currency 4.5× vs i18next.