mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
Adds `scripts/i18n-coverage-report.ts` (wired via `pnpm i18n:coverage`) that reports per-locale key-coverage drift against English. The output looks like: Locale (key total = 1578 on en) en English keys=1578 missing= 0 ... zh-CN 简体中文 keys=1578 missing= 0 coverage=100% th ภาษาไทย keys=1261 missing= 317 coverage=80% ... Why this is useful right now: - The existing `scripts/i18n-check.ts` validates *structural* consistency (locale registration, README switcher alignment, core doc link references) and exits non-zero on failure. It does not surface content-coverage drift. - The test suite enforces strict English-parity only for Indonesian (`id`) — other locales pass CI even when an English key was added without a matching translation. Today the average locale is missing ~140–300 keys vs English on `main`. This script is purely informational — exit code stays 0. It gives contributors and release managers a fast way to see which locale needs translation work without breaking PRs until the locale catches up. Issue #1894 covers the policy question of *whether* strict enforcement should extend beyond Indonesian (e.g., to a tier-1 locale set); this script is the substrate for that policy conversation, not a substitute for it. Refs #1894. Validation: - `pnpm i18n:coverage` runs end-to-end against the 19 locale files under `apps/web/src/i18n/locales/`, exit 0. - `pnpm guard` green. - `pnpm exec tsc -p scripts/tsconfig.json --noEmit` green. Co-authored-by: nicejames <nicejames@gmail.com>
46 lines
1.7 KiB
JSON
46 lines
1.7 KiB
JSON
{
|
|
"name": "open-design",
|
|
"version": "0.7.0",
|
|
"private": true,
|
|
"packageManager": "pnpm@10.33.2",
|
|
"type": "module",
|
|
"description": "Local-first design product: detects your installed code-agent CLI, runs design skills + design systems, streams artifacts into a sandboxed preview.",
|
|
"license": "Apache-2.0",
|
|
"bin": {
|
|
"od": "./apps/daemon/dist/cli.js"
|
|
},
|
|
"scripts": {
|
|
"postinstall": "node ./scripts/postinstall.mjs",
|
|
"tools-dev": "pnpm exec tools-dev",
|
|
"tools-pack": "pnpm exec tools-pack",
|
|
"tools-pr": "pnpm exec tools-pr",
|
|
"guard": "tsx ./scripts/guard.ts && node --import tsx --test scripts/style-policy.test.ts",
|
|
"i18n:check": "tsx ./scripts/i18n-check.ts",
|
|
"i18n:coverage": "tsx ./scripts/i18n-coverage-report.ts",
|
|
"sync:community-pets": "node --experimental-strip-types scripts/sync-community-pets.ts",
|
|
"bake:community-pets": "node --experimental-strip-types scripts/bake-community-pets.ts",
|
|
"seed:test-projects": "node --experimental-strip-types scripts/seed-test-projects.ts",
|
|
"seed:curated-design-skills": "node --experimental-strip-types scripts/seed-curated-design-skills.ts",
|
|
"typecheck": "pnpm -r --workspace-concurrency=1 --if-present run typecheck && tsc -p scripts/tsconfig.json --noEmit"
|
|
},
|
|
"devDependencies": {
|
|
"@open-design/tools-dev": "workspace:*",
|
|
"@open-design/tools-pack": "workspace:*",
|
|
"@open-design/tools-pr": "workspace:*",
|
|
"@types/node": "^20.17.10",
|
|
"tsx": "4.21.0",
|
|
"typescript": "^5.6.3"
|
|
},
|
|
"engines": {
|
|
"node": "~24",
|
|
"pnpm": ">=10.33.2 <11"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"better-sqlite3",
|
|
"electron",
|
|
"esbuild"
|
|
]
|
|
}
|
|
}
|