Skip to content

Commit 7adfaec

Browse files
chore(console): move the objectui pin 616df6598b42 → cf153eb2e535, past objectui's stored_expression toast row (objectui#13233), so PR #24778 can land (#24982)
Fixes #24928 Clause-②: no This PR moves the console pin from `616df6598b42` to `cf153eb2e535`: objectui `main` at `cf153eb2e5351505abf3b82fb76bfdc9a841bbde`. That commit carries `8803ca54ac` (objectstack-ai/objectui#13233, objectui#13178), which adds the `stored_expression` row to objectui's `STRIPPED_LINE` in `packages/app-shell/src/providers/writeWarningToast.ts`. It is the newest objectui `main` commit at or after `8803ca54ac` whose objectui **push** `CI` run had concluded `success`, coverage lane included, when the pin moved. With it, the `domain:spec` lane's PR #24778 (#24690) can land without reddening the Console Pin Gate. This PR is not a release act. The Version Packages PR is not touched, and no release workflow is dispatched. No objectui source changed, nothing was written to objectui, and no product code, `.github/workflows/**` or `scripts/build-console.sh` change is in it. **Tier:** not governed. `node scripts/pm/check-governed-merges.mjs --branch claude/issue-24928-objectui-pin` at `a1c663ae62`: "0 of 4 path(s) hit the register (7 surfaces govern objectstack) ... NOT governed", exit 0. Size: 4 files, +87 / -6. ## Choosing the pin - **The green push run.** objectui `CI` (workflow 223145786), run **39483449911**, event `push`, branch `main`, head `cf153eb2e535`, attempt 1, created 2026-10-20T19:26:17Z, completed 19:52:18Z, conclusion **success**. All 31 jobs concluded `success`: `Test (coverage)` and all eight `Test (coverage shard N/8)`, the sixteen `Test (shard N/16)`, `Test`, `Type Check`, `Build & E2E`, `Test (dist pins)`, `Build Docs` and `Changeset Fixed Group Check`. Read off `repos/objectstack-ai/objectui/actions/runs/39483449911/jobs` at 2026-10-20T20:03Z. - **The read at the move** (`actions/workflows/223145786/runs?branch=main&event=push`, 20:03:24Z, re-read 20:04:58Z, just before the bump at about 20:05Z): | objectui `main` commit | push `CI` run | at the move | |:--|:--|:--| | `53dea27afab5` (tip, the commit the PM read) | 39487454858 | in progress, so passed over | | `9e1bff63ad2d` | 39486510889 | in progress, so passed over | | **`cf153eb2e535`** | **39483449911** | **success: the target** | | `5235d6d57b47` | 39479142157 | success | | `8803ca54ac26` (the row) | 39412104445 | success | Re-read at 20:36:19Z: both newer runs have since concluded `success` (`9e1bff63ad2d` at 20:16:10Z, `53dea27afab5` at 20:21:54Z). This PR does not re-choose; see Acceptance notes. The two commits it passes over are `9e1bff63a` (objectstack-ai/objectui#13283) and `53dea27af` (objectstack-ai/objectui#13284), both app-shell fixes. - **Ancestry**, in a full (non-shallow) scratch clone of objectui (`--is-shallow-repository` false), each against `cf153eb2e535`: - `8803ca54ac` (the row) is an ancestor: exit 0; - the old pin `616df6598b42` is an ancestor: exit 0; - `cf153eb2e535` is on `origin/main`: exit 0; - control, the reverse (`cf153eb2e535` an ancestor of `616df6598b42`): exit 1. Range: 69 non-merge commits, 33 of them past `8803ca54ac`. - **The row is in the pin.** `git show cf153eb2e535:packages/app-shell/src/providers/writeWarningToast.ts`: line 145 declares `STRIPPED_LINE: Record` keyed by `DroppedFieldsEvent['reason'] | 'stored_expression'`, and line 173 holds the `stored_expression` entry. - **objectui's own objectstack pin moved in this range:** `.objectstack-sha` `f4755a68a797` → `06cab4849a8a` (objectstack `chore: version packages (#24524)`, an ancestor of this branch's base, exit 0). ## The procedure, as written No shared objectui checkout was written: `/home/user/objectui` is shallow and shared, so every objectui read came from the full scratch clone, which `OBJECTUI_ROOT` names. `build-console.sh` then makes its build worktree from that clone, so its worktree registration lands in the clone, not in the shared checkout. Exit codes were captured before any pipe; the heavy steps ran under `scripts/pm/os-verify-lock.sh`. | step | command | exit | | --- | --- | --- | | bump | `OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh --no-commit cf153eb2e5351505abf3b82fb76bfdc9a841bbde`: "616df6598b42..cf153eb2e535 walks completely", "objectui pin: 616df6598b42 → cf153eb2e535 (on origin/main)", "wrote changeset console-cf153eb2e535.md (@objectstack/console: minor)". `--no-commit` only so the commit carries this repo's trailer pair; the files are the script's | 0 | | build | `pnpm exec turbo run build --filter=@objectstack/client... --concurrency=2` (36/36), then `OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/build-console.sh` (= `pnpm objectui:build`). Lock VERDICT `command-exit 0`, held 931 s | 0 | | manifest | `node scripts/gen-sdui-manifest-node.mjs`: "wrote sdui.manifest.json (107 components, 185019 bytes, sha256 d1fde278ffd6…)", "re-recorded scripts/sdui-manifest.record.json at pin cf153eb2e535 — built-tree .cache/objectui-cf153eb2e535/apps/console, @object-ui/core workspace version 17.7.0" | 0 | | manifest check | `node scripts/check-sdui-manifest.mjs`: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin cf153eb2e535" | 0 | | lockstep, before | `pnpm check:sdui-lockstep`: `[pin-moved]` | 1 | | lockstep record | `OBJECTUI_ROOT=.cache/objectui-cf153eb2e535 pnpm gen:sdui-lockstep` | 0 | | lockstep, after | `pnpm check:sdui-lockstep`: "byte-identical to objectui@cf153eb2e535 ... over 214 grammar line(s) [blob 0131f27cf86d], agrees on all 25 diagnostic code(s) and on the `not-a-container` predicate [blob 76c18fb95d1f]" | 0 | | bump self-test | `pnpm check:objectui-bump`: "bump-objectui self-test PASSED — 20 assertions across 5 cases" | 0 | ## The regenerated files - `.objectui-sha` `616df6598b42…` → `cf153eb2e5351505abf3b82fb76bfdc9a841bbde` (`bump-objectui.sh`). - `.changeset/console-cf153eb2e535.md` (`bump-objectui.sh`, untouched): `@objectstack/console` **minor**, the highest level objectui declared over the range. Counts: 65 releasing of 66 changesets across 69 non-merge commits, 0 breaking (0 declared major, 0 annotated), 1 release-nothing, and 3 commits without a changeset, listed by subject in the changeset. With no breaking entry, the generator wrote no ADR-0087 placeholder, so no line of it is hand-written. - `scripts/sdui-manifest.record.json` (`gen-sdui-manifest-node.mjs`): `objectuiSha` and `modulesRoot` move to the new pin. - `packages/sdui-parser/objectui-lockstep.json` (`gen:sdui-lockstep`): `rev`, `revDate` and `recordedAgainstPin` move. objectui's `packages/sdui-parser/src` is unchanged over the range (`git diff --stat`: empty), and both blobs are unchanged (`0131f27cf86d`, `76c18fb95d1f`), so no parser port is owed. - `sdui.manifest.json` is **not** in the diff: the generator rewrote it byte-identical (107 components, sha256 `d1fde278ffd6…` before and after). ## Proof that the pin carries the row, against PR #24778's spec Staging: PR #24778's head `56cac787cbe5` was fetched (`pull/24778/head`) into a scratch objectstack worktree, installed, and its seven packed packages built (`turbo run build` of the client, formula, lint, sdui-parser and types closures, 36/36, lock VERDICT 0). A second objectui worktree at `cf153eb2e535` was made from the scratch clone, and `OBJECTSTACK_ROOT=PR24778_WORKTREE node scripts/objectstack-pin.mjs build` packed those packages into it ("from ... os-pr24778 (56cac78…)"), then `pnpm install --frozen-lockfile`, exit 0. From `packages/app-shell` there, `@objectstack/spec/data` resolves to the packed copy, and `DroppedFieldsEventSchema.shape.reason.options` reads `["readonly","readonly_when","primary_key","computed","stored_expression"]`. Control: the same probe in this branch's build tree reads the four-member list. **Command,** from the objectui worktree root: `pnpm exec vitest run --maxWorkers=2 --reporter=verbose packages/app-shell/src/providers/writeWarningToast.test.ts`. | leg | spec installed | result | exit | | --- | --- | --- | --- | | A | PR #24778 `56cac787cb` (five reasons) | 20 passed, 1 failed (21) | 1 | | B, control | this branch (four reasons) | 21 passed (21) | 0 | - **`gives every reason the pinned spec declares its own wording (#3935)`**, the test that drives each reason: **passed** on leg A, over all five reasons the PR #24778 spec declares, `stored_expression` included. Passed on leg B too. - **`words reason \`stored_expression\` as a computed value saved in place of the one sent, in en and zh (objectui#13178)`**: passed on both legs. - **The one red on leg A is objectui's designed tripwire,** `reminds the pin bump that carries \`stored_expression\` to retire the widening (objectui#13178)`. It asserts the installed spec does NOT declare `stored_expression`, with the message "the spec pin now declares `stored_expression`: delete `| 'stored_expression'` from STRIPPED_LINE's key type and make spec-symbol-batch6.test.ts's `_ReasonIsTheEnum` pin the five-member union". It fires once objectui's OWN `.objectstack-sha` reaches a spec that declares the arm. It is objectui's suite, and objectstack's Console Pin Gate does not run it. **And the console build against PR #24778's tree, at this pin.** `bash scripts/build-console.sh` run from the PR #24778 worktree with its `.objectui-sha` set to `cf153eb2e535` (a scratch edit) and `OBJECTUI_ROOT` naming the scratch clone: exit 0, lock VERDICT 0. objectui's dependency build ran 34/34, the console's `tsc && vite build` transformed 8966 modules, and `grep -c 'error TS'` over the log is 0. The injection assertion found PR #24778's own text: "present (injected only): ') written with the computed value in place of the caller'", "5 of 5 injected-only descriptions are in the bundle". So the Console Pin Gate's build holds at this pin both before and after PR #24778. ## The Console Pin Gate - **It does not run on this PR or in the merge queue.** `ci.yml`'s `console-pin` job has `github.event_name != 'pull_request' && github.event_name != 'merge_group'` in its `if:`. So the **pre-merge full battery is NOT MEASURED** on GitHub, and the local run below is the pre-merge reading. The CI proof is `main`'s first full-battery run after the merge: this PR changes `.objectui-sha`, so the console-dist cache key misses and that run builds the console fresh at `cf153eb2e535`. - **Local run, as the job runs it,** at `a1c663ae62` (the build itself ran at `af060f0855`; the later commit changes only the two records): install (`pnpm install --frozen-lockfile`, exit 0); the client closure (36/36); `build-console.sh` (exit 0). Deviations from the job: `--concurrency=2` for the closure and for objectui's dependency build, `NODE_OPTIONS=--max-old-space-size=4096`, `OBJECTUI_ROOT` names the full scratch clone where CI shallow-clones, and there is no cache restore, so `CACHE_HIT` is empty. - `build-console.sh`'s `.objectstack-sha` branch ran in order: objectui's own `@objectstack/*` built at its `.objectstack-sha` `06cab4849a8a` as the reference, then "OBJECTSTACK_ROOT is set: packing @objectstack/* from /home/user/objectstack-issue-24928", 7 packages from `af060f0855`, then the frozen install ("Lockfile is up to date"), objectui's dependency build 34/34 (0 cached), and the console's `tsc && vite build` ("8966 modules transformed"). `grep -c 'error TS'`: 0. - Closing checks: "Bundle canary 'import/jobs' present"; "Single-zod canary: exactly one zod version literal {major:4,minor:6,patch:7}" (2261 `assets/*.js` read); "Console bundle carries THIS tree's @objectstack/spec, and only it (vendored: @objectstack/spec of objectui's own build of objectstack 06cab48)", "2 of 2 injected-only descriptions are in the bundle"; "@objectstack/console dist ready (65684 KB) from objectui@cf153eb2e535". - "Assert a real Console dist is in place": `index.html`, `assets/` and the `.objectui-sha` stamp are present. - `pnpm check:console-sha`: "Console dist matches the objectui pin (objectui@cf153eb2e535).", exit 0. - `pnpm check:console-injection --require-stamp`: self-test 100 assertions, then "@objectstack/spec: the dist carries this tree's copy, and not the published one.", exit 0. ## Checklist-cited objectui specs whose blob changes over `616df6598b42..cf153eb2e535` Read, not edited: every `*.spec.ts`, `*.test.ts` and `*.test.tsx` path cited anywhere in `docs/qa/platform-checklist/areas/*.json` (at `origin/main` `3a7a60af8f`), resolved against objectui's tree at both pins. 89 objectui paths resolve, 21 of them the `e2e/live/*.spec.ts` live specs. Each one's blob was compared at the two pins (`git ls-tree -r`): - `packages/app-shell/src/views/setup/PackagedAutomationPage.test.tsx`: `b321640a6100` → `aeb3e5f94e38`. It is cited in `automated.ref` of `automation.setup-packaged-automation-board`, and changed by objectui `673a71c39` (objectstack-ai/objectui#13185) and `5235d6d57` (objectstack-ai/objectui#13279). That is the only one. The other 88 are byte-identical at both pins, every `e2e/live/*.spec.ts` among them: over the range, `e2e/live/` changes only `e2e/live/ci/backend.env`. No checklist file is touched here; the checklist anchor #24579 reads this list. ## Gates Every gate ran at this PR's head `a1c663ae62`, after a workspace build there: `turbo run build --filter='!@objectstack/docs' --concurrency=2`, 76/76, lock VERDICT `command-exit 0`. `packages/runtime/.objectstack` was removed first. Each exit code was captured before any pipe. - `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands`, with no paths, derived **73** commands from 4 paths against merge base `6440cf163`, three-dot. **All 73 exited 0.** - `--ran` over `COMMAND :: exit N` lines: "Run reconciliation — 73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", then "73 derived famil(ies) accounted for — 73 run, 0 NOT-MEASURED (a DERIVED zero — all 73 recorded an exit code and none of them is 3)". Exit 0. - Some of the 73, each exit 0: - `check-adr-0087-registration --base origin/main`: "this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)"; - `check-empty-changeset --base origin/main`: "1 declaring changeset(s) added"; - `check-sdui-manifest.mjs` and its `--self-test`; `pnpm check:sdui-lockstep`; `pnpm check:console-sha`; `pnpm check:console-injection`; - `pnpm check:objectui-changeset`, `pnpm check:published-files`, `pnpm check:pm-changeset-deadline-census`; - `pnpm check:nul-bytes`: "scanned 11523 text file(s) ... no raw ASCII control bytes". - Added outside the derivation: `pnpm check:objectui-bump`, exit 0. - No package source changed, so no package `test` / `typecheck` is owed. `test:repo` is CI's (`Test Core`). - `git merge-tree --write-tree origin/main HEAD` against `origin/main` `3a7a60af8f`: exit 0, clean. None of the four paths is routed to the `os-regen` merge driver (`git check-attr merge`: unspecified), so the local answer is GitHub's too. The three commits `main` gained since the base (#24967, #24972, #24973) touch none of the four files and none of the console build scripts. Inside the seven packed packages they change only `packages/spec/liveness/webhook.json`, `packages/spec/liveness/state-counts/webhook.md` and one `packages/lint` test file, none of them under `dist/`, which is what the console bundles. ## Acceptance notes Observations, not filed: - **The target is the newest green at the move, not at the PR's opening.** At 20:05Z the two newer `main` commits' push runs were still in progress. Both concluded `success` by 20:22Z, after the bump and while the build ran. Moving to `53dea27afab5` instead is a mechanical re-bump plus a rebuild, about 25 minutes of lock. Neither commit (objectstack-ai/objectui#13283, objectstack-ai/objectui#13284) is needed for PR #24778. - **The injection assertion's stale leg has nothing to detect at this pin.** objectui's reference spec (`06cab4849a8a`, 40 commits behind this tree's base) declares no description this tree lacks, so the pin-only pool is 0 and the stamp records `staleDetector: null`. The fresh leg found its witness (2 of 2). At `616df6598b42` both legs had witnesses (16 of 22 and 10 pin-only). This is the script's documented honest case, not a failure. - **The tripwire on leg A above is objectui's to retire** when objectui bumps its own `.objectstack-sha` past PR #24778 (delete `| 'stored_expression'` and widen `_ReasonIsTheEnum`, per the test's own message). Nothing in this repo runs it. - `approvals.record-page-decisions` cites `packages/app-shell/src/views/RecordDetailView.approvalDecisionActions.test.tsx` in its `source`. That file is absent at both pins: objectui `99782f961` deleted it, and that commit is an ancestor of `616df6598b42` (exit 0). Carrier: the checklist anchor #24579. --- _Generated by [Claude Code](https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 78ab647 commit 7adfaec

4 files changed

Lines changed: 87 additions & 6 deletions

File tree

‎.changeset/console-cf153eb2e535.md‎

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
"@objectstack/console": minor
3+
---
4+
5+
Console (objectui) refreshed to `cf153eb2e535`. Frontend changes in this range:
6+
7+
Derived from the changesets objectui declared over the range — 65 releasing of 66 changesets added across 69 non-merge commits; omitted: 1 release-nothing changeset, 3 commits carrying no changeset (they ship no package code).
8+
9+
- **minor** — `NavigationItemSchema` now refuses a navigation entry whose `visible` reads `data` but which declares no `dataSource`, as `@objectstack/spec`'s `NavigationItemSchema` already does… (objectui `8556295f0`)
10+
- **patch** — The permission-set editor no longer keeps the clone notice once the copy is held or saved (objectui#13272). (objectui `cf153eb2e`)
11+
- **patch** — Setup › Packaged automation: the clone result now offers the next steps (objectui#13270). (objectui `5235d6d57`)
12+
- **patch** — The README's "Setup half of an item" now says what objectstack's shipped organization administrator set does on the assignment objects: it creates and removes rows on `sys_user_po… (objectui `b001d211d`)
13+
- **patch** — The package edit dialog (Studio / Setup) now edits a package's `dependencies`. The row is no longer locked once the package exists, and saving sends it to `PATCH /api/v1/packages/… (objectui `36b70c055`)
14+
- **patch** — A row action's `defaultFromRow` param backed by a relation is seeded with the related record's id again, not the whole record (objectui#13271). (objectui `8e649da7d`)
15+
- **patch** — A `kind:'react'` page keeps its own state when its host re-renders (objectui#13268). The page was recompiled whenever it received a new schema object, and the console hands it a f… (objectui `8cd4db497`)
16+
- **patch** — A record drawer stays open on its first open (objectui#13238). On the first open in a page session, the drawer's body is drawn for the first time once the record is read, and its… (objectui `a29f61576`)
17+
- **patch** — Settings pages refuse to save while a visible required setting is empty (objectui#13239). (objectui `1ca759a16`)
18+
- **patch** — The command palette, the inbox and the AI entry ask before they drop a page's unsaved edits (objectui#13253). (objectui `c8833c5b8`)
19+
- **patch** — A category x axis rotates its labels, and cuts them at 12 characters, only when the measured band cannot hold them (objectui#13241). A full-width bar chart now draws a name such a… (objectui `9a4ddb2a9`)
20+
- **patch** — The language menu asks before a switch drops a page's unsaved edits (objectui#13254). The console shell remounts every page on a language change, so switching the language on a pa… (objectui `588d11d2b`)
21+
- **patch** — A settings page loads its namespace when the namespace changes, and no longer when the translation function does (objectui#13254). The load used to re-run on every new translation… (objectui `9a3bcfc7f`)
22+
- **patch** — Opening a collapsed form section keeps keyboard focus on its header the first time too (objectui#13246). (objectui `ff128e366`)
23+
- **patch** — A grid grouped by a `date` or `datetime` field heads each group with the value drawn the way the field's cell draws it, not with the stored string (objectui#13234). (objectui `84b43263f`)
24+
- **patch** — The record's approval history names each step by the label the flow author wrote (objectui#13248). A history row used to draw the step's node id, prettified: "Manager Review" for… (objectui `12cde0492`)
25+
- **patch** — The Audit Log's Action, Actor, From and To filters are named by their visible labels (objectui#13224). (objectui `039e0b972`)
26+
- **patch** — The console's own menus ask before they drop a page's unsaved edits (objectui#13231). (objectui `e077b8a4e`)
27+
- **patch** — `Combobox` finds an option by its visible label, not only by its value (objectui#13229). (objectui `3650d9455`)
28+
- **patch** — The console's remediation overlay offers "Stop impersonating" on an impersonation session (objectui#13208). The overlay covers the whole console, the impersonation banner included… (objectui `e70c21d43`)
29+
- **patch** — A collapsible form section header can be opened from the keyboard (objectui#13220). (objectui `4b92c5a91`)
30+
- **patch** — Flow designer: the cycle, repeated-connection and missing-boundary-host Problems, the canvas edge hover titles, the simulator's node list, edge rows and steps, and the nested insp… (objectui `80843d05c`)
31+
- **patch** — A list view fetches a shown column's declared `dependsOn` siblings, so a faced column can read them off the row (objectui#13214). (objectui `f22b980cb`)
32+
- **patch** — Setup → Datasources draws a refusal as a refusal (objectui#13207). (objectui `878a4af38`)
33+
- **patch** — Import wizard: the result screen now says what happened. An import that imported every row still shows the green check and "Import Complete"; one that imported some rows but skipp… (objectui `7c05f210d`)
34+
- **patch** — The approvals Recall button no longer calls a submitter's own recall an override, and an admin recalling someone else's request is told what a recall does (objectui#13225). `appro… (objectui `06be3969e`)
35+
- **patch** — Each per-type group heading in the Studio's Pending changes sheet names its type the way the summary line does, in the user's locale: two flow drafts head their group "2 flows" in… (objectui `24001c181`)
36+
- **patch** — Record drawers open on their first field (objectui#13219), as record dialogs do since objectui#13130. (objectui `ab4e4d7d2`)
37+
- **patch** — The flow designer names a node by its label in three more places (objectui#13200), through the same rule as objectui#13143: the author's label, else the palette label of the node'… (objectui `599a8a54b`)
38+
- **patch** — fix(app-shell): the save warning has a sentence of its own for a value a stored expression replaced (objectui `8803ca54a`)
39+
- **patch** — An empty `object-grid` no longer tells the user to adjust filters they never set (objectui#13142). (objectui `f0300beff`)
40+
- **patch** — Settings pages: when the server refuses a save field by field, the toast now names the refused settings by the labels their rows show, for example "1 setting needs attention: Defa… (objectui `52907d7d4`)
41+
- **patch** — Studio's list-view panel names the view by its display name, not its machine name (objectui#13151). (objectui `d4d9ddbec`)
42+
- **patch** — The draft preview bar promises sample data on publish only when publishing will load some (objectui#13140). (objectui `42bd92650`)
43+
- **patch** — An admin overriding an approval REASSIGN is now told what a reassign does (objectui#13164). The approvals action bar gave every override lever the decision sentence — "it finalise… (objectui `58798eca8`)
44+
- **patch** — Keyboard access to the console: a "Skip to content" link, and record dialogs that open on their first field (objectui#13130). (objectui `9eb14790a`)
45+
- **patch** — The Audit Log's Action filter offers the actions the server declares for `sys_audit_log.action` (objectui#13175). (objectui `da307ef4a`)
46+
- **patch** — The Studio's Pending changes summary agrees each type with its count: "2 items · 2 flows", "4 items · 1 flow · 3 views". Known metadata types read through a new `preview.changes.t… (objectui `f466b0ac7`)
47+
- **patch** — Studio form designer: each field card's type tag now names the type the way the type picker and the field inspector do (objectui#13148). A Picklist field read "Status SELECT" on t… (objectui `d72204599`)
48+
- **patch** — Create View dialog: a view type the object cannot support now says why on its card ("This object has no field that can serve as …" or "This object exposes no dataset to chart."),… (objectui `5c12dcd16`)
49+
- **patch** — fix(app-shell): Setup › Packages draws its Actions column only over rows that carry an action, and the package sheet wraps its values at words (objectui#13166) (objectui `8d4e45376`)
50+
- **patch** — zh-CN: Studio home "新建软件包(可写 base)" now reads "新建软件包(可写基座)", and the duplicate-package tooltip no longer quotes "duplicate base" in English — both reuse the table's existing term… (objectui `2af42d9e5`)
51+
- **patch** — The draft preview bar's count follows a runtime view-config Save or Publish without a reload (objectui#13139). (objectui `7d497de38`)
52+
- **patch** — Home's pending-drafts row names the package its drafts share by the name Studio shows for it, not by its id (objectui#13136). (objectui `2782e6d24`)
53+
- **patch** — A settings page asks before it lets unsaved edits go (objectui#13163). (objectui `7a5f26715`)
54+
- **patch** — The flow designer names a node by the name its author gave it, not by its id, in three places that used to print the id (objectui#13143): (objectui `19b4f6490`)
55+
- **patch** — Studio's field pickers no longer offer the columns the platform injects and hides (objectui#13152). (objectui `5666e1934`)
56+
- **patch** — Lookup quick-picker: the preview line under each option no longer cuts a badge to its first letter (objectui#13123). A column drawn as a badge (a `select`, `status`, `radio`, `mul… (objectui `5129caad9`)
57+
- **patch** — The calendar header's date title no longer clips at phone widths (objectui#13149). At 390px the day view's title was cut by the container edge ("Tuesday, October 20, 2") with no e… (objectui `3cec0901f`)
58+
- **patch** — Studio's flow header no longer clips its meta mid-word (objectui#13135). With the Properties panel open, "Trigger: … · Status: … · Run as: …" was cut off at the edge of the header… (objectui `05e3f34b4`)
59+
- **patch** — The Pending changes sheet's field rows lead with the field's label, and no longer list a column the platform injected and hides as a change the author made (objectui#13125). (objectui `e81a37cfd`)
60+
- **patch** — Studio's Data rail points at its own "+" when a package has no objects (objectui#13127). The rail's empty sentence read "No objects yet — create one below to start", but the rail… (objectui `c9cb89662`)
61+
- **patch** — Advanced chart axis tick labels now use the theme's muted foreground instead of recharts' default `#666`, so they stay readable on dark cards (objectui#13129). Every axis the adva… (objectui `5115c1f08`)
62+
- **patch** — Flow canvas: a connection that skips a node is drawn around it (objectui#13144). (objectui `768960e38`)
63+
- **patch** — Studio's New package dialog no longer calls the package "project-scoped" (objectui#13126). ObjectStack renamed project to environment (ObjectStack ADR-0006), and the dialog is not… (objectui `7e6282225`)
64+
- **patch** — The Audit Log's Object filter is picked from the served objects instead of typed (objectui#13165). (objectui `c209c933d`)
65+
- **patch** — At phone width the console's floating create button no longer covers the last card of a list (objectui#13134). (objectui `aaa1296f9`)
66+
- **patch** — A finished import no longer says "Review data before importing." under its result (objectui#13124). (objectui `9840695f6`)
67+
- **patch** — The Packages sheet offers no write action on a read-only package (objectui#13157). It gated its actions on the package's `scope` being `system` or `cloud`, so a project-scoped or… (objectui `f7aac4ce7`)
68+
- **patch** — The inbox header's breakdown line agrees in number: "1 notification" and "1 pending approval", no longer "1 notifications" and "1 pending approvals" (objectui#13133). (objectui `74e37aa2c`)
69+
- **patch** — Setup › Packaged automation no longer shows "On" for a packaged flow that does not run (objectui#13159). When the engine reports a flow as enabled but not armed — the automation s… (objectui `673a71c39`)
70+
- **patch** — On phone-width screens, each record card in a grid is now titled by the object's declared `nameField`, not by the view's first column (objectui#13150). (objectui `5a8d40f53`)
71+
- **patch** — A settings value can go back to unset, and an override back to the inherited value (objectui#13145). (objectui `961b69f97`)
72+
- **patch** — A lookup's quick-picker takes the choice after a search, and a single-select lookup's trigger shows the picked record (objectui#13162). (objectui `f48a4d554`)
73+
- **patch** — Flow designer: adding a branch to a Decision no longer overwrites the condition of its existing connection (objectui#13138). (objectui `186b78d8f`)
74+
75+
**In this console build, declared nowhere** — objectui merged 3 commits in this range with no `.changeset/*.md`. The code is inside the pin above and ships here, but nothing upstream declared them, so they appear in no objectui CHANGELOG and in no entry above. Listed by subject rather than counted, because a count cannot tell a dependency bump from a form-behaviour change (objectstack#6174); the upstream gate that would prevent this is objectui#3387.
76+
77+
- _(no changeset)_ docs(console): teach a navigation visible that both validators accept (#13281) (objectui `7f6a2dd95`)
78+
- _(no changeset)_ chore(release): exit Changesets pre mode (`next`), so the next version pass renders objectui's 18.0.0 GA (#13111) (objectui `cbc312d78`)
79+
- _(no changeset)_ perf(scripts): the body-dialect census skips the pinned @objectstack build and parses only what can hold a counted node (objectui#13210) (#13250) (objectui `e53763630`)
80+
81+
objectui range: `616df6598b42...cf153eb2e535`

‎.objectui-sha‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
616df6598b429d2b3687301a2041198928e68971
1+
cf153eb2e5351505abf3b82fb76bfdc9a841bbde

‎packages/sdui-parser/objectui-lockstep.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
],
77
"objectui": {
88
"repo": "https://github.com/objectstack-ai/objectui.git",
9-
"rev": "616df6598b429d2b3687301a2041198928e68971",
10-
"revDate": "2026-10-20T07:14:48+00:00",
9+
"rev": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
10+
"revDate": "2026-10-20T19:13:54+00:00",
1111
"source": "packages/sdui-parser/src",
1212
"files": [
1313
"packages/sdui-parser/src/body-dialect.ts",
@@ -21,7 +21,7 @@
2121
"packages/sdui-parser/src/validate.ts"
2222
]
2323
},
24-
"recordedAgainstPin": "616df6598b429d2b3687301a2041198928e68971",
24+
"recordedAgainstPin": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
2525
"grammarRegion": {
2626
"file": "packages/sdui-parser/src/parse.ts",
2727
"delimiter": "/* ---------------------- the JS literal subset (#6614) ---------------------- */",

‎scripts/sdui-manifest.record.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
"a pin bump without regeneration goes RED there — that is the anti-rot half of the freshness gate.",
1212
"Regenerate + re-record: pnpm objectui:build && node scripts/gen-sdui-manifest-node.mjs"
1313
],
14-
"objectuiSha": "616df6598b429d2b3687301a2041198928e68971",
14+
"objectuiSha": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
1515
"source": "built-tree",
16-
"modulesRoot": ".cache/objectui-616df6598b42/apps/console",
16+
"modulesRoot": ".cache/objectui-cf153eb2e535/apps/console",
1717
"objectuiWorkspaceVersion": "17.7.0",
1818
"generator": "scripts/gen-sdui-manifest-node.mjs",
1919
"generatedAt": "2026-10-20",

0 commit comments

Comments
 (0)