From 43df1b55589ccf61595f688ae785cd8a5ee10849 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 27 Aug 2026 12:33:31 +0200 Subject: [PATCH] ci: run check:l10n-js, so the browser catalogues cannot drift again This app already has the generator and the `check:l10n-js` script; it just never ran them in CI. That is the whole difference between an app that stays translated and one that quietly stops. Adding a key to l10n/.json and forgetting the .js is invisible without this check: the server renders Dutch, the browser renders English, and every other check passes. `l10n/.json` is read server-side by PHP; the browser only ever sees `OC.L10N.register(...)` from `l10n/.js`, loaded as a script tag. Measured across the fleet today: the apps running this check had zero drift, while the four without it had accumulated 142, 329, 257 and 1,090 unreachable entries between them. Same code, same generator. The check was the difference. It also caught a translation PR that merged green having changed nothing a browser loads, which is how the whole thing started. Appended to the existing frontend-checks list rather than replacing it, so every check this repo already runs still runs. Verified before pushing: the workflow YAML still parses, and `node scripts/build-l10n-js.js --check` exits 0 on this tree, so the new leg is green on arrival rather than red for someone else to clean up. --- .github/workflows/code-quality.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index bb64dd96..a003e482 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -226,7 +226,7 @@ jobs: # renders the English source inside an otherwise translated form, silently. # The fleet had 30,459 such strings, so this records the current count and # fails only when it GROWS — burning it down stays an ordinary PR. - frontend-checks: '["check:manifest", "check:vue-demi", "test:l10n", "format", "check:schema-l10n"]' + frontend-checks: '["check:manifest", "check:vue-demi", "test:l10n", "format", "check:schema-l10n", "check:l10n-js"]' # ── Coverage ratchet ───────────────────────────────────────────────── # `enable-coverage-guard` defaults to FALSE, which is why both