Closes#137190
## What Problem This Solves
Fixes an issue where users selecting a non-English Control UI language would still see core Settings labels and help in English when matching translations were available.
## Why This Change Was Made
The shared hint resolver now uses active-locale copy and retains current Gateway text when a translation is missing. The existing source catalog includes core hint labels and help under path-, field-, and source-specific keys. Catalog value operations stay separate from core imports so ordinary Vite configuration loading works. Development reloads use a fresh loader namespace and watch imported source files. Check and locale-refresh inputs cover the catalog owner and core metadata producers.
## User Impact
Available core translations reach Settings forms and search. Direct and wildcard lookup, non-copy metadata, and dynamic plugin text retain their existing behavior. No generated locale data or settings changes ship in this PR.
## Evidence
Verified with production-built Control UI and an isolated real Gateway: Turkish label/help and Settings search fail on pinned main, then pass on the candidate. English restoration, missing translations, dynamic Telegram metadata, and refresh controls pass. Matching build-only Turkish fixtures establish the conditional translation. A same-process Vite reload replaces the source key and drops stale translated copy after the English source changes.
Focused UI, browser, hint-resolution, catalog, sync-plan, and CI-scope tests pass. The corrected scope selector passes all 253 tests across six scope suites, including the existing negative control for unrelated configuration defaults. Keyless locale verification, targeted lint, and workflow checks pass. Independent browser acceptance exercised the user flows; source/catalog properties have separate evidence. The two Playwright-driving server suites now explicitly use Node: their prior jsdom setup failures were reproduced, then all 125 unchanged browser tests passed. An ordered follow-up reproduced fake timers leaking from an earlier tool-stream test into composer setup; producer-owned cleanup then passed the same four selected tests without changing assertions or timeouts.
The scripts typecheck now includes the existing virtual-locale declaration, which is needed by the shared form helper’s translation import. The prior hosted UI shard passed, including composer. Full compiler validation runs in CI.
## Compatibility
Existing translation-memory fields and the generated locale format stay unchanged. The new catalog-values module moves existing readers and materialization logic. New core entries use the same generated format; missing entries fall back to current Gateway text until the existing locale publisher fills them. The full Gateway schema and hint metadata match the baseline. No runtime-state migration is needed.
Thanks @husodrn46 for the original implementation and reproduction.
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Group eligible core and UI targets within a conservative argument budget,
preserving Windows scheduling, lint coverage, fallback, and resource policy.
Refs #142689.
* fix(maturity): include ChromeOS in Linux cohort (#142067)
* fix(maturity): recognize the Windows App and Node
* fix(maturity): cover durable work orchestration (#142068)
* fix(ci): reuse verified runner toolchain archives
Reuse authenticated image archives for pinned Node and pnpm runtime preparation while preserving fresh untrusted extraction and frozen dependency reconciliation.
Punchcard-Session: calm-lantern-orchard-dn
* fix(ci): align image archive reuse validation
Register the composite action helper as an executable Knip root, make archive fixture digests definite strings, and align the hydration contract with the existing Node selector.
Punchcard-Session: calm-lantern-orchard-dn
* fix(ci): include image consumer in hydration test routing
Keep the strict routing expectation aligned with the image consumer test that reads the hydration workflow.
Punchcard-Session: calm-lantern-orchard-dn
* fix(ci): preserve Corepack cache in hydrated sessions
Persist the selected job-private Corepack home in saved Crabbox environments and cover configured and unset restoration through the real ready-step Bash.
Punchcard-Session: calm-lantern-orchard-dn
* fix(ci): keep hosted tooling anchors stable
Keep isolated tooling independent during GitHub PR repacking so inventory growth preserves non-tooling placement within the unchanged 80-job budget.
Punchcard-Session: calm-lantern-orchard-dn
* fix: close out stable releases after split publication recovery
* fix: bind closeout checksums to their exact evidence files
* fix: keep closeout proof on its executable test owners
Align root, native source, plugin and companion version metadata with the published stable release. Preserve newer main code and translations, regenerate the channel catalog, and copy the exact tagged release-note section without adding another release train. Native appcast and locale refreshes remain with their independent owners.
Backport the reviewed 2026.9.3 tooling from 7e5e00c537, 87ab903220 and d078fc9376: bounded request-only native owner context, printf argument-role guidance, encoded JSON batch accounting and bounded selected native/UI refreshes.
Retain reused aliases under their own cache keys before a selected primary translation-memory record is replaced. A canonical-cache serialized round-trip regression reproduces the prior alias loss and verifies independent translations remain separate.
Validation: causal missing-feature and alias-loss failures reproduced, all 85 owner tests passed, final focused 9 tests and lint passed, changed guards/typechecks/UI catalog verification passed, and independent P2 review is clean. Newer main Bash 3.2 and native setup/secret-file owners remain unchanged. No corpus, generated-resource, version, changelog or appcast changes.
scripts/pr merge-run refused any GitHub squash preview that carried agent
attribution, so PRs with Claude, Codex, Cursor, or Copilot trailers needed a
hand-written --body-file. The composer now drops machine credit wherever
GitHub replayed it (terminal block, per-commit bullets, folded or indented
lines), keeps and appends every human Co-authored-by trailer from the PR's
commits, rejects reviewed bodies that still contain machine credit anywhere,
and refuses merge-queue admission when the preview needs any edit. Machine
identities are exact verified addresses plus GitHub App [bot] accounts;
Copilot, claude[bot], cursor[bot], the Codex connector, and noreply@openai.com
join the list.
Dry run against PR #126816's commits: all four Claude lines removed,
ruel225 and zhang-guiping credit kept.