Skip to content

chore(console): refresh the vendored objectui pin to bebaebd39ace - #4288

Merged
os-zhuang merged 1 commit into
mainfrom
claude/amazing-darwin-2z3fab
Jul 31, 2026
Merged

chore(console): refresh the vendored objectui pin to bebaebd39ace#4288
os-zhuang merged 1 commit into
mainfrom
claude/amazing-darwin-2z3fab

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

把 objectui#3082 落进平台 —— #4045 客户端那一半。服务端两半已由 #4210 / #4228 合并,但 Studio 里的表单来自 vendored console,不刷新 pin 就看不到。

⚠️ 审阅时请注意范围:这不是「带一个修复」

框架钉的是 96ee72e落后 objectui main 76 个提交。所以本 PR 把 vendored console 整体前进这 76 个提交。

没有更小的选项:vendored build 是单个 objectui commit 的快照,只能钉一个 SHA;改钉 #3082 自己的合并提交而非 tip,也只少 3 个。要更小的粒度只能分批推进 pin(多个 PR,且每个中间 SHA 都得能构建)。

changeset 里列全了这 76 条。除 #4045 的修复外,值得单独点名的功能与行为变更:

提交 为什么值得注意
feat(app-shell): the console mounts the notification surfaces (#3075) 通知面首次挂载进 console
feat(notifications): each spec displayType gets its own presentation (#3071) 新的呈现分支
feat(sdui): curate the page:*, element:* and action:* families into the public contract (#3069) 公共契约扩面
fix(plugin-form): form edit saves send If-Match and surface 409 conflicts (#3060) 并发写行为变更 —— 原为静默覆盖
fix(list): exporting a searched list no longer downloads the unsearched superset (#3078) 导出结果集变了

changeset 已按 @objectstack/console: minor 打标,与范围相符。

本 PR 修的那一条(#4045 客户端半)

FlowNodeInspector 原本 serverFields ?? fieldsForNodeType(type) —— 发布了 configSchema整表替换手写字段组。但 configSchema 按契约只描述 node.config,所以替换会删掉根在别处的 18 个编辑器:connectorConfig.*(3)、waitEventConfig.*(5)、boundaryConfig.*(6)、顶层 timeoutMs(4)。对 waitboundary_event 而言那就是它们的全部契约。

connector_action 已经这样失效过一次(#4210 撤回了那份错位 schema)。objectui#3082 改成按「根」拆分归属,从根上堵住。

变更内容

tracked diff 只有 2 个文件 —— .objectui-sha 与自动生成的 changeset。packages/console/dist 是 gitignored(发布流水线按 .objectui-sha 重建)。

验证

本地仍然跑了完整构建(scripts/build-console.sh)—— 它在钉住的 SHA 上另建 objectui worktree、构建 @object-ui/console、并断言 framework-client 的 bundle canary:

✓ Bundle canary 'import/jobs' present — framework client is in the bundle.
✓ @objectstack/console dist ready (45900 KB) from objectui@bebaebd39ace

这一步证明的是这个 SHA 真的能构建,而不只是比旧的新 —— pin 变更唯一能在本地证伪的就是这一点。

🤖 Generated with Claude Code

https://claude.ai/code/session_01UDhMtxPLLoFaGtdpNA7xTU


Generated by Claude Code

Lands objectui#3082 in the platform — the flow inspector no longer lets a
published `configSchema` delete a node's sibling-block editors (#4045). The
server half of that fix shipped in #4210/#4228; this is what puts the client
half in front of an author.

Scope note for review: the pin was 76 commits stale (96ee72e, and objectui has
been landing steadily), so this advances the vendored console by that whole
range, not by one fix. There is no smaller option — the vendored build is a
snapshot of a single objectui commit, and pinning #3082's own merge commit
instead of the tip would drop only 3 of the 76. The generated changeset
enumerates the range; beyond the #4045 fix it carries real feature and
behaviour work, notably the notification surfaces mounting in the console,
per-displayType notification presentation, the curated page:*/element:*/action:*
SDUI contract, If-Match on form edit saves (409 instead of a silent overwrite),
and searched-list export no longer downloading the unsearched superset.

`packages/console/dist` is gitignored — the release pipeline rebuilds it from
.objectui-sha — so the tracked diff is the pin plus its changeset. The build
was run locally anyway (`scripts/build-console.sh`): it worktrees objectui at
the pinned SHA, builds @object-ui/console, and asserts the framework-client
bundle canary, which is what proves the SHA is actually buildable rather than
merely newer.
@vercel

vercel Bot commented Jul 31, 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)
objectstack Ignored Ignored Jul 31, 2026 3:13am

Request Review

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling and removed size/s labels Jul 31, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review July 31, 2026 03:28
@os-zhuang
os-zhuang merged commit 29e5a0e into main Jul 31, 2026
15 checks passed
@os-zhuang
os-zhuang deleted the claude/amazing-darwin-2z3fab branch July 31, 2026 03:29
os-zhuang added a commit that referenced this pull request Jul 31, 2026
)

`.objectui-sha` is the single source of truth for the vendored Console SPA:
release.yml reads it, clones objectui at that commit, builds
`@object-ui/console` and copies the dist into `packages/console/`. Editing that
one line replaces the entire frontend the platform ships — and nothing on the
PR side ever built it.

The pin appeared in exactly two workflows, neither a gate: release.yml
(post-merge, on the main push) and showcase-smoke.yml (manual + nightly, whose
own header says "it never gates PRs"). It is also a root dotfile, so it matched
neither of ci.yml's `core` and `docs` filters — #4288 moved the pin 76 commits
with six of fourteen checks skipped, including Build Core, Test Core, Build
Docs and the Dogfood gate. A SHA that cannot build reached `main` green and
would have surfaced at publish time; the only thing between the two was the
author remembering to run `scripts/build-console.sh` locally.

Adds ci.yml's `Console Pin Gate` — a `console` paths filter over
`.objectui-sha`, `scripts/build-console.sh` and the two files that gate them,
plus a job that builds `@object-ui/console` at the pin against this tree's
`@objectstack/client` and then runs `pnpm check:console-sha`.

Two details that keep it honest rather than merely green:

- It restores `packages/console/dist` under release.yml's existing cache key
  (`hashFiles('.objectui-sha', 'scripts/build-console.sh')`), so only a pin the
  repo has never built misses — and a miss is exactly when the gate has work to
  do. Watching the workflow and the drift guard therefore costs about a minute,
  not a full vite build.
- The restore/save pair is split, where release.yml uses the combined action,
  because the combined post-step saves even when the job failed.
  `build-console.sh` writes the SHA stamp before it asserts the bundle canary,
  so a canary failure leaves a stamped-but-broken dist that would be cached,
  restored, then waved through the stamp check. Saving only once every
  assertion is green is what lets a restored dist carry the same guarantees as
  a freshly built one. A separate step asserts a real dist is on disk first,
  since `check:console-sha` deliberately exits 0 when there is no dist at all.

Scope, stated plainly: this proves the pinned SHA builds. It does not cover a
`packages/client` change breaking the injected-client bundle — that input lives
under `packages/**`, and watching it here would rebuild the console on a large
fraction of every PR. release.yml remains the only check for that direction.


Claude-Session: https://claude.ai/code/session_0165VP1PnZDTvBrKwjC7jm3D

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants