Uh oh!
There was an error while loading. Please reload this page.
docs(runner): 记录 api 查询参数这一真实的元数据加载配置面 (#3537) - #3581
Merged
Conversation
runner 有一个真实可用的 API 基址配置面 —— URL 查询参数 `api` —— 但全仓 文档零处记载(#3533 删掉那节不存在的环境变量后,该页关于 API 基址的指引 降为零)。本 PR 只补文档,不动实现。 `content/docs/utilities/runner.mdx` —— `## Configuration` 下新增 `### Metadata Loading`:两种加载策略的分流表、`?api=<base>` 时后端需要提供 的四类请求(`app.json` + `pages{path}.json`)、相对/绝对基址与 CORS、 失败静默转 `null` 的表现、参数只在挂载时读取一次的注意事项,以及缺省 `LocalBundleLoader` 从 `src/app-data/`(gitignore、新检出为空)按序解析的 文件顺序。 `packages/runner/README.md` —— 原 `## Schema Loading` 一节讲的是 runner 并不具备的通用加载方式(`import('./my-schema.json')` / `fetch('/api/schema')`), 与本 PR 要补的正是同一主题;若在其旁另起一节,README 会自相矛盾。因此改写 该节为 `## Metadata Loading`,按 README 既有深度给出实测行为 + 指回文档页。 所有断言均对 origin/main 复核:分流见 `packages/runner/src/App.tsx:43-57`, 基址语义见 `packages/runner/src/lib/MetadataLoader.ts:75-103`。 Fixes#3537 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
yinlianghui
marked this pull request as ready for review
August 7, 2026 14:20
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 7, 2026
Closed
akarma-synetal pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Aug 10, 2026
…ion (objectstack-ai#3577) (objectstack-ai#3616) 三类结构性虚构,均对 origin/main 逐条复核后处理。范围是整页 8 处锚点, 不是正文列的 3 处 —— 只修 Directory Structure 会让全页继续自相矛盾。 1. 幽灵目录。`packages/runner/src` 下实测只有 App.tsx / LayoutRenderer.tsx / main.tsx / index.css / lib/ / 测试文件,没有 `schemas/`、没有 `components/`, 包根也没有 `public/`。按 objectstack-ai#3534/objectstack-ai#3539 先例(删手抄目录树,指真源)整块删掉 Directory Structure,换成一段实测过的 prose,并把承重信息落在唯一真实的 元数据目录 `src/app-data/` 上 —— 它由 `.gitignore` 排除、新检出下不存在, 布局与解析顺序由本页自己的 Metadata Loading 一节(objectstack-ai#3581 补)承接。 其余 5 处 `src/schemas/` 引用(Use Cases 两处、Add Custom Schemas、 Best Practices 目录树)一并按 Metadata Loading 的真实契约改写为 `src/app-data/pages/*.json`;页文档形状取 App.tsx 兜底页的 `{ type: 'page', title, body: [] }`,与本页 Metadata Loading 表格里 「the page document (PageNodeSchema)」一致。 2. 「内置示例 schema」。这个包一个 schema 文件都不带:承载它们的 `src/app-data/` 在 `packages/runner/.gitignore:1` 里,缺该目录时 LocalBundleLoader 三个 `import.meta.glob` 编译为 `{}`,`/` 渲染内置兜底 `No index page found.`。What's Included 下那节列七类「Runner 包含的示例 schema」整节改写为读者实际要做的事(往 `src/app-data/` 放 JSON,或用 `?api=` 指后端);下方 `## Example Schemas` 改题为 Schemas to Start From, 并说明这些例子活在文档里、不在包里。 3. Package Information。`Version: 0.3.1` 直接删除,不改成 17.3.0 —— `@object-ui/runner` 在 `.changeset/config.json` 的 fixed 组里随 39 包同发, 手抄版本号必然再次漂移(分诊亦持此意见);当前版本改为指向 npm 页。 `Type: Application (not published to npm)` 与实测相反:package.json 是 `"private": false` + `publishConfig.access: "public"`,registry 上 `dist-tags.latest = 17.3.0`。改为不随版本漂移的措辞:已发布,但它是应用 不是库 —— package.json 不声明 main/module/exports/types,没有可 import 的 东西(与 PR objectstack-ai#3602 刚给 README 定下的说法一致)。 `src/components/` 保留一处 —— Add Custom Components 的 `// src/components/ MyComponent.tsx`。那是让读者自己建的文件(下方注册片段的相对 import 必须与它 对齐),已在上一句明写「包里不带组件,这个目录你自己加」,不再是「它存在」的 断言。 越界发现另行开单,不在本 PR 修:Features 的「All official plugins included」、 Best Practices 的环境变量小节(objectstack-ai#3538 删了 Environment Variables 整节却漏了它)、 Add Custom Routes 的 react-router-dom(runner 不依赖它,路由是手写 history.pushState)。objectstack-ai#3604 是 README 的另一件事,未触碰。 Fixesobjectstack-ai#3577 Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#3537
纯文档单:runner 有一个真实可用的 API 基址配置面(URL 查询参数
api),但全仓文档零处记载 —— 在 #3533 / PR #3538 删掉那节「不存在的环境变量」之后,该页关于 API 基址的指引降为零。不涉及任何实现改动。前提复核(rule 6:issue 正文是线索不是规格)
对
origin/main(b785a77b3)逐条复核,issue 的前提成立,行号也仍然准确:packages/runner/src/App.tsx:44-57——const params = new URLSearchParams(window.location.search); const apiUrl = params.get('api');,有值 →new NetworkLoader(apiUrl),无值 →new LocalBundleLoader()。packages/runner/src/lib/MetadataLoader.ts:75-103——NetworkLoader,constructor(baseUrl: string = '/api'),取${this.baseUrl}/app.json与${this.baseUrl}/pages${jsonPath}.json(path === '/'先改写成/index)。039d2d077),原 "Environment Variables" 一节确已删除。改了什么
content/docs/utilities/runner.mdx—— 在## Configuration下新增### Metadata Loading,放在### vite.config.ts之前(issue 的建议就是补在 Configuration 一节;而它是读者「我要把 runner 指向自己的后端」时第一眼扫的标题,排在 vite 配置前面比排在末尾更容易被找到)。内容:params.get('api')是真值判断,所以?api=(空值)仍然走本地加载器;控制台会打印命中了哪一种。?api=走网络时后端要提供的四类请求(app.json+pages/index.json+pages/customers.json+pages/crm/accounts.json),嵌套路由直通。fetch无第二参数 ⇒ 不带 cookie / 自定义头,cookie 或 bearer 鉴权的后端直接用不了。null,页面显示Page not found,app.json失败则整个 app 外壳(头部/侧栏)消失,HTTP 状态码不进 UI。pushState裸路径会把?api=从地址栏抹掉(已另立单 runner 的站内导航把?api=从地址栏抹掉:刷新/分享该 URL 会静默退回空的本地打包加载器 #3578)。LocalBundleLoader的真实来源src/app-data/(gitignore、新检出为空)与按序解析的文件顺序。packages/runner/README.md—— 深度选择及理由:原## Schema Loading一节讲的是 runner 并不具备的通用加载方式(await import('./my-schema.json')/fetch('/api/schema')),与本单要补的正是同一主题;若在它旁边另起一节,README 会自相矛盾(一节说「可以从各种地方加载」,紧邻一节说「只有两种,由查询参数决定」)。所以改写该节为## Metadata Loading,按 README 既有深度(每节 10–20 行 + 一个代码块 + 末尾指回文档)给出:分流表、后端要提供的请求清单、CORS/凭据/错误处理各一句,细节指回文档页的#metadata-loading锚点。README 里另外两处虚构能力(createRunner()、runner.config.js)与本主题无关,未动,已另立单 #3576。实测(以及没有实测的部分)
这次没有在浏览器里跑通两种模式 —— 容器内没有安装 playwright 浏览器(
~/.cache/ms-playwright不存在),而且干净 worktree 里 runner 的 dev server 本身就因为别名缺口起不了页面(另立单 #3575)。按 #3524 的先例如实说明。以下是实际跑了的两项测量,文档里的 URL 形状与「缺目录时什么都加载不到」两条结论来自它们,不是读代码推断:1.
NetworkLoader的请求 URL —— 用 esbuild 转译真实源文件packages/runner/src/lib/MetadataLoader.ts(与 Vite 相同的 TS→JS 步骤),桩掉fetch记录每一次请求:2.
LocalBundleLoader的 glob 到底解析到什么 —— 起 runner 的 vite dev server(自选空闲端口 5387,用完按记下的 PID 收),直接取转译后的模块:无
src/app-data/(= 仓库现状):三个 glob 全空 ⇒ 每次加载都返回
null⇒/落到内置的No index page found.。把一个
app.json+pages/index.json+pages/customers.json+pages/crm/accounts.json的目录软链成src/app-data/后重启:即文档里写的键名与解析顺序确实是 Vite 编译期决定的。(该软链目录被
.gitignore覆盖,git status全程干净;测完已删除,dev server 已按 PID 停止,端口 5387 已释放。)门禁(先预测后运行,均如预测)
node scripts/check-doc-links.mjsLinks are valid across 3 scan roots.exit 0pnpm exec vitest run scripts/ --maxWorkers=2(flock + 4G 堆上限)Test Files 16 passed (16) / Tests 275 passed (275)node scripts/check-control-bytes.mjs✅ OK (scanned 3631 tracked text file(s));另自查grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]'两文件均无命中补充两项:
scripts/check-doc-links.mjs的SCAN_ROOTS是content/docs、examples、根README.md,packages/*/README.md不在内。人工核了新增的那条https://www.objectui.org/docs/utilities/runner#metadata-loading:页面文件content/docs/utilities/runner.mdx存在(路由与package.json的homepage、README 底部## Links一致),锚点来自本 PR 新增的### Metadata Loading标题。(README 原有的/docs/runner那条是死链,不在本单范围,已另立单 packages/runner/README.md 记载了两个不存在的能力(createRunner()程序化 API、runner.config.js),外加一条 404 的文档链接 #3576。)@mdx-js/mdx@3.1.1编译改后的runner.mdx(去掉 frontmatter),compiled OK;新增内容里所有<都在行内代码或围栏代码里,不会被当作 JSX 标签。表格用 GFM 管道语法,与content/docs下已有的 43 个页面一致。changeset:不加,依据如下
AGENTS.md:151:「功能改进(feature)需写 changeset;纯 bug 修复不需要」—— 纯文档不在需要之列。scripts/check-changeset-fixed.mjs只校验 fixed 组成员齐全,scripts/check-changeset-no-major.mjs只禁 major,都不要求 changeset 存在。(门禁:PR 改动packages/*/src/**而未新增.changeset/*.md时失败(空 frontmatter 为显式豁免) #3387 提议加这样一条门禁,仍是 open,且其触发面是packages/*/src/**,本 PR 未触及。)039d2d077,纯文档、同一个runner.mdx)未带 changeset。@object-ui/runner确实是发布包(private: false,files含README.md),所以这条不是「README 不发布所以无所谓」,而是「本仓约定文档改动不发 changeset」。越界发现(全部另立单,本 PR 一处未改)
按 Prime Directive #10 逐条立单,均未指派:
packages/runner/vite.config.ts的别名表漏了 5 个源码实际 import 的工作区包,照 runner.mdx 的 "From Source"(install → dev,无构建步骤)走必然 500。与 console-starter 的 vite 别名表漏了 5 个源码实际 import 的工作区包,未先构建就 pnpm dev 得到白屏 #3528 同形态但严重度更高(那边文档已写明先构建,判为finding;这边文档没写),故未打finding,交 PM 定级。createRunner()程序化 API、runner.config.js),外加一条 404 的文档链接 #3576 —— README 的createRunner()程序化 API 与runner.config.js都不存在(该包连main/exports都没有),外加/docs/runner死链。src/schemas+src/components目录、「内置示例 schema」、Package Information 的0.3.1与「not published to npm」(实际17.3.0、private: false)。?api=从地址栏抹掉:刷新/分享该 URL 会静默退回空的本地打包加载器 #3578 —— 站内导航把?api=从地址栏抹掉,刷新/分享即静默退回空的本地加载器(本 PR 已把该行为如实写成注意事项)。start:app脚本、默认目标 examples/dashboard 不存在、没有任何 example 是 app-data 形状 #3579 ——scripts/start-app.mjs是死入口(无start:app脚本、默认目标不存在、没有 example 是 app-data 形状),标finding。正因为它不能用,本 PR 的文档没有把它写成填充src/app-data/的办法,只说「由你自己复制或软链」。🤖 Generated with Claude Code
https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Generated by Claude Code