Release v0.13.0
[0.13.0] — 2026-07-09
verbaly doctor + adoption & trust. Setup diagnostics with the exact fix per finding, the i18next migration guide on the docs site, a coverage push (274→335 tests), and releases now publish from GitHub Actions with npm provenance (OIDC). Ready to publish. No breaking changes; runtime packages untouched in behavior.
Added
verbaly doctor(@verbaly/compilerCLI): diagnoses the whole setup in one command — config file found, catalogs dir + every locale file (present, valid JSON, flat key→string), bundler plugin wiring (detectBundler+@verbaly/vite/@verbaly/unpluginin deps),verbaly.d.tsfreshness (regenerates and byte-compares), orphan keys (in catalog, not referenced) and translation completeness (reusescheck). Every warn/error carries the exact fix command (pillar 3: actionable errors);ok/warn/errorlevels, exit 1 only on errors. Exported API:doctor(cfg), typesDoctorEntry/DoctorResult; also newfindConfigFile(root)(config, dedupes the search listinitused).- Release workflow with npm provenance (repo):
.github/workflows/release.yml,workflow_dispatch-only (Aron triggers with the version as input; guard againstpackages/core/package.json). Runs the full suite and publishes all 7 withpnpm -r publish --provenancevia OIDC — packages get registry attestations (Socket supply-chain score lever). Requires one-time Trusted Publisher setup per package on npmjs.com. Localpnpm releasestays as fallback (no provenance). codecov.yml(repo): project target 90% (threshold 1%), patch informational — stable badge.
Changed
- Coverage push (all packages): claude translate provider 31→
100% (mocked SDK;98% (fake dev server: watcher events, HMR invalidation, self-write dedupe, unlink), plus branch-edge tests in core (parse/ICU/format/locale/instance), compiler (registry/extract/catalog/check) and adapters (react provider-throw, svelte context hooks via new test fixtures, unplugin id branches). Project: 81.9%→loadSdkgained an injectable loader seam — internal, not re-exported),@verbaly/vite57→91% branches, 91%→98% lines. - Comparison table re-sealed (pillar 5, README + web landing): i18next 26.3.6 core is ~13.5KB gzip (+9.4KB react-i18next) — the old "~25KB" overstated the core; typesafe-i18n is "sporadic maintenance" (one release in 2½ years: 2023-08 → 2026-02), not "unmaintained"; Lingui 6.5 / Paraglide 2.21 / next-intl 4.13 verified active.
- Drift fixes: root README (tsup→tsdown, test count),
verbaly-package-devskill (per-version changelog files → singleCHANGELOG.md).
Notes
- 335 tests (core 130 · compiler 136 · svelte 22 · vue 12 · react 11 · unplugin 9 · vite 15) — was 274; +50 coverage push, +11
doctor. - Bench re-run (ritual): lookup 34.7×, interpolation 16.5×, plural 5.2×, currency 5.5× vs i18next 26 — no regression.
- Bundle check: tree-shaken
createVerbalyruntime 3.26KB min+gzip, full core surface 4.63KB — flat vs 0.12.0 (runtime untouched). - publint All good ×7 + arethetypeswrong no problems (core/react/vue, node16 CJS/ESM 🟢); tarballs verified (compiler + core:
workspace:*→0.13.0, onlydist/+LICENSE+ README). - New public API — compiler:
doctor,DoctorEntry,DoctorResult,findConfigFile. All additive. No new dependencies. - E2E verified:
verbaly doctorexercised against a broken scratch project (missing plugin, stale types, orphan, unknown key, missing translations → exit 1 with fixes) and a healthy one (all ✓, exit 0).