Skip to content

Release v0.9.0

Choose a tag to compare

@AronSoto AronSoto released this 07 Jul 05:26
c9ba3f7

[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/compiler CLI): fills missing translations per target locale, batched (default 20 per request, translate.batchSize in 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 → extracttranslatecheck green → build passes.
  • Provider interface, no lock-in: translate.provider in verbaly.config.{ts,js} accepts a function ({ sourceLocale, targetLocale, messages }) => Promise<Record<key, translation>>. Exported: translateCatalogs, structureMatches, types TranslateProvider/TranslateRequest/TranslateOptions/TranslateResult/TranslateConfig.
  • Claude reference provider (claudeProvider, also exported): official @anthropic-ai/sdk as an optional peerDependency (lazy-loaded with an install hint, same pattern as esbuild for TS configs). Default model claude-sonnet-5 — balanced quality/cost for a translation workload (translate.model or --model to override), thinking disabled (translation needs no reasoning); structured outputs (output_config.format with a per-batch JSON schema) guarantee a valid key→translation map. Auth via ANTHROPIC_API_KEY (or an ant auth login profile — 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 "", so check keeps 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.