Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .changeset/7092-launcher-exclusion-reason.md
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export const BLOCK_TYPE_META: Record<BlockTypeId, Omit<BlockTypeMeta, 'id'>> = {
*/
export const PALETTE_EXCLUSIONS: Record<string, string> = {
// 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.
Expand Down
Loading