Skip to content

docs(types): correct the NamedListView member figures and pin the count exactly (objectui#7947) - #7969

Merged
os-justin merged 3 commits into
mainfrom
claude/issue-7947-named-list-view-figures
Sep 6, 2026
Merged

docs(types): correct the NamedListView member figures and pin the count exactly (objectui#7947)#7969
os-justin merged 3 commits into
mainfrom
claude/issue-7947-named-list-view-figures

Conversation

@os-justin

Copy link
Copy Markdown
Collaborator

Fixes #7947

Two figures about NamedListView were wrong in four places, and the pin that should have caught them was floored below the truth. Text and figures plus one pin tightening; no schema, no type, no change to what a document must contain to validate.

Re-derived, not inherited

Both figures were re-taken on this branch's own base (d4864f3a4) and again after the origin/main merge (859de84a0), with the instrument the assertion itself uses — the pin file's namedListViewMemberCount() regex, whose two-space indent anchor is what makes it a TOP-LEVEL count:

PIN REGEX COUNT = 47
LOOSE COUNT (any indent) = 59

47, not "about 52". A looser count that drops the indent anchor also matches nested object-literal lines inside members' inline types and gives 59 on the same declaration. "About 52" was a hand figure sitting between two instruments, matching neither. Both readings agree with the card.

41 unread, not "about 45". namedViewReads() returns seven keys read off a named view — columns, data, filter, label, options, sort, type — but only six of them are declared NamedListView members. The seventh, data, is not declared on the interface at all: it reaches the renderer through an as any cast on the named-view config, (currentNamedViewConfig as any)?.data in packages/plugin-view/src/ObjectView.tsx (line 1815 on this head — verified present; the cast is the fact, the line number only a pointer). So the arithmetic is 47 minus 6 = 41, not 52 minus 7 = 45. Every one of the four sites now says that in its own words.

The pin now binds

toBeGreaterThanOrEqual(40) was chosen against the wrong count and constrained nothing: at a true 47 it permitted the declaration to shed seven members — including a shrink toward the read set, the exact condition that re-opens the listViews value-type decision (objectui#7928) — and a floor cannot catch growth at all, so the quoted figures could stale silently in either direction. It is now an exact toBe(47).

Its failure message names the three sibling files whose figures move together, so the next person who legitimately changes NamedListView is told where to go rather than told a number. A comment above it records how the count is taken (this file's own regex, and why the indent anchor matters) and that the looser count gives 59 — which is where the retired "about 52" came from, so the next reader does not re-derive the middle number and re-introduce it.

File face, to the region level

packages/types/src/__tests__/object-view-unmirrored-keys-7779.test.ts is a shared file. I touch exactly two regions:

  • the file HEADER docblock, its "the one that stayed, and why it is pinned too" paragraph;
  • the member-count assertion and its comment, inside the listViews describe block near the end of the file.

I do not touch REGISTRATION_TEXT (lines 113-117), NAMED_VIEW_READS, namedListViewMemberCount() itself, or any other block in that file. PR #7932 edits only REGISTRATION_TEXT; the two edits are disjoint. origin/main was merged once before opening this PR, and #7932 had not landed at that point (REGISTRATION_TEXT is byte-identical to its base here).

The other four files are edited whole-file-uncontended: .changeset/object-view-unmirrored-keys-7779.md (the listViews paragraph only), .changeset/7947-named-list-view-figures.md (new), packages/types/src/zod/objectql.zod.ts (the ObjectViewSchema docblock's listViews bullet only), packages/types/src/__tests__/zod-mirror-parity.test.ts (the UnmirroredDeclared note's listViews paragraph only).

Reverse verification — the pin was made to fail

Perturbed NamedListView by exactly one member on disk, in a script with a trap restore on absolute paths:

HEAD blob for packages/types/src/objectql.ts = 9d3a05b45c633f13ff4ea723fc51ed3d56fb00e6
marker occurrences BEFORE = 0 (expect 0)      PIN REGEX COUNT = 47
marker occurrences AFTER  = 1 (expect 1)      PIN REGEX COUNT = 48
mutated blob = aa032c87e33ca480f0431f727a22b1728f905088 ; HEAD blob = 9d3a05b45c633f13ff4ea723fc51ed3d56fb00e6
MUTATED VITEST exit=1

The failure it produced, in full:

AssertionError: NamedListView's top-level member count moved (was 47). Re-derive it
with this file's own namedListViewMemberCount() regex, then update the
"47 declared / 41 unread" figures in the three files that carry them together —
.changeset/object-view-unmirrored-keys-7779.md,
packages/types/src/zod/objectql.zod.ts and
packages/types/src/__tests__/zod-mirror-parity.test.ts — plus this file's own header.
A shrink toward the read set also re-opens the listViews decision (objectui#7928).:
expected 48 to be 47 // Object.is equality

Restored with git checkout HEAD -- <the declaration> and proved clean by bytes, not by an exit code:

restored blob = 9d3a05b45c633f13ff4ea723fc51ed3d56fb00e6   (identical to HEAD blob)
marker occurrences AFTER RESTORE = 0 (expect 0)
git diff HEAD byte size = 0
PIN REGEX COUNT = 47

Then the three pins were re-run green on the restored tree.

Gates (exit captured before any pipe)

All run on the merged head 27bb40b2a:

gate verdict line
vitest run the three pin files Test Files 3 passed (3) / Tests 137 passed (137), exit 0
vitest run packages/types/ Test Files 129 passed (129) / Tests 2388 passed (2388), exit 0
@object-ui/types type-check exit 0 (tsc --noEmit + examples + test projects)
@object-ui/types lint exit 0 — 274 problems (0 errors, 274 warnings), all pre-existing
check-changeset-presence.mjs exit 0 — declares 1 changeset, .changeset/7947-named-list-view-figures.md, empty frontmatter accepted
check-changeset-no-major.mjs exit 0 — No changeset declares a major bump.
check-changeset-fixed.mjs exit 0 — All workspace packages are in the changeset fixed group.
check-changeset-overwrite.mjs exit 0, report-only: flags the in-place correction as its documented case 2 ("You are CORRECTING a declaration on purpose"), which is what the card asked for
check-control-bytes.mjs exit 0 — scanned 6418 tracked text file(s)
check:spec-symbols exit 0 — including spec member citations: no comment cites a key its spec symbol does not declare
check:handler-key-reads exit 0
check-governed-queue-guard.mjs --test (my five paths) NOT GOVERNED — 5 path(s) checked against 5 governed surface(s); none matched.

Narrowing, declared and measured. The only published source file in this diff is packages/types/src/zod/objectql.zod.ts, and the change there is confined to a JSDoc block. Measured rather than asserted: with comments stripped and whitespace collapsed, base and head are character-identical (30654 / 30654, CODE-ONLY IDENTICAL: true) while raw bytes differ (66612 / 67026). turbo ls --affected names all 43 packages because @object-ui/types is a universal dependency, but no consumer can observe a behaviour change from a comment; the repo-wide farm is CI's run, not a local one.

Two things the card did not anticipate

  1. The stale line range objectql.ts:1957-2134 is not in the tree. Card item 4 asks for it to be dropped where it appears. git grep for 1957-2134 returns exit 1 both on this branch's base and on the card's own head 5b5a5c3a3, with a positive control on the same refs returning hits, and a wider grep for the bare numbers finds only unrelated chart hashes and a #2134 issue reference. The requirement therefore holds vacuously: nothing was dropped because nothing was there, and no line range has been introduced anywhere in this diff.

  2. The changeset guards refuse the in-place-only route, so there are two changesets. The card says to correct .changeset/object-view-unmirrored-keys-7779.md in place "unless the changeset guards refuse that". They do: check-changeset-presence.mjs counts only added changesets (filter: 'A'), so an in-place correction on its own leaves that gate red. The existing changeset is corrected in place — that is the deadline the card names, and its wrong figures never reach a published CHANGELOG — and .changeset/7947-named-list-view-figures.md is added alongside with an EMPTY frontmatter, the gate's documented first-class "this releases nothing" declaration, which is the honest grading for a comment-and-figures change.

Scope

Part of the objectui#7779 / #7922 follow-up chain; the listViews value-type question stays with the maintainer on objectui#7928 and is untouched here. objectui#7932's region is untouched. objectui#5741 is the carrier-discipline record the card cites. None of those are addressed by this PR and none should be closed by it.

DRAFT deliberately: not flipped ready, not enqueued, no auto-merge armed.

Session, as a durable code span rather than a footer link: https://claude.ai/code/session_01BAZFhALsQsGqxui8sNqM8s


Generated by Claude Code

…nt exactly (objectui#7947)

`NamedListView`'s two quoted figures were wrong in four places, and the pin that
should have caught them was floored below the truth.

Re-derived on this branch's base d4864f3, with the pin file's own
`namedListViewMemberCount()` regex — the instrument the assertion itself uses:
47 declared top-level members. A looser count that drops the two-space indent
anchor and so also matches nested object-literal lines gives 59 on the same
declaration; the retired "about 52" was a hand figure between the two
instruments, matching neither.

The derived "unread" figure is 41, not 45. The renderer reads seven keys off a
named view, but only six of them (`label`, `type`, `columns`, `filter`, `sort`,
`options`) are declared `NamedListView` members. The seventh, `data`, is not
declared on the interface at all — it reaches the renderer through an `as any`
cast on the named-view config, `(currentNamedViewConfig as any)?.data` in
`packages/plugin-view/src/ObjectView.tsx`. So the arithmetic is 47 - 6 = 41, not
52 - 7 = 45, and every site now says so in its own words.

The pin moves with the figures: `toBeGreaterThanOrEqual(40)` was chosen against
the wrong count and constrained nothing — at a true 47 it permitted the
declaration to shed seven members, including a shrink toward the read set, which
is the exact condition that re-opens the `listViews` value-type decision, and a
floor cannot catch growth at all. It is now an exact `toBe(47)` whose failure
message names the three sibling files whose figures must move with it, plus a
comment recording how the count is taken and where the loose 59 comes from, so
the next reader does not re-derive it and re-introduce the middle number.

Text and figures only: no schema, no type, and no assertion about what is
accepted or refused changed. `REGISTRATION_TEXT` in the shared pin file is
untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BAZFhALsQsGqxui8sNqM8s
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3189.5 KB 3191.4 KB
Main entry chunk (gzip) 143.5 KB 350 KB
Entry file index-BiLRQSYR.js
Status PASS

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

Package Size Gzipped
app-shell (consoleActionDispatch.js) 0.20KB 0.19KB
app-shell (index.js) 15.67KB 5.75KB
app-shell (runtime-config.js) 20.68KB 7.36KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 10.06KB 3.86KB
auth (ActiveOrganizationStorage.js) 25.05KB 9.16KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 2.07KB 1.00KB
auth (AuthProvider.js) 40.18KB 10.59KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.15KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.65KB 2.22KB
auth (SocialSignInButtons.js) 9.61KB 3.89KB
auth (UserMenu.js) 3.41KB 1.23KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 40.21KB 10.80KB
auth (createAuthenticatedFetch.js) 8.46KB 3.43KB
auth (index.js) 3.19KB 1.44KB
auth (invitation-status.js) 1.22KB 0.70KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.30KB 1.02KB
auth (useWorkspaceAdminStatus.js) 5.13KB 2.35KB
collaboration (CommentThread.js) 26.08KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.68KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 510.60KB 116.20KB
core (index.js) 6.96KB 2.79KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 182.08KB 50.62KB
fields (index.js) 242.44KB 61.25KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (builtinAggregateLabels.js) 0.86KB 0.49KB
i18n (currency.js) 1.22KB 0.64KB
i18n (fallbackInterpolation.js) 6.25KB 2.77KB
i18n (i18n.js) 4.28KB 1.75KB
i18n (index.js) 3.65KB 1.47KB
i18n (pickLocalized.js) 7.62KB 3.26KB
i18n (provider.js) 26.89KB 9.04KB
i18n (useDisplayLocale.js) 2.85KB 1.45KB
i18n (useObjectLabel.js) 34.34KB 9.17KB
i18n (useSafeTranslation.js) 5.60KB 2.33KB
layout (index.js) 38.98KB 10.98KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.75KB
mobile (index.js) 1.99KB 0.87KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.72KB 0.42KB
mobile (useSpecGesture.js) 4.39KB 1.66KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 11.71KB 4.29KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 6.24KB 2.16KB
permissions (discardProofCache.js) 1.04KB 0.55KB
permissions (evaluator.js) 5.12KB 1.74KB
permissions (index.js) 0.93KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.53KB
permissions (usePermissions.js) 4.83KB 2.27KB
plugin-ai (index.js) 15.75KB 3.80KB
plugin-calendar (index.js) 47.87KB 13.31KB
plugin-charts (index.js) 70.92KB 19.75KB
plugin-chatbot (index.js) 196.19KB 46.37KB
plugin-dashboard (index.js) 132.88KB 34.69KB
plugin-designer (index.js) 212.86KB 43.19KB
plugin-detail (index.js) 250.55KB 64.06KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 132.87KB 32.66KB
plugin-gantt (index.js) 167.26KB 41.00KB
plugin-grid (index.js) 209.29KB 56.78KB
plugin-kanban (index.js) 52.71KB 14.55KB
plugin-list (index.js) 113.56KB 27.70KB
plugin-map (index.js) 20.44KB 6.78KB
plugin-markdown (index.js) 13.93KB 4.81KB
plugin-report (index.js) 43.59KB 11.97KB
plugin-timeline (index.js) 30.40KB 8.76KB
plugin-tree (index.js) 9.20KB 3.19KB
plugin-view (index.js) 85.24KB 20.94KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.66KB 3.50KB
providers (index.js) 0.45KB 0.23KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.62KB 2.34KB
react (LazyPluginLoader.js) 4.47KB 1.63KB
react (SchemaRenderer.js) 81.07KB 26.86KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 2.32KB 1.24KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 5.41KB 2.34KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 4.93KB 2.24KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (parse.js) 20.57KB 5.88KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 10.35KB 3.60KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 1.00KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 2.74KB 1.41KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 3.75KB 1.85KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.85KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (expression.js) 0.20KB 0.18KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-inflight.js) 8.87KB 3.73KB
types (http-retry.js) 4.32KB 2.02KB
types (icon-key-migration.js) 4.26KB 1.63KB
types (index.js) 4.74KB 2.25KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 4.73KB 2.28KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (select-option.js) 0.20KB 0.19KB
types (spec-report.js) 5.05KB 1.93KB
types (spec-ui-namespace.js) 0.20KB 0.19KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 6.28KB 2.87KB
types (ui-action.js) 8.11KB 3.32KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

Picks up objectui#7932 (c6198c2), which retired `ComponentInput.label` and
rewrote the three REGISTRATION_TEXT expectations in the shared pin file. This
branch never owned that region; origin/main's side stands.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BAZFhALsQsGqxui8sNqM8s
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3186.0 KB 3191.4 KB
Main entry chunk (gzip) 143.5 KB 350 KB
Entry file index-BO0uFEv5.js
Status PASS

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

Package Size Gzipped
app-shell (consoleActionDispatch.js) 0.20KB 0.19KB
app-shell (index.js) 15.67KB 5.75KB
app-shell (runtime-config.js) 20.68KB 7.36KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 10.06KB 3.86KB
auth (ActiveOrganizationStorage.js) 25.05KB 9.16KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 2.07KB 1.00KB
auth (AuthProvider.js) 40.18KB 10.59KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.15KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.65KB 2.22KB
auth (SocialSignInButtons.js) 9.61KB 3.89KB
auth (UserMenu.js) 3.41KB 1.23KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 40.21KB 10.80KB
auth (createAuthenticatedFetch.js) 8.46KB 3.43KB
auth (index.js) 3.19KB 1.44KB
auth (invitation-status.js) 1.22KB 0.70KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.30KB 1.02KB
auth (useWorkspaceAdminStatus.js) 5.13KB 2.35KB
collaboration (CommentThread.js) 26.08KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.68KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 497.06KB 113.79KB
core (index.js) 6.96KB 2.79KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 182.08KB 50.62KB
fields (index.js) 242.44KB 61.25KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (builtinAggregateLabels.js) 0.86KB 0.49KB
i18n (currency.js) 1.22KB 0.64KB
i18n (fallbackInterpolation.js) 6.25KB 2.77KB
i18n (i18n.js) 4.28KB 1.75KB
i18n (index.js) 3.65KB 1.47KB
i18n (pickLocalized.js) 7.62KB 3.26KB
i18n (provider.js) 26.89KB 9.04KB
i18n (useDisplayLocale.js) 2.85KB 1.45KB
i18n (useObjectLabel.js) 34.34KB 9.17KB
i18n (useSafeTranslation.js) 5.60KB 2.33KB
layout (index.js) 38.84KB 10.94KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.75KB
mobile (index.js) 1.99KB 0.87KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.72KB 0.42KB
mobile (useSpecGesture.js) 4.39KB 1.66KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 11.71KB 4.29KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 6.24KB 2.16KB
permissions (discardProofCache.js) 1.04KB 0.55KB
permissions (evaluator.js) 5.12KB 1.74KB
permissions (index.js) 0.93KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.53KB
permissions (usePermissions.js) 4.83KB 2.27KB
plugin-ai (index.js) 15.16KB 3.68KB
plugin-calendar (index.js) 47.35KB 13.21KB
plugin-charts (index.js) 70.31KB 19.62KB
plugin-chatbot (index.js) 193.53KB 46.05KB
plugin-dashboard (index.js) 131.41KB 34.43KB
plugin-designer (index.js) 211.51KB 43.01KB
plugin-detail (index.js) 247.59KB 63.48KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 131.01KB 32.32KB
plugin-gantt (index.js) 167.16KB 40.99KB
plugin-grid (index.js) 208.56KB 56.63KB
plugin-kanban (index.js) 52.30KB 14.49KB
plugin-list (index.js) 113.24KB 27.66KB
plugin-map (index.js) 20.35KB 6.77KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.42KB 11.92KB
plugin-timeline (index.js) 29.95KB 8.67KB
plugin-tree (index.js) 9.16KB 3.18KB
plugin-view (index.js) 84.33KB 20.75KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.66KB 3.50KB
providers (index.js) 0.45KB 0.23KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.62KB 2.34KB
react (LazyPluginLoader.js) 4.47KB 1.63KB
react (SchemaRenderer.js) 81.07KB 26.86KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 2.32KB 1.24KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 5.41KB 2.34KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 4.93KB 2.24KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (parse.js) 20.57KB 5.88KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 10.35KB 3.60KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 1.00KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 2.74KB 1.41KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 3.75KB 1.85KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.85KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (expression.js) 0.20KB 0.18KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-inflight.js) 8.87KB 3.73KB
types (http-retry.js) 4.32KB 2.02KB
types (icon-key-migration.js) 4.26KB 1.63KB
types (index.js) 4.74KB 2.25KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 4.73KB 2.28KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (select-option.js) 0.20KB 0.19KB
types (spec-report.js) 5.05KB 1.93KB
types (spec-ui-namespace.js) 0.20KB 0.19KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 6.28KB 2.87KB
types (ui-action.js) 8.11KB 3.32KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

@os-justin
os-justin marked this pull request as ready for review September 6, 2026 07:31
@os-justin
os-justin added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit 15789d5 Sep 6, 2026
33 of 34 checks passed
@os-justin
os-justin deleted the claude/issue-7947-named-list-view-figures branch September 6, 2026 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

2 participants