Skip to content

Comments

Feed/Chatter: comprehensive tests + Console RecordChatterPanel integration#728

Merged
hotlong merged 7 commits intomainfrom
copilot/add-unit-tests-console-integration
Feb 22, 2026
Merged

Feed/Chatter: comprehensive tests + Console RecordChatterPanel integration#728
hotlong merged 7 commits intomainfrom
copilot/add-unit-tests-console-integration

Conversation

Copy link
Contributor

Copilot AI commented Feb 22, 2026

New Feed/Chatter components (#706) shipped without dedicated tests and Console still used the old CommentThread. This PR closes both gaps.

Unit Tests (+43 tests across 6 files)

  • RecordActivityTimeline — all 7 item types, avatar rendering, Ctrl+Enter submit, input clear/disable during submission, load more spinner, controlled vs uncontrolled filter, reactions toggle, threading by parentId
  • RecordChatterPanel — left/right border styles, width propagation, collapsible=false, border-0 shadow-none passthrough, callback forwarding, inline collapse/expand buttons
  • FieldChangeItem — arrow icon, line-through on old value, fieldLabel priority, both-null empty state
  • ReactionPicker — disabled without callback, custom emojiOptions, aria-label content, picker auto-close
  • ThreadedRepliesaria-expanded states, actorAvatarUrl vs initial fallback, Ctrl+Enter, submit disable/clear
  • SubscriptionToggletitle attribute, loading state, aria-label reactivity

Console RecordDetailView Migration

Replaced CommentThread (from @object-ui/collaboration) → RecordChatterPanel (from @object-ui/plugin-detail):

<RecordChatterPanel
  config={{
    position: 'bottom',
    collapsible: false,
    feed: { enableReactions: true, enableThreading: true, showCommentInput: true },
  }}
  items={feedItems}
  onAddComment={handleAddComment}
  onAddReply={handleAddReply}
  onToggleReaction={handleToggleReaction}
/>
  • Comment[]FeedItem[] with mapping from sys_comment response shape
  • Added handleAddReply for threading, handleToggleReaction with atomic $toggleReaction persistence
  • Removed unused CommentThread, MessageSquare, threadResolved state

ROADMAP

  • Test count: 5,177+ → 5,618+ (full suite passes, 0 CodeQL alerts)
  • P1.5 checklist updated to reflect test coverage and Console integration
Original prompt

This section details on the original issue you should resolve

<issue_title>Feed/Chatter 组件:补充测试 + Console 集成 + 完成收尾工作</issue_title>
<issue_description>

背景

#706P0/P1/P2 核心组件代码已全部完成,放置在 packages/plugin-detail/src/,Roadmap P1.5 已更新标记完成。

但经评估发现三个关键收尾缺口:

  1. 新组件缺少专项单元测试
  2. Console 未集成新组件(仍使用旧版 CommentThread
  3. P3 增强项未实现

本 Issue 跟踪所有需要开展的细项工作。


任务清单

🔴 Task 1 — 补充新组件单元测试

现有测试覆盖的是旧版 ActivityTimelineRecordComments,新的消费 @objectstack/spec Feed 协议的 6 个核心组件均无专项测试。

  • RecordActivityTimeline.test.tsxpackages/plugin-detail/src/__tests__/

    • 渲染基本 feed items(comment / field_change / task / event / system / email / call)
    • 各 item type 显示正确的图标和颜色样式
    • Actor 头像 + 名称 + 来源 + 时间戳正确渲染
    • unifiedTimeline 模式:评论与字段变更混排
    • filterMode 切换:all / comments_only / changes_only / tasks_only
    • 受控 filterMode 和非受控内部 filter 两种模式
    • 空列表显示 "No activity recorded"
    • showFilter 可通过 config.showFilterToggle 控制隐藏
    • CommentInput 渲染(当 onAddComment 提供时)
    • CommentInput 不渲染(当 onAddComment 未提供时或 config.showCommentInput === false
    • 提交评论:点击按钮 + Ctrl+Enter 快捷键
    • 提交后清空输入框
    • 提交期间禁用输入和按钮
    • 分页:hasMore=true 时显示 "Load more" 按钮
    • 加载更多时显示 loading spinner
    • edited 标记显示 "(edited)"
    • pinned 标记显示 "📌 Pinned"
    • source 字段显示 "via {source}"
    • SubscriptionToggleconfig.showSubscriptionToggle=truesubscription 存在时渲染
    • Reactions 在 config.enableReactions=true 时渲染
    • Threading 在 config.enableThreading=true 时按 parentId 分组
  • RecordChatterPanel.test.tsxpackages/plugin-detail/src/__tests__/

    • Sidebar 模式(position='right'):正确宽度、border-l 样式
    • Sidebar 模式(position='left'):border-r 样式
    • Inline 模式(position='bottom'):无 border 样式
    • 可折叠:collapsible=true + defaultCollapsed=true 初始折叠
    • 折叠态显示 "Open discussion panel" 按钮(sidebar)
    • 折叠态显示 "Show Discussion (N)" 按钮(inline)
    • 展开后显示 "Close discussion panel" / "Hide discussion" 按钮
    • 点击折叠/展开按钮切换状态
    • collapsible=false 时不显示折叠按钮
    • 内嵌 RecordActivityTimeline 正确传递 config.feed 配置
    • Sidebar 模式下 Timeline 有 border-0 shadow-none class
    • 所有回调 props 正确透传(onAddComment, onAddReply, onToggleReaction, onToggleSubscription)
  • FieldChangeItem.test.tsxpackages/plugin-detail/src/__tests__/

    • 渲染字段名(自动 capitalize + 下划线替换空格)
    • 使用 fieldLabel 优先于自动生成
    • 渲染旧值(删除线样式)和新值
    • 使用 oldDisplayValue / newDisplayValue 优先于原始值
    • 旧值/新值为 null 时显示 "(empty)"
    • 中间箭头图标渲染
  • ReactionPicker.test.tsxpackages/plugin-detail/src/__tests__/

    • 渲染已有 reactions:emoji + count
    • 已 reacted 的 reaction 显示高亮样式(bg-primary/10)
    • 未 reacted 的 reaction 显示普通样式(bg-muted)
    • 点击已有 reaction 调用 onToggleReaction(emoji)
    • "Add reaction" 按钮(SmilePlus 图标)
    • 点击 "Add reaction" 展开 emoji picker
    • 选择 emoji 调用 onToggleReaction(emoji) 并关闭 picker
    • onToggleReaction 时不显示 "Add reaction" 按钮
    • onToggleReaction 时已有 reaction 按钮 disabled
    • 自定义 emojiOptions 渲染对应 emoji
    • aria-label 包含 emoji + count
  • ThreadedReplies.test.tsxpackages/plugin-detail/src/__tests__/

    • 渲染折叠态:显示 "N replies" / "1 reply"
    • 点击展开按钮显示所有回复
    • 展开态每条回复:头像(avatarUrl 或首字母)+ actor + 时间戳 + body
    • 收起态 aria-expanded=false,展开态 aria-expanded=true
    • Reply 输入框渲染(当 showReplyInput=trueonAddReply 存在)
    • 输入文本并点击 Send 按钮调用 onAddReply(parentId, text)
    • Ctrl+Enter 快捷键提交回复
    • 提交后清空输入框
    • 空输入时 Send 按钮 disabled
    • 提交期间输入和按钮 disabled
    • replies=[]showReplyInput=false 时返回 null
  • SubscriptionToggle.test.tsxpackages/plugin-detail/src/__tests__/

    • subscribed=true 显示 Bell 图标(text-primary 样式)
    • subscribed=false 显示 BellOff 图标(text-muted-foreground 样式)
    • 点击调用 onToggle(!subscription.subscribed)
    • 点击后 loading 状态 disabled
    • onToggle 时按钮 disabled
    • aria-label 随 subscribed 状态变化
    • title 随 subscribed 状态变化

🔴 Task 2 — Console RecordDetailView 集成

当前 apps/console/src/components/RecordDetailView.tsx 使用旧版 CommentThread(来自 @object-ui/collaboration)。需要替换为新的 spec 协议组件。

  • 替换 CommentThread → RecordChatterPanel

    • @object-ui/plugin-detail 导入 RecordChatterPanel
    • 移除 CommentThread 导入
    • <CommentThread> 替换为 <RecordChatterPanel> 并传入 RecordChatterPanelProps
    • 配置 position: 'bottom'(保持当前内联布局)或改为 position: 'right'(Airtable 风格侧边栏)
  • 接入 FeedItem 数据模型

    • 将现有 comments state 从 Comment[] 改为 FeedItem[]
    • 适配 FeedItem 接口字段:id, type, actor, actorAvatarUrl, body, createdAt, reactions, parentId, replyCount
    • 添加字段变更历史获取逻辑(调用 dataSource.find('sys_audit_log', ...)client.feed.list()
    • 合并 comments + field changes 为...

🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

@vercel
Copy link

vercel bot commented Feb 22, 2026

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

Project Deployment Actions Updated (UTC)
objectui Ready Ready Preview, Comment Feb 22, 2026 4:51pm
objectui-demo Ready Ready Preview, Comment Feb 22, 2026 4:51pm
objectui-storybook Ready Ready Preview, Comment Feb 22, 2026 4:51pm

Request Review

…6 tests)

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…rdDetailView

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…s + Console integration complete

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…tion for reaction persistence

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Copilot AI changed the title [WIP] Add unit tests and console integration for Feed/Chatter component Feed/Chatter: comprehensive tests + Console RecordChatterPanel integration Feb 22, 2026
Copilot AI requested a review from hotlong February 22, 2026 16:07
@hotlong hotlong marked this pull request as ready for review February 22, 2026 16:19
Copilot AI review requested due to automatic review settings February 22, 2026 16:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the Feed/Chatter component initiative (issue #706, #727) by adding comprehensive unit test coverage for all 6 core Feed/Chatter components and migrating the Console's RecordDetailView from the legacy CommentThread to the new spec-aligned RecordChatterPanel. The PR adds ~45 new tests across 6 test files and updates the Console to use the new FeedItem[] data model with support for reactions, threading, and field changes.

Changes:

  • Added comprehensive unit tests for RecordActivityTimeline, RecordChatterPanel, FieldChangeItem, ReactionPicker, ThreadedReplies, and SubscriptionToggle components (~45 tests total)
  • Migrated Console RecordDetailView from CommentThread (collaboration package) to RecordChatterPanel (plugin-detail package) with full FeedItem[] data model support
  • Updated ROADMAP.md to reflect test count increase (5,618+ total tests) and mark P1.5 checklist items as complete

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/plugin-detail/src/tests/ThreadedReplies.test.tsx Added 8 tests covering aria-expanded states, avatar rendering (URL vs fallback), Ctrl+Enter submission, input disable/clear during submission
packages/plugin-detail/src/tests/SubscriptionToggle.test.tsx Added 4 tests for title attributes, loading states during toggle, and reactive aria-label updates
packages/plugin-detail/src/tests/RecordChatterPanel.test.tsx Added 8 tests for left/right border styles, width propagation, collapsible=false behavior, inline collapse/expand buttons, and timeline styling passthrough
packages/plugin-detail/src/tests/RecordActivityTimeline.test.tsx Added 14 tests covering all 7 item types, avatar rendering, Ctrl+Enter submit, input states, load more spinner, controlled/uncontrolled filters, reactions toggle, and threading by parentId
packages/plugin-detail/src/tests/ReactionPicker.test.tsx Added 6 tests for disabled state without callback, custom emojiOptions, aria-label content, bg-muted styling, and picker auto-close
packages/plugin-detail/src/tests/FieldChangeItem.test.tsx Added 5 tests for arrow icon rendering, line-through on old values, fieldLabel priority, and empty state handling
apps/console/src/components/RecordDetailView.tsx Replaced CommentThread with RecordChatterPanel; migrated from Comment[] to FeedItem[] model; added reaction mapping from sys_comment response; implemented handleAddReply and handleToggleReaction with optimistic UI updates
ROADMAP.md Updated test count from 5,177+ to 5,618+ and marked P1.5 Feed/Chatter test coverage and Console integration as complete

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions github-actions bot added documentation Improvements or additions to documentation plugin labels Feb 22, 2026
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Contributor

❌ Console Performance Budget

Metric Value Budget
Main entry (gzip) ** KB** KB
Entry file ``
Status FAIL

📦 Bundle Size Report

Package Size Gzipped

Size Limits

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

@hotlong hotlong merged commit e2b35f9 into main Feb 22, 2026
6 of 10 checks passed
@github-actions
Copy link
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 52.1 KB 60 KB
Entry file index-B50wLoJy.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 7.36KB 1.78KB
auth (ForgotPasswordForm.js) 4.00KB 1.44KB
auth (LoginForm.js) 4.20KB 1.45KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 5.66KB 1.59KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (createAuthClient.js) 2.78KB 0.98KB
auth (createAuthenticatedFetch.js) 1.24KB 0.60KB
auth (index.js) 1.18KB 0.51KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 1.57KB 0.57KB
collaboration (CommentThread.js) 18.38KB 4.49KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 3.65KB 1.42KB
collaboration (index.js) 1.16KB 0.50KB
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) 1837.82KB 431.32KB
core (index.js) 0.81KB 0.32KB
create-plugin (index.js) 10.13KB 3.17KB
data-objectstack (index.js) 38.87KB 9.57KB
fields (index.js) 92.37KB 18.57KB
i18n (i18n.js) 2.03KB 0.77KB
i18n (index.js) 1.79KB 0.72KB
i18n (provider.js) 3.21KB 1.09KB
layout (index.js) 97.78KB 25.90KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (index.js) 1.19KB 0.53KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 4.42KB 1.27KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 1.77KB 0.77KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.11KB 0.87KB
permissions (evaluator.js) 4.00KB 1.23KB
permissions (index.js) 0.85KB 0.40KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 0.99KB 0.49KB
plugin-aggrid (AddressField-DjN2_Oa7.js) 3.05KB 0.76KB
plugin-aggrid (AgGridImpl-Dx7qLWE5.js) 7.04KB 2.33KB
plugin-aggrid (AutoNumberField-Cv75rRi8.js) 0.28KB 0.27KB
plugin-aggrid (FileField--Sh7TXn1.js) 5.90KB 2.10KB
plugin-aggrid (FormulaField-BTrEHvp3.js) 0.52KB 0.38KB
plugin-aggrid (GeolocationField-O2Zquk-4.js) 4.46KB 1.50KB
plugin-aggrid (GridField-D7USr6Uk.js) 1.71KB 0.68KB
plugin-aggrid (LocationField-Dvi2PlfB.js) 0.93KB 0.54KB
plugin-aggrid (MasterDetailField-CV5Y8pDE.js) 3.86KB 1.17KB
plugin-aggrid (ObjectAgGridImpl-iCFRNsdP.js) 920.44KB 203.73KB
plugin-aggrid (ObjectField-UmL0F44x.js) 1.61KB 0.77KB
plugin-aggrid (QRCodeField-BNtkxBkd.js) 3.38KB 1.23KB
plugin-aggrid (RichTextField-CkjlEAJt.js) 1.16KB 0.59KB
plugin-aggrid (SignatureField-C9-m1IYy.js) 3.33KB 1.29KB
plugin-aggrid (SummaryField-BuvV3onE.js) 0.48KB 0.37KB
plugin-aggrid (UserField-DNI1psi1.js) 2.44KB 0.93KB
plugin-aggrid (VectorField-D_abxOU0.js) 0.79KB 0.45KB
plugin-aggrid (index-2XWZiXSX.js) 19.95KB 5.03KB
plugin-aggrid (index.js) 0.22KB 0.16KB
plugin-ai (index.js) 25.35KB 6.39KB
plugin-calendar (index.js) 49.03KB 13.35KB
plugin-charts (AdvancedChartImpl-GErbMD6M.js) 126.98KB 26.25KB
plugin-charts (BarChart-C_I0OFbj.js) 542.77KB 135.30KB
plugin-charts (ChartImpl-CnD20l5F.js) 3.19KB 1.10KB
plugin-charts (index-Byep0tj1.js) 15.23KB 4.49KB
plugin-charts (index.js) 0.19KB 0.16KB
plugin-chatbot (index.js) 1140.69KB 333.05KB
plugin-dashboard (index.js) 147.98KB 38.66KB
plugin-designer (index.js) 231.63KB 48.58KB
plugin-detail (AddressField-Bs2pd1yV.js) 2.98KB 0.75KB
plugin-detail (AutoNumberField-BxnFqllo.js) 0.28KB 0.26KB
plugin-detail (AvatarField-DJox0XRy.js) 2.62KB 1.07KB
plugin-detail (BooleanField-4Rmv6Nfw.js) 1.13KB 0.51KB
plugin-detail (CodeField-uEriOjui.js) 0.74KB 0.47KB
plugin-detail (ColorField-BY19Hxcm.js) 1.23KB 0.54KB
plugin-detail (CurrencyField-AdfRLRDp.js) 1.48KB 0.73KB
plugin-detail (DateField-uvSa7cfE.js) 0.54KB 0.37KB
plugin-detail (DateTimeField-C5I0RFxU.js) 0.71KB 0.42KB
plugin-detail (EmailField-Vyr8gphU.js) 0.81KB 0.48KB
plugin-detail (FileField-DXbM-Zbx.js) 5.50KB 1.94KB
plugin-detail (FormulaField-CJkkwIK8.js) 0.51KB 0.38KB
plugin-detail (GeolocationField-DXIVVryX.js) 3.71KB 1.21KB
plugin-detail (GridField-BMOV0GLv.js) 1.68KB 0.68KB
plugin-detail (ImageField-C7ckIMkk.js) 2.83KB 1.14KB
plugin-detail (LocationField-DrqBU4f-.js) 0.95KB 0.54KB
plugin-detail (LookupField-CVgUNaNA.js) 4.00KB 1.38KB
plugin-detail (MasterDetailField-DWwFMwyu.js) 3.39KB 1.00KB
plugin-detail (NumberField-CwY5gEtj.js) 0.68KB 0.44KB
plugin-detail (ObjectField-Dyvc8IWR.js) 1.64KB 0.77KB
plugin-detail (PasswordField-NWUiiRbV.js) 1.21KB 0.63KB
plugin-detail (PercentField-DYXpEwma.js) 1.89KB 0.84KB
plugin-detail (PhoneField-9svO0AK7.js) 0.80KB 0.48KB
plugin-detail (QRCodeField-CH5N0RBN.js) 2.35KB 0.91KB
plugin-detail (RatingField-CLwf3ER5.js) 1.62KB 0.66KB
plugin-detail (RichTextField-BYTQuqtZ.js) 1.15KB 0.59KB
plugin-detail (SelectField-CxbWm-Ou.js) 0.90KB 0.49KB
plugin-detail (SignatureField-CxGys7hV.js) 2.97KB 1.10KB
plugin-detail (SliderField-CRWmFn3d.js) 1.00KB 0.49KB
plugin-detail (SummaryField-ugYPYxjP.js) 0.47KB 0.36KB
plugin-detail (TextAreaField-DpLNqeJZ.js) 1.09KB 0.59KB
plugin-detail (TextField-ZbJ9QghK.js) 0.82KB 0.43KB
plugin-detail (TimeField-ClZGB7sO.js) 0.50KB 0.34KB
plugin-detail (UrlField-C2c71Xgd.js) 0.98KB 0.52KB
plugin-detail (UserField-BIU5asno.js) 2.33KB 0.90KB
plugin-detail (VectorField-CKg9jdGa.js) 0.78KB 0.44KB
plugin-detail (index-BiW9m7Xp.js) 1846.07KB 432.20KB
plugin-detail (index.js) 0.90KB 0.51KB
plugin-editor (MonacoImpl-hfdmoz6k.js) 18.15KB 5.59KB
plugin-editor (index-CuYbY6xb.js) 10.10KB 3.32KB
plugin-editor (index.js) 0.19KB 0.15KB
plugin-form (index.js) 66.73KB 13.98KB
plugin-gantt (index.js) 244.31KB 58.97KB
plugin-grid (index.js) 94.78KB 24.78KB
plugin-kanban (KanbanEnhanced-_27OOHhL.js) 32.31KB 9.09KB
plugin-kanban (KanbanImpl-CgkoIanE.js) 14.19KB 4.18KB
plugin-kanban (index-CVyX-djg.js) 31.17KB 9.18KB
plugin-kanban (index.js) 0.42KB 0.26KB
plugin-kanban (sortable.esm-CNNHgHk5.js) 71.43KB 18.99KB
plugin-list (index.js) 1796.83KB 423.97KB
plugin-map (index.js) 130.47KB 31.67KB
plugin-map (maplibre-gl-DSpYxujd.js) 1416.27KB 302.72KB
plugin-markdown (MarkdownImpl-DufQ-eRU.js) 256.68KB 64.45KB
plugin-markdown (index-CrmE78vF.js) 9.63KB 3.17KB
plugin-markdown (index.js) 0.19KB 0.15KB
plugin-report (index.js) 65.85KB 13.42KB
plugin-timeline (index.js) 107.97KB 25.07KB
plugin-view (index.js) 135.39KB 34.38KB
plugin-workflow (index.js) 82.94KB 17.11KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 8.21KB 2.56KB
react (index.js) 0.66KB 0.38KB
tenant (TenantContext.js) 0.31KB 0.25KB
tenant (TenantGuard.js) 1.04KB 0.43KB
tenant (TenantProvider.js) 2.76KB 0.98KB
tenant (TenantScopedQuery.js) 0.77KB 0.44KB
tenant (index.js) 0.75KB 0.38KB
tenant (resolver.js) 2.64KB 0.76KB
tenant (useTenant.js) 0.50KB 0.32KB
tenant (useTenantBranding.js) 0.62KB 0.39KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.10KB 0.71KB
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) 0.73KB 0.39KB
types (disclosure.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 (index.js) 1.21KB 0.55KB
types (layout.js) 0.20KB 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 (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (tenant.js) 0.20KB 0.18KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 0.20KB 0.18KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB
types (workflow.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

Labels

apps documentation Improvements or additions to documentation plugin tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feed/Chatter 组件:补充测试 + Console 集成 + 完成收尾工作

2 participants