From defbe5c914e35894f37b60078dd8e7768482c28d Mon Sep 17 00:00:00 2001 From: mjnong Date: Tue, 8 Sep 2026 08:43:04 +0200 Subject: [PATCH] release(beverage-utils): 0.13.0 (CEL-1702 shared certification key contract) --- CHANGELOG.md | 21 +++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d55574f..0c38c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 0.13.0 — 2026-09-08 + +New `src/certifications.ts` (CEL-1702): one certification vocabulary and one +i18n key contract for every dashboard. `CERTIFICATION_TYPES` (frozen: +`organic`, `fairtrade`, `sustainable`), `isCertification(value: unknown)`, +`normalizeAndCheckCertification(value)` (trim + lower-case, canonical id or +`null`), and `certificationLabelKey(id)` returning +`{ key: "certification.", fallback }`. Canonical ids always yield the +canonical key segment and the shared English fallback; unknown ids keep a +stable key with `.` and `:` replaced by `-` (i18next separators) and echo +the trimmed raw id as fallback. The key carries no namespace: producer +resolves it in `offers`, importer in `opportunities`, each owning the +`certification.*` block in its English locale file. Guarantee is key-path +parity and one English source string, not translation parity (ADR +`2026-09-08-one-certification-i18n-key-contract-for-every-dashboard`). + +Additive; no breaking change. Consumers: producer-dashboard replaces its +local `certificationLabelKey` in `src/lib/offer-form-i18n-labels.ts`, +importer-dashboard replaces the inline `certifications.*` keys in +`opportunity-detail.tsx`. + ## 0.12.0 — 2026-09-04 **Breaking:** removed the React adapter's `useBeverageLabelMap` / diff --git a/package-lock.json b/package-lock.json index 0a4a47e..f176ad3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@cellarnode/beverage-utils", - "version": "0.12.1", + "version": "0.13.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@cellarnode/beverage-utils", - "version": "0.12.1", + "version": "0.13.0", "license": "MIT", "dependencies": { "i18n-iso-countries": "7.14.0" diff --git a/package.json b/package.json index 4ca5a7e..c5234d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cellarnode/beverage-utils", - "version": "0.12.1", + "version": "0.13.0", "description": "Beverage classification utilities — label mapping, formatting, and display helpers for the CellarNode industry-standard beverage classification system.", "license": "MIT", "type": "module",