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
20 changes: 20 additions & 0 deletions .changeset/10803-dead-citation-sweep-third-batch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
---

Comment-only in `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/core`,
`@object-ui/data-objectstack`, `@object-ui/i18n`, `@object-ui/layout`,
`@object-ui/plugin-charts`, `@object-ui/plugin-dashboard`, `@object-ui/plugin-detail`,
`@object-ui/react`, `@object-ui/sdui-parser` and `@object-ui/types`: docblocks and code
comments that cited objectui issues which answer 404 now cite the commit that landed each
change, as a 9-character sha, the ruling by its date where the sentence cites a ruling, or
a live successor, and where nothing answers they name the card by role (objectui#10803,
the third batch). Some of these docblocks reach the
emitted `.d.ts` and `.js`; none of them moves a claim, and none of these comment edits
changes a code or type token. No published behaviour changes through them, so this
declares no release. The runtime text the sweep touches, four tombstone guidance strings
and two zod `.describe()` strings in `@object-ui/types` and one CEL authoring advisory in
`@object-ui/app-shell`, is declared on its own as a patch in
`10803-third-batch-runtime-strings.md`.

The same repair in the pending changesets that carried these citations is prose-only, and
their frontmatter is byte-identical.
30 changes: 30 additions & 0 deletions .changeset/10803-third-batch-runtime-strings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
'@object-ui/types': patch
'@object-ui/app-shell': patch
---

fix(types,app-shell): runtime strings no longer point at objectui issues that answer 404

Four ADR-0049 retirement tombstones in the published zod mirrors, two runtime descriptions
and the Studio CEL authoring advisory carried a pointer to an objectui issue that answers
404. A reader of a parse error, a zod `description` or an editor warning has no repository
to resolve a commit against, so no dead pointer becomes a commit: tombstones cite
`ADR-0049` in its place, and every other pointer is simply dropped (objectui#10803).

- **The tombstone guidance.** Each tombstone's guidance feeds both the parse error an
author reads and the `.describe()` text, and now opens `RETIRED (ADR-0049) —` in
place of the dead card: `TreeViewSchema.data`, `TextSchema.value`,
`ChartDataSeriesSchema.data`, and `DashboardConfigSchema.aria` (its error and its
describe text, two strings). Everything after the dash is unchanged, so the remedy
each message gives is word for word what it was.
- **Two descriptions.** `TreeViewSchema.nodes` loses the pointer in two places: its
parenthesis now ends "no presence rule exists", and its history clause reads "the
`data` fallback spelling was retired". `TextSchema.content` likewise ends "its `value`
fallback spelling was retired".
- **The advisory** that tells an author a row predicate binds the row as `record` and
nothing else ends that clause at "nothing else".

Nothing else in any string moves, and no key, path, issue code, accept set, refusal or
severity changes: every document that parsed before parses the same way and is refused
at the same path with the same code, and the advisory still fires on exactly the same
predicates.
2 changes: 1 addition & 1 deletion .changeset/5291-api-console-storage-slot.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ API Console's endpoint catalog is keyed by the canonical `storage` service slot,
only that slot (objectui#5291, framework#9683).

`useApiDiscovery`'s `SERVICE_ENDPOINT_CATALOG` looks its keys up directly in `/discovery`'s
`services` map, and that lookup is deliberately fail-closed (ADR-0076 D12). objectui#5286
`services` map, and that lookup is deliberately fail-closed (ADR-0076 D12). `38ba3ddf3`
had kept the Storage entry keyed by the deprecated `file-storage` spelling, with a small
alias table that read `services.storage` first and fell back to `services['file-storage']`,
because the installed `@objectstack/spec` did not list `storage` in `CoreServiceName` yet.
Expand Down
2 changes: 1 addition & 1 deletion .changeset/5859-retire-orphaned-object-exports.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

`ObjectTrigger` and `ObjectRelationship` are removed from `@object-ui/types` — two
hand-written interfaces orphaned by the `ObjectSchemaMetadata` derivation
(objectui#5859, triage adjudication 2026-08-24; the derivation itself was
(triage adjudication 2026-08-24; the derivation itself was
objectui#5362).

**Breaking for anyone importing either name.** The two symbols are, verbatim:
Expand Down
2 changes: 1 addition & 1 deletion .changeset/5926-empty-action-visible-when.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ result itself, so the node never passed through `SchemaRenderer` and its `visibl
**never evaluated**. `@objectstack/spec` accepts the key (`SchemaNodeSchema` carries
`visibleWhen`, and `data-display.zod.ts` types `emptyAction` as a `SchemaNode`), so an
author wrote a gate, the platform took it, and nothing enforced it — declared-not-enforced,
the same class objectui#5401 / #5505 closed for `record:alert`, one level down.
the same class `c86185eb5` closed for `record:alert`, one level down.

Measured on the branch point, mounting a `data-table` with no rows so the empty state is
actually reached: an `emptyAction` carrying
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6150-undeclared-but-consumed-keys.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ either face:
optional, so the `nodes` spelling the renderer reads FIRST stands on its own
(`6939-tree-view-nodes-mirror.md`, published beside this note). `bind` is read
before either and is unchanged.
- **`data` is not required — it is REFUSED BY NAME.** objectui#6951 retired it
- **`data` is not required — it is REFUSED BY NAME.** `16a725f96` retired it
under ADR-0049 on both faces: the TypeScript member is a `?: never` tombstone
and the zod arm is a `retirementTombstone(...)` whose guidance points the author
at `nodes` (`6951-tree-view-data-retired.md`, also published beside this note).
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6293-conditionbuilder-reference-value.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ validation evaluators, and `current_user` is the ADR-0068 spelling of the same i
`vars`, `page`) are deliberately excluded: `data.csv` is a plausible literal and `data` *is*
bound, so capturing it would trade one silently-false predicate for another rather than for a
loud one. Declaring which roots a mounting surface actually binds is caller-supplied
vocabulary and belongs to objectui#6296.
vocabulary, which `88b15fddc` added.

The test is "a dotted path under a declared root", not "contains a dot" — a version string
(`1.2.3`), a filename, and a path under an unbound root all stay literal text. The literal and
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6296-conditionbuilder-subject-vocabulary.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
---

`ConditionBuilder` now takes a caller-supplied **subject vocabulary** instead of hardcoding a
record-scoped one (objectui#6296).
record-scoped one.

The builder built every row subject as `record.` + field name, plus a fixed `record.id` /
`user.*` / `org.*` context list. That is correct for all five files that mount it today — six
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6464-recall-submitter-gate.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
---

The record page's approval band offers its **Recall** button to the approval's submitter
only (objectui#6464).
only.

Field report on `@objectstack/*@17.2.0`: user A submits a record into a 4-level approval;
user B — not the submitter, read access, not an admin — opens the record and the band still
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6598-inert-expression-warning.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ state.
`validateTree` now emits a warning-severity `inert-expression` diagnostic when a
declared input's value is the `$expr` marker, with the fix in the message: write
the value as JSON (double-quoted strings and keys). Warning, not error, per the
objectui#5709 posture for inert authored keys — pages keep compiling and
`8d58f46b4` posture for inert authored keys — pages keep compiling and
rendering exactly as before; the silence is what changed. Escalating the
severity, widening the accepted literal grammar (e.g. materializing
single-quoted strings), and covering base props like `style` are contract
Expand Down
4 changes: 2 additions & 2 deletions .changeset/6661-app-launcher-nav-menu-renderers.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
'@object-ui/i18n': minor
---

Renderers for the `app:launcher` and `nav:menu` page blocks (objectui#6661).
Renderers for the `app:launcher` and `nav:menu` page blocks.
Phase 1 of the 2026-08-26 maintainer ruling on objectstack#12183 — the two
`PageComponentType` members that are purely metadata-driven, so nothing had to
ship before their renderers could. Phase 2 (`global:search` /
`global:notifications`) landed in objectui#6757 and set the pattern this
`global:notifications`) landed in `f99932a42` and set the pattern this
follows.

A page that declared either member drew a dashed box. The two symptoms were not
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6740-flex-is-container.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'@object-ui/components': patch
---

`flex` declares the containment it renders (objectui#6740).
`flex` declares the containment it renders.

`flex` has always rendered `schema.children`, but its registration omitted
`isContainer` while `grid`, `card`, `container` and `stack` — same directory,
Expand Down
4 changes: 2 additions & 2 deletions .changeset/6757-global-search-notifications-renderers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
'@object-ui/app-shell': minor
---

Renderers for the `global:search` and `global:notifications` page blocks
(objectui#6757). A page that declared either member drew the literal "Component
Renderers for the `global:search` and `global:notifications` page blocks.
A page that declared either member drew the literal "Component
Placeholder" scaffold: both are first-class `PageComponentType` members that the
2026-08-26 maintainer ruling on objectstack#12183 kept declared once the
readiness read in objectstack#13117 evidenced both data sources shipped, and
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6764-container-declaration-census.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ rendered — what the omission did was make `validateTree` warn `not-a-container
on a child list it then rendered, on the tier built to accept AI-authored pages.
A warning that lies trains authors to discount the true ones.

Same reasoning as objectui#3900 (`page-header`) and objectui#6740 (`flex`):
Same reasoning as objectui#3900 (`page-header`) and `7c9b044f4` (`flex`):
`children` is a base property of every node in the JSON protocol, not a
per-component authoring key, so the flag widens no spec surface.

Expand Down
2 changes: 1 addition & 1 deletion .changeset/6854-layout-renderer-retired-onclick.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
---

The standalone runner renders `AppAction.items` from its declared type only, which
makes `AppActionSchema.onClick`'s retirement message true again (objectui#6854,
makes `AppActionSchema.onClick`'s retirement message true again (the
maintainer ruling of 2026-09-05, option B2).

`AppAction.items` is `AppMenuItem[]`, and the zod mirror parses it with the legacy
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6859-injected-editor-commit-comment.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
---

No behaviour change, and deliberately so: this is the record being corrected, not the
renderer (objectui#6859).
renderer.

The data table's document-level `pointerdown` listener — the one that exits a host-injected
inline cell editor when you click away — justified itself with "the injected widgets (text,
Expand Down
2 changes: 1 addition & 1 deletion .changeset/6864-aggregate-spec-shape-analytics-keys.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
---

`aggregate()`'s spec-shape branch now REFUSES the analytics branch's `filter` /
`field` / `function` instead of dropping them (objectui#6864, extending the
`field` / `function` instead of dropping them (extending the
maintainer ruling of 2026-08-30 on objectui#6825 — option A, refuse at the
producer).

Expand Down
2 changes: 1 addition & 1 deletion .changeset/6896-retire-chart-inline-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
---

Retire `ChartDataSeries.data`, and correct `ChartSchema.categories`' prose to the read it
has always had (objectui#6896, ADR-0049 enforce-or-remove; maintainer ruling 2026-08-31).
has always had (ADR-0049 enforce-or-remove; maintainer ruling 2026-08-31).

⚠️ **BREAKING for anyone authoring a static `ChartSchema` node**, shipped as `minor`
because this repository's `major` is a cross-repo pin to `@objectstack`'s major rather than
Expand Down
6 changes: 3 additions & 3 deletions .changeset/6951-text-value-retired.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
'@object-ui/plugin-dashboard': patch
---

**Breaking for authored metadata:** `TextSchema.value` is RETIRED (objectui#6951,
maintainer ruling A1 of 2026-09-04; objectui#7016; ADR-0049 enforce-or-remove).
**Breaking for authored metadata:** `TextSchema.value` is RETIRED
(maintainer ruling A1 of 2026-09-04; objectui#7016; ADR-0049 enforce-or-remove).
A `text` node that authors `value` no longer validates: the parse fails loudly on
the `value` path with the explanation in the message, the TS member is a
`?: never` tombstone so the same document is refused at compile time, and the
Expand Down Expand Up @@ -34,7 +34,7 @@ nodes, and were excluded by kind.)

now fails validation with:

> RETIRED (objectui#6951) — `value` is no longer part of TextSchema; write
> RETIRED (ADR-0049) — `value` is no longer part of TextSchema; write
> `content`. It was a second spelling of the one content slot, read only as the
> fallback limb of `schema.content || schema.value`, and was retired under
> ADR-0049 enforce-or-remove with no deprecation window (maintainer ruling A1,
Expand Down
6 changes: 3 additions & 3 deletions .changeset/6951-tree-view-data-retired.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
'@object-ui/components': minor
---

**Breaking for authored metadata:** `TreeViewSchema.data` is RETIRED (objectui#6951,
maintainer ruling B1 of 2026-09-04; ADR-0049 enforce-or-remove). A `tree-view`
**Breaking for authored metadata:** `TreeViewSchema.data` is RETIRED
(maintainer ruling B1 of 2026-09-04; ADR-0049 enforce-or-remove). A `tree-view`
node that authors `data` no longer validates: the parse fails loudly on the
`data` path with the explanation in the message, the TS member is a `?: never`
tombstone so the same document is refused at compile time, and the renderer no
Expand Down Expand Up @@ -32,7 +32,7 @@ authored either spelling.

now fails validation with:

> RETIRED (objectui#6951) — `data` is no longer part of TreeViewSchema; write
> RETIRED (ADR-0049) — `data` is no longer part of TreeViewSchema; write
> `nodes` (or bind the tree with `bind`). It was the second spelling of the one
> inline-nodes slot, read only as the last limb of
> `boundData || schema.nodes || schema.data || []`, and was retired under
Expand Down
2 changes: 1 addition & 1 deletion .changeset/7092-launcher-exclusion-reason.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ page-palette ledger. It read "shell singleton — the app shell renders it, not
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:
has carried since `f99932a42` 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.

Expand Down
4 changes: 2 additions & 2 deletions .changeset/7113-chart-data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ independently instructed declaring these two keys, so they land as one change).

⚠️ Shipped as `minor`, not `patch`, because two document classes that validated before now
REFUSE. The 2026-09-02 ruling grades this class "patch where the accept set only widens toward what
already renders"; this change is not a pure widening, so it takes the level objectui#6896
already renders"; this change is not a pure widening, so it takes the level `b0d308da9`
set for the same transition in this same file — the mirror starting to refuse — and for the
same reason: this repository's `major` is a cross-repo pin to `@objectstack`'s major rather
than a severity dial, so the break is announced here, which is the channel that carries it.
Expand Down Expand Up @@ -96,7 +96,7 @@ would discard them.
## Not done, deliberately

The 2026-09-02 ruling's `chart` row also says "`series[].data` stops being required". On this base
it already is not: objectui#6896 replaced it with `retirementTombstone(...)` —
it already is not: `b0d308da9` replaced it with `retirementTombstone(...)` —
`z.never({ error }).optional()` — which is optional AND refuses any authored value by name.
Implementing the clause literally would re-widen a retired key and reverse a landed ruling,
so it is not done.
Expand Down
2 changes: 1 addition & 1 deletion .changeset/7469-app-actions-retired.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ draws no toolbar button per `'button'` entry and no avatar menu per `'user'`
entry. The notification Bell is now always drawn. Before, it was hidden when a
`'button'` action was authored.

Changeset entries from objectui#6854, objectui#7344, objectui#7719 and
Changeset entries from `adb2a86db`, objectui#7344, objectui#7719 and
objectui#7721 describe `AppAction` as it stood before this retirement. The
`shortcut` refusal from objectui#7719 still applies to the legacy `menu` items. Pinned in `packages/types/src/__tests__/app-actions-retired-7469.test.ts`
and `packages/runner/src/__tests__/LayoutRenderer.chrome-7469.test.tsx`.
4 changes: 2 additions & 2 deletions .changeset/7546-chart-series-keys-declared.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ renderer does NOT drop: the normalizer keeps that renderer-internal spelling and
`primary`, but it is not a member of the published pair, so it now refuses at `variant` (below).
Such a document draws a chart today — the normalizer ignores the bad value, or honours `current`
— so this is a narrowing away from something that renders, which is the
distinction the 2026-09-02 ruling's grading language turns on, and it takes the level objectui#6896 and
distinction the 2026-09-02 ruling's grading language turns on, and it takes the level `b0d308da9` and
objectui#7113 set for the same transition in this same file. This repository's `major` is a
cross-repo pin to `@objectstack`'s major, not a severity dial; the change is announced here.

Expand Down Expand Up @@ -78,7 +78,7 @@ is unchanged; objectui#7682 owns that decision.

The object stays non-strict — a truly undeclared key is still stripped, exactly as
`chart-inline-data-retired.test.ts` pins; this change declares what is read, it does not close
the object. The `data` tombstone (objectui#6896) and the at-least-one-binding refinement
the object. The `data` tombstone (`b0d308da9`) and the at-least-one-binding refinement
(`5f789538d`, objectui#7113) are untouched. No reader changed.

Pinned in `packages/types/src/__tests__/chart-series-keys-7546.test.ts` — the card's fixture
Expand Down
2 changes: 1 addition & 1 deletion .changeset/7690-chart-axis-config-declared.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ TS side — instead of letting both ride `BaseSchema`'s passthrough unchecked (o
`Did you mean grid → showGridLines?`) instead of a bare `Invalid input`.

⚠️ Shipped as `minor`, not `patch`: documents that validated before now **refuse**, and each of them
draws a chart today — a narrowing away from something that renders, the transition objectui#6896,
draws a chart today — a narrowing away from something that renders, the transition `b0d308da9`,
objectui#7113 and objectui#7546 graded `minor` in this same file.

- An axis object with a malformed value (`min: 'zero'`, `position: 'middle'`), an undeclared key
Expand Down
2 changes: 1 addition & 1 deletion .changeset/7694-chart-series-chart-type-alias-refusal.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ mode gains is the NAMED refusal and its guidance, not a narrower accept set.

The object stays non-strict — a truly undeclared key is still stripped, exactly as
`chart-inline-data-retired.test.ts` pins. The six keys objectui#7546 declared, the `data` tombstone
(objectui#6896) and the at-least-one-binding refinement (`5f789538d`, objectui#7113) are untouched.
(`b0d308da9`) and the at-least-one-binding refinement (`5f789538d`, objectui#7113) are untouched.
**No reader changed:** `normalizeSeries` still reads `chartType` first on the internal-shape arrays
its producers hand it; that limb is a reader decision, not this declaration's.

Expand Down
4 changes: 2 additions & 2 deletions .changeset/7719-app-menu-item-shortcut-named-refusal.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
issue 指向 `NavigationItem`。TS 面同步收窄:`AppMenuItem.shortcut?: never`,在编写处就被 `tsc` 拒掉。

零迁移面:本仓**零作者**写过这个键,且 `@object-ui/runner` 不发布库入口,没有绕过校验器塞进来的
路径。⛔ 这里刻意不冻结任何总数 —— objectui#6854 当初普查的那个 JSON 总体此后已经变动,冻进散文
路径。⛔ 这里刻意不冻结任何总数 —— `adb2a86db` 当初普查的那个 JSON 总体此后已经变动,冻进散文
的数字没有东西会去重新求值。判据写成可复跑的规则:**结构化**地 `JSON.parse` 每一个 tracked
`*.json`,无限深度遍历,报出「经由字面名为 `items` 的键抵达的数组、其元素对象自带 `shortcut`」者;
在本次改动的头上跑出 0 命中,注入 fixture 的正控制会开火(含一处嵌套命中),且不会把 action 层的 `shortcut`
Expand All @@ -23,7 +23,7 @@ issue 指向 `NavigationItem`。TS 面同步收窄:`AppMenuItem.shortcut?: nev
- zod 面 —— `MenuItemSchema.shortcut` 走 `retirementTombstone()`,一条 guidance 同时喂 parse
消息与 `.describe()`(即已发布的 JSON-Schema 描述)。

⛔ `LayoutRenderer` 未恢复任何读点,objectui#6854 的那枚 pin 断言原样保留;本次只修了它与
⛔ `LayoutRenderer` 未恢复任何读点,`adb2a86db` 的那枚 pin 断言原样保留;本次只修了它与
`LayoutRenderer.tsx` 里已经过期的散文(两处都在把一个已裁决的问题描述成悬而未决)。
`@object-ui/runner` 的改动**仅为注释**,无任何已发布行为变化。

Expand Down
Loading
Loading