Repository navigation
fix(components): label a select nameField on the record heading's declared-pointer rung - #13110
Merged
objectstack-fleet[bot] merged 2 commits intoOct 20, 2026
Merged
Conversation
…lared-pointer rung The page header's declared-pointer rung now reads the record through the same withOptionLabels copy the titleFormat rung reads, so a select nameField heads the page with its option label, not its stored value. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
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-13103-heading-select-label
branch
October 20, 2026 02:52
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.
Fixes #13103
Clause-②: no
What
page:header's declared-pointer rung (declaredTitle) now reads the record through the samewithOptionLabelscopy thetitleFormatrung already reads. A selectnameField(ordisplayNameField) heads the record page with its option label, for exampleConfig change, not its stored valueconfig_change. The copy is computed once (labelledData) and both rungs read it, so the option lookup is not restated:optionLabelForstays the one place this file maps an enum value to its label, and its doc comment now names both rungs.Unchanged: a text
nameField(it has nooptions, sowithOptionLabelsleaves its value as served), the rung order (explicit title, declared pointer,titleFormat, resolver, record-key net, placeholder floor), and the field-level-security reads (a masked field still arrives absent; the labelled copy only rewrites a top-level scalar the record carries).Tests
New
packages/components/src/__tests__/page-header-title.selectNameField-13103.test.tsxrenders the realpage:header:nameField: 'action', a select whoseconfig_changeoption is labelledConfig change: the H1 isConfig change; the same with atitleFormatbeside it (the pointer still answers first, with the label); the array form offields.nameFieldwhose value equals another select field's option value is unchanged; thetitleFormatrung still labels a select token.Ablation (one-off, no permanent file):
objectstack/scripts/ablation-replace.mjsswappedrecordDisplayValueAt(labelledData, declaredNameField(objSchema))back to readdata(anchor 1 to 0, blobc4acc45de256tob4fadf1fe8ee). The new file went3 failed | 3 passed (6): the three label pins red (Expected: "Config change",Received: "config_change"), the three controls green. Restore: blob after restorec4acc45de256equals the HEAD blob,git diff HEADempty.Gates (on
74fdaee25e)pnpm --filter '@object-ui/components^...' build: exit 0.@object-ui/componentstype-check(tsc --noEmit && tsc -p tsconfig.test.json): exit 0; the test config's file list includes the new test.page-header-title*files,4 passed (4),42 passed (42); then everypackages/componentstest file that namespage:headerorlayout/containers,36 passed (36),493 passed (493).eslinton the two changed source files: exit 0, 0 errors (warnings are the file's existingno-explicit-anyset; the new test's three match its sibling's helper).check:phantom-deps,check:self-import,check:unreferenced-sources,check:doc-example-readers,check:handler-key-reads,check:side-effects-array,check:element-data-source-declaration,check:spec-symbols,check:action-forward-parity,check:designer-field-key-parity,check:icon-record-names,check:i18n-keys,check:i18n-drift,check:i18n-designer-parity,check:control-bytes,scripts/check-hand-rolled-comment-mask.mjs,scripts/check-changeset-fixed.mjs,scripts/check-changeset-presence.mjs,check:new-line-citations.packages/componentsdirectory, andpackages/app-shelltests that renderpage:header(record detail views).Acceptance notes
unifiedTitle(the resolver rung,getRecordDisplayName) still reads the served record. It is reached only after the declared-pointer andtitleFormatrungs both decline, so it is not the path this card measured; whether its type-aware derivation can ever pick a select field was not measured here. Noted, not changed (outside this card's ruling); carrier: none.Generated by Claude Code