Skip to content

refactor(app-shell): move ObjectView's leaf pieces into objectViewChrome.tsx (slice 3) - #26310

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

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

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread

Part of #25992 (slice 3 of the move-only split, under the standing claim and the seat's continuation note; slices 1 and 2 landed as #26152 and #26233, and the card stays open for the component body).

Clause-②: no
Metadata-protocol: none

Seam table (measured on main 96635f5)

ui/packages/app-shell/src/views/ObjectView.tsx was 3254 lines. What was still module-level besides imports and the slice 1-2 re-exports:

Piece Kind Who reads it This slice
ConsoleObjectViewProps exported interface ObjectView / ObjectViewInner, views/index.ts type re-export, 4 tests by path stays: it is the component's own props contract
ObjectNotFoundState exported React component the ObjectView wrapper, console/AppContent.tsx (imports it from views/ObjectView.js) moves
VIEW_TABS_MIN_WIDTH, viewTabsFitNow, useViewTabsFit file-local constant, function, hook ObjectViewInner (the tab strip decision) moves
keepInlineEditModeForTheSession (with its docblock) file-local no-op callback ObjectViewInner (the list's inline-edit toggle) moves
ObjectView, ObjectViewInner the component stays (later slices, by concern)

No test reads any of the moved lines out of ObjectView.tsx as source text (checked over every test that reads ObjectView.tsx), so this slice needs no test edit at all.

What moved

The contiguous block from the ObjectNotFoundState docblock through keepInlineEditModeForTheSession moves verbatim, in its original order, into a new sibling ui/packages/app-shell/src/views/objectViewChrome.tsx. ObjectView.tsx imports ObjectNotFoundState, useViewTabsFit and keepInlineEditModeForTheSession back and re-exports ObjectNotFoundState, the one moved name it exported, from the same path. useViewTabsFit and keepInlineEditModeForTheSession gain the export keyword in the new module because the component still calls them; ObjectView.tsx does not re-export them, so it publishes no new name. Table as TableIcon leaves ObjectView.tsx's lucide import with its only reader. The package entry is untouched. ObjectView.tsx goes from 3254 to 3171 lines.

Move-only proof: the multiset of non-blank lines of the base ObjectView.tsx equals new ObjectView.tsx plus objectViewChrome.tsx, after normalising the two added export keywords. The only differing lines are imports, the re-export and its comment, and the new module's header.

Test edits

None.

Verification

At 668d82f, under the shared verify lock: pnpm install --frozen-lockfile; app-shell dependency closure build; pnpm --filter @object-ui/app-shell type-check (src and tsconfig.test.json); 117 test files (every views/ObjectView.* test, every console/__tests__/AppContent* test, and every other test that reads ObjectView.tsx as source) passed, 1425 tests; Console build (turbo, 71/71 tasks). eslint on both source files: 0 errors. The 30 derived dispatch gates: all exit 0. The rest of the app-shell suite is left to CI Test UI: it reaches these names only through the unchanged import path.

Acceptance notes

  • ObjectNotFoundState's docblock still says "this module's ObjectView draws it for an absence"; the wrapper that draws it is now in the sibling file. Kept verbatim because the slice is move-only.
  • The inline-edit docblock sits directly above the view-tabs docblock, as it did in ObjectView.tsx; the order is unchanged.

Changeset: .changeset/25992-objectview-chrome-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>
…ome.tsx (slice 3)

ObjectNotFoundState, the saved-view tab strip's viewport check
(VIEW_TABS_MIN_WIDTH, viewTabsFitNow, useViewTabsFit) and
keepInlineEditModeForTheSession move verbatim out of views/ObjectView.tsx
into views/objectViewChrome.tsx. ObjectView.tsx imports them back and
re-exports ObjectNotFoundState, the one name it exported. No test edits.

Claude-Session: https://claude.ai/code/session_01QciHBvFJXnhZqXmdqpDtpz
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tooling labels Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

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

Head 668d82f9 (read from the PR object).

Landing: ready + auto-merge through the relay.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 20:24
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 26, 2026 20:24
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit e638193 Oct 26, 2026
55 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-x004t9 branch October 26, 2026 20:50
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/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants