Skip to content

refactor(types): 台账燃尽批次 1/8 — 报表/图表/查询簇 11 符号 - #3167

Merged
os-zhuang merged 2 commits into
mainfrom
claude/objectui-spec-symbol-ci-rule-4r3xlc-batch1
Aug 1, 2026
Merged

refactor(types): 台账燃尽批次 1/8 — 报表/图表/查询簇 11 符号#3167
os-zhuang merged 2 commits into
mainfrom
claude/objectui-spec-symbol-ci-rule-4r3xlc-batch1

Conversation

@os-zhuang

@os-zhuang os-zhuang commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Closes #3155. Part of objectstack-ai/objectstack#4115 (台账燃尽 1/8)。

@object-ui/types 报表/图表/查询簇 11 条碰撞逐条分诊。台账 87 → 77,ALLOW 5 → 6。

数字已按合并 objectui#3169(批次 3,@object-ui/app-shell 28 条)后的 main 更新。本 PR 首版基于旧 main 时是 115 → 105;两批处置的符号集合互不相交,合并后仍是各减各的。

分诊按守卫文件头的三说谎点先跑探针再下判断,并额外比了 zod 的 _input;结果是三种处置各占一部分,外加一条上游阻塞。

每条符号的判决

符号 判决 理由
ChartSeries 改名 → ChartDataSeries 本地是内联静态数据序列(data: number[] 必填);spec 的是数据集绑定的序列描述符(type/stack/yAxis/variant),根本没有 data。两侧互不可赋值
ChartSeriesSchema 改名 → ChartDataSeriesSchema 上者的 zod 孪生
QueryAST 改名 → SqlQueryAST 本地是编译后的 SQL 语法树(select/from/join/group_by);spec 的是 ObjectQL 请求描述符(object/fields/where/expand)。互不可赋值
QuerySchema 改名 → DriverQueryConfig 本地是 QueryASTBuilder 的输入 TS 接口;spec 把这个名字用作 zod schema 值,键集也不同
DriverInterface 改名 → SqlDriverInterface 本地是 objectui 自己的 SQL 向客户端抽象(query(sql, params));spec 的是平台运行时驱动契约(supports/execute/findStream)
DatasourceSchema 改名 → DatasourceRegistration 本地是 DatasourceManager 持有的内存注册记录(driver活的实例);spec 的是可编写的元数据文档(driver名字)
DashboardWidgetSchema 派生 同一概念,本地是漂移的子集 —— 见下方活缺陷
GlobalFilterSchema 派生 同一概念,本地一味放宽
AppContextSelectorSchema 派生 整份手抄件
ListViewSchema zod 派生 + TS ALLOW 见下方"一对两解"
JoinedReportBlock 上游阻塞,留在台账 spec 侧类型被擦除 —— 见下方

派生修好的两个活缺陷

都是 z.object() 静默丢键那一类,也就是 Navigation 簇(#3088)已经记录过的形态:

  1. DashboardWidgetSchema 只声明了 spec 22 个键里的 10 个,另外 12 个被 objectui validate 一声不吭地删掉:chartConfigcolorVariantfilterresponsiveariaactionUrl/actionType/actionIconcompareTosuppressWarnings,以及 requiresObject/requiresService 这两个渲染器在运行时真的执行的能力门控complex.ts 的 TS 接口一直声明着其中大部分 —— 所以一个 widget 能在 objectui 里类型检查通过,却在校验时丢掉一半配置。三份表述(TS / zod / 渲染器)各自漂移的又一现场。
  2. GlobalFilterSchema.scope 是自由字符串,任何拼写错误都能通过校验;现在按引用取 spec 的 widget | dashboard。运行时没有任何地方读 scope,收紧零成本。

钉住的有意分歧(每条都有运行时归一化器背书)

  • DashboardWidgetSchema:id 保持可选(存量仪表盘与 legacy 格式不带 id)、type 保持放宽(objectui 的 DASHBOARD_WIDGET_TYPES 另有 list/custom,spec 的 19 族枚举不建模)、component legacy 信封保留。
  • GlobalFilterSchema:裸字符串 options 简写、归一化后的 { preset } 日期默认值(framework#4475)、optionsFrom.labelField 可选 —— 三条分别对应 normalizeFilterOptions / normalizeDateDefault / 回落到 valueField
  • AppContextSelectorSchema:label 放宽到 objectui 的 i18n 信封,因为 AppContextSelectors 一直用 resolveI18nLabel 渲染它。

每条都做了双向断言 —— spec 哪天自己放宽了,断言翻红,该删的就是本地覆盖。

ListViewSchema 一对两解

  • zod 侧:它本来就是全场最佳范式,却仍在台账里 —— 因为 spec 引用隔着一个本地 const(SpecListViewFields.shape),守卫只看一层。现在把 specFieldsExcept(SpecListViewSchema.shape, …) 直接写进声明的初始化器,派生在声明处可见。语义不变。
  • TS 侧:进 ALLOW。spec 的 ListViewSchema 是个 zod 值,没有可 alias/extends 的 spec 类型;而且本地节点还要 intersect ListViewRuntimeProps(回调与命令式刷新触发器,不是可序列化的视图元数据,不可能存在于任何 schema)。分歧边界由 zod 派生约束,漂移守卫是既有的 list-view-spec-parity.test.ts

JoinedReportBlock:上游阻塞,请挪到批次 8

spec 把 JoinedReportBlockSchema 声明为 z.ZodTypeAny,于是导出的 JoinedReportBlock 类型解析为 unknown。re-export 会把本地精确的块接口(name/columns/groupingsDown/groupingsAcross/filter/chart)整个删掉。

这比 objectstack#4171 已钉住的三条宽一档,值得写进修法模板:那三条擦除成 any,0 extends (1 & T) 探针抓得到;这条擦除成 unknown,同一个探针报 false —— 只筛 any 的分诊会把它当成"可安全派生"放行。已在守卫文件头补上 2b 情形与 [unknown] extends [Spec] 探针,并配了会在 spec 修好当天报红的反向 pin。

跨包协同:ChartSeries(批次 4)

@object-ui/coreChartSeries{ dataKey, label } —— buildChartSeries 产出的渲染器内部序列描述符,和 types 侧的内联数据序列、spec 侧的数据集绑定描述符三者互不相同。本 PR 把 types 侧定为 ChartDataSeries;core 侧建议 ChartSeriesBinding 之类,决定已在 objectstack#4115 评论记录,批次 4 可直接沿用。

台账变化

与 objectui#3169 的 DEBT 块冲突,按规约整块 --ledger 重生成而非逐行挑拣,再对合并后的 main 逐条 set-diff:

@object-ui/types
  removed: AppContextSelectorSchema, ChartSeries, ChartSeriesSchema,
           DashboardWidgetSchema, DatasourceSchema, DriverInterface,
           GlobalFilterSchema, ListViewSchema, QueryAST, QuerySchema
  added:   []
TOTAL 87 → 77    (18 个包,其余 17 个逐字未动;`@object-ui/app-shell`
                  已被 #3169 整包烧完,重生成后仍然不在表中)

验证

合并 main 后全部重跑:

  • node scripts/check-spec-symbol-derivation.mjs 绿(6 declared dialects / 77 untriaged / 18 packages)
  • ✅ 先 pnpm turbo build --filter=@object-ui/types 重建 dist,再 pnpm turbo type-check --force78/78
  • ✅ 全量测试 9377 断言 / 801 文件绿(本批新增 25 条;与 refactor(app-shell): stop declaring 28 symbols under names the spec owns #3169spec-symbol-parity.test.ts 同跑 50 条全绿)
  • eslint 改动文件 0 error
  • 变异测试三组,都按名 + 按文件报红:
    • GlobalFilterSchema 改回手抄 z.object({…}) → 守卫报 const GlobalFilterSchema packages/types/src/zod/complex.zod.ts:331,同时 parity 测试 picks up the spec scope vocabulary by reference 报红;
    • SqlQueryAST 改回 QueryAST → 守卫报 interface QueryAST packages/types/src/data-protocol.ts:299;
    • 棘轮反向:把已烧的 QueryAST 塞回重生成后的 DEBT → 守卫报 lists 1 symbol in DEBT that no longer collide
    • 三次还原后守卫均回绿。

施工规约遵守情况

  • 改名先改声明与 barrel,让 tsc 列出断裂点逐个判定,没有做全局字符串替换 —— ChartSeries/QueryAST/QuerySchema 这些名字两边都有。tsc 抓出的断点只在 packages/core/src/query/(SQL AST builder 及其测试),逐个确认是本地概念后才改。
  • 六个新名字先过了一遍守卫的 spec 导出名集合再落地,并配 tripwire 测试(用 TS 编译器视角读 .d.ts,类型与值都覆盖 —— 六个里有五个是类型,只查运行时命名空间会白过)。
  • 未触碰 content/docs/releases/;变更以 changeset 形式记录。

需要人拍板 / 遗留

  1. JoinedReportBlock 需要挪到批次 8(台账燃尽批次 8/8 · 被 objectstack#4171 阻塞的 any 擦除簇,3 符号——上游解除后处理(objectstack#4115) #3162),并在 objectstack#4171 登记 unknown 擦除这一变体。
  2. DashboardWidgetSchemaresponsive 仍是 any:渲染器读的是按断点的 record,spec 的是单个 responsive 对象,两者收敛需要产品决定,本轮只在声明处写明未擅自调和。

Generated by Claude Code

…p wearing spec names

Batch 1 of the objectstack#4115 debt ledger (objectui#3155): 11 `@object-ui/types`
collisions, triaged one by one against `@objectstack/spec` 17.0.0-rc.0. Ledger
115 -> 105; ALLOW 5 -> 6.

Six were pure name collisions — same name, different concept — so they are
renamed to local dialects. Each new name was run past the guard first
(objectui#3074's `PageComponentSchema` lesson) and is pinned absent from the
spec's export set:

  ChartSeries       -> ChartDataSeries        (ours carries literal `data: number[]`;
  ChartSeriesSchema -> ChartDataSeriesSchema   spec's is a dataset-bound descriptor)
  QueryAST          -> SqlQueryAST            (compiled SQL tree vs ObjectQL request)
  QuerySchema       -> DriverQueryConfig      (TS config vs the spec's zod value)
  DriverInterface   -> SqlDriverInterface     (SQL client vs runtime driver contract)
  DatasourceSchema  -> DatasourceRegistration (live record vs authored document)

Renames were done declaration-and-barrel first, letting tsc enumerate the break
points, never by global string replace — half these names exist on both sides.

Three are now DERIVED, converging on the `ListViewSchema` paradigm. Two carried
live defects, both of the silent-stripping kind a `z.object()` produces:

  - DashboardWidgetSchema declared 10 of the spec's 22 keys, so `objectui
    validate` deleted the other 12 in silence — chartConfig, colorVariant,
    filter, responsive, aria, action{Url,Type,Icon}, compareTo, suppressWarnings
    and the requiresObject/requiresService capability gates the renderer honours
    at runtime. The TS interface declared most of them all along.
  - GlobalFilterSchema took `scope` as a free-form string; it now uses the spec's
    widget|dashboard vocabulary.
  - AppContextSelectorSchema was a full restatement.

Every pinned divergence is one a runtime normalizer already backs, and each is
asserted in both directions so it dies the day the spec adopts it.

ListViewSchema resolves as a pair: the zod node now names the spec in its own
initializer instead of one hop away through a local const (which is why the
repo's own best-practice derivation was sitting in the ledger), and the TS twin
moves to ALLOW — the spec's `ListViewSchema` is a zod VALUE, so there is no spec
type to alias, and the objectui node intersects non-serialisable runtime props.

JoinedReportBlock is NOT burnable and stays in the ledger: the spec declares
`JoinedReportBlockSchema` as `z.ZodTypeAny`, so its exported type resolves to
`unknown` — re-exporting it would delete the block type outright. This is one
variant wider than the objectstack#4171 cases already pinned: those erase to
`any`, which `0 extends (1 & T)` detects, while this erases to `unknown`, which
that probe reports as safe. Guard header and an inverted pin now say so; it
belongs to ledger batch 8.

Verification: guard green; `--ledger` diff removes exactly these 10 and adds
nothing, other packages byte-identical; type-check 78/78 after rebuilding the
types dist; 9326 assertions across 798 files green; mutation-tested both ways
(hand-copying GlobalFilterSchema back and un-renaming SqlQueryAST each fail by
name and file, and the parity test fails alongside).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015Jdef6ZFhJmiNRhNCd4DW3
@vercel

vercel Bot commented Aug 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 1, 2026 3:10pm

Request Review

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-3yFBSEjf.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.45KB 3.08KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.12KB 3.41KB
auth (LoginForm.js) 17.86KB 5.29KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.43KB 2.09KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
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) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 18.38KB 4.49KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 3.65KB 1.42KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.25KB 0.53KB
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) 475.95KB 104.41KB
core (index.js) 2.25KB 0.80KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 136.20KB 34.74KB
fields (index.js) 223.45KB 54.66KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.46KB 0.96KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 5.37KB 1.72KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 3.26KB 1.44KB
layout (index.js) 38.44KB 10.66KB
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.74KB
mobile (index.js) 1.50KB 0.62KB
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.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.05KB 1.53KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.90KB 12.35KB
plugin-charts (index.js) 60.53KB 17.12KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 111.86KB 28.81KB
plugin-designer (index.js) 210.51KB 42.50KB
plugin-detail (index.js) 224.52KB 54.98KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 111.38KB 26.93KB
plugin-gantt (index.js) 162.26KB 39.53KB
plugin-grid (index.js) 184.69KB 48.91KB
plugin-kanban (index.js) 47.82KB 13.18KB
plugin-list (index.js) 104.82KB 25.30KB
plugin-map (index.js) 16.80KB 5.24KB
plugin-markdown (index.js) 13.65KB 4.67KB
plugin-report (index.js) 40.47KB 10.57KB
plugin-timeline (index.js) 25.75KB 7.32KB
plugin-tree (index.js) 8.34KB 2.82KB
plugin-view (index.js) 83.54KB 20.39KB
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.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.46KB 1.21KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 0.20KB 0.18KB
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 (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
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-zhuang
os-zhuang marked this pull request as ready for review August 1, 2026 14:44
objectui#3169 (ledger batch 3, `@object-ui/app-shell`) landed first and edited
the same DEBT block — the expected hot spot for parallel batches.

Resolved by REGENERATING the whole block with `--ledger` against the merged
working tree rather than picking conflict lines, so the guard's two-way ratchet
(a missed deletion and an over-deletion both fail) certifies the result.

Verified against the post-#3169 main: removed is exactly this batch's ten
symbols, added is empty, and 17 of 18 packages are byte-identical — including
`@object-ui/app-shell`, which stays fully burned down. 87 -> 77.

The guard header's new case 2b (`unknown` erasure, objectui#3155) and the
`@object-ui/types:ListViewSchema` ALLOW entry merged cleanly; #3169 touched
neither, so nothing of either side was dropped.

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

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-BextTKsP.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.45KB 3.08KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.12KB 3.41KB
auth (LoginForm.js) 17.86KB 5.29KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.43KB 2.09KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
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) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 18.38KB 4.49KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 3.65KB 1.42KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.25KB 0.53KB
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) 475.95KB 104.41KB
core (index.js) 2.25KB 0.80KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 136.20KB 34.74KB
fields (index.js) 223.45KB 54.66KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.46KB 0.96KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 5.37KB 1.72KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 3.26KB 1.44KB
layout (index.js) 38.44KB 10.66KB
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.74KB
mobile (index.js) 1.50KB 0.62KB
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.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.05KB 1.53KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.90KB 12.35KB
plugin-charts (index.js) 60.53KB 17.12KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 111.86KB 28.81KB
plugin-designer (index.js) 210.51KB 42.50KB
plugin-detail (index.js) 224.52KB 54.98KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 111.38KB 26.93KB
plugin-gantt (index.js) 162.26KB 39.53KB
plugin-grid (index.js) 184.69KB 48.91KB
plugin-kanban (index.js) 47.82KB 13.18KB
plugin-list (index.js) 104.82KB 25.30KB
plugin-map (index.js) 16.80KB 5.24KB
plugin-markdown (index.js) 13.65KB 4.67KB
plugin-report (index.js) 40.47KB 10.57KB
plugin-timeline (index.js) 25.75KB 7.32KB
plugin-tree (index.js) 8.34KB 2.82KB
plugin-view (index.js) 83.54KB 20.39KB
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.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.46KB 1.21KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 0.20KB 0.18KB
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 (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
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-zhuang
os-zhuang added this pull request to the merge queue Aug 1, 2026
Merged via the queue into main with commit 009e25d Aug 1, 2026
16 checks passed
@os-zhuang
os-zhuang deleted the claude/objectui-spec-symbol-ci-rule-4r3xlc-batch1 branch August 1, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

台账燃尽批次 1/8 · @object-ui/types 报表/图表/查询簇,11 符号(objectstack#4115)

2 participants