Repository navigation
refactor(app-shell): move ObjectView's view-options family into objectViewOptions.ts (slice 2) - #26233
Merged
Conversation
…tViewOptions.ts (slice 2) The timeline/calendar/gantt/gallery/kanban ViewOptions, storedLegacyOptions, isSameOptionsValue and dispatchViewPatches move verbatim out of views/ObjectView.tsx into views/objectViewOptions.ts. ObjectView.tsx imports them back and re-exports every name it exported before. Test edits forced by the move: the four source scans that read the ObjectView face (calendarBinding-7029, galleryBinding-7547, ganttBinding-7070, titleFieldConvergence) now read ObjectView.tsx plus objectViewOptions.ts, and the writeRefusalCensus-11583 LEDGER row for dispatchViewPatches is keyed by its new file. Claude-Session: https://claude.ai/code/session_01QciHBvFJXnhZqXmdqpDtpz Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
席位核对 · ACCEPT · seat
|
This was referenced Oct 26, 2026
Merged
refactor(app-shell): move ObjectView's list toolbar affordances into a sibling hook (slice 7)
#26374
Merged
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.
Requested by Steve · project thread
Part of #25992 (slice 2 of the move-only split; slice 1 landed as #26152, and the card stays open for any later slice).
Clause-②: no
Metadata-protocol: none
What moved
Base
d00215f6(slice 1 merged). This slice moves the view-options family and the view-patch dispatcher, verbatim, out ofui/packages/app-shell/src/views/ObjectView.tsxinto a new sibling moduleui/packages/app-shell/src/views/objectViewOptions.ts:timelineViewOptions,calendarViewOptions,ganttViewOptions,galleryViewOptions,kanbanViewOptions(with the shared docblocks above them)storedLegacyOptionsisSameOptionsValue(was file-local; it gains theexportkeyword because the component still calls it, andObjectView.tsxdoes NOT re-export it, so no new name is published from there)dispatchViewPatchesObjectView.tsximports all eight back and re-exports the seven names it exported before, from the same path. The package entry is untouched.detectStatusFieldis imported by the new module instead ofObjectView.tsx(its only reader moved).ObjectView.tsxgoes from 3689 to 3254 lines.Move-only proof: the multiset of non-blank lines of the base
ObjectView.tsxequals newObjectView.tsxplusobjectViewOptions.ts, after normalising the one addedexportkeyword. Nothing is missing; the only added lines are the new module's header comment, the import and re-export blocks, and their one-line comment.Test edits (all forced by the move, as the claim allows)
ObjectView.calendarBinding-7029.test.tsx, the "no invented calendar field name survives in the source" scanObjectView.galleryBinding-7547.test.tsx, the "no invented gallery cover name survives in the source" scanObjectView.ganttBinding-7070.test.tsx, the "no invented gantt date name survives in the source" scanObjectView.titleFieldConvergence.test.tsx, the "the seven seams share ONE expression shape" scanEach
readFileSyncofObjectView.tsxnow readsObjectView.tsxandobjectViewOptions.tsand joins them. Reading both, not only the new module, keeps every scan over exactly the lines it read before: the titleFieldConvergence count ("exactly six") spans four seams that moved and two (map, tree) that stay in the component, and the calendar/gantt/gallery tripwires keep covering the component's own relay. No assertion changed.writeRefusalCensus-11583.test.ts: theLEDGERrow fordispatchViewPatches(calleeupdateView, kindrelays) is keyedfile: 'objectViewOptions.ts'instead of'ObjectView.tsx'. ThehandleSetDefaultViewrow that calls it stays onObjectView.tsx.No other test file changed.
Verification
See the os-dev-report comment on the card for the full readings. In short: every test file under
ui/packages/app-shell/src/views/plus the 7 source-reading tests outside it passed (1160 files); app-shelltype-check; eslint on the 7 touched files with 0 errors; the 35 derived dispatch gates; a Console build after merging the latest main.Acceptance notes
ObjectView.tsx(for example thestoredLegacyOptionsdocblock's "The relay below"). It is kept verbatim because the slice is move-only; the relay is now in the sibling file.ObjectView.unboundAdapterCall.test.tsstill scans onlyObjectView.tsxfor a detached adapter write.dispatchViewPatchesitself calls through the object, and the census row above still pins it.Changeset:
.changeset/25992-objectview-options-split.md(patch,@object-ui/app-shell).Generated by Claude Code