Skip to content

docs(runner): 把 README 两处开放集合的插件措辞按实测闭合 (#3632) - #3644

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-3632-readme-plugin-list
Aug 7, 2026
Merged

docs(runner): 把 README 两处开放集合的插件措辞按实测闭合 (#3632)#3644
yinlianghui merged 1 commit into
mainfrom
claude/issue-3632-readme-plugin-list

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes#3632

前提复核(独立于 issue 正文)

切点 fa3ba5bf1。issue 正文的行号已漂(#3621 / #3634 改过同文件),按内容锚定复核,两处缺陷都仍在,实测预装集合与 issue 正文一致 —— 恰好两个,无差异:

实测面结果
packages/runner/package.json dependencies 的 plugin-*@object-ui/plugin-charts@object-ui/plugin-kanban
packages/runner/src/App.tsx:14-15 注册 import@object-ui/plugin-kanban@object-ui/plugin-charts
packages/runner/src 全量 plugin- grep另有 index.css:13-14@sourcevite.config.ts:77-78 的别名 —— 同样只覆盖这两个

行号漂移:§Features 该行 9 → 11,§Pre-installed Plugins 41-47 → 43-49。

前后对照

§Features

-- **Plugin Support** - Pre-configured with popular plugins (Kanban, Charts, etc.)+- **Plugin Support** - Pre-configured with the Kanban and Charts plugins

括号里已经穷举了全部两个,末尾却缀 etc.,读起来是「还有更多没列」。一并去掉 popular:集合闭合之后,「popular plugins (Kanban, Charts)」仍读作「从更大集合里挑的几个热门的」,会把刚合上的口子重新撑开 —— 这个词与闭合措辞不相容,不是顺手润色。

§Pre-installed Plugins

-The runner comes with these plugins pre-configured:+The runner comes with these two plugins pre-configured, registered by the imports in+`src/App.tsx`:
- **@object-ui/plugin-kanban** - Kanban board components
- **@object-ui/plugin-charts** - Chart visualization components
-- **Additional plugins can be added as needed**++Adding any other plugin means editing the runner's own sources and rebuilding — a+dependency in `package.json`, a registration import in `src/App.tsx`, and the+`vite.config.ts` alias and `src/index.css` `@source` entries the two above have. There+is no runtime plugin installation.

第三条不是插件,却被排在一句「comes with these plugins pre-configured」引出的列表里、且和前两条一样加粗,形状上与两个真插件并列,扫读时会被当成第三个预装项。按 issue 建议降为列表下方的一句正文。

保留(而非删除)的措辞理由:该节读者的下一个问题必然是「那我怎么加别的插件」,留空反而会让人去猜一个不存在的运行时机制。这句话按实测写清真实代价,四个落点都已复核 —— package.json dependencies、App.tsx:14-15vite.config.ts:77-78index.css:13-14,现有两个插件在后两处各有条目。末句「There is no runtime plugin installation」把 issue 关心的那个误读直接堵死。

措辞上刻意说「the entries the two above have」(现有两个插件各有的条目)而不是「required」:vite 别名表的作用是让 runner 直接从 monorepo 源码启动(见 vite.config.ts:42-43 关于 #3575 的注释),把它写成硬性必需会是新的过度断言 —— 陈述现状而不越界断言。

验证(先预测后跑)

三条预测,全部命中:

  1. 修后全文 etc. 零命中,§Pre-installed Plugins 列表恰两项
$ grep -n 'etc\.' packages/runner/README.md -> 无输出(exit 1)
$ awk '/^## Pre-installed Plugins/{f=1;next} /^## /{f=0} f' packages/runner/README.md | grep -c '^- '
2
  1. docs:check-links 修前修后皆绿
修前: Links are valid across 6 scan roots.
修后: Links are valid across 6 scan roots.

关于扫描面(#3622 在途扩包 README 扫描面):本切点上 packages/** 还不在扫描面内 —— scripts/check-doc-links.mjs:355-362SCAN_ROOTScontent/docs / examples / README.md / CONTRIBUTING.md / ROADMAP.md / docs 六项,脚本自己在第 264 行写着「Measured and NOT bought: the package READMEs (objectui#3622)」。也就是说这道门禁目前根本没读到本文件,它的绿不构成对本改动的证明。真正的证据是链接零增删:git show HEAD:packages/runner/README.md 与工作区各 12 个 markdown 链接,两处改动都不含链接。#3622 落地后本文件进扫描面也不受影响。

  1. check:control-bytes 绿 + 自扫干净
$ node scripts/check-control-bytes.mjs
✅ check-control-bytes: OK (scanned 3661 tracked text file(s); skipped 85 binary).
$ grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]' packages/runner/README.md
(无输出, exit 1)

未跑 pnpm test / type-check:本 PR 是纯 README 文本改动,零代码行,runner 的 vitest 与 tsc 都不读 README —— 跑一遍只会在共用容器里烧内存换一个与本改动无关的绿。如实记录,不补造证据。

无 changeset

包 README 的事实订正,不改任何发布产物或公开 API,沿用 #3602 / #3621 / #3634 的先例。

越界发现(只报不改)

通读两节邻接,§Features 其余四条与 §Running the Runner、§Metadata Loading 均已复核属实(dev: vite / build: vite build 脚本存在;package.json 确实没有 main / module / exports / types)。同类新虚构:无。

另有一处非同类、非邻接的发现(生成块的版本漂移,波及 35 个包 README),已按仓规单独建 issue 归档,不在本 PR 修改。

⛔ 未碰 content/docs/utilities/runner.mdx(#3618 在途)。


🤖 Generated with Claude Code

https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt


Generated by Claude Code

`packages/runner/README.md` 两处把预装插件写成开放集合,实测预装的恰好是
kanban + charts 两个:`packages/runner/package.json` 的 dependencies 里
`plugin-*` 只有 `@object-ui/plugin-charts` 与 `@object-ui/plugin-kanban`,
`packages/runner/src/App.tsx:14-15` 也只有这两行注册 import。
- §Features:`(Kanban, Charts, etc.)` 已穷举全部两个却仍缀 `etc.`,读起来是
「还有更多没列」。去掉 `etc.` 并闭合为实测集合;一并去掉 `popular` ——
集合闭合后「popular plugins」仍读作「从更大集合里挑的几个热门」,会把刚
合上的口子重新撑开。
- §Pre-installed Plugins:非插件的加粗行「**Additional plugins can be added
as needed**」被排在「comes with these plugins pre-configured」引出的列表
里、且与前两条同样加粗,形状上成了第三个预装项。把它移出列表,降为列表
下方的说明句,并按实测写清加插件的真实代价(改 `package.json` 依赖、
`src/App.tsx` 注册 import,以及现有两个插件在 `vite.config.ts` 别名表和
`src/index.css` `@source` 里各有的条目)后重新构建 —— runner 没有运行时
插件安装机制。
无 changeset:包 README 的事实订正,不改任何发布产物或公开 API,沿用
#3602 / #3621 / #3634 的先例。
Fixes#3632
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

MetricValueBudget
Main entry (gzip)28.1 KB350 KB
Entry fileindex-Db9tmbJX.js
StatusPASS

📦 Bundle Size Report

PackageSizeGzipped
app-shell (index.js)8.66KB3.13KB
app-shell (runtime-config.js)7.42KB2.32KB
app-shell (types.js)0.01KB0.04KB
app-shell (urlParams.js)7.57KB2.97KB
auth (AuthContext.js)0.31KB0.24KB
auth (AuthGuard.js)1.17KB0.53KB
auth (AuthProvider.js)22.10KB4.37KB
auth (AuthShell.js)3.49KB1.40KB
auth (ForgotPasswordForm.js)12.21KB3.45KB
auth (LoginForm.js)18.13KB5.39KB
auth (PreviewBanner.js)0.90KB0.50KB
auth (RegisterForm.js)6.64KB2.21KB
auth (SocialSignInButtons.js)9.60KB3.89KB
auth (UserMenu.js)3.40KB1.22KB
auth (auth-gate-events.js)1.29KB0.66KB
auth (authStyles.js)5.04KB1.72KB
auth (createAuthClient.js)35.76KB9.11KB
auth (createAuthenticatedFetch.js)4.37KB1.69KB
auth (index.js)2.35KB1.07KB
auth (org-roles.js)6.66KB2.78KB
auth (phone-identifier.js)1.11KB0.66KB
auth (types.js)0.59KB0.35KB
auth (useAuth.js)4.91KB0.87KB
auth (useIsWorkspaceAdmin.js)1.61KB0.85KB
collaboration (CommentThread.js)26.07KB7.56KB
collaboration (LiveCursors.js)3.17KB1.27KB
collaboration (PresenceAvatars.js)6.49KB2.64KB
collaboration (PresenceProvider.js)2.79KB1.13KB
collaboration (index.js)1.65KB0.73KB
collaboration (useCollaborationTranslation.js)6.05KB2.52KB
collaboration (useCommentSearch.js)1.98KB0.88KB
collaboration (useConflictResolution.js)7.75KB1.86KB
collaboration (useMentionNotifications.js)1.81KB0.68KB
collaboration (usePresence.js)6.33KB1.84KB
collaboration (useRealtimeSubscription.js)7.91KB2.01KB
components (index.js)480.72KB105.64KB
core (index.js)2.96KB1.13KB
create-plugin (index.js)9.28KB2.98KB
data-objectstack (index.js)137.51KB35.11KB
fields (index.js)230.87KB56.83KB
i18n (LocalizationContext.js)1.76KB0.96KB
i18n (currency.js)1.22KB0.64KB
i18n (i18n.js)4.32KB1.77KB
i18n (index.js)2.65KB1.06KB
i18n (pickLocalized.js)1.70KB0.83KB
i18n (provider.js)9.48KB3.27KB
i18n (useObjectLabel.js)26.14KB6.07KB
i18n (useSafeTranslation.js)4.52KB1.96KB
layout (index.js)38.53KB10.71KB
mobile (MobileProvider.js)0.92KB0.49KB
mobile (ResponsiveContainer.js)0.94KB0.38KB
mobile (breakpoints.js)1.51KB0.70KB
mobile (createOfflineDataSource.js)5.61KB1.74KB
mobile (index.js)1.50KB0.62KB
mobile (offlineQueue.js)3.91KB1.35KB
mobile (pwa.js)0.97KB0.49KB
mobile (serviceWorker.js)1.48KB0.62KB
mobile (serviceWorkerSource.js)3.41KB1.48KB
mobile (useBreakpoint.js)1.54KB0.65KB
mobile (useGesture.js)6.96KB1.98KB
mobile (useOfflineSync.js)1.99KB0.72KB
mobile (usePullToRefresh.js)2.53KB0.85KB
mobile (useResponsive.js)0.71KB0.42KB
mobile (useResponsiveConfig.js)1.36KB0.63KB
mobile (useSpecGesture.js)4.32KB1.64KB
mobile (useTouchTarget.js)1.01KB0.54KB
permissions (MePermissionsProvider.js)8.75KB3.06KB
permissions (PermissionContext.js)0.31KB0.25KB
permissions (PermissionGuard.js)0.89KB0.45KB
permissions (PermissionProvider.js)3.67KB1.12KB
permissions (evaluator.js)4.41KB1.44KB
permissions (index.js)0.91KB0.41KB
permissions (store.js)0.91KB0.42KB
permissions (useFieldPermissions.js)1.28KB0.52KB
permissions (usePermissions.js)1.55KB0.71KB
plugin-ai (index.js)15.71KB3.79KB
plugin-calendar (index.js)44.98KB12.37KB
plugin-charts (index.js)61.04KB17.31KB
plugin-chatbot (index.js)180.09KB42.72KB
plugin-dashboard (index.js)115.50KB29.96KB
plugin-designer (index.js)210.51KB42.51KB
plugin-detail (index.js)232.79KB57.42KB
plugin-editor (index.js)2.46KB1.10KB
plugin-form (index.js)112.10KB27.10KB
plugin-gantt (index.js)162.55KB39.57KB
plugin-grid (index.js)186.61KB49.34KB
plugin-kanban (index.js)48.30KB13.28KB
plugin-list (index.js)105.12KB25.48KB
plugin-map (index.js)16.81KB5.24KB
plugin-markdown (index.js)13.72KB4.69KB
plugin-report (index.js)40.58KB10.58KB
plugin-timeline (index.js)25.76KB7.33KB
plugin-tree (index.js)8.50KB2.88KB
plugin-view (index.js)84.03KB20.55KB
providers (DataSourceProvider.js)0.75KB0.39KB
providers (MetadataProvider.js)1.37KB0.59KB
providers (ThemeProvider.js)1.90KB0.85KB
providers (UploadProvider.js)11.71KB3.53KB
providers (index.js)0.44KB0.22KB
providers (types.js)0.01KB0.04KB
react-runtime (index.js)5.67KB2.37KB
react (LazyPluginLoader.js)3.77KB1.33KB
react (SchemaRenderer.js)19.28KB6.38KB
react (data-invalidation.js)5.05KB2.08KB
react (index.js)1.02KB0.55KB
react (spec-input.js)0.20KB0.18KB
sdui-parser (codegen.js)4.09KB1.74KB
sdui-parser (index.js)4.47KB2.03KB
sdui-parser (parse.js)10.04KB2.82KB
sdui-parser (types.js)0.29KB0.24KB
sdui-parser (validate.js)4.69KB1.48KB
types (ai.js)0.20KB0.17KB
types (api-types.js)0.20KB0.18KB
types (app.js)2.87KB0.99KB
types (base.js)0.20KB0.18KB
types (blocks.js)0.20KB0.18KB
types (complex.js)0.20KB0.18KB
types (crud.js)0.20KB0.18KB
types (data-display.js)0.20KB0.18KB
types (data-protocol.js)0.20KB0.19KB
types (data.js)0.20KB0.18KB
types (designer.js)1.87KB0.85KB
types (disclosure.js)0.20KB0.18KB
types (error-code.js)1.54KB0.88KB
types (feedback.js)0.20KB0.18KB
types (field-types.js)0.20KB0.18KB
types (form.js)0.20KB0.18KB
types (http-retry.js)4.32KB2.02KB
types (index.js)2.71KB1.34KB
types (layout.js)0.20KB0.18KB
types (managed-by.js)0.19KB0.18KB
types (mobile.js)2.59KB1.31KB
types (navigation.js)0.20KB0.18KB
types (objectql.js)0.20KB0.18KB
types (overlay.js)0.20KB0.18KB
types (permissions.js)0.20KB0.18KB
types (plugin-scope.js)0.20KB0.18KB
types (record-components.js)0.20KB0.19KB
types (record-semantics.js)1.28KB0.67KB
types (registry.js)0.20KB0.18KB
types (reports.js)0.20KB0.18KB
types (spec-report.js)5.05KB1.93KB
types (system-fields.js)3.33KB1.54KB
types (theme.js)0.20KB0.18KB
types (ui-action.js)3.40KB1.71KB
types (views.js)0.20KB0.18KB
types (widget.js)0.20KB0.18KB

Size Limits

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

@yinlianghui
yinlianghui marked this pull request as ready for review August 7, 2026 16:57
@yinlianghui
yinlianghui added this pull request to the merge queueAug 7, 2026
Merged via the queue into main with commit c6acd7bAug 7, 2026
7 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-3632-readme-plugin-list branch August 7, 2026 17:53
akarma-synetal pushed a commit to akarma-synetal/objectui that referenced this pull request Aug 10, 2026
…ck-ai#3619) (objectstack-ai#3652) (objectstack-ai#3676)
objectstack-ai#3619:§Features 的「All official plugins included」与同页 §Pre-installed Plugins
自相矛盾 —— runner 的 dependencies 里只有 plugin-kanban 与 plugin-charts 两个
plugin-*,而仓库里有 19 个 packages/plugin-*。措辞与 PR objectstack-ai#3644 在 README 侧落地的
口径对齐,不留开放集合暗示。
objectstack-ai#3652:三处把 src/main.tsx 指认为插件 import 所在地(§Adding Custom Plugins 第 2 步、
§Use Cases 代码注释、§Troubleshooting 排查步骤),但真实 main.tsx 共 18 行、零个
@object-ui/plugin-* import;side-effect import 在 App.tsx:13-15。Troubleshooting
那处危害最大 —— 排查步骤指向一个永远看不到 import 的文件,既不能证实也不能证伪,
线索到此断掉;改写为可执行的排查动作,并点明 main.tsx 看不到的原因。
§Adding Custom Plugins 的 npm link 建议按 pnpm workspace 实况改写:仅换掉 npm link
仍会留下一份跑不通的步骤 —— 缺 vite.config.ts 别名条目即复现 objectstack-ai#3575 的 HTTP 500。
补齐两个预装插件实际具备的四个接线点(package.json 的 workspace:* 依赖、App.tsx
注册 import、vite.config.ts 别名、index.css 的 @source),与 README(objectstack-ai#3644)一致。
无 changeset:站点文档单文件改动,同页前三次改动(objectstack-ai#3633/objectstack-ai#3646/objectstack-ai#3651)均无。
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

2 participants

@yinlianghui@claude