Skip to content

build/interface/pages.mdx is the last page teaching the deprecated component key visibility instead of visibleWhen #129

Description

@os-elon

Found while implementing #119 (which corrected the expression on this same line and deliberately left the key alone — different defect class, so it wanted its own card rather than a rider).

content/docs/build/interface/pages.mdx spells the page-component conditional-visibility key as visibility, in two places:

  • line 81, in the Components code example: visibility: "'sales_manager' in os.user.positions",
  • the component property table below it: a visibility row described as "CEL visibility predicate"

ADR-0089 makes visibleWhen the single canonical name for that concept across every layer. On objectstack@origin/main, packages/spec/src/ui/page.zod.ts declares both, and the deprecated one says so in its own describe text:

visibleWhen: ExpressionInputSchema.optional().describe("Visibility predicate (CEL) — component rendered only when TRUE. ...")
/** @deprecated ADR-0089 — use `visibleWhen`. Accepted and normalized to `visibleWhen` at parse. */
visibility: ExpressionInputSchema.optional().describe('[DEPRECATED → `visibleWhen`] Visibility predicate (CEL). Normalized to `visibleWhen` at parse.')

packages/spec/src/shared/visibility.ts carries the same table: page component legacy visibility → canonical visibleWhen, folded once at the schema boundary.

Severity is lower than #119's, which is why it is filed separately

This is not an absent key — visibility still parses and is normalized, so an author copying the example gets working metadata. What they get is metadata written in the name the platform deprecated, from the only page in the corpus that still spells it that way.

A corpus grep for the three spellings across the English pages finds visibility: exactly once (this line); every other conditional-visibility mention already uses the canonical or the view-layer name:

content/docs/build/interface/views.mdx:233 visibleOn (view form sections/fields — correct for that layer)
content/docs/build/interface/views.mdx:256 visibleOn
content/docs/build/interface/pages.mdx:81 visibility ← this finding
content/docs/build/data/formulas.mdx:16 visibleWhen
content/docs/build/data/formulas.mdx:171 visibleWhen
content/docs/build/data/validation-rules.mdx:66 visibleWhen

So the fix is one page: rename the key in the example and the property-table row, and decide whether the row should still mention the deprecated alias as accepted.

Note the schema's own guidance map for pages already phrases the advice in canonical terms — "put visibleWhen on the COMPONENT inside a region" — so an author who reaches for the wrong key is told visibleWhen, then finds visibility in the published docs.

Verified against objectstack@origin/main (f6c71ea) and objectos@origin/main (599037c).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions