Repository navigation
fix(i18n): console copy names the system the user is in, not the cloud noun (objectui#12956) - #12959
Conversation
…d noun (objectui#12956) Inside a running deployment the console no longer calls itself "this environment" / 「此环境 / 本环境」: the named families (settingsHub, workspaceTimezonePrompt, readRate, auth, profile.password, home, connectAgent, aiModelStatus) say "this system" / 「本系统」, or drop the noun. All ten packs follow; inline English defaults follow en. No key renamed, added or removed. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
Dropping the cloud noun made the en value of home.loading the bare "Loading…", so it now belongs to the group ellipsis-glyph-3878 pins for per-language uniformity. zh and ko take the group's rendering; the pinned member list grows by that one key. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
|
changeset-claim-re-read
|
✅ 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
|
CI stand-down ·
|
Fixes #12956
Clause-②: no
What changed
Inside a running deployment the console stops calling itself "this environment" / 「此环境 / 本环境」 (objectstack-ai/cloud#3002, ruling A). Every value in the card's named families that said so now says "this system" / 「本系统」, or drops the noun where the sentence reads without it. All ten packs follow. No key is renamed, added or removed (
all-locales-key-paritygreen).console.settingsHub.categories.Workspace, the manifest category that holds Company, Branding and Localization) reads "General" / 「常规」, the plainest name for what is configured there and not another cloud noun. Each pack uses the word it already uses fororganization.settings.generalTitle.auth.setPassword.description,home.recoveryReminder.messagein zh only, since en never named it), the threeprofile.password.*descriptions, andhome.loading("Loading…" / 「加载中…」).home.loadingjoined the mergedLoading…group thatellipsis-glyph-3878.test.tspins for per-language uniformity, because its en value is now exactlyLoading…. zh and ko take the group's existing rendering (「加载中…」, 「로딩 중…」), and the pinned member list grows by that one key.pnpm check:i18n-keysrefuses an inlinedefaultValuethat differs from the en value it falls back for, so the call sites' literals moved with en (see Deviations).A1: every value in the named families, per pack
Families:
console.settingsHub,console.workspaceTimezonePrompt,console.readRate,auth.*,profile.password,home.*,connectAgent,aiModelStatus. Enumerated from the loaded packs (every string under each family, matched for the noun in each pack's script), not from line numbers. 22 keys change in all ten packs, plushome.recoveryReminder.messagein zh only: 221 values. Every hit in these families changed; there is no "keep" row.console.settingsHub.subtitleconsole.settingsHub.categories.Workspaceconsole.workspaceTimezonePrompt.titleconsole.workspaceTimezonePrompt.descriptionconsole.workspaceTimezonePrompt.savedconsole.readRate.ratioTitleconsole.readRate.noWritesTitleauth.register.errors.selfRegistrationClosedauth.setPassword.descriptionauth.verifyEmail.resendUnavailableauth.shell.tenantHostHintprofile.password.changeDescriptionprofile.password.setDescriptionprofile.password.localSethome.build.noCapabilityhome.loadinghome.noAppsDescriptionhome.recoveryReminder.messagehome.quickActions.systemSettingsDescconnectAgent.url.titleconnectAgent.url.skillHintaiModelStatus.readFailedaiModelStatus.readFailedWithStatusconsole.settingsHub.subtitleconsole.settingsHub.categories.Workspaceconsole.workspaceTimezonePrompt.titleconsole.workspaceTimezonePrompt.descriptionconsole.workspaceTimezonePrompt.savedconsole.readRate.ratioTitleconsole.readRate.noWritesTitleauth.register.errors.selfRegistrationClosedauth.setPassword.descriptionauth.verifyEmail.resendUnavailableauth.shell.tenantHostHintprofile.password.changeDescriptionprofile.password.setDescriptionprofile.password.localSethome.build.noCapabilityhome.loadinghome.noAppsDescriptionhome.recoveryReminder.messagehome.quickActions.systemSettingsDescconnectAgent.url.titleconnectAgent.url.skillHintaiModelStatus.readFailedaiModelStatus.readFailedWithStatusNot changed in these families, on purpose: de
auth.device.approveWarningandhome.template.marketplaceDisabledsay "Laufzeitumgebung", ruauth.device.approveWarningsays "среда выполнения" (both mean "runtime", which en says), ruauth.login.devAdminHint.titlesays "Локальная среда разработки" (a local development setup), and jaconnectAgent.claude.reachabilitysays 「イントラネット環境」 (an intranet). None of them names the deployment the user is in.Pins (A2)
apps/console/src/pages/settings/__tests__/WorkspaceTimezonePrompt.test.tsxasserted the old title in en (twice) and zh, and the old en toast. It now asserts "Set the system timezone", 「设置系统时区」 and "System timezone set to Europe/Berlin".packages/i18n/src/__tests__/ellipsis-glyph-3878.test.ts, theLoading…group list (above).packages/i18n/src/__tests__/console-copy-system-noun-12956.test.tsenumerates every zh string under each named family and fails on 此环境 / 本环境 / 该环境. It asserts each family resolves to at least one string first, so a family that stops resolving cannot pass vacuously.01c849e092viascripts/ablation-replace.mjsfrom the objectstack checkout (the test readssrc, no build in the path): zhconsole.readRate.ratioTitleset back to 「本环境读取量异常」. Mutation landed (anchor 1 → 0, blob4fced541eba5→5e471d6fb55f). The pin went red:× zh console.readRate carries no 此环境 / 本环境 / 该环境,Tests 1 failed | 8 passed (9). Restored: blob == HEAD (4fced541eba5) andgit diff HEADempty.Gates (run on
01c849e092)pnpm check:i18n-keys0.check:i18n-drift0 ("22 en value(s) changed … 198 pack value(s) followed … Every changed en value was followed by all nine translation packs.").check:i18n-designer-parity0,check:i18n-dead-keys0.check:phantom-deps,check:self-import,check:unreferenced-sources,check:doc-example-readers,check:handler-key-reads,check:side-effects-array,check:element-data-source-declaration,check:spec-symbols,check:action-forward-parity,check:designer-field-key-parity,check:icon-record-names,check:control-bytes,check:new-line-citations,node scripts/check-hand-rolled-comment-mask.mjs,node scripts/check-changeset-fixed.mjs,node scripts/check-changeset-presence.mjs.check:spec-floors1,no-artifact(it wants a whole-workspace build), as on main.@object-ui/i18ntype-check0 on01c849e092(itstsconfig.test.jsonlists both edited tests).@object-ui/app-shelland@object-ui/consoletype-check0 afterturbo run build --filter='@object-ui/console^...'(34 tasks) ond82d4ed40c. The later commit touches only i18n values and one i18n test.--maxWorkers=1, under the shared lock: 13 i18n files (the new pin plus the locale-parity, ellipsis, quote, orthography, identity, namespace and census suites) 219 passed; 11 app-shell files that render the changed keys 100 passed; 9 console files 71 passed. The wholepackages/i18n/,packages/app-shell/andapps/console/directories are left to CI.eslint --no-inline-config --format jsonover the 21 changed.ts/.tsxfiles: 21 files, 0 errors, 5 warnings, all on lines this PR does not touch. The rooteslint.config.jssets no type-aware parser options, so this diff cannot change a verdict on any file it does not touch. The repo-widepnpm lintis left to CI.Deviations
defaultValueliterals only, becausepnpm check:i18n-keysrefuses a default that differs from the en value:packages/app-shell/src/layout/ReadRateBanner.tsx,packages/app-shell/src/console/auth/signUpRefusalMessages.ts,packages/app-shell/src/console/home/HomePage.tsx,packages/app-shell/src/console/home/QuickActions.tsx,apps/console/src/pages/auth/AuthLayout.tsx,apps/console/src/pages/auth/VerifyEmailPromptPage.tsx,apps/console/src/pages/auth/RegisterPage.tsx,apps/console/src/pages/system/ProfilePage.tsx. No logic or comment changed.@object-ui/app-shelland@object-ui/consoleas well as@object-ui/i18n(all patch), since their source changed. All three are in the fixed group, so the release is the same.Acceptance notes (zh 此环境 / 本环境 outside the named families, not changed)
marketplace.accessDenied.description(「本环境中」),marketplace.detail.reseedQueuedandmarketplace.detail.sampleDataKernelUnavailable(「该环境」),marketplace.install.dialogDescCurrent,marketplace.install.deployTimeout,marketplace.update.dialogDescCurrent,marketplace.update.deployTimeout(「当前环境」). These install into a chosen deployment, which is the cloud noun's own use.cloudWorkspaceTimezoneNotice.seededkeeps 「环境时区在创建时已按你的浏览器设为…」 on the cloud home. The in-system prompt now says 「系统时区」, so the two surfaces name the same setting differently. The cloud home is outside this card.packages/app-shell/src/views/metadata-admin/i18n.ts, not a locale pack) says 「此环境 / 本环境」 inengine.packages.description,engine.packages.noCapability,engine.packages.detail.adoptConfirm,perm.badge.customand four permission-set clone and lock strings, with en "this environment" beside them. Same rule, different table, not in this card's Scope.Generated by Claude Code