Repository navigation
fix(studio): the landing page names the .custom customization route, not the environment overlay - #29537
Merged
Conversation
…the environment overlay The App Builder landing's description and read-only hint told users to customize a read-only package with an environment overlay, a write that ADR-0146 D11 now refuses. Both strings, en and zh, name Customize / New similar into the package's .custom customization package instead. The overlay-copy pin is re-pinned on the new route, and a render test reads both strings off the real landing in en and zh. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jTSExv2so3yrUvy5Qz
Contributor
Author
|
domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu 席位核对 · ACCEPT · 2026-11-02T18:27ZHead-sha:
|
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 Steedos · project thread
Fixes #29489
Clause-②: no
Metadata-protocol: none
The two lines are copied from the claim (comment 6583617139).
维护者速读
ui/packages/i18n/src/namespaces/studio/en.ts的engine.studio.landing.description与engine.studio.landing.readonlyHint;重钉的BuilderLanding.environmentOverlayCopy-12171.test.ts;新测试BuilderLanding.customizeCopy-29489.test.tsx。pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/BuilderLanding.customizeCopy-29489.test.tsx packages/app-shell/src/views/studio-design/BuilderLanding.environmentOverlayCopy-12171.test.ts,预期 6 个用例全过(换回 main 的文案时其中 3 个转红)。What changes
engine.studio.landing.description(en, zh): the page description's last clause said read-only packages are customized "with an environment overlay". It now says their items are changed with Customize or New similar, which save into the package's.customcustomization package.engine.studio.landing.readonlyHint(en, zh): the read-only section's hint said "Customize one with an environment overlay, for the metadata types that accept one". It now says: open an item and choose Customize or New similar; the change is saved in the package's.customcustomization package, and upgrades keep reaching the installed package. The comment above the en row names the routes that exist now.BuilderLanding.tsx: two code comments that still described a read-only package as customized by environment overlay now name its.custompair. Comments only; no code changes.engine.studio.customize.action,engine.studio.auto.newSimilar.action; zh 「自定义」, 「新建类似」), and zh 定制包 as in the landing's existing customization-package strings. No key is added or removed.ui/packages/i18n/src/namespaces/studio/en.tsandzh.ts). None of the tenlocales/*.tspacks carriesengine.studio.landing.*, so the locale-pack parity tests do not read them, and only en and zh change.Tests
BuilderLanding.environmentOverlayCopy-12171.test.ts. Same population (every designer tablereadDesignerPairsreads that carries the keys) and same reader control. The org-axis pin still covers all three keys. The pin that required every value to name the environment overlay is split: the two landing keys must name no environment overlay / 环境覆盖, and must name the.custompackage and the table's own Customize label;perm.readOnly.artifact.hintkeeps its environment-overlay assertion, which is now the matcher's lit control (that hint names the overlay because it says the overlay is refused).BuilderLanding.customizeCopy-29489.test.tsx. Renders the realBuilderLandingwith a read-only package in en and in zh (throughI18nProvider, the zh studio catalogue preloaded at module scope). It reads the description and the hint off the page, checks they are the tables' rows, and checks each names.custom, Customize and New similar, with no overlay phrase.git restore --source=c88467d4, mutation counted on disk: old en phrase 1, old zh phrase 1, new en phrase 0), 3 cases go red: the 12171 landing pin and both 29489 locale cases. Restored withgit checkout HEAD --,git diff HEADempty, both blob hashes equal HEAD.Acceptance notes
mainc88467d:packagelessCloseSubject(packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts) closes the package-less save, publish, delete and rollback onto an item one read-only code package ships, whereveros migrate packageless-overlayscould move its row, with403 NOT_OVERRIDABLEnaming the pair (packagelessOverlayWriteRefusal). It stays open only for rows that ceremony leaves: an item more than one package ships, a base with no pair id, a stored row declaring a foreign override or shadowed by the pair, anemail_templatelocale the base does not ship, or a base that records no version. A package-less row for a name no read-only package ships is environment metadata, not an overlay. The pin is themetadata-protocolsuite "an item a CODE package ships: the package-less write is closed (ADR-0146 D11)" inprotocol.packageless-save-address.test.ts. Not confirmed live on a running server.viewanddashboard(andreport,translation,email_template) still declareallowEnvironmentOverlay: trueinDEFAULT_METADATA_TYPE_REGISTRY(packages/spec/src/kernel/metadata-plugin.zod.ts). On the write, the D11 close wins: ADR-0146 D11 keeps the flag as the predicate the migration reads and the read path honours for an unmigrated row, not as a write door. The spec stays off this PR.engine.studio.pkg.readonlyLink("Read-only · Customize with an overlay", zh 「只读 · 用覆盖定制」) is no longer rendered anywhere; onlyStudioReadOnlyLink.overlay-27356.test.tsxreads it, as the label that must be absent. It is a dead row teaching the closed route, invisible to users, and outside this card's surface.Verification
All on head f1c366f (base c88467d), in worktree
objectstack-issue-29489.Tests
pnpm --dir ui exec vitest run --maxWorkers=2over the 2 touched test files: 2 files, 6 tests passed.BuilderLanding,studio.landing,readDesignerPairsorzh-base-term(37 files, includingzh-base-term.i18n-13131.test.tsand theStudioRoute.*console tests), pluspackages/i18n/: 132 files passed, 1706 tests passed, 13 skipped.pnpm --dir ui exec vitest run scripts/: 169 files passed, 2 skipped; 4921 tests passed.pnpm exec turbo run type-check --filter=@object-ui/app-shell --filter=@object-ui/i18n: 66 of 66 tasks successful (app-shell runstsc --noEmitandtsc -p tsconfig.test.json).pnpm exec eslintover the five touched ui files: exit 0.Gates
node scripts/pm/dispatch-gates.mjs --commands: 34 derived families. All 34 ran and exited 0, includingcheck-sdui-manifest.mjsand its--self-test,check-changeset-no-major,check-adr-0087-registration,check-closing-keyword-parity,check-empty-changeset,check:published-filesandcheck:cross-package-test-inputs.dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN.pnpm --dir ui check:new-line-citations: 0 new citations.!in the title and no (narrowing) arm.Generated by Claude Code