gen-strings: best-effort strings in the Mac export jobs, so a stale settings schema can regenerate

Merged
TE
17d ago
+16-2

Problem. After #22577 (633c661c), the exported settings-schema.json named settings.choice.shuffleDaily, a key no catalog had. Strict webviews/scripts/pages/gen-strings.mjs failed on it (settings: 21 strings missing). Effects:

  • Every gallery build on cmux-lawrence failed: /live/ and 12 /wt/ previews, all with this one error.
  • The schema couldn't regenerate itself. The base autofix's action exports (Mac) job runs "Build the web bundles" (strict) before "Regenerate the settings exports", so it failed at the first step on every push (run 39514979808). The job that would fix the schema never got to run.

afffd40083ca fixed today's instance by hand: it put the old key back in the catalog. This was the second such deadlock on 10-20; the first was after the layout.focusPaneOnScroll rename, described in #22543.

Change. This is item 2 of #22543 on its own. That PR has no owner and conflicts with the base.

  • The Build the web bundles step in both Mac export jobs (cmux-next-base-autofix.yml and cmux-next-pr-autofix.yml) now sets CMUX_STRINGS_BEST_EFFORT=1. Those bundles only host the export tests and are never shipped or cached. A missing translation there becomes a warning, so regeneration can run.
  • gen-strings.mjs reads the variable as --best-effort for writes only. --check stays strict.
  • Shipped, nightly and published builds don't set the variable and stay strict.
  • The gallery host will also set it (manaflow-ai/cmux-gallery#16), so a missing translation can't take down every preview again.

The first commit (a hand edit of the schema) is undone in this PR's diff. The base fixed the catalog instead, and the schema is generated.

Verified (local, at the stale-schema base 985237c7):

  • node scripts/pages/gen-strings.mjs exits 1.
  • CMUX_STRINGS_BEST_EFFORT=1 node scripts/pages/gen-strings.mjs exits 0.
  • CMUX_STRINGS_BEST_EFFORT=1 node scripts/pages/gen-strings.mjs --check exits 1.
  • actionlint is clean on both workflows, and vp fmt --check is clean on gen-strings.mjs.

Not run: the Mac export job with the variable set. It runs on the next base push that changes settings or actions.

Agent session: cosmic-gray