lingo.dev@0.138.5

Gerstep/cyboslingo.dev@0.138.5Aug 19, 2026by github-actions[bot]

AI Summary

Optimizes performance for projects with many bucket paths and locales by reducing I/O operations.

Key Highlights

  • Writes lockfile pattern sections only once instead of per-locale.
  • Serializes writes to reduce contention.
  • Loads lockfile faster by attempting plain parse before repair path.

New Features

  • Performance optimization for 'lingo.dev run' with many buckets
  • Reduced I/O for lockfile persistence

Full Release Notes

### Patch Changes

- [#2191](https://github.com/lingodotdev/lingo.dev/pull/2191) [`fa77c24`](https://github.com/lingodotdev/lingo.dev/commit/fa77c24701e19be876f746edbc22a188f0812b5a) Thanks [@cherkanovart](https://github.com/cherkanovart)! - Speed up `lingo.dev run` on projects with many bucket paths and locales.

  Every translation task rewrote the whole `i18n.lock`, so a run performed
  `patterns × locales` full read-modify-write cycles to persist `patterns`
  sections. Since every target locale of a bucket path derives its checksums from
  the same source data, all but the first write per pattern stored identical
  bytes. A run now writes a pattern's section once, and those writes are
  serialized against each other.

  Loading the lockfile also ran the deduplication pass — a full CST parse plus a
  re-serialization of the entire file — on every load. Deduplication only repairs
  a hand-merged lockfile, which is exactly the case `YAML.parse` rejects, so the
  load now tries the plain parse first and falls back to the repair path only when
  that fails. Malformed and hand-merged lockfiles keep loading exactly as before.

  The contents of `i18n.lock` are unchanged.