Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3d8aec5
refactor(app-shell): move ObjectView's view-options family into objec…
claude Oct 26, 2026
ff7e8a1
Merge commit 'refs/x004t9/main' into claude/project-thread-x004t9
claude Oct 26, 2026
ccd5a74
Merge commit 'refs/x004t9/main' into claude/project-thread-x004t9
claude Oct 26, 2026
9b51e47
Merge commit 'refs/x004t9/main' into claude/project-thread-x004t9
claude Oct 26, 2026
668d82f
refactor(app-shell): move ObjectView's leaf pieces into objectViewChr…
claude Oct 26, 2026
05038cd
Merge commit 'refs/x004t9/main' into claude/project-thread-x004t9
claude Oct 26, 2026
2e11452
refactor(app-shell): move ObjectView's realtime refresh and record co…
claude Oct 26, 2026
0531281
Merge origin/main into claude/project-thread-x004t9
claude Oct 26, 2026
4ca5b4b
Merge origin/main into claude/project-thread-x004t9
claude Oct 26, 2026
5522655
refactor(app-shell): move ObjectView's identity import and record nav…
claude Oct 26, 2026
3fd6606
Merge origin/main into claude/project-thread-x004t9
claude Oct 26, 2026
c416618
refactor(app-shell): type the record navigation hook's parameters fro…
claude Oct 26, 2026
63cf14e
Merge origin/main into claude/project-thread-x004t9
claude Oct 26, 2026
d725c1b
refactor(app-shell): move ObjectView's list toolbar affordances into …
claude Oct 27, 2026
a1cff67
Merge origin/main into claude/project-thread-x004t9
claude Oct 27, 2026
a8de478
Merge origin/main into claude/project-thread-x004t9
claude Oct 27, 2026
0871a48
refactor(app-shell): move ObjectView's header toolbar and list URL st…
claude Oct 27, 2026
96a92ca
Merge origin/main into claude/project-thread-x004t9
claude Oct 27, 2026
e4434f7
Merge remote-tracking branch 'origin/main' into claude/project-thread…
claude Oct 27, 2026
cd7c792
refactor(app-shell): move ObjectView's view tab strip, plugin schema …
claude Oct 27, 2026
4ef7505
Merge remote-tracking branch 'origin/main' into claude/project-thread…
claude Oct 27, 2026
472a4e6
refactor(app-shell): move ObjectView's page header and record overlay…
claude Oct 27, 2026
d5ff0d2
Merge remote-tracking branch 'origin/main' into claude/project-thread…
claude Oct 27, 2026
8cac64f
Merge remote-tracking branch 'origin/main' into claude/project-thread…
claude Oct 27, 2026
ed7146b
refactor(app-shell): move ObjectView's renderListView into a sibling …
claude Oct 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/25992-objectview-list-renderer-split.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
'@object-ui/app-shell': patch
---

refactor(app-shell): the Console `ObjectView`'s `renderListView` moves into a sibling hook

Clause-②: no
Metadata-protocol: none

`renderListView`, the callback the plugin `ObjectView` calls to draw a view through `ListView` (and a chart view through `ObjectChart`), moves verbatim out of `ObjectViewInner` in `views/ObjectView.tsx` into `useObjectViewListRenderer` in `objectViewListRenderer.tsx`. The column-declaration flags and the held list identity refs that only it reads move with it. The component passes every input in and reads the returned callback. No logic, name or rendered output changes, and the package entry is unchanged.

What to do: nothing.
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ describe('objectui#5233 — what must NOT be narrowed', () => {
*/
describe('objectui#12504 census — the toolbar-to-view write family is retired', () => {
const here = path.dirname(fileURLToPath(import.meta.url));
const objectViewCode = stripComments(readFileSync(path.join(here, 'ObjectView.tsx'), 'utf8'));
const objectViewCode = stripComments(['ObjectView.tsx', 'objectViewListRenderer.tsx'].map((file) => readFileSync(path.join(here, file), 'utf8')).join('\n'));
const dataSourceCode = stripComments(
readFileSync(path.join(here, '..', '..', '..', 'types', 'src', 'data.ts'), 'utf8'),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const sourceOf = (fromRoot: string, fromPackage: string): string => {
return readFileSync(path, 'utf8');
};

const RELAY_SOURCE = sourceOf('packages/app-shell/src/views/ObjectView.tsx', 'src/views/ObjectView.tsx');
const RELAY_SOURCE = sourceOf('packages/app-shell/src/views/objectViewListRenderer.tsx', 'src/views/objectViewListRenderer.tsx');
const UPSTREAM_SOURCE = sourceOf('packages/plugin-view/src/ObjectView.tsx', '../plugin-view/src/ObjectView.tsx');
const TYPES_SOURCE = sourceOf('packages/types/src/objectql.ts', '../types/src/objectql.ts');
const LIST_VIEW_SOURCE = sourceOf('packages/plugin-list/src/ListView.tsx', '../plugin-list/src/ListView.tsx');
Expand Down Expand Up @@ -225,7 +225,7 @@ const collectLiteral = (literal: ts.ObjectLiteralExpression, prefix: string, out
};

const relayLiteral = ((): ts.ObjectLiteralExpression => {
const sf = parse('ObjectView.tsx', RELAY_SOURCE);
const sf = parse('objectViewListRenderer.tsx', RELAY_SOURCE);
let found: ts.ObjectLiteralExpression | null = null;
const visit = (node: ts.Node): void => {
if (
Expand All @@ -244,7 +244,7 @@ const relayLiteral = ((): ts.ObjectLiteralExpression => {
if (!found) {
throw new Error(
'objectui#7559 census cannot find the relay literal `const fullSchema = { … }` in\n'
+ 'app-shell/src/views/ObjectView.tsx. The census anchors on that name. If the literal was\n'
+ 'app-shell/src/views/objectViewListRenderer.tsx. The census anchors on that name. If the literal was\n'
+ 'renamed or moved, re-point this anchor — ⛔ do not delete the census, which is the only\n'
+ 'thing standing between a dropped rung and silence (objectui#7199, #7218, #7516).',
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ describe('ObjectView view-config `titleField` — the middle rung is gone (objec
describe('the seven seams share ONE expression shape (objectui#6557)', () => {
// This face spans `ObjectView.tsx` and the view-options family it imports
// from `objectViewOptions.ts` (objectstack#25992 slice 2), so the scan reads both.
const SOURCE = ['ObjectView.tsx', 'objectViewOptions.ts']
const SOURCE = ['ObjectView.tsx', 'objectViewOptions.ts', 'objectViewListRenderer.tsx']
.map((file) => readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), file), 'utf8'))
.join('\n');

Expand Down
863 changes: 40 additions & 823 deletions ui/packages/app-shell/src/views/ObjectView.tsx

Large diffs are not rendered by default.

915 changes: 915 additions & 0 deletions ui/packages/app-shell/src/views/objectViewListRenderer.tsx

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const here = path.dirname(fileURLToPath(import.meta.url));
const objectViewPath = path.join(here, 'ObjectView.tsx');
const widgetsPath = path.join(here, 'metadata-admin/widgets.tsx');

const objectViewSrc = readFileSync(objectViewPath, 'utf8');
const objectViewSrc = [objectViewPath, path.join(here, 'objectViewListRenderer.tsx')].map((file) => readFileSync(file, 'utf8')).join('\n');
const widgetsSrc = readFileSync(widgetsPath, 'utf8');

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2050,7 +2050,7 @@ describe('objectui#7924 — the unread members, in the FOUR buckets the ruling w
*/

const LISTVIEW = 'packages/plugin-list/src/ListView.tsx';
const APP_SHELL_OBJECT_VIEW = 'packages/app-shell/src/views/ObjectView.tsx';
const APP_SHELL_OBJECT_VIEW = 'packages/app-shell/src/views/objectViewListRenderer.tsx';

/** A named view's one required member; every literal below is a delta on it. */
const BASE_VIEW = { label: 'All' } as const;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const read = (rel: string) => readFileSync(join(REPO_ROOT, rel), 'utf8');
const RESOLVER = 'packages/plugin-tree/src/ObjectTree.tsx';
const VIEW_BRANCH = 'packages/plugin-view/src/ObjectView.tsx';
const LIST_BRANCH = 'packages/plugin-list/src/ListView.tsx';
const CONSOLE_COMPOSITION = 'packages/app-shell/src/views/ObjectView.tsx';
const CONSOLE_COMPOSITION = 'packages/app-shell/src/views/objectViewListRenderer.tsx';

/**
* The declared keys, as a value — `it.each` needs one, and a failure named
Expand Down
Loading