Repository navigation
fix(components,app-shell,i18n): element:record_picker and element:number bind data through the node-level dataSource only - #11989
Merged
objectstack-fleet[bot] merged 5 commits intoOct 8, 2026
Conversation
…evel dataSource only element:repeater reads its query (object, filter, sort, limit) from the dataSource binding, gate-wrapped like element:number; element:record_picker and element:number drop their flat-key fallbacks and the number's AND with properties.filter; the Studio designer writes dataSource.object (and the repeater's dataSource.limit) at node level, and its field pickers read the object from there. Docs and changeset follow. Part of objectui#11880 (items 1-4). Claude-Session: https://claude.ai/code/session_01MgfduSkFrfM3eorB3UGfAU Co-authored-by: Claude <noreply@anthropic.com>
…ures onto the binding New pins: the repeater's dataSource members (data-list.elementDataSource-11880) and the designer's node-level binding writes (PageBlockInspector.elementDataSource-11880). The record_picker / number pins that asserted the flat-key fallbacks are inverted; fixtures that authored properties.object / filter / sort / limit on the three elements now author dataSource. The block-config schema-parity census judges a control homed in the binding against ElementDataSourceSchema. Part of objectui#11880 (items 1-4). Claude-Session: https://claude.ai/code/session_01MgfduSkFrfM3eorB3UGfAU Co-authored-by: Claude <noreply@anthropic.com>
… leaves untouched Part of objectui#11880. Claude-Session: https://claude.ai/code/session_01MgfduSkFrfM3eorB3UGfAU Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgfduSkFrfM3eorB3UGfAU Co-authored-by: Claude <noreply@anthropic.com>
…r the seat rulings; defer element:repeater Seat rulings on objectui#11880 (claim 6062231663): - The repeater is deferred to triage: the spec at the pin still declares its flat object REQUIRED and documents that the node dataSource is not read there. data-list.tsx, the repeater's designer rows, its docs row and example, and its fixtures are restored to the base; the designer, docs and fixture changes are narrowed to element:number and element:record_picker. - B1, option B: element:record_picker's object / filter / sort / limit and element:number's object / filter stay published until the spec's v18 retirement; each description now says the key is not read and names the binding member that is, and the member-pin prose that described the flat precedence is corrected. - B3, option A: element.number.noObject in the ten language packs, and its inline defaultValue, name only dataSource.object (value change, no new key). Part of objectui#11880. Claude-Session: https://claude.ai/code/session_01MgfduSkFrfM3eorB3UGfAU Co-authored-by: Claude <noreply@anthropic.com>
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
objectstack-fleet
Bot
deleted the
claude/issue-11880-element-datasource
branch
October 8, 2026 16:50
This was referenced Oct 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #11880
Items 2-4 of objectui#11880 for
element:record_pickerandelement:number, as narrowed by the seat's rulings on claim6062231663. Ruling of record: objectstack-ai/objectstack#11509 comment6051498447(A-narrow, objectui first).What changes
element:record_pickerreadsobject,filter,sortandlimitfrom the node-leveldataSourceonly. It no longer readscomposed?.x ?? props.x.element:numberreads itsobjectandfilterfrom the binding only. Its AND-combination withproperties.filteris gone, so its filter is the binding's (AND-combined with its view's), lowered bytoFilterNodeSafely.dataSource.object, no query. A number with anaggregateshows its no-object notice. A picker offers no records.BlockPropFieldgainsat: 'dataSource', andObjectSourcegainsobjectFrom: 'dataSource'.element:number's Object picker writesdataSource.objectat node level, throughPageBlockInspector's node-level patch path, the wayvisibleWhenis patched.properties.objectstays visible under Advanced, which no longer counts a binding-homed field as curated.element:*paragraph incontent/docs/guide/data-source.mdstates the dataSource-only rule for the two elements.element.number.noObjectnow reads "No object named: set dataSource.object." in all ten language packs, and the inlinedefaultValueinelements.tsxmatches. This is a value change only, with no new key. The change made the old sentence ("set object or ...") false.What is NOT in this PR
The
element:repeaterhalf is deferred. The seat ruled it out of this PR: at the pin, the spec still declares the repeater's flatobjectREQUIRED and documents that its nodedataSourceis not read. Triage rules on that fork. Deferred with it:data-list.tsx;apps/console/src/dev/DevLists.tsxharness.Their earlier commits on this branch are reverted by a new commit.
Item 5 (
object-grid.defaultFilters) is left to objectui#6152 round 10.The flat inputs stay published (seat ruling B1, option B).
element:record_picker'sobject/filter/sort/limitandelement:number'sobject/filterstay ininputsuntil the spec's v18 retirement ships with the pin bump. Each description now says the key is NOT READ and names the binding member that is, because the old descriptions stated a precedence that is now false. TheMEMBER_PINSprose inapps/console/src/__tests__/registry-inputs-spec-parity.test.tsthat described the flat precedence is corrected for the same reason. No row, exemption or count there changes.Verification (HEAD
400f1f352)pnpm exec vitest run): every test naming record-picker / elements / data-list / repeater / block-config / PageBlockInspector, every test authoring the three elements,packages/i18n/,column-identity.ratchetandone-authority-per-exported-name-6273. Result:Test Files 186 passed (186),Tests 4642 passed | 13 skipped (4655).pnpm --filter @object-ui/components type-checkandpnpm --filter @object-ui/app-shell type-checkboth exit 0, after a turbo build of the app-shell closure.check-changeset-presence,check-changeset-no-major,check:changeset-claims;check:new-line-citations(0 new);check:control-bytes;check:i18n-keys,check:i18n-drift("Every changed en value was followed by all nine translation packs"),check:i18n-designer-parity,check:i18n-dead-keys;check:spec-symbols,check:element-data-source-declaration;check:doc-types,check:doc-fences,check:doc-example-ids,check:doc-example-readers,docs:check-links.eslinton the 31 touched ts/tsx files: 0 errors.check:doc-snippets/check:doc-examples(exit 2: their closure is unbuilt; the diff adds no ts/tsx fence and no@example).ablation-replacewith its restore proven (blob equals HEAD and the diff against HEAD is empty):?? props.objectput back: 1 red, 6 green;?? props.objectput back: 3 red, 22 green;properties.filterput back: 2 red, 16 green;at: 'dataSource': 2 red, 3 green (the repeater control row stays green).Acceptance notes
packages/react(ElementDataSourceNoObjectPanel) says its wording iselement:number's notice with the property as a hole. After B3 that is approximate, because the number's sentence no longer has an "X or" part. It is a comment, not published text, and the file is off this PR's surface.check-changeset-presencecounts four released packages: components, app-shell, i18n, and console via a test fixture. It passes with the one changeset, which declares components, app-shell and i18n.Clause-②: no
Generated by Claude Code