Uh oh!
There was an error while loading. Please reload this page.
fix(i18n): de auth.device.* moves to the passive register - #6685
Merged
Conversation
Genehmige…/Ablehne…/Lade… -> Wird genehmigt…/Wird abgelehnt…/Wird geladen…. Ablehne… was not a grammatical German form (ablehnen is separable-prefix; first person is "ich lehne ab"). Converging the whole namespace to the passive -- the pack's measured dominant in-flight register -- resolves that bug and removes the LOADING_GROUP_FORKS exemption for auth.device.loading rather than maintaining it. Fixes#6611
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-sales
marked this pull request as ready for review
August 28, 2026 14:51
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#6611
Ruling implemented: option 2, the passive register
Per triage's 2026-08-27 ruling:
packages/i18n/src/locales/de.ts'sauth.device.*in-flight states move to the passive, and the
LOADING_GROUP_FORKSexemption rowfor
auth.device.loadingis deleted since it no longer applies.auth.device.approvingGenehmige…Wird genehmigt…auth.device.denyingAblehne…Wird abgelehnt…auth.device.loadingLade…Wird geladen…Graded a Bug, not a taste call:
ablehnenis a separable-prefix verb, so thefirst-person singular is ich lehne ab —
Ablehne…was not a grammatical Germanform, and the pack shipped it on
DeviceAuthPage.tsxto users today.Premise re-derived before touching anything
Triage's basis for option 2: "the
depack's dominant in-flight register is thepassive, at roughly 37 values whose
enis a bare gerund rendering asWird …."Re-counted against the tree with a Unicode-aware (
\p{L},uflag), position-awarequery —
envalue matching^\p{L}+ing…$(a bare single-word gerund + U+2026),devalue matching
^Wird\s.+…$(passive auxiliary as the first word) — with a positivecontrol on
common.loading(en"Loading…" /de"Wird geladen…", both match) so alow or zero count would be distinguishable from a broken query:
en-bare-gerund keys renderdeasWird …(≈66%), vs. 21 thatdon't — all three
auth.device.*keys correctly fell in the 21 pre-fix, confirmingthe query's internal consistency.
on the precise regex shape — e.g.
topbar.connection.connecting/reconnectingrender
Verbindung wird hergestellt…, a passive construction but notfirst-word
Wird, so my position-aware definition doesn't count them either way).The
LOADING_GROUP_FORKSrow deleted, and whyauth.device.loadingwas the sole member of objectui#5972's mergedLoading…groupcarved out by name, because converging it alone while
approving/denyingstayedfirst-person would have manufactured a new same-screen inconsistency
(
Genehmige… / Ablehne… / Wird geladen…). Moving the whole namespace to the passiveremoves that fork rather than maintaining it:
LOADING_GROUP_FORKSis now[].'pins the forked values...'test assertstoHaveLength(0)instead of(1).approving/denyingas the fork'sfirst-person "reason" (
Genehmige…/Ablehne…) are removed — the fork itself isgone, so pinning its old reason would just re-fail on this very PR.
## The de fork, and why it is exempted BY NAME) is updated to past tense with aresolved by objectui#6611pointer, thesame class of edit PR fix(i18n): ar spells the standalone participle جارٍ pack-wide, not two ways #6675 made to this file's
arnote earlier today for thesame reason (a present-tense claim about the code had gone stale).
The gate interaction holds:
auth.device.loading'senvalue never moves, sothe
#5972block'sderives the group from en and finds exactly the ten keys pinned abovetest — which derivesLOADING_GROUPfresh fromen === 'Loading…'— staysgreen unchanged (verified below).
Scope
Exactly 3 values in
de.ts, 1 pin row deleted (plus the consequential test-fileedits it forces: the length assertion and the two now-false trailing assertions
described above). No key added or removed. No
envalue moved (confirmed bycheck-i18n-en-drift.mjs: 0envalues changed). No other locale touched.Gates
All commands run from the repo root per this repo's vitest-invocation convention;
exit codes captured via
EXIT=$?immediately after redirect, never after a pipe.Verdicts quoted from each command's own printed output on the final commit
(
817a615e5).packages/i18nvitest scopepnpm exec vitest run packages/i18n/Test Files 58 passed (58)/Tests 927 passed (927), exit 0pnpm exec vitest run packages/i18n/src/__tests__/ellipsis-glyph-3878.test.tsTests 7 passed (7), exit 0 — including the#5972group-derivation testpnpm --filter '@object-ui/i18n^...' buildthenpnpm --filter @object-ui/i18n type-checktsc --noEmit && tsc -p tsconfig.test.json, exit 0 (had to build@object-ui/core/@object-ui/typesfirst — staledist/*.d.tsfailed withTS6305before that)check:control-bytesnode scripts/check-control-bytes.mjs✅ OK (scanned 5529 tracked text file(s); skipped 85 binary)grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' <changed files>check-i18n-en-driftnode scripts/check-i18n-en-drift.mjs0 en value(s) changed ... No en value changed in this range.check-i18n-dead-keysnode scripts/check-i18n-dead-keys.mjscheck-i18n-call-site-keysnode scripts/check-i18n-call-site-keys.mjsnode scripts/check-changeset-presence.mjs✅ 2 source file(s) of 1 released package(s) changed, and this change declares 1 changeset(s)node scripts/check-changeset-no-major.mjs✅ No changeset declares a major bumpAblation (predicted before running)
Prediction: only
auth.device.loadingis a member ofLOADING_GROUP(approving/denyingare outside it — theirenisApproving…/Denying…, notLoading…).Reverting
auth.device.loadingalone to its old spelling should turn the#5972uniformity test red, naming
deandauth.device.loadingspecifically, sinceLOADING_GROUP_FORKSis now empty and nothing exempts it.817a615e5), so the ablation has a real restorepoint (never mutate uncommitted work — AGENTS.md).
de.tsonly (sed -i '2029s/.../loading: "Lade…",/'),confirmed on disk by counting the anchor text, not
git diff --stat(equal-lengthsubstitution):
"Wird geladen…"occurrences8 → 7,loading: "Lade…"0 → 1.holds one rendering per language across the group, apart from the named forksfailed with
de: 2 renderings — "Wird geladen…" on ... | "Lade…" on auth.device.loading. 6/7 passed, 1/7 failed, exit 1.git checkout HEAD -- packages/i18n/src/locales/de.ts. Confirmed bygit diff HEAD(empty) andgit status --short(clean) — not by exit code.Re-counted the anchor:
"Wird geladen…"back to 8, line 2029 back toloading: "Wird geladen…",.Tests 7 passed (7), exit 0.Generated by Claude Code