Changelog
@eloqnt/cli
Historic reference of all changes to @eloqnt/cli.
0.6.14
studio.eloqnt.devwas renamed toengine.eloqnt.dev, with CLI docs remaining atcli.eloqnt.dev.
0.6.12
- Improve
eloqnt crowdinerrors - Support
destincrowdin.yml.
0.6.10
- Pin
@swc/coreminor range to avoid incompatibility with latest@swc/coreversion (a full upgrade will ship later).
0.6.9
- Added the
lintconfig: set a rule's severity or turn it off vialint.rules('error','warn','off'), and scope settings to matching message keys vialint.overrides.
0.6.8
- Support
languages_mappingandcontent_segmentationincrowdin.yml. - A
translaterun now runs in local batches and reports how far along it is while it works.
0.6.7
- Add a
styleguidesconfig option that sets the directory styleguides are loaded from, e.g. to share one set across multiple projects.
0.6.6
messages.formatcan now reference a codec from an installed package by its name (e.g.'@eloqnt/format-apple-xcstrings').defineCodecnow accepts a shared-file variant for formats that keep every locale in one file.messages.pathentries can now split into{source, targets}for when source and target files need a different path structure.
0.6.5
eloqnt lintnow links the docs for the rules it reports (also for--jsonand GitHub Actions annotations)
0.6.2
- Add a
missing-other-caselint rule for aplural,selectordinal, orselectstatement without anothercase, which throws where the message is formatted. Messages like these were previously skipped by every rule, so their ICU arguments now get checked too. - A translation no longer has to spell out every plural category its locale can select on (ref). The rule is replaced by two, since its halves answer to different authorities:
unreachable-plural-casefor a case the target locale never selects, andinconsistent-exact-pluralsfor=0-style cases that don't match the source.
0.6.0
- Add an
inconsistent-pluralslint rule that reports plural cases which don't match the target locale's CLDR categories. - Locales that aren't recognised now fail loudly instead of being silently treated as the default locale. A new
invalid-localelint rule reports them, andeloqnt translatestops before spending inference on one. eloqnt translatenow reads CLDR data sopluralandselectordinalstatements are guaranteed to be adjusted for target locales.
0.5.4
- Add
eloqnt crowdincommands for syncing messages with a Crowdin project viacrowdin.yml:upload sources,upload translations, anddownload translations.
0.5.3
- Link each command's docs page from
--helpoutput, with command descriptions kept to one line.
0.5.1
- Print the installed CLI version with
eloqnt --version(or-v).
0.5.0
- Inside GitHub Actions,
eloqnt lintnow surfaces issues as file annotations on the pull request, including the call site's line forundefined-key. eloqnt lintnow 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--strictto treat warnings as errors.
eloqnt reviewnow notes in the diff when a fix was also synced to your source code (foruseExtracted)
0.4.2
- Normalize the spacing above the
eloqnt translatehint ineloqnt lintoutput to a single blank line, matchingeloqnt review.
0.4.1
- The source review now runs as
eloqnt review(the expliciteloqnt review sourceform keeps working).
0.4.0
- Added
eloqnt review source: Reviews source strings for typos and grammatical errors and fixes them in place.
0.3.2
- Note in
eloqnt lintwhen source code analysis is skipped due to an absentsrcPath, and reword the equivalent note ineloqnt translate. eloqnt whoaminow notes that a trial includes 1/4 of the regular monthly usage.
0.3.1
- Support path templates for
messages.pathto support non-next-intl consumers (e.g. i18next)
0.3.0
- 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/_internalfor workspace-only consumption.
eloqnt translatenow confirms whether your styleguides were picked up before the engine runs.- 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.
- Merge
@eloqnt/inferenceinto@eloqnt/sdk. - Add support for messages extracted by experimental
useExtractedinnext-intl@<4.13.
0.2.0
- BYOM projects pinning
@ai-sdk/*provider packages should update them to versions that target AI SDK 7. Also dropproviderOptionsfromdefineConfig. - Upgrade to AI SDK 7.
0.1.1
- 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 loginto refresh the entry with the new metadata.
0.1.0
- Split plans into "Hosted model" and "Bring your own model"
0.0.9
- Run static post-translation checks (ICU placeholder parity) on every received translation, with up to two automatic re-translations on failure.
0.0.8
- Consume AST context for
.jsonformats, output file reference forundefined-keyrule
0.0.7
eloqnt whoaminow shows included usage and when it resets.
0.0.4
- Refine CLI UX and align account commands with the shared error contract.
- Handle messages split across several
messages.pathfolders correctly, including a newduplicate-idlint rule for ids repeated across folders.
0.0.3
- The
inconsistent-argslint 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.
0.0.2
- Make CLI errors friendlier.
0.0.1
- Exercise the automated release pipeline. No functional changes since the initial 0.0.0 publish.