Repository navigation
feat(ui): Studio inspector strings (page block, action, dataset, flow node, app nav, widget) move into the studio i18n namespace (#25922 slice S2) - #26780
Merged
Conversation
…p nav and widget strings move into the studio namespace (#25922 slice S2) 520 keys per language leave app-shell's designer table for @object-ui/i18n/namespaces/studio, text unchanged; app-shell's lookup already asks the table first and the namespace second, so no call site changes. Claude-Session: https://claude.ai/code/session_01JQwxbX9LnJhjTQPJEmoBYi Co-authored-by: Claude <noreply@anthropic.com>
…preloads, both-homes extractor The page block, action, dataset, flow node, app nav and widget suites that assert zh synchronously make the zh catalogue resident first; the pageBlock retirement gate reads its keys from both homes; a per-family pin holds t() to the namespace value in en, zh and a fallback language. Patch changeset for @object-ui/i18n. Claude-Session: https://claude.ai/code/session_01JQwxbX9LnJhjTQPJEmoBYi Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
|
The failed job is re-run once. If it fails again, it comes back to this PR. Generated by Claude Code |
Contributor
Author
维护者速读
席位核对ACCEPT · seat
Generated by Claude Code |
This was referenced Oct 27, 2026
Merged
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 free
to 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.
Requested by Warren · project thread
Part of #25922
Clause-②: no
Metadata-protocol: none
维护者速读
engine.inspector下页面区块、动作、数据集、流程节点、应用导航、仪表盘组件六组共 520 个键(en 与 zh 各一份)从 app-shell 的私有表搬进@object-ui/i18n的studio命名空间,文案一字未改,调用点不动。ui/packages/i18n/src/namespaces/studio/en.ts末尾新加的 S2 段,再看previews/__tests__/block-config-i18n.test.ts改为同时读两处的抽取器。cd ui && pnpm run check:i18n-designer-parity && pnpm exec vitest run packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.studioNamespace-25922.test.ts,应全绿。What changes
engine.inspector.pageBlock.*,.action.*,.dataset.*,.flowNode.*,.appNav.*and.widget.*row (520 keys per language, same set and order inenandzh) leavesENGINE_STRINGS_EN/ENGINE_STRINGS_ZHinui/packages/app-shell/src/views/metadata-admin/i18n.tsand is appended toSTUDIO_EN/STUDIO_ZHinui/packages/i18n/src/namespaces/studio/{en,zh}.ts, text byte-for-byte unchanged. The move was done by an AST pass (each property with its leading comment block, multi-line values kept whole); a heading comment marks the S2 section in each catalogue. Three comment blocks sat at the head of a mixed run: two move with the rows they head ("Action default (home) inspector", "Dashboard filter bindings"), one stays (the audit-failure note); theoption.location.global_navretirement note follows the pageBlock rows it describes.lookupStringalready asks the table first and the namespace second (slice 1), sot/tFormat/tOptionaland every call site are untouched. No new file, so the console'si18n-ns-studio-en/i18n-ns-studio-zhchunk groups need no change; the namespace's only non-test importer is still app-shell'si18n.ts..changeset/25922-studio-i18n-inspectors.md,@object-ui/i18npatch.ui/packages/i18n/src/locales/*.ts,ui/.github/**, rootci.yml(itscheck:i18n-designer-paritystep stays until S7).Why
Ruling 6431032267 Q2 = A (upheld by 6431234244): the designer table becomes one lazy
@object-ui/i18nnamespace, moved in slices; S2 is the second row of #26593's slice table.Tests
New:
ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.studioNamespace-25922.test.ts: per family (six named floors, so one family draining cannot hide behind another), the namespace carries the family inenandzh, andt()answers every key with the namespace's value inen-US,zh-CNandde-DE(a language with no catalogue readsen). The oracle is the catalogues read throughloadStudioCatalogue.Forced edits (the zh rows these suites assert synchronously now arrive in the lazily fetched chunk, so each makes
zhresident with a top-levelawait loadStudioCatalogue('zh'); no assertion changed):inspectors/DashboardWidgetInspector.test.tsx,inspectors/DatasetDefaultInspector.firstPickKeepsCount-12848.test.tsx,inspectors/FlowNodeInspector.renameNode-11827.test.tsx,inspectors/PageBlockInspector.colorLabelling.test.tsx,inspectors/PageBlockInspector.i18n.test.tsx,inspectors/PageBlockInspector.pageHeaderBreadcrumb-11173.test.tsx,inspectors/PageBlockInspector.visibleWhen.test.tsx,previews/__tests__/block-config.test.ts(all underui/packages/app-shell/src/views/metadata-admin/).previews/__tests__/block-config-i18n.test.ts: the pageBlock retirement gate (objectui#8368) read its key sets from the app-shell table by line range; it now reads each locale from BOTH homes (table +STUDIO_EN/STUDIO_ZH, same extractor), skips the namespace catalogues as definition sites in the literal-reader scan, and adds a guard that the homes are non-empty and no key is counted twice. Plus the zh preload.zh-base-term.i18n-13131.test.tsalready reads the namespace's wholezhcatalogue (slice 1), so it covers the moved rows with no edit.Acceptance notes
dc9d1ff8, then compared witht()andtOptional()on this branch afterzhis resident, inen-US,en,de-DE,fr(against the baseenvalue) andzh-CN,zh,zh-TW(against the basezhvalue): 3,640 lookups, 0 differing.scripts/ablation-replace.mjs, mutation landed by anchor count and blob, restored byte-identical toHEAD):lookupStringwithout its?? studioString(key, locale)arm: the new pin goes red in all six families and the equivalence check reports 3,640 of 3,640 lookups differing.engine.inspector.widget.kind): the equivalence check reports exactly 3 differing lookups (zh-CN,zh,zh-TW); the pin stays green, as designed, since its oracle is the catalogue itself.i18n.ts, statically, so the movedenrows sit behind the same import edge before and after; thezhrows stay in the lazyi18n-ns-studio-zhchunk. CI'sBuild & E2E UIruns the eager-closure budget on the built console.check:i18n-driftreads both homes over the range and reports 0envalues changed, 0 keys added or removed.Verification
All at
18f4d0f6unless noted.Affected tests
os-verify-lock, before the forced edits: 287 passed, 7 failed (the seven suites above, all zh-synchronous). After the edits the 11 touched or new files:Test Files 11 passed (11),Tests 163 passed (163), VERDICT command-exit 0.pnpm --filter @object-ui/i18n --filter @object-ui/app-shell run type-check(both tsconfigs each): VERDICT command-exit 0.Gates
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 34 commands, each exit 0, includingpnpm --dir ui exec vitest run scripts/(Test Files 178 passed | 2 skipped (180)).--ran: 34 derived, 34 run, 0 NOT-MEASURED.check:i18n-designer-parity,check:i18n-dead-keys,check:i18n-drift,check:i18n-keys,check:new-line-citations(0 new citations): all exit 0.node scripts/check-nul-bytes.mjs: exit 0.Human Minimum
packages/specchange.pnpm lintis CI's.main, one pull request.Generated by Claude Code