chore(console): refresh the vendored objectui pin to bebaebd39ace - #4288
Merged
Conversation
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.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-zhuang
marked this pull request as ready for review
July 31, 2026 03:28
This was referenced Jul 31, 2026
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>
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 free
to 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.
把 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)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)。对wait和boundary_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:这一步证明的是这个 SHA 真的能构建,而不只是比旧的新 —— pin 变更唯一能在本地证伪的就是这一点。
🤖 Generated with Claude Code
https://claude.ai/code/session_01UDhMtxPLLoFaGtdpNA7xTU
Generated by Claude Code