Skip to content

fix(app-shell): Studio item header's saved-to note says where the customization lives (#30436) - #30523

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-q45hp0
Nov 5, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-q45hp0

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

domain:ui#5 · os-sales · session_01L6bhgTL7xvsd9AqyDZgX3C

Requested by Sales · project thread

Fixes #30436

What changes

  • SavedToCustomizationNote (ui/packages/app-shell/src/preview/savedToCustomization.tsx) takes a new optional pairId prop. Given one, it goes on after "Saved to X's customizations" with the publish sheet's second sentence, customizationEnvironmentText(t, pairId) (key preview.changes.customizationEnvironment, from fix(app-shell): Studio's publish review sheet says a customization lives in this environment's database and moves only by os package export #30435): the changes are kept in this environment's database as items of the pair and reach another environment only through os package export. It draws as its own span, testid <testId>-environment; the first span and its text are unchanged.
  • StudioDesignSurface.tsx: the four call sites (Interfaces item header, Interfaces navigation editor, Data object header, Automations flow header) pass the pair: customization.pairId, or pairIdOf(customization.base) (the <base>.custom id the first save creates) while the base has no pair yet. Two customizeNotePair consts sit beside the existing customizeBaseLabel lines; the Data object site computes it inline from its own customization.
  • DraftChangesPanel.tsx is not touched. No new i18n key.

Why

The item header said only where a customization is saved, while the publish sheet also says where it lives and how it moves (ADR-0146 D2). The two now say the same words from the same keys.

Verification

  • pnpm exec vitest run (from ui/) on the four pillar test files and DraftChangesPanel.test.tsx: 5 files, 91 tests pass. New assertions check the full English sentence naming com.example.hotcrm.custom on all four headers, including before the first save (Customize just clicked), and its absence in the CONTROL case.
  • Ablation: with the sentence disabled in the component, 6 of the new assertions fail across the 4 pillar files.
  • pnpm --filter @object-ui/app-shell run type-check passes; pnpm --dir ui run check:spec-symbols passes; eslint on the touched files: 0 errors (pre-existing warnings only).
  • dispatch-gates --commands families run and reconciled with --ran (see the card thread's report).

Clause-②: no
Metadata-protocol: none

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic.
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran; pnpm lint passes.
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (not touched)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English.
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L6bhgTL7xvsd9AqyDZgX3C

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface labels Nov 5, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif

维护者速读

席位核对 — ACCEPT · domain:ui#5 · head 580d7862717e35fe38c7cecdeca3f4ec42820cfd

  • 形态: draft,作者 objectstack-fleet[bot](中继 pr_create),目标 main,Fixes #30436。共 7 个文件,+70 −6。check-governed-merges --pr 30523:NOT governed;76 行,未超 3000。mergeable_state 读为 clean。
  • 契约面: 不碰 packages/spec/**,不碰 governed 路径。Clause-②: no:SavedToCustomizationNote 新增可选 pairId 属性,但该模块没有从 @object-ui/app-shell 入口导出(包只有 exports '.',入口不引用 preview/savedToCustomization),所以不是发布面。没有新键。Metadata-protocol: none 与 diff 一致。不欠合同复核。
  • 抽查:
    • 没有 pairId 时组件只画原来那一个 span,文字和 testid 都不变;有 pairId 时另起一个 span,testid 为 <testId>-environment。
    • 四个调用点都传 customization.pairId ?? pairIdOf(customization.base):已有定制包时用服务端给的名称,第一次保存前用将要创建的名称。pairIdOf 在该文件里已经 import。
    • 用的是 customizationEnvironmentText,和 DraftChangesPanel 同一个函数、同一个键 preview.changes.customizationEnvironment;DraftChangesPanel.tsx 没有改动。
  • 门禁 check-runs: 580d7862 上 55 个 run:44 success,11 skipped,0 失败。
  • 测试: 四个 pillar 测试文件里加了断言,检查完整英文句子并点名 com.example.hotcrm.custom,包括刚点「定制」、还没保存的情况,以及对照情况下这句话不出现。卡线程报告:5 个文件 91 个用例通过;把这句话在组件里关掉后,新断言有 6 条变红;派生门禁 35/35 exit 0;type-check 和 check:spec-symbols 通过。
  • 接受的偏差: PR 正文没有 ## 维护者速读,以本评论的速读为准。
  • 范围外去向: 无。
  • 落地条款: Fixes #30436。本席位按普通队列在这个 head 上落地:relay pr_ready + automerge_enable。MERGED 后核对 Studio item header: the "saved to X's customization" note does not say the customization lives in this environment and moves only by os package export #30436 已关闭、pm:dispatched 已摘。

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 5, 2026 14:23
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge November 5, 2026 14:24
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit c7840ea Nov 5, 2026
56 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-q45hp0 branch November 5, 2026 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Studio item header: the "saved to X's customization" note does not say the customization lives in this environment and moves only by os package export

1 participant