Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f5f5bc0
chore: bump objectui to e420df310f5b
claude Sep 30, 2026
e21e717
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 1…
claude Sep 30, 2026
3339631
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 2…
claude Sep 30, 2026
592c69a
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 3…
claude Sep 30, 2026
793f1f2
chore(console): regenerate the SDUI manifest at objectui e420df310f5b
claude Sep 30, 2026
d9a0733
chore(sdui-parser): re-record the objectui lockstep at e420df310f5b
claude Sep 30, 2026
f82f8f8
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 4…
claude Sep 30, 2026
fca00f9
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 5)
claude Sep 30, 2026
37bbfaf
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 6)
claude Sep 30, 2026
005ce8c
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 7)
claude Sep 30, 2026
89a578b
wip(spec): re-measure objectui pin citations at e420df310f5b (batch 8…
claude Sep 30, 2026
c0032f3
chore(spec): regenerate the migration registry for the re-measured pi…
claude Sep 30, 2026
2e2d11e
chore(changeset): @objectstack/spec patch for the re-measured objectu…
claude Sep 30, 2026
4e10a19
chore(changeset): name the two action:button keys objectui leaves unp…
claude Sep 30, 2026
184a592
docs(references): regenerate view.mdx for the FormField.span describe…
claude Sep 30, 2026
e32638a
Merge remote-tracking branch 'origin/main' into claude/issue-20949-bu…
claude Sep 30, 2026
b1da822
Merge remote-tracking branch 'origin/main' into claude/issue-20949-bu…
claude Sep 30, 2026
c013d1a
fix(sdui-parser)!: retire the interim inert-quick-add diagnostic, mir…
claude Oct 1, 2026
bb03532
chore(changeset): ADR-0087 dispositions for the console pin bump and …
claude Oct 1, 2026
62ec639
Merge remote-tracking branch 'origin/main' into claude/issue-20949-bu…
claude Oct 1, 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
130 changes: 130 additions & 0 deletions .changeset/console-e420df310f5b.md

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions .changeset/objectui-pin-citations-e420df310f5b.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@objectstack/spec': patch
---

The spec's objectui citations, and the shipped description text that names the `.objectui-sha` pin (the `FormField.span` describe and six migration-entry descriptions), are re-measured against the new console pin, objectui `e420df310f5b`.

Clause-②: no

Several records were corrected rather than moved, because objectui changed what they describe on this hop: the four `action:*` registrations now publish the keys their rows declare, `endpoint` and `undoable` aside (objectui#11168), `action:group` and `action:menu` now apply a host-evaluated `disabled` that their rows do not declare (objectui#11182, recorded, not declared), the `object-kanban` default row cap is named `DEFAULT_KANBAN_FETCH_BATCH_SIZE` (objectui#9853), the board no longer forwards `quickAdd` (objectui#8285, objectui#11234), the `object-tree` ladder now judges `data` on the `view-data` arm its row declares (objectui#8348), and `object-map` / `object-gantt` / `object-timeline` now publish `filter` and `sort` inputs (objectui#8220). Two older statements that were already stale are also corrected: an authored `data` array on `object-map` no longer reaches the renderer through the React props channel (objectui#9571), and the `quickAdd` retirement record now notes that the schema-only `kanban-ui` block it points to is retired in objectui (objectui#8257). No key, default, enum member or export moves.
11 changes: 11 additions & 0 deletions .changeset/sdui-parser-retire-inert-quick-add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@objectstack/sdui-parser': minor
---

fix(sdui-parser)!: the interim `inert-quick-add` diagnostic is retired, mirroring objectui `6f864cf62` (objectui#8285)

Clause-②: no (narrowing)

<!-- adr-0087: not-required (no-migration-prescription) This is the ObjectStack mirror of objectui `6f864cf62`, one of the five upstream declared-breaking entries the console pin bump to objectui `e420df310f5b` carries, and the port `check:sdui-lockstep` demands so both parser copies keep one diagnostic-code set. It removes no ObjectStack-authorable key: `@objectstack/spec` already refuses `quickAdd` on `object-kanban` by tombstone, registered as `page.component.object-kanban.quickAdd` (#17260), so no document changes shape and `objectstack migrate meta` has nothing to rewrite. What moves is this package's own TypeScript surface and diagnostic payload, stated below. -->

**BREAKING**: shipped as `minor` under the launch-window convention. The save-time parser stops emitting the interim `inert-quick-add` warning for an authored `quickAdd` on `<object-kanban>`. The prop walk's own `unknown-prop` warning replaces it, so severity is unchanged and no page that saves today stops saving. The package's barrel no longer exports `checkKanbanQuickAdd`, `INERT_QUICK_ADD`, `QUICK_ADD_HOST_TYPES` or `QUICK_ADD_KEY`. A caller that matched on the `inert-quick-add` code should match `unknown-prop` on the `quickAdd` key instead, and an importer of those four names should delete the import: nothing replaces them. On the authored side, delete the `quickAdd` key: the spec refuses it by name.
2 changes: 1 addition & 1 deletion .objectui-sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
db11afd4967cd9d39381c5e21dc2deec9d706204
e420df310f5ba9526fd19d5fe65c2a52d6ac6d8c
4 changes: 2 additions & 2 deletions content/docs/references/ui/view.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ Column footer summary configuration
| **required** | `boolean` | optional | Required override |
| **hidden** | `boolean` | optional | Hidden override |
| **colSpan** | `integer` | optional | Absolute column span (1-4). The renderer clamps it to the form grid's current column count, so the cell starts at a real column boundary at every surface width and never overflows (`colSpan: 4` in a 3-column grid renders as 3); a `colSpan` within the column count renders as authored, and `colSpan: 1` emits no span class at all. |
| **span** | `Enum<'auto' \| 'full'>` | optional (default: `"auto"`) | Relative field width. 'auto' (default — omit it): the renderer sizes the field from its widget type × the current column count — at the pin this repo builds against (`.objectui-sha` = `db11afd4967c`), only textarea, markdown, html, richtext and repeater resolve to the full column count (repeater reaches it through the wide `field:grid` widget it maps to). 'full': resolves to the form grid's full column count. How far down the container-query tiers that span is emitted is the renderer's, not this key's: at that same pin the renderer emits one clamped col-span class per multi-column tier (`@md:col-span-2 @2xl:col-span-3` for a 3-column grid), so the field takes the whole row at every multi-column tier, not just the widest. |
| **span** | `Enum<'auto' \| 'full'>` | optional (default: `"auto"`) | Relative field width. 'auto' (default — omit it): the renderer sizes the field from its widget type × the current column count — at the pin this repo builds against (`.objectui-sha` = `e420df310f5b`), only textarea, markdown, html, richtext and repeater resolve to the full column count (repeater reaches it through the wide `field:grid` widget it maps to). 'full': resolves to the form grid's full column count. How far down the container-query tiers that span is emitted is the renderer's, not this key's: at that same pin the renderer emits one clamped col-span class per multi-column tier (`@md:col-span-2 @2xl:col-span-3` for a 3-column grid), so the field takes the whole row at every multi-column tier, not just the widest. |
| **widget** | `string` | optional | Custom widget/component name (overrides type-based inference) |
| **language** | `string` | optional | Code editor language (for type=code) |
| **keyField** | `{ field?: string; label?: string \| Record<string, string>; placeholder?: string \| Record<string, string>; helpText?: string \| Record<string, string>; … }` | optional | Key column config for record-typed fields |
Expand Down Expand Up @@ -378,7 +378,7 @@ View filter rule
| **required** | `boolean` | optional | Required override |
| **hidden** | `boolean` | optional | Hidden override |
| **colSpan** | `integer` | optional | Absolute column span (1-4). The renderer clamps it to the form grid's current column count, so the cell starts at a real column boundary at every surface width and never overflows (`colSpan: 4` in a 3-column grid renders as 3); a `colSpan` within the column count renders as authored, and `colSpan: 1` emits no span class at all. |
| **span** | `Enum<'auto' \| 'full'>` | optional (default: `"auto"`) | Relative field width. 'auto' (default — omit it): the renderer sizes the field from its widget type × the current column count — at the pin this repo builds against (`.objectui-sha` = `db11afd4967c`), only textarea, markdown, html, richtext and repeater resolve to the full column count (repeater reaches it through the wide `field:grid` widget it maps to). 'full': resolves to the form grid's full column count. How far down the container-query tiers that span is emitted is the renderer's, not this key's: at that same pin the renderer emits one clamped col-span class per multi-column tier (`@md:col-span-2 @2xl:col-span-3` for a 3-column grid), so the field takes the whole row at every multi-column tier, not just the widest. |
| **span** | `Enum<'auto' \| 'full'>` | optional (default: `"auto"`) | Relative field width. 'auto' (default — omit it): the renderer sizes the field from its widget type × the current column count — at the pin this repo builds against (`.objectui-sha` = `e420df310f5b`), only textarea, markdown, html, richtext and repeater resolve to the full column count (repeater reaches it through the wide `field:grid` widget it maps to). 'full': resolves to the form grid's full column count. How far down the container-query tiers that span is emitted is the renderer's, not this key's: at that same pin the renderer emits one clamped col-span class per multi-column tier (`@md:col-span-2 @2xl:col-span-3` for a 3-column grid), so the field takes the whole row at every multi-column tier, not just the widest. |
| **widget** | `string` | optional | Custom widget/component name (overrides type-based inference) |
| **language** | `string` | optional | Code editor language (for type=code) |
| **keyField** | `{ field?: string; label?: string \| Record<string, string>; placeholder?: string \| Record<string, string>; helpText?: string \| Record<string, string>; … }` | optional | Key column config for record-typed fields |
Expand Down
8 changes: 3 additions & 5 deletions packages/sdui-parser/objectui-lockstep.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,22 @@
],
"objectui": {
"repo": "https://github.com/objectstack-ai/objectui.git",
"rev": "db11afd4967cd9d39381c5e21dc2deec9d706204",
"revDate": "2026-09-29T18:01:28+00:00",
"rev": "e420df310f5ba9526fd19d5fe65c2a52d6ac6d8c",
"revDate": "2026-09-30T22:03:26+00:00",
"source": "packages/sdui-parser/src",
"files": [
"packages/sdui-parser/src/body-dialect.ts",
"packages/sdui-parser/src/codegen.ts",
"packages/sdui-parser/src/dashboard-widget-options.ts",
"packages/sdui-parser/src/index.ts",
"packages/sdui-parser/src/input-type.ts",
"packages/sdui-parser/src/kanban-quick-add.ts",
"packages/sdui-parser/src/parse.ts",
"packages/sdui-parser/src/provenance.ts",
"packages/sdui-parser/src/types.ts",
"packages/sdui-parser/src/validate.ts"
]
},
"recordedAgainstPin": "db11afd4967cd9d39381c5e21dc2deec9d706204",
"recordedAgainstPin": "e420df310f5ba9526fd19d5fe65c2a52d6ac6d8c",
"grammarRegion": {
"file": "packages/sdui-parser/src/parse.ts",
"delimiter": "/* ---------------------- the JS literal subset (#6614) ---------------------- */",
Expand All @@ -39,7 +38,6 @@
"forbidden-attr",
"forbidden-tag",
"inert-expression",
"inert-quick-add",
"invalid-enum",
"member-type-mismatch",
"mismatched-tag",
Expand Down
Loading
Loading