Releases: lingodotdev/lingo.dev
lingo.dev@0.136.0
Minor Changes
-
#2093
74c8be0Thanks @cherkanovart! - Change the default behavior oflingo.dev lockfileso it fills in missingi18n.locksections additively instead of bailing out. Without--force, sections that already contain checksums are left untouched (preserving the divergence signal that--frozenrelies on), and any pathPattern whose section is missing or empty is populated from the current source.--forcestill rebuilds the entire lock as before.Update the
--frozenvalidation error to point users at the recovery command: messages now read "Runlingo.dev lockfileto refresh i18n.lock, or run without --frozen."Together these surface a fix for the false-positive
--frozenfailures that PR #2091 did not cover (new files under**globs, new buckets, prior--target-localeruns that don't write checksums, and pre-existing empty lock sections).
@lingo.dev/compiler@0.4.3
Patch Changes
- Updated dependencies [
74c8be0]:- lingo.dev@0.136.0
lingo.dev@0.135.1
Patch Changes
- #2091
bf06078Thanks @cherkanovart! - Fix--frozenfalsely reporting "Source file has been updated" after a no-oprun. Whenlingo.dev runfinds nothing to translate (source matches target), it now persists source checksums toi18n.lockso a subsequent--frozenrun has a baseline to validate against.
lingo.dev@0.135.0
Minor Changes
-
#2089
0106b48Thanks @cherkanovart! - Support recursive glob patterns (**) in bucketinclude/exclude.Patterns like
config/locales/**/[locale].ymlorsrc/**/[locale]/strings/*.jsonnow match files at any depth, so you no longer need to enumerate every nesting level. The previous restriction that rejected any pattern containing**has been removed.Two safety nets ship with this change, both scoped to patterns that actually use
**:- For
**patterns only,node_modules,.git,dist,build,.next, and.turboare excluded by default so a broad pattern like**/[locale].jsondoes not descend into vendored or build trees. Existing patterns without**keep the previous traversal behavior exactly as before. Add your ownexcludeentries on top as needed. - When a matched file cannot be unambiguously mapped back to the
[locale]placeholder (for example, a pattern with multiple wildcards around[locale]that admits more than one valid restoration), the CLI now throws a clear error instead of silently returning a malformed path.
- For
@lingo.dev/compiler@0.4.2
Patch Changes
- Updated dependencies [
0106b48]:- lingo.dev@0.135.0
lingo.dev@0.134.0
Minor Changes
-
#2087
2787e33Thanks @moygospadin! - Fixlingo.dev loginon Safari (and other browsers that block mixed-content requests tolocalhost).The login command now uses a polling-based device flow: the CLI registers a session with the API, opens the browser to confirm it, then polls until the user grants access. The previous flow opened a local Express server and asked the web page to
POSTthe API key tohttp://localhost:<port>, which Safari blocks because the page is served over HTTPS. The web app continues to support the legacy?port=query parameter for one release cycle so CLI versions published before this change keep working in Chrome — Safari users need this upgrade either way. Theexpressandcorsdependencies are no longer needed and have been removed.
@lingo.dev/compiler@0.4.1
Patch Changes
- Updated dependencies [
2787e33]:- lingo.dev@0.134.0
lingo.dev@0.133.12
Patch Changes
- #2082
34f5b6fThanks @AndreyHirsa! - Fix Windows: translations now generate for mixed-case source locales (e.g.en-US). The placeholder reinsertion regex inbuckets.tswas case-sensitive while paths were lowercased on Windows, so[locale]was lost from the matched pattern and only the source file was rewritten.
lingo.dev@0.133.11
Patch Changes
814ecdfThanks @cherkanovart! - chore: remove stale TODO comment
@lingo.dev/_spec@0.49.1
Patch Changes
- #2076
bb295f7Thanks @cherkanovart! - feat(cli): addkeyColumnoption for CSV buckets to specify which column is the unique row identifier, and validate key uniqueness to prevent silent data loss from duplicate keys