Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
bda50f4
chore(deps): resolve @objectstack/* 17.5.0 in pnpm-lock.yaml (objectu…
claude Sep 29, 2026
b732e17
chore(deps): resolve objectui's own zod ^4.4.3 to 4.6.5, the instance…
claude Sep 29, 2026
32b7f52
chore(deps): dedupe fumadocs-mdx's zod onto 4.6.5 so the lock holds o…
claude Sep 29, 2026
7d1052f
test(types): restate two pins in zod 4.6's vocabulary, forced by @obj…
claude Sep 29, 2026
70888da
test(types): re-pin the by-reference mirrors and fired tripwires to t…
claude Sep 29, 2026
3cdb858
chore(changeset): declare the @objectstack/* 17.5.0 resolution as a c…
claude Sep 29, 2026
6cb8980
Merge origin/main into claude/issue-11073-objectstack-17-5-bump (obje…
claude Sep 29, 2026
cb3b89a
fix(types): a strict object meeting a plain union refuses unknown key…
claude Sep 29, 2026
5d4c095
fix(types): retire the named-view by-name pointers the spec's termina…
claude Sep 29, 2026
3dc3d21
fix(types,core): retire pageName and tabs on NamedListView and drop t…
claude Sep 29, 2026
865a81d
fix(core,components,plugins): triage the ten names @objectstack/spec …
claude Sep 29, 2026
19dfc78
test(types): the objectui#7715 census attaches the spec's two Dashboa…
claude Sep 29, 2026
6f7b14b
test(scripts,types,core,plugins): restamp the installed-spec claims a…
claude Sep 29, 2026
81de0ff
fix(fields): retire the objectui#9808 / objectui#10071 scale clamp at…
claude Sep 29, 2026
c368c19
fix(core): list `execution` in SPEC_ACTION_KEYS, the key @objectstack…
claude Sep 29, 2026
8053108
test: re-pin the tripwires @objectstack/spec 17.5.0 fired, and harves…
claude Sep 29, 2026
ba52c98
chore(changeset): declare what the 17.5.0 bump now changes in each pu…
claude Sep 29, 2026
174c4a7
test(core): the undrawable-kinds pin reads the silence the `page` row…
claude Sep 29, 2026
569e923
feat(app-shell,console): the flow designer seeds, forms and preview s…
claude Sep 29, 2026
2abb653
docs(changeset): correct the seven pending changesets this bump makes…
claude Sep 29, 2026
048e7f6
chore(changeset): declare the flow designer's move to 17.5.0 in @obje…
claude Sep 29, 2026
92ac539
chore(budget): raise the eager-closure ceiling and its headroom asser…
claude Sep 29, 2026
283c97c
fix(data-objectstack,app-shell): raise the @objectstack/spec floor to…
claude Sep 29, 2026
119f4d3
Merge origin/main (8a5ae3d) into claude/issue-11073-objectstack-17-5-…
claude Sep 29, 2026
cdd84c7
test(types): the Q3 pin reads StrictAnyComponentSchema through the ba…
claude Sep 29, 2026
0b18a49
chore(e2e): retire the live lane's better-auth pin with the 17.5.0 bu…
claude Sep 30, 2026
7b5e40d
test(console,plugin-detail): re-pin the 17.5.0 population and book ev…
claude Sep 30, 2026
c385748
fix(scripts): drop the lint-rule-coverage ledger row the better-auth …
claude Sep 30, 2026
ff1eb8d
Merge branch 'main' into claude/issue-11073-objectstack-17-5-bump
os-zhuang Sep 30, 2026
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
3 changes: 3 additions & 0 deletions .changeset/10071-number-scale-ceiling.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ edit. Both now take the ruling the percent faces already took (objectui#9808):
the width is clamped to 100 and a one-time `console.warn` names the declared
width, the rendered width and the card. In-range, negative and non-integer
widths are unchanged.

⚠️ **Dated note, 2026-09-29 — the clamp above was retired in this same release — objectui#11073.**
Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which refuses a field `scale` above 100 at the declaration (`too_big` at `scale`, a computed number field included). The objectui#9808 ruling this change followed retires at exactly that point, so the clamp and its one-time warning are gone from `NumberCellRenderer` and from a grid's computed column: the declared width is passed through again, and a width above 100 is no longer something an author can declare.
3 changes: 3 additions & 0 deletions .changeset/10355-grid-currency-minor-unit.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,6 @@ line with the ruling on objectstack-ai/objectstack#19910 that a currency's
decimal places are the currency's. A USD tenant's grid used to read `¥1,234.57`
and now reads `$1,234.57`. Columns with an authored `scale`, and `number`
columns, round as before.

⚠️ **Dated note, 2026-09-29 — one sentence above was made false in this same release — objectui#11073.**
The sentence saying an authored currency `scale` above 100 "is clamped and reported on the display too" no longer holds. Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which refuses a `scale` above 100 at the declaration, and the objectui#10071 clamp that sentence relied on was retired with it. The display now uses the authored width as it is, as the stored value does. Everything else above is unchanged.
24 changes: 24 additions & 0 deletions .changeset/11073-objectstack-17-5-bump.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
'@object-ui/types': minor
'@object-ui/core': minor
'@object-ui/data-objectstack': patch
'@object-ui/fields': patch
'@object-ui/components': patch
'@object-ui/plugin-list': patch
'@object-ui/app-shell': minor
'@object-ui/console': patch
---

objectui now resolves `@objectstack/*` 17.5.0 and `zod` 4.6.5, and follows every contract move that release makes (objectui#11073). `@objectstack/spec` 17.5.0 and `@objectstack/core` 17.5.0 require `zod ^4.6.1`, so objectui's own `zod` resolves to the same 4.6.5: two zod minors do not type-check against each other.

⚠️ Breaking in places, marked `minor` under this repo's version-alignment rule (a `major` in the fixed group would move all of it off the `@objectstack` major). Every narrowing below is the spec's own, and already reaches any consumer that resolves `@objectstack/spec ^17.5`.

- `@object-ui/types`: declares `@objectstack/spec ^17.5.0` and `zod ^4.6.1`. A named list view's `pageName` and `tabs` are retired, as the spec retired them: typed `never` and refused by name at parse. `DashboardWidgetSchema` attaches the spec's two new checks (`checkDashboardWidgetStageOrder`, `checkDashboardWidgetMetricMeasureArity`), so a widget the spec refuses is refused here too. Where a strict object is an arm of a plain union, its unknown-key refusal is terminal again (the spec's own mechanism, needed under zod 4.6): the union answers with every arm instead of the one that failed only on unknown keys. That changes the error shape, never the verdict (measured on every objectui union). Two by-name named-view checks that can no longer run are retired; the spec's refusal answers those documents.
- `@object-ui/core`: declares `@objectstack/spec ^17.5.0`. `page` leaves the list-view kinds the normalizer knows, as the spec removed `type: 'page'`. `isRefusedTextComparand` and `textComparandRefusalReason` are re-exported from `@objectstack/spec/data`, whose copies are byte-identical. `SPEC_ACTION_KEYS` lists `execution`, which `ActionSchema` now declares.
- `@object-ui/data-objectstack`: declares `@objectstack/spec ^17.5.0`, up from `^17.4.0`. Its bundle carries `@object-ui/core`'s filter converter, which now takes `isRefusedTextComparand` and `textComparandRefusalReason` from `@objectstack/spec/data`. `@objectstack/spec` 17.4.0 exports neither, so the old range admitted a spec under which the shipped module names exports that are not there (objectui#5793's floor gate). Nothing moves at runtime in this repository, because the lockfile already resolves 17.5.0. `patch`, as the floor raise of objectui#10864 was.
- `@object-ui/fields`: the percent and number `scale` clamp is gone, at the sunset its own test named. The spec now refuses a `scale` above 100 at the declaration, so the width a formatter cannot render no longer arrives, and every face passes the declared width through as it did before the clamp.
- `@object-ui/components`: two module-local prop interfaces of the action renderers are renamed (`ActionButtonRendererProps`, `ActionIconRendererProps`), because the spec now exports the old names for its authored props. Neither is reachable through the package's exports map; only the shipped per-file declarations change.
- `@object-ui/plugin-list`: the README's view-type example no longer lists the retired `page` kind.
- `@object-ui/app-shell`: the flow designer follows 17.5.0 (maintainer ruling on objectui#11088, decision 2). A new `wait` node is seeded `waitEventConfig: { eventType: 'timer', timerDuration: 'PT1H' }`, because the spec now refuses a timer wait with no duration; the inspector shows the Duration at once and it can be changed. The decision form offers the spec's new `mode` (exclusive or inclusive), with no default declared because the spec applies none. The screen form's `mode` states `create` again, because the spec now applies that default. `minor` because the decision form gains a control.
- `@object-ui/app-shell`: declares `@objectstack/spec ^17.5.0`, up from `^17.4.0`, and `zod ^4.6.1`, up from `^4.4.3`. The designer now states 17.5.0 behaviour. The screen form's declared `create` default equals a default the spec applies only since 17.5.0, and objectui#9109 requires the two to be equal, so a range that admitted 17.4.0 claimed more than the designer holds to. The resolved versions do not move.
- `@object-ui/console`: the bundle inlines the 17.5.0 packages, so its client-side validation answers as the published 17.5.0 contract does. The flow preview sample's script nodes use the 17.5.0 script contract. The eager-closure budget is re-baselined for the release's growth, under the maintainer ruling on objectui#11088 (decision 1).
3 changes: 3 additions & 0 deletions .changeset/7715-mirrors-carry-spec-object-checks.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ A mirror built from the spec's `.shape` (`specFieldsExcept(...)`) takes the spec
The spec's other `ListViewSchema` check, `checkListViewPageMount`, is **not** attached: it reads `type`, which on a `list-view` node is the component discriminator rather than the spec's view kind (that rides as `viewType`), so attaching it would refuse every `pageName`, a valid page mount included. The navigation-area, app, dashboard-widget and dashboard mirrors attach nothing because their spec objects carry no object-level check at the resolved spec release. `GlobalFilterSchema` already ran the spec's date-default check through its delegating re-parse and is unchanged.

`packages/types/src/__tests__/spec-object-refinements-7715.test.ts` accounts for every object-level check each of the six spec objects carries, so a check the spec adds in a later release fails there by site name instead of being dropped.

⚠️ **Dated note, 2026-09-29 — `@objectstack/spec` 17.5.0 moved two sentences above — objectui#11073.**
Later in this same release this repository began resolving `@objectstack/spec` 17.5.0, which retired `type: 'page'` and `pageName` on list views (ADR-0049 enforce-or-remove) and no longer exports `checkListViewPageMount`. So the paragraph on that check describes a spec that is no longer installed: there is no such check to attach, and a `pageName` is refused by the spec itself as a retired key, not a "valid page mount". The same release adds two object-level checks to the spec's `DashboardWidgetSchema`, `checkDashboardWidgetStageOrder` and `checkDashboardWidgetMetricMeasureArity`, and objectui's `DashboardWidgetSchema` now attaches both, so "the dashboard-widget mirror attaches nothing" no longer holds either: a non-funnel widget carrying `options.stageOrder`, and a metric-family widget declaring more than one measure in `values`, are refused with the spec's own message.
3 changes: 3 additions & 0 deletions .changeset/8201-quickadd-ruled-carve-out.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ bookkeeping (the `objectui#8176` backlog ceiling reaches 0, with the ruling reco
data rather than prose) and the docblock in `packages/plugin-kanban/src/index.tsx`, which
said the disposition was still with the maintainer. It is not — it was ruled on
2026-09-07, and objectui#8285 owns the fix.

⚠️ **Dated note, 2026-09-29 — the carve-out recorded above was harvested in this same release — objectui#11073.**
Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which carries objectui#8285's ruled retirement: `object-kanban.quickAdd` is now a spec tombstone, refused by name. The exit the ruling named therefore landed. The carve-out's exemption entry was deleted, the ruled carve-out list is empty, and the key is pinned among the gate's tombstones instead. It is no longer a RULED CARVE-OUT awaiting a fix, and `OBJECT_KANBAN_INPUTS` still does not declare it.
3 changes: 3 additions & 0 deletions .changeset/8285-kanban-quickadd-html-diagnostic.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ Interim by ruling (objectui#8285, decision batch #91): the contract-side refusal
retiring `object-kanban.quickAdd` from the spec's `ComponentPropsMap`, and this
diagnostic is removed by the change that lands it. `kanban-ui` keeps the
`quickAdd` / `onQuickAdd` pair untouched.

⚠️ **Dated note, 2026-09-29 — the contract moved in this same release — objectui#11073.**
The reason given above, that "has no prop quickAdd" was false because `@objectstack/spec` publishes the key, no longer holds. Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which carries the retirement this diagnostic was declared interim for: `object-kanban.quickAdd` is now a spec tombstone, refused by name at the authoring door. The diagnostic's own removal belongs to the change that ruled it and is not made here. Until then, the key it names is one the contract itself refuses.
3 changes: 3 additions & 0 deletions .changeset/9808-percent-scale-out-of-range.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@ nothing here, because the bound is merged and unreleased at the installed
renderer-side fallback #0.1 bans, and the module is to be deleted rather than
kept beside the enforced contract. The percent pin file asks the installed
`FieldSchema` that question on every run and fails with those instructions.

⚠️ **Dated note, 2026-09-29 — the SUNSET above fired in this same release — objectui#11073.**
Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which bounds `scale` at 100: a percent field declaring `scale: 101` is now refused at the declaration (`too_big` at `scale`). That is the condition the SUNSET paragraph names, and it fired as written. The clamp, its console warning and the module that held them are deleted, and `formatPercent` and both percent faces pass the declared width through again. So what this release ships is the spec's refusal at the declaration, not the clamp-and-report described above, and `formatPercent` no longer returns a string for a width the engine refuses.
3 changes: 3 additions & 0 deletions .changeset/named-list-view-protocol-members-8980.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,6 @@ rung whose source could not be authored before this change — so on existing
documents the renderer produces the same nodes it produced before, proven by an
absence-control case beside each fix. The 19 legacy spellings `NamedListView`
declares beyond the protocol are objectui#7924's remedy and are untouched.

⚠️ **Dated note, 2026-09-29 — two members named above were retired in this same release — objectui#11073.**
Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which retired `pageName` and the list view's `tabs` (and the `type: 'page'` branch `pageName` configured) under ADR-0049 enforce-or-remove. Following the same standing principle this change cites, `NamedListView` no longer declares either as a member. Both are tombstones, typed `never` and refused by name at parse. So the table of seventeen above is fifteen live members plus those two, and "declared and NOT read" no longer describes `tabs` or `pageName`: neither is accepted.
3 changes: 3 additions & 0 deletions .changeset/shaggy-doors-repeat.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ which the renderer has drawn for releases.
⚠️ Consumers holding an exhaustive `switch` or a total `Record<ViewType, …>` will
now fail to compile until they account for `page`. That failure is the point of the
change — it is the guarantee that was silently lost.

⚠️ **Dated note, 2026-09-29 — `page` left the vocabulary again in this same release — objectui#11073.**
Later in this release this repository began resolving `@objectstack/spec` 17.5.0, which removed `type: 'page'` from the list-view vocabulary (ADR-0049 enforce-or-remove). Because `ViewType` and `ViewTypeSchema` are derived from the spec, as this change made them, they no longer carry `page`. A `type: 'page'` view is refused by name at parse rather than being "spec-valid", and the one-time "cannot draw" warning has no kind left to explain. The rest of this change stands: the vocabulary still follows the spec, now in the narrowing direction.
Loading
Loading