# @eloqnt/cli

## 0.6.33

### Patch Changes

- a925589: Add `eloqnt crowdin context extract`, `upload`, and `download` to add a source outline of where your code uses each string to its context on Crowdin. Context you write in place of an outline is kept until the string’s text changes.
- a925589: Fail with an error when a `srcPath` folder doesn’t exist or holds no next-intl calls, instead of running `lint`, `translate`, and `review source` without source analysis.
- Updated dependencies [a925589]
- Updated dependencies [5a2a313]
- Updated dependencies [ad5c626]
- Updated dependencies [dec6700]
- Updated dependencies [a925589]
  - @eloqnt/sdk@0.6.31

## 0.6.32

### Patch Changes

- Updated dependencies [a458eae]
  - @eloqnt/sdk@0.6.30

## 0.6.31

### Patch Changes

- 6ba6cc6: `eloqnt review` now reports its post-review checks as a step of their own, the way `eloqnt translate` does for its post-translation checks.
- Updated dependencies [21293f8]
- Updated dependencies [6ba6cc6]
- Updated dependencies [934d7c6]
- Updated dependencies [6ba6cc6]
  - @eloqnt/sdk@0.6.29

## 0.6.30

### Patch Changes

- Updated dependencies [54c9ea8]
  - @eloqnt/sdk@0.6.28

## 0.6.29

### Patch Changes

- Updated dependencies [73ef929]
  - @eloqnt/sdk@0.6.27

## 0.6.28

### Patch Changes

- 9f98b5b: `ELOQNT_ENGINE_URL` now takes the production engine origin or a localhost address, and reports an `INVALID_ENGINE_URL` error for anything else.
- 9f98b5b: Publish under the MIT license, with a `LICENSE` file in the package.
- Updated dependencies [9f98b5b]
- Updated dependencies [9f98b5b]
  - @eloqnt/sdk@0.6.26

## 0.6.27

### Patch Changes

- @eloqnt/sdk@0.6.25

## 0.6.26

### Patch Changes

- @eloqnt/sdk@0.6.24

## 0.6.25

### Patch Changes

- Updated dependencies [675e557]
  - @eloqnt/sdk@0.6.23

## 0.6.24

### Patch Changes

- @eloqnt/sdk@0.6.22

## 0.6.23

### Patch Changes

- @eloqnt/sdk@0.6.21

## 0.6.22

### Patch Changes

- @eloqnt/sdk@0.6.20

## 0.6.21

### Patch Changes

- Updated dependencies [387596a]
  - @eloqnt/sdk@0.6.19

## 0.6.20

### Patch Changes

- Updated dependencies [36dd19d]
  - @eloqnt/sdk@0.6.18

## 0.6.19

### Patch Changes

- 67ba767: Recognize locales CLDR carries no plural rules for, such as Occitan (`oc`) and Latin (`la`). They no longer report `invalid-locale`, `eloqnt translate` no longer refuses them, and the rules that need plural categories stand down for them while every other rule keeps checking.
- Updated dependencies [67ba767]
  - @eloqnt/sdk@0.6.17

## 0.6.18

### Patch Changes

- Updated dependencies [a31f75b]
  - @eloqnt/sdk@0.6.16

## 0.6.17

### Patch Changes

- 8679198: Fix link to styleguide page.

## 0.6.16

### Patch Changes

- 8b26d16: Added a `locales` selector to `lint.overrides`, so a rule can be scoped to specific locales instead of turned off everywhere.
- Updated dependencies [8b26d16]
  - @eloqnt/sdk@0.6.15

## 0.6.15

### Patch Changes

- Updated dependencies [518ab6e]
  - @eloqnt/sdk@0.6.14

## 0.6.14

### Patch Changes

- 4f59c9f: `studio.eloqnt.dev` was renamed to `engine.eloqnt.dev`, with CLI docs remaining at `cli.eloqnt.dev`.
- Updated dependencies [4f59c9f]
- Updated dependencies [e26637a]
  - @eloqnt/sdk@0.6.13

## 0.6.13

### Patch Changes

- Updated dependencies [d51f705]
  - @eloqnt/sdk@0.6.12

## 0.6.12

### Patch Changes

- bf3d942: Improve `eloqnt crowdin` errors
- bf3d942: Support `dest` in `crowdin.yml`.
- Updated dependencies [bf3d942]
- Updated dependencies [bf3d942]
- Updated dependencies [bb126c0]
  - @eloqnt/sdk@0.6.11

## 0.6.11

### Patch Changes

- Updated dependencies [1ab94d8]
- Updated dependencies [8c68cf9]
- Updated dependencies [1184f1a]
- Updated dependencies [1ab94d8]
  - @eloqnt/sdk@0.6.10

## 0.6.10

### Patch Changes

- 3652272: Pin `@swc/core` minor range to avoid incompatibility with latest `@swc/core` version (a full upgrade will ship later).
- Updated dependencies [d13ebb5]
- Updated dependencies [3652272]
  - @eloqnt/sdk@0.6.9

## 0.6.9

### Patch Changes

- cf0fbf8: Added the `lint` config: set a rule's severity or turn it off via `lint.rules` (`'error'`, `'warn'`, `'off'`), and scope settings to matching message keys via `lint.overrides`.
- Updated dependencies [cf0fbf8]
  - @eloqnt/sdk@0.6.8

## 0.6.8

### Patch Changes

- 2037a0f: Support `languages_mapping` and `content_segmentation` in `crowdin.yml`.
- aded990: A `translate` run now runs in local batches and reports how far along it is while it works.
- Updated dependencies [aded990]
  - @eloqnt/sdk@0.6.7

## 0.6.7

### Patch Changes

- 9c75437: Add a `styleguides` config option that sets the directory styleguides are loaded from, e.g. to share one set across multiple projects.
- Updated dependencies [9c75437]
- Updated dependencies [9c75437]
- Updated dependencies [9c75437]
  - @eloqnt/sdk@0.7.0

## 0.6.6

### Patch Changes

- ef191bf: `messages.format` can now reference a codec from an installed package by its name (e.g. `'@eloqnt/format-apple-xcstrings'`).
- ef191bf: `defineCodec` now accepts a shared-file variant for formats that keep every locale in one file.
- ef191bf: `messages.path` entries can now split into `{source, targets}` for when source and target files need a different path structure.
- Updated dependencies [ef191bf]
- Updated dependencies [ef191bf]
- Updated dependencies [ef191bf]
  - @eloqnt/sdk@0.6.5

## 0.6.5

### Patch Changes

- 934ab84: `eloqnt lint` now links the docs for the rules it reports (also for `--json` and GitHub Actions annotations)

## 0.6.4

### Patch Changes

- Updated dependencies [042cbc4]
  - @eloqnt/sdk@0.6.4

## 0.6.3

### Patch Changes

- Updated dependencies [d2a5b84]
  - @eloqnt/sdk@0.6.3

## 0.6.2

### Patch Changes

- c03e374: Add a `missing-other-case` lint rule for a `plural`, `selectordinal`, or `select` statement without an `other` case, which throws where the message is formatted. Messages like these were previously skipped by every rule, so their ICU arguments now get checked too.
- c03e374: A translation no longer has to spell out every plural category its locale can select on ([ref](https://x.com/jamannnnnn/status/2082746902219559208)). The rule is replaced by two, since its halves answer to different authorities: `unreachable-plural-case` for a case the target locale never selects, and `inconsistent-exact-plurals` for `=0`-style cases that don't match the source.
- Updated dependencies [c03e374]
- Updated dependencies [c03e374]
  - @eloqnt/sdk@0.6.2

## 0.6.1

### Patch Changes

- Updated dependencies [a594725]
  - @eloqnt/sdk@0.6.1

## 0.6.0

### Minor Changes

- 640779c: Add an `inconsistent-plurals` lint rule that reports plural cases which don't match the target locale's CLDR categories.
- 640779c: Locales that aren't recognised now fail loudly instead of being silently treated as the default locale. A new `invalid-locale` lint rule reports them, and `eloqnt translate` stops before spending inference on one.
- 640779c: `eloqnt translate` now reads CLDR data so `plural` and `selectordinal` statements are guaranteed to be adjusted for target locales.

### Patch Changes

- Updated dependencies [640779c]
- Updated dependencies [640779c]
- Updated dependencies [640779c]
  - @eloqnt/sdk@0.6.0

## 0.5.4

### Patch Changes

- e78663d: Add `eloqnt crowdin` commands for syncing messages with a Crowdin project via `crowdin.yml`: `upload sources`, `upload translations`, and `download translations`.
- Updated dependencies [e78663d]
  - @eloqnt/sdk@0.5.2

## 0.5.3

### Patch Changes

- 5cbbc66: Link each command's docs page from `--help` output, with command descriptions kept to one line.

## 0.5.2

### Patch Changes

- Updated dependencies [2f9e6d9]
  - @eloqnt/sdk@0.5.1

## 0.5.1

### Patch Changes

- 346af4a: Print the installed CLI version with `eloqnt --version` (or `-v`).

## 0.5.0

### Minor Changes

- 0560a2f: Inside GitHub Actions, `eloqnt lint` now surfaces issues as file annotations on the pull request, including the call site's line for `undefined-key`.
- 0560a2f: `eloqnt lint` now distinguishes errors from warnings. Missing translations are warnings and no longer fail the run, so lint can gate CI without requiring translations on every commit. Pass `--strict` to treat warnings as errors.

### Patch Changes

- 5877b8f: `eloqnt review` now notes in the diff when a fix was also synced to your source code (for `useExtracted`)
- Updated dependencies [0560a2f]
  - @eloqnt/sdk@0.5.0

## 0.4.2

### Patch Changes

- c673da8: Normalize the spacing above the `eloqnt translate` hint in `eloqnt lint` output to a single blank line, matching `eloqnt review`.

## 0.4.1

### Patch Changes

- 30b42f0: The source review now runs as `eloqnt review` (the explicit `eloqnt review source` form keeps working).

## 0.4.0

### Minor Changes

- 447e82d: Added `eloqnt review source`: Reviews source strings for typos and grammatical errors and fixes them in place.

### Patch Changes

- Updated dependencies [447e82d]
  - @eloqnt/sdk@0.4.0

## 0.3.2

### Patch Changes

- 8fcd1bf: Note in `eloqnt lint` when source code analysis is skipped due to an absent `srcPath`, and reword the equivalent note in `eloqnt translate`.
- 26db6a9: `eloqnt whoami` now notes that a trial includes 1/4 of the regular monthly usage.

## 0.3.1

### Patch Changes

- e3baa9b: Support path templates for `messages.path` to support non-next-intl consumers (e.g. i18next)
- Updated dependencies [e3baa9b]
  - @eloqnt/sdk@0.3.1

## 0.3.0

### Minor Changes

- 1512c63: Drop internal exports from `@eloqnt/sdk`'s public entry. The main entry now surfaces only what's intended for external use (`lint`, `defineConfig`, `defineCodec`, `translate`, and their return types); everything else moved to `@eloqnt/sdk/_internal` for workspace-only consumption.

### Patch Changes

- 0bea265: `eloqnt translate` now confirms whether your styleguides were picked up before the engine runs.
- 1512c63: Drop the engine API's backward-compat fields for pre-split CLIs. The older clients weren't actually picking them up in practice, so the fallback wasn't doing anything anyway.
- 1512c63: Merge `@eloqnt/inference` into `@eloqnt/sdk`.
- b184054: Add support for messages extracted by experimental `useExtracted` in `next-intl@<4.13`.
- Updated dependencies [1512c63]
- Updated dependencies [1512c63]
- Updated dependencies [b184054]
- Updated dependencies [5927856]
- Updated dependencies [e9e4514]
- Updated dependencies [1512c63]
  - @eloqnt/sdk@0.3.0

## 0.2.0

### Minor Changes

- 06b0b9c: BYOM projects pinning `@ai-sdk/*` provider packages should update them to versions that target AI SDK 7. Also drop `providerOptions` from `defineConfig`.
- 06b0b9c: Upgrade to AI SDK 7.

### Patch Changes

- Updated dependencies [06b0b9c]
  - @eloqnt/sdk@0.2.0

## 0.1.1

### Patch Changes

- 6dd6cb5: Identifies itself with a custom user agent so the studio's "Logged-in CLIs" list can show your device name and OS. CLI sessions logged in before this version still appear in the list — as "Unknown device" — and you can run `eloqnt logout && eloqnt login` to refresh the entry with the new metadata.

## 0.1.0

### Minor Changes

- 396e007: Split plans into "Hosted model" and "Bring your own model"

### Patch Changes

- Updated dependencies [396e007]
  - @eloqnt/sdk@0.1.0

## 0.0.9

### Patch Changes

- 2571ceb: Run static post-translation checks (ICU placeholder parity) on every received translation, with up to two automatic re-translations on failure.
- Updated dependencies [2571ceb]
  - @eloqnt/sdk@0.0.8

## 0.0.8

### Patch Changes

- cae3873: Consume AST context for `.json` formats, output file reference for `undefined-key` rule
- Updated dependencies [cae3873]
  - @eloqnt/sdk@0.0.7

## 0.0.7

### Patch Changes

- 62f3f06: `eloqnt whoami` now shows included usage and when it resets.

## 0.0.6

### Patch Changes

- Updated dependencies [9345112]
  - @eloqnt/sdk@0.0.6

## 0.0.5

### Patch Changes

- Updated dependencies [cc5762c]
  - @eloqnt/sdk@0.0.5

## 0.0.4

### Patch Changes

- 0ada64a: Refine CLI UX and align account commands with the shared error contract.
- 6159c7b: Handle messages split across several `messages.path` folders correctly, including a new `duplicate-id` lint rule for ids repeated across folders.
- Updated dependencies [c30db07]
- Updated dependencies [6159c7b]
  - @eloqnt/sdk@0.0.4

## 0.0.3

### Patch Changes

- ae30b1e: The `inconsistent-args` lint rule now catches rich tags (`<b>…</b>`) a translation drops or invents, not just `{argument}` placeholders. Placeholders are compared by their literal token, so a `<name>` tag never stands in for a `{name}` argument, and the reporter underlines the stray tag in the value.
- Updated dependencies [ae30b1e]
  - @eloqnt/sdk@0.0.3

## 0.0.2

### Patch Changes

- f50af2b: Make CLI errors friendlier.
- Updated dependencies [f50af2b]
  - @eloqnt/sdk@0.0.2

## 0.0.1

### Patch Changes

- 4b62102: Exercise the automated release pipeline. No functional changes since the initial 0.0.0 publish.
- Updated dependencies [4b62102]
  - @eloqnt/sdk@0.0.1
