Skip to content

Release v0.31.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 23:38
b0eaf88

The tooling stops contradicting itself. verbaly doctor called a project healthy while verbaly check blocked its build over the same catalogs, rejected the nested catalogs the runtime has always supported, and told an Astro or Nuxt app to install the package verbaly init had just told it not to. The gate read any <word> in prose as markup and failed correct translations over it, and every failure closed with the same "run extract" no matter what had actually failed. All of that is now one story: what a command reports is what the project is. Breaking (pre-1.0, tooling API only): detectBundler and InitResult.bundler are gone, and failOnMissing: false no longer switches off the whole gate. No runtime API change.

Highlights

  • verbaly doctor stops disagreeing with verbaly check. A translation that is present but broken is now an error in doctor too. The command you run when something looks wrong can no longer answer "setup looks healthy" about a project whose build fails.
  • Catalogs written as nested groups work everywhere. doctor used to reject them as invalid, and the gate only compared the group names: a group with one untranslated line inside counted as fully translated. Now every line is checked on its own, like the runtime already read it.
  • doctor points at the package your project actually needs. Astro, Nuxt, Next.js, SvelteKit, Vite or the bundler plugin, the same answer verbaly init gives, because both now read one table.
  • The build stops failing over text that only looks like markup. "Press <Enter> to continue" translated as "Pulsa <Intro> para continuar" was reported as two broken tags. A tag counts as structure only when the message closes it, so prose stays prose and a real <em> or a named link is still protected.
  • Each failure names the step that repairs it, instead of one "run extract" that only ever fixed missing translations. And failOnMissing: false now means what it says: it lets you build with untranslated strings, and still refuses to ship a translation that renders wrong.
  • A missing param says which message it came from. The warning used to print the param name alone, once per name, so the second message with the same gap stayed silent.

For the full details of this release, see the repository changelog.