diff --git a/.changeset/7092-launcher-exclusion-reason.md b/.changeset/7092-launcher-exclusion-reason.md new file mode 100644 index 0000000000..19513e04b1 --- /dev/null +++ b/.changeset/7092-launcher-exclusion-reason.md @@ -0,0 +1,17 @@ +--- +--- + +Corrects the `PALETTE_EXCLUSIONS` reason string for `app:launcher` in the Studio +page-palette ledger. It read "shell singleton — the app shell renders it, not a page", +and objectui#7091 registered a real `app:launcher` renderer, so a page can now render it +and the "not a page" clause became false. The reason now reads "shell singleton — lives +in the app shell chrome", mirroring the neutral form its sibling `global:notifications` +has carried since objectui#6757 shipped that type a renderer without its wording rotting: +the entry describes WHERE the thing lives, not whether a renderer exists, so a later +renderer cannot falsify it. + +The exclusion itself is an unchanged decision — `app:launcher` stays out of the page +palette, and its key and position in the ledger are untouched. Whether it should become +palette-authorable is a separate product question this does not answer. No published +behaviour moves: the reason strings are developer-facing ledger prose, read by no runtime +code path, and `PALETTE_EXCLUSIONS` is not exported from `@object-ui/app-shell`'s entry. diff --git a/packages/app-shell/src/views/metadata-admin/previews/block-types.ts b/packages/app-shell/src/views/metadata-admin/previews/block-types.ts index 4e2990665e..186b4a2de8 100644 --- a/packages/app-shell/src/views/metadata-admin/previews/block-types.ts +++ b/packages/app-shell/src/views/metadata-admin/previews/block-types.ts @@ -148,7 +148,7 @@ export const BLOCK_TYPE_META: Record> = { */ export const PALETTE_EXCLUSIONS: Record = { // Shell singletons — chrome the app shell owns, not page content. - 'app:launcher': 'shell singleton — the app shell renders it, not a page', + 'app:launcher': 'shell singleton — lives in the app shell chrome', 'global:notifications': 'shell singleton — lives in the app shell header', 'user:profile': 'shell singleton — lives in the app shell header', // No renderer, by decision — and these two are the ones that MEASURE that way.