Skip to content

refactor(app-shell): move ObjectView's view-options family into objectViewOptions.ts (slice 2) - #26233

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-x004t9
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-x004t9

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 of ui/packages/app-shell/src/views/ObjectView.tsx into a new sibling module ui/packages/app-shell/src/views/objectViewOptions.ts:

  • timelineViewOptions, calendarViewOptions, ganttViewOptions, galleryViewOptions, kanbanViewOptions (with the shared docblocks above them)
  • storedLegacyOptions
  • isSameOptionsValue (was file-local; it gains the export keyword because the component still calls it, and ObjectView.tsx does NOT re-export it, so no new name is published from there)
  • dispatchViewPatches

ObjectView.tsx imports all eight back and re-exports the seven names it exported before, from the same path. The package entry is untouched. detectStatusField is imported by the new module instead of ObjectView.tsx (its only reader moved). ObjectView.tsx goes from 3689 to 3254 lines.

Move-only proof: the multiset of non-blank lines of the base ObjectView.tsx equals new ObjectView.tsx plus objectViewOptions.ts, after normalising the one added export keyword. 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)

  1. ObjectView.calendarBinding-7029.test.tsx, the "no invented calendar field name survives in the source" scan
  2. ObjectView.galleryBinding-7547.test.tsx, the "no invented gallery cover name survives in the source" scan
  3. ObjectView.ganttBinding-7070.test.tsx, the "no invented gantt date name survives in the source" scan
  4. ObjectView.titleFieldConvergence.test.tsx, the "the seven seams share ONE expression shape" scan

Each readFileSync of ObjectView.tsx now reads ObjectView.tsx and objectViewOptions.ts and 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.

  1. writeRefusalCensus-11583.test.ts: the LEDGER row for dispatchViewPatches (callee updateView, kind relays) is keyed file: 'objectViewOptions.ts' instead of 'ObjectView.tsx'. The handleSetDefaultView row that calls it stays on ObjectView.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-shell type-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

  • Some moved prose still says "below" or "above" about the relay in ObjectView.tsx (for example the storedLegacyOptions docblock'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.ts still scans only ObjectView.tsx for a detached adapter write. dispatchViewPatches itself 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

…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>
@github-actions github-actions Bot added size/l documentation Improvements or additions to documentation tests tooling labels Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · seat domain:ui#1 · 2026-10-26T17:59Z

Head ccd5a743 (read from the PR object). It is the reviewed ff7e8a15 plus a clean merge of origin/main containing #26231 (a1477dec), and the PR diff is unchanged.

Landing: ready + auto-merge through the relay.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 18:00
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 26, 2026 18:00
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit 96635f5 Oct 26, 2026
55 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-x004t9 branch October 26, 2026 19:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/l tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants