@shipi18n/cli 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @shipi18n/cli
2
2
 
3
+ ## 2.8.1
4
+
5
+ - Security (hardening): pulls core 2.8.1 (translator prompt-injection guardrail + recursion depth
6
+ bound). The `--semantic-cache` help now notes the verdict cache is a per-machine cost cache that
7
+ should be gitignored — a committed cache is untrusted and could suppress real findings.
8
+
9
+ ## 2.8.0
10
+
11
+ - New: ICU MessageFormat checks via core 2.8.0 — `plural-category` (missing CLDR plural categories,
12
+ warning) and `icu-invalid` (malformed ICU, error). ICU select sub-messages are no longer
13
+ mis-flagged as placeholders.
14
+
3
15
  ## 2.7.0
4
16
 
5
17
  - New: `shipi18n check` now validates **YAML locale files** (`.yaml`/`.yml`), flat or nested,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipi18n/cli",
3
- "version": "2.7.0",
3
+ "version": "2.8.1",
4
4
  "description": "Catch broken translations before you ship: dropped placeholders, missing keys, collapsed plurals and — with your own LLM key — mistranslations the structure checks cannot see. CI-ready (SARIF, JUnit, exit codes). Translates too.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -49,7 +49,7 @@
49
49
  "chalk": "^5.3.0",
50
50
  "commander": "^12.0.0",
51
51
  "ora": "^8.0.1",
52
- "@shipi18n/core": "^2.7.0"
52
+ "@shipi18n/core": "^2.8.1"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "@anthropic-ai/sdk": ">=0.30.0",
@@ -68,7 +68,7 @@ export function checkCommand(program) {
68
68
  'OpenAI-compatible endpoint for the judge (Ollama, Gemini compat, ...). Needs -p openai; makes the key optional'
69
69
  )
70
70
  .option('--semantic-passes <n>', 'Judge passes for the majority vote', (v) => parseInt(v, 10), 3)
71
- .option('--semantic-cache <file>', 'Verdict cache path', '.shipi18n/semantic-cache.json')
71
+ .option('--semantic-cache <file>', 'Verdict cache path (per-machine cost cache; gitignore it — a committed cache is untrusted)', '.shipi18n/semantic-cache.json')
72
72
  .option('--locks <file>', 'Manual-translation lock file', DEFAULT_LOCKS_PATH)
73
73
  .option('--no-locks', 'Ignore manual-translation locks')
74
74
  .action(async (input = './locales', opts) => {