You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c7840ea
Browse filesBrowse the repository at this point in the historyBrowse files
fix(app-shell): Studio item header's saved-to note says where the customization lives (#30436) (#30523)
domain:ui#5 · os-sales · session_01L6bhgTL7xvsd9AqyDZgX3C
<!-- claude-projects-attribution: {"github_login":"os-sales"} -->
_Requested by **Sales** · [project
thread](https://claude.ai/code/project/chan_01D5bWFY3rFzgJcytD5gD4Uu?thread=cmsg_01D5bWFY3rFzgJcytD5gD4UuCtrgd3H9uqx7XY1em1jhdt)_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 #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
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
- [x] 2. Every name I added uses the casing for its kind.
- [x] 3. No formatter ran; `pnpm lint` passes.
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset, and both
declaration lines are filled in here and in the changeset.
- [x] 6. `packages/spec` touched: its generated artifacts are
regenerated and committed. (not touched)
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English.
- [x] The *Before Submitting* list in CONTRIBUTING.md is done.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01L6bhgTL7xvsd9AqyDZgX3C
Co-authored-by: Claude <noreply@anthropic.com>
fix(app-shell): the Studio item header's "Saved to X's customizations" note says where the customization lives, in the publish sheet's own sentence (#30436)
6
+
7
+
Clause-②: no
8
+
Metadata-protocol: none
9
+
10
+
The note on an item header (Interfaces item, navigation editor, Data object, Automations flow) now goes on with the sentence the pending-changes sheet draws under it (`preview.changes.customizationEnvironment`, from #30119): the changes are kept in this environment's database as items of the real `<base>.custom` pair, and reach another environment only through `os package export`. No new i18n key: the note reuses `customizationEnvironmentText`. Before the pair's first save the note names the `<base>.custom` id that save creates.
// objectstack#30436 — and the sheet's second sentence, naming the real pair.
508
+
constENVIRONMENT=
509
+
'These changes are kept in this environment’s database as items of com.example.hotcrm.custom, not in your project’s source. They reach another environment only through os package export.';
// objectstack#30436 — and the sheet's second sentence, naming the real pair.
454
+
constENVIRONMENT=
455
+
'These changes are kept in this environment’s database as items of com.example.hotcrm.custom, not in your project’s source. They reach another environment only through os package export.';
'These changes are kept in this environment’s database as items of com.example.hotcrm.custom, not in your project’s source. They reach another environment only through os package export.',
// objectstack#30436 — and the sheet's second sentence, naming the real pair.
359
+
constENVIRONMENT=
360
+
'These changes are kept in this environment’s database as items of com.example.hotcrm.custom, not in your project’s source. They reach another environment only through os package export.';
0 commit comments