Skip to content

docs(types,changeset): point three objectui#9621 prose sites at their instrument instead of at a remembered answer - #9741

Merged
os-sales merged 1 commit into
mainfrom
claude/issue-9629-9621-prose-residuals
Sep 17, 2026
Merged

os-sales merged 1 commit into
mainfrom
claude/issue-9629-9621-prose-residuals

Conversation

@os-sales

Copy link
Copy Markdown
Collaborator

Fixes #9629

Clause-②: no — nothing here relaxes an accepted set or enlarges a public surface. Three prose sites, plus the removal of one test row that is redundantly pinned elsewhere. No published face moves in either direction, and no assertion of either retirement pin was weakened.

The isolated at-tier contract review of objectui#9621 (VERDICT PASS) named these three as non-blocking. That verdict is adopted verbatim and is not reopened here: none of the three is a contract defect. This corrects prose the review was right to let pass.


1. The docblock stopped writing the instrument's answer down

ObjectKanbanSchema.allowCollapse's tombstone docblock recorded per-key control counts in prose. AGENTS.md #9 asks a claim like that to point at the instrument and never write down its answer.

Not repaired by writing today's number in place of the stale one. The paragraph now names the control keys without their counts, and names the walk that derives them: the it called "@object-ui/plugin-kanban names it in ZERO files, with controls firing in the same pass", in packages/types/src/__tests__/object-kanban-allow-collapse-retired-8801.test.ts.

One cardinal survives on purpose, and here is the reasoning the card asked for. The word ZERO stays. It is not a remembered reading: it is that test's own assertion, expect(counts.get(RETIRED)).toBe(0), re-derived on every test run. The four control counts were the opposite — derived once, re-derived never, and already drifted when they landed. So the rule is applied by keeping the figure a live instrument asserts and dropping the four it does not.

2. The suite title — route (b), and the reading that decided it

Route (b) was open, so route (b) was taken: the restating refusal row is dropped, and the title now states the claim the suite measures. Each pin asserts in one place.

What had to be shown first, per the dispatch: that the refusal the dropped row asserts is pinned by symbol in object-kanban-allow-collapse-retired-8801.test.ts, with a lit control on the same instrument. A one-off ablation answered it — the mirror's tombstone key was renamed on disk, the two pin files were run, and the tree was restored.

HEAD blob of packages/types/src/zod/objectql.zod.ts = 492cbebe7d40ad01c0780a3b61cb446ce64462ea
BEFORE  original-anchor=1  mutated-anchor=0
AFTER   original-anchor=0  mutated-anchor=1
mutated blob = bd04e4010babd47e5be49dd8ec81b99849373ce2     <- differs from HEAD: the mutation reached disk
ABLATION_RUN_EXIT=1
restored blob = 492cbebe7d40ad01c0780a3b61cb446ce64462ea    <- equals HEAD blob
RESTORED: blob matches HEAD and 'git diff HEAD' is empty

Under that one mutation, Tests 7 failed | 24 passed (31), and the failures fall this way:

assertion verdict under the ablation
8802 suite 3 — REFUSES allowCollapse (the row dropped here) RED
8801 — refuses the value %p at the key's OWN path, with the prescription (x3) RED
8801 — reports invalid_type, the code a bare z.never() arm reports RED
8801 — ONE string, BOTH author-facing channels RED
8801 — the member is still DECLARED — a tombstone, not a deletion RED
LIT CONTROL 8801 — the bare node is accepted, so the instrument still says yes GREEN
LIT CONTROL 8801 — a never-declared neighbour is ACCEPTED, because this arm is not strict GREEN

⇒ the dropped row and the 8801 rows are the same claim on the same instrument, and the 8801 pin asserts strictly more of it (the message, the invalid_type code, the .describe() channel). The lit controls staying green is what makes those reds a reading rather than a validator that had started refusing everything. No coverage is lost by the drop.

A comment stands where the row was, recording why allowCollapse is absent from that suite and where its refusal now lives, so it is not restored in either direction. The file's docblock carried the same claim unqualified one screen above the title; it is qualified to match, since leaving two spellings of one claim in one file is the defect this card is about.

3. The changeset enumeration — measured, then written as places rather than counts

The occurrence set was re-measured over every tracked file, whole-content and whitespace-tolerant, because git grep is line-anchored and the name wraps mid-word in prose that folds near 80 columns.

corpus: tracked files = 7912 | scanned = 7827 | skipped(binary/unreadable) = 85

TARGET          allowCollapse           10 files, 39 hits
LIT CONTROL     groupBy                228 files, 1252 hits     <- fires
ABSENT CONTROL  allowCollapsify9629      0 files, 0 hits        <- a minted token, same instrument, same corpus

The absent control reading 0 while the lit control reads 1252 is what makes the target set a reading. The omission the card names is confirmed: packages/types/src/zod/complex.zod.ts names the key in a comment recording that the deleted retiredZeroReadKanbanKey helper once carried the spelling on the sibling arm. It was in none of the enumeration's categories.

The paragraph now names where each occurrence is rather than counting them, carries the date the scan was taken, and points the ZERO-files walk at the pin instead of repeating its four numbers — because that body publishes verbatim into a CHANGELOG at an unknown future date, where a figure is frozen forever.

⚠️ Caught by reading, not by a gate. The first draft of the corrected enumeration was born false: this PR's own new changeset also names the key, which the after-scan found as a tenth file. check-changeset-claims states in its own header that born-false is exactly the shape it cannot see. The enumeration now covers it.

Frontmatter is untouched — check-changeset-overwrite case 2

frontmatter bytes (base) : 34        frontmatter bytes (head) : 34
FRONTMATTER  base=77df8c6240b5a4008275a79ab32c148183e7fe10
FRONTMATTER  head=77df8c6240b5a4008275a79ab32c148183e7fe10   -> BYTE-IDENTICAL
WHOLE FILE   base=f897016a3f60430e38d8d9bceef06b50715949f7
WHOLE FILE   head=39413d0b60db8eadafbd2c9b7e3d94bd95a23d33   -> LIT CONTROL: differs, so the hasher is live

A count is invariant under quotation — both positions, reported

This repair cites two test names that also exist in assertion position, so a naive phrase probe would read the citations as the assertions multiplying. Each phrase was counted in its assertion position separately from every other position, on both refs.

⚠️ The first probe written for this was itself line-anchored and read 0 quoted hits for phrases this PR wraps across lines — the same blindness the card names for residual 3. It was re-drawn whole-content before the numbers below were taken.

phrase BASE assert / quoted HEAD assert / quoted
keeps every verdict it had (old title, retired) 1 / 0 0 / 0
moved NO verdict on the SIBLING (new title) 0 / 0 1 / 0
refuses the value %p at the key's OWN path, with the prescription 1 / 0 1 / 1
names it in ZERO files, with controls firing in the same pass 1 / 0 1 / 3
(45 files) (retired figure) 0 / 1 0 / 0
one pin, one docs row and two historical changesets (retired enumeration) 0 / 1 0 / 0

Assertion-position counts are invariant at 1 for both cited pins — no assertion multiplied and none was removed; only quoted position rose. Neither retired figure is quoted back anywhere, so nothing stale is re-published. No row read zero on both refs, so every row measured something.


Serial constraint — re-taken, and it found a row

Re-enumerated immediately before the first write, across all 13 open PRs and the 40 most recently pushed claude/* branches, each intersected against this card's four paths at file level.

Only open draft PR objectui#9540 (card objectui#9309, pm:blocked, head frozen at 3e60765fb since 2026-09-15) intersects, on packages/types/src/objectql.ts. Open PR objectui#8941 (claude/pr-7058-…, card closed) touches the same file at its line 481. Neither had moved since before claim time, so nothing widened. The seat confirmed the row independently and ruled the fence holds at region granularity:

  • ObjectKanbanSchema opens at :3385; this change is confined to its allowCollapse docblock
  • objectui#9540's region begins at ObjectGallerySchema, :4358 — 534 lines below

git diff reports this PR's single hunk in that file as @@ -3823,6 +3823,20 @@ export interface ObjectKanbanSchema extends BaseSchema {. Nothing at or below :4358 is touched.

Gates and tests

check exit reading
check-changeset-presence 0 1 changeset added, EMPTY frontmatter — the explicit no-release declaration
check-changeset-overwrite 0 report-only; the one modified changeset is documented case 2, frontmatter proven identical above
check:changeset-claims 0 report-only; 15 pending changesets name objectql.ts. Each was read — none restates anything this diff moved
check:pending-changeset-literals 0
check-changeset-no-major 0
check-changeset-fixed 0
check:control-bytes 0 scanned 7827 tracked text files
check:new-line-citations 0 0 cross-file line-address citations added by this branch
check-governed-queue-guard (--self-test) 0 lives at scripts/check-governed-queue-guard.mjs in this repo
pnpm --filter @object-ui/types type-check 0 includes tsconfig.test.json, so both pins' compile-time assertions are checked
pnpm exec vitest run packages/types/ 0 Test Files 203 passed (203) · Tests 4761 passed (4761)
eslint --no-inline-config on the two changed sources 0 0 errors; 33 pre-existing no-explicit-any warnings, none on a touched line

Every exit code was captured to disk before any pipe. A self-scan of the four changed files for control bytes read 0 — validated by a lit control (a vertical tab fires the same probe) and an absent control (a tab, deliberately outside the class, does not). The first lit control chosen for that probe was a tab and read 0, which would have made two zeros on one instrument; it was re-drawn rather than reported.

Repo-wide pnpm lint and the rest of the farm are CI's run, not claimed here.

Out of scope, confirmed and not edited

content/docs/api/schema-reference.md names the key in one row that now reads stale: it says @object-ui/types "still declares both on its mirror of this face", which objectui#9621's tombstone made false for allowCollapse. Named in objectui#9621's own acceptance notes as stale and outside this card's surface, so it is reported rather than touched. Dedupe words: schema-reference · allowCollapse · quickAdd · stale docs row · object-kanban mirror declares.

Not touched, deliberately

The retirement itself, both published faces, and every assertion in both pins. The tombstone message, including the "lane" precision point the review raised — changing it would change what the published refusal says to an author, which is contract surface. Release PR objectui#5400. objectui#9628, which has landed.


Generated by Claude Code

…stead of at a remembered answer

Three prose residuals the isolated at-tier contract review of objectui#9621
named as NON-BLOCKING (VERDICT PASS). That verdict is adopted verbatim: none of
these is a contract defect, no published face moves in either direction, and no
assertion of either retirement pin is weakened.

1. The `allowCollapse` tombstone docblock wrote the pin's own per-key control
   counts into prose. It now names the walk that derives them and drops the
   figures, per commandment #9. The numbers had already drifted before they
   landed, which is that rule's dangerous case rather than its safe one.

2. Suite 3 of `bare-kanban-node-key-retired-8802.test.ts` was titled as though
   the sibling `object-kanban` arm kept every verdict it ever had, while
   carrying a row asserting one of them had changed. The title now states the
   claim the suite measures. The restating refusal row is DROPPED rather than
   re-titled: an ablation on the mirror's tombstone turned that row and the
   corresponding rows of `object-kanban-allow-collapse-retired-8801.test.ts` red
   together, while that file's firing controls stayed green — so the row was a
   second copy of one pin, and the refusal is now asserted in one place.

3. The objectui#8801 changeset's occurrence enumeration omitted a comment in
   `packages/types/src/zod/complex.zod.ts`. Re-scanned with a whitespace-tolerant
   probe, since a line-anchored grep cannot see prose that wraps mid-name. The
   paragraph now names each site instead of counting them and carries the date
   it was taken, because that body publishes verbatim into the CHANGELOG. Its
   frontmatter is byte-identical to the merge base.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UanLVj6xvbS6puBCewLr8L
@github-actions

Copy link
Copy Markdown
Contributor

changeset-claim-re-read

⚠️ 15 pending changeset(s) describe a file this change touches

Their bodies publish verbatim into the CHANGELOG at the next release, so this is a request to re-read them against your diff — addressed here because you are the one seat that can answer it without re-deriving anything.

⛔ Nothing here blocks, and nothing here is a verdict on your change. This gate exits 0, is not a required context, and judges name resolution, never meaning: it asked whether a pending body names a file you touched. "Is this sentence still true?" is the one question it will not answer, and the one you are being asked to answer.

.changeset/5903-objectgantt-declared-keys.md

  • names packages/types/src/objectql.tspackages/types/src/objectql.ts — edited by this change

    Both halves move together. The TS declaration (packages/types/src/objectql.ts) and its zod mirror (src/zod/objectql.zod.ts) gain the same ten keys at the same requiredness — all optional — so the zod-mirror-parity ratchet stays at zero drift for this pair and no KnownDrift entry is added. navigation is taken from @objectstack/spec's NavigationConfigSchema by reference rather than restated, matching ObjectGridSchema.navigation.

.changeset/7322-object-kanban-group-by-limit.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    Breaking for authored metadata: ObjectKanbanSchema.groupField is RETIRED (objectui#7322, ADR-0049 enforce-or-remove), and the two keys the object-kanban renderer actually reads — groupBy and limit — are now DECLARED and validated on both published faces: the TypeScript interface in objectql.ts and the Zod mirror in zod/objectql.zod.ts.

.changeset/7363-objectql-union-arms.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    ObjectGallerySchema and ObjectDataTableSchema are members of ObjectQLComponentSchema on both faces — the TS union in objectql.ts and the zod union in zod/objectql.zod.ts — so AnyComponentSchema, and with it validateSchema / safeValidateSchema / objectui validate, has an arm for object-gallery and object-data-table nodes (objectui#7363).

.changeset/7632-shared-record-source-config.md

  • names packages/types/src/objectql.tspackages/types/src/objectql.ts — edited by this change

    That ladder is published contract on both faces — packages/types/src/objectql.ts and its zod mirror both ship .describe() strings naming getDataConfig's order (objectui#6939, maintainer ruling 2026-09-02), pinned by objectql-record-source-refinement-6939.test.ts — and it was hand-copied into five plugin components with no gate holding them together. A change to the ruled order had five edit sites and nothing that noticed a missed one; that is the AGENTS.md #0.1 drift class.

.changeset/7804-objectql-handler-key-arms.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    The four plain objectql.ts node faces declare the nine handler keys their registered renderers read (objectui#7804, the objectql.ts slice): ObjectFormSchema.onCancel / .onError / .onOpenChange / .onStepChange / .onSuccess, ObjectGallerySchema.onCardClick / .onRowClick, ObjectGridSchema.onNavigate and ObjectViewSchema.onNavigate.

.changeset/7804-tree-view-handler-slot.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    'runtime-slot' and not 'retired', measured at this key's own channel. 'retired' publishes "no renderer reads this key, so nothing could ever run it" — true of the two siblings already tombstoned on this arm (onSelectChange, onExpandChange) and flatly false here, since the read is live and INVOKED. ⚠️ No in-repo host builds a tree-view node carrying the key: the channel is wired end to end and only the supplier is absent, which is the same shape as ObjectFormSchema.onStepChange in this card's objectql.ts slice and is not evidence of a dead read. The TypeScript declaration is unchanged and still callable, so a programmatic host supplies it exactly as before.

.changeset/7963-alert-dialog-footer-keys-retired.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    Nothing else moves. These spellings are overloaded across the tree and every other owner is a live key on a different declaration — FormSchema.cancelLabel, objectql.ts's confirmLabel, plugin-designer's ConfirmDialog React props, plugin-grid's def.confirmLabel, and plugin-form's ModalForm / DrawerForm, which build a local cancelLabel from schema.cancelText. None is an AlertDialogSchema; none is touched, and a pin asserts it. No fixture, catalog schema, example app or doc fence authored any of the three on an alert-dialog node, so no shipped document is stranded.

.changeset/8767-object-grid-refuses-string-sort.md

  • names packages/types/src/objectql.tspackages/types/src/objectql.ts — edited by this change

    Migration. Write the array: sort: [{ field: 'name', order: 'desc' }]. Both keys are required. SortConfig.order carries no ? in @object-ui/types (packages/types/src/objectql.ts) and no .optional() in its zod mirror, and the protocol's own reusable SortItemSchema requires order as well — measured: that schema refuses [{ field: 'name' }] with invalid_value at 0.order. Do not omit it: this block's array arm interpolates whatever is present, so an omitted order lowers to $orderby: 'name undefined' today. That is pre-existing behaviour on the arm this change does not touch, and it is filed as a successor card rather than widened into here.

.changeset/8885-object-chart-drilldown-title-compareto.md

  • names packages/types/src/objectql.tspackages/types/src/objectql.ts — edited by this change

    ObjectChart.tsx reads all three off schema, and until now neither published copy declared any of them: not the TS interface (packages/types/src/objectql.ts) and not the zod mirror (packages/types/src/zod/objectql.zod.ts). They rode BaseSchema's index signature / .passthrough() and arrived unvalidated. drillDown was the sharpest case — this component's registry inputs advertise it to the designer palette, and @objectstack/spec publishes ChartDrillDownSchema for exactly this carrier, so an author was offered a key that neither published shape mentioned.

.changeset/8913-object-kanban-columns-declared.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    What moved. ObjectKanbanSchema gains columns on both halves that move together — the TypeScript interface (objectql.ts) and its Zod mirror (zod/objectql.zod.ts). Retiring the bare kanban node type key (objectui#8802) removed the only face that judged a lane, and object-kanban had never declared the key, so it rode BaseSchema's [key: string]: any / .passthrough(): read by the renderer at three sites, named by no published face.

.changeset/8990-object-kanban-groupby-optional.md

  • names packages/types/src/objectql.tspackages/types/src/objectql.ts — edited by this change

    @objectstack/spec declares the key optional — groupBy: z.string().optional() on ObjectKanbanPropsSchema — while this package required it on the TypeScript declaration (packages/types/src/objectql.ts) and on the Zod mirror (packages/types/src/zod/objectql.zod.ts). objectui was therefore narrower than the protocol on a published key: ObjectKanbanSchema.safeParse and safeValidateSchema refused an object-kanban node the protocol accepts, and such a node could not be annotated with its own type.

.changeset/9092-inline-locale-declared-face.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    • AppComponentSchema.label (app.ts) - ObjectGridSchema.label and .description (objectql.ts) - PageNodeSchema.aria.ariaLabel (layout.ts)

.changeset/9550-object-tree-root-barrel.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    ObjectQLComponentSchema declares the node types an ObjectQL block may be. Every one of its arms was a named export of this package's root barrel except ObjectTreeSchema, which was declared in objectql.ts, applied by the union, and re-exported by the ./zod barrel (objectui#7917) — while no TypeScript consumer could name it. There is no ./objectql subpath to reach around the barrel: the package's exports map is pinned by packages/types/src/__tests__/package-exports-manifest.test.ts, and the root barrel was the only route to this type.

.changeset/9606-object-kanban-card-title.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    Both published faces of the object-kanban arm now name the key: the zod mirror ObjectKanbanSchema in zod/objectql.zod.ts and its TypeScript twin, the ObjectKanbanSchema interface in objectql.ts. Both declare it OPTIONAL, at the same requiredness the other face uses, so the two faces accept and refuse the same documents. (Located and cited by SYMBOL: line addresses in zod/objectql.zod.ts have drifted before, and this change is itself about a drifted mirror.)

.changeset/9628-kanban-column-collapsed-honoured.md

  • names objectql.tspackages/types/src/objectql.ts — edited by this change

    The key was declared on both published faces of the object-kanban arm — the lane element of ObjectKanbanSchema (objectql.ts and its Zod mirror) and the runtime lane KanbanColumn (complex.ts and its mirror) — and read by KanbanEnhanced alone, a module no production source imports. An authored { "id": "todo", "title": "To Do", "collapsed": true } therefore parsed green on both faces and reached a board that did nothing with it: KanbanImpl's only collapse is the SWIMLANE row's, held in viewer state under objectui:kanban-collapsed:ANGLE-BRACKETS(swimlaneField) and never keyed to a lane's declared value. That is the ADR-0049 declared-but-unhonoured shape.

Read the paragraph, not the line: both false halves of the objectui#8617 claim sat in one paragraph, and correcting either alone would have left it asserting the same wrong thing.

If a claim did go false, correct the body. That is precedented and prose-only, frontmatter untouched; check-changeset-overwrite.mjs will report the correction as its own case 2 ("correcting a declaration on purpose … legitimate"), which is the intended shape — one gate asks for the read, the other records the write.

Not covered, stated so nobody reads this as more: a claim that was born false (a changeset this change adds is excluded by construction), a claim spelled as a symbol or a package rather than a backticked file name, and a file named ambiguously.

Angle-bracketed names in the quoted prose above are rewritten as ANGLE-BRACKETS(name): GitHub deletes tag-shaped fragments from a stored body, and a quote that silently loses the identifier it is about is worse than a visible repair.

Compared the checked-out tree with 20b5e361e (merge-base with origin/main): 2 file(s) changed outside .changeset/, read against 1131 pending declaration(s) that publish a body (1644 pending in total). · run

@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 329 chunks) 3049.2 KB 3104.5 KB
Main entry chunk (gzip) 145.7 KB 350 KB
Entry file index-DnyzLIkC.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) 16.69KB 6.21KB
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) 11.08KB 4.58KB
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) 545.93KB 130.69KB
core (index.js) 8.94KB 3.59KB
create-plugin (index.js) 27.94KB 9.51KB
data-objectstack (index.js) 215.98KB 59.97KB
fields (index.js) 249.27KB 62.92KB
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) 8.87KB 3.64KB
i18n (index.js) 5.22KB 2.26KB
i18n (pickLocalized.js) 9.86KB 3.95KB
i18n (provider.js) 32.15KB 10.49KB
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.83KB 10.95KB
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) 13.52KB 4.88KB
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) 8.39KB 3.10KB
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) 14.81KB 3.63KB
plugin-calendar (index.js) 49.92KB 14.22KB
plugin-charts (index.js) 71.49KB 19.99KB
plugin-chatbot (index.js) 195.34KB 46.51KB
plugin-dashboard (index.js) 131.44KB 34.65KB
plugin-designer (index.js) 215.94KB 44.33KB
plugin-detail (index.js) 253.29KB 65.88KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 136.71KB 34.16KB
plugin-gantt (index.js) 167.62KB 41.26KB
plugin-grid (index.js) 212.64KB 57.91KB
plugin-kanban (index.js) 48.10KB 14.94KB
plugin-list (index.js) 112.73KB 27.69KB
plugin-map (index.js) 21.48KB 6.99KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.41KB 11.93KB
plugin-timeline (index.js) 30.07KB 8.74KB
plugin-tree (index.js) 10.58KB 3.72KB
plugin-view (index.js) 85.04KB 21.01KB
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) 104.82KB 34.67KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 4.25KB 2.04KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 6.58KB 2.74KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 5.66KB 2.50KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (kanban-quick-add.js) 3.89KB 1.87KB
sdui-parser (parse.js) 25.28KB 7.80KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 14.82KB 4.99KB
types (ai.js) 4.11KB 2.06KB
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.93KB 1.49KB
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 (strict-authoring-face.js) 14.04KB 5.36KB
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

2 participants