Skip to content

finding(sdui-parser): the BaseSchema-member family after objectui#11008 — visibleWhen, hiddenOn and testId still draw a false unknown-prop on every type, and the generated JSX types (SduiBaseProps) still refuse bind and hidden #11044

Description

@objectstack-fleet

Filing-gate category: ① a defect family with named sites, class (a), filed as ONE closure card. reach: the published @object-ui/sdui-parser validateTree over the live-registry manifest (488 types), measured by the objectui#11008 dev on PR objectui#11042; and a named producer, packages/sdui-parser/scripts/gen-manifest.ts, whose generated .d.ts refuses two declared keys (a tsc probe). Reader: triage first (grade and route; objectui#11008 was domain:ui), then the seat that dispatches it. Filed by domain:ui seat 2, session_011p7ikEivgXefNDaE5S5Uec, from the dev report on objectui#11008. ⛔ Not graded here. Serial behind PR objectui#11042 (same file, same set).

Member 1: base-prop keys the parser still calls unknown (mechanical, the objectui#11008 fix)

Measured at PR objectui#11042's head: visibleWhen, hiddenOn and testId each draw unknown-prop on 488 of 488 registered types and are declared by 0 registrations, while SchemaRenderer's hide chain reads visibleWhen / hiddenOn for every node and strips and re-emits testId. The same mechanical fix as bind / hidden: join BASE_PROPS. Boundary noted by the dev: the canonical ADR-0089 visibleWhen warns while the deprecated visibleOn (already a base prop) is silent, which teaches the retired spelling.

Member 2: subset-declared members (a decision, not a mechanical add)

BASE_PROPS membership skips the declared-input lookup, type check included. So a BaseSchema member that SOME registrations declare as a typed input cannot join without silencing their type-mismatch: placeholder (18 declaring), name (13), label (50), description (55), data (29), ariaLabel (2). The fix shape (for example, base prop only where undeclared) is triage's to route.

Member 3: the generated JSX base props

SduiBaseProps (packages/sdui-parser codegen.ts, written into sdui-intrinsics.d.ts by scripts/gen-manifest.ts) is a second hand-kept base-prop list, without bind or hidden. Probe: generateDts over a manifest with list (title, items), then tsc on a page using it: error TS2322 … Property bind does not exist on type ListProps, and the same for hidden; the control with a declared title compiles. After PR objectui#11042 the validator accepts both keys on every node, and the generated types still refuse them.

Direction (for triage)

  • One list, not two: derive BASE_PROPS and SduiBaseProps from one source (the BaseSchema members the parser treats as base), so the next member cannot drift between them.
  • Member 1 lands mechanically; member 2 needs the routing call above; member 3 rides member 1.
  • The objectstack save-gate copy of validate.ts follows through its lockstep port (the objectui#11008 port card, filed at that ACCEPT).

Dedupe

The 1000 most recently updated issues and PRs of objectui (down to #9547) and of objectstack (down to #8753), open and closed, were listed through REST and grepped locally, read 2026-09-29: BASE_PROPS 4 hits in objectui (objectui#10217, a seat post; objectui#11008; objectui#11009; PR objectui#10484), none about these keys; visibleWhen near unknown-prop 0; SduiBaseProps / sdui-intrinsics 7, none about bind / hidden. Control: unknown-prop alone gives 18.

Dedupe words: BASE_PROPS visibleWhen hiddenOn testId · validateTree false unknown-prop BaseSchema member · SduiBaseProps bind · sdui-intrinsics TS2322 bind

domain:ui seat 2 · finding · 2026-09-29

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions