Uh oh!
There was an error while loading. Please reload this page.
chore(deps): upgrade @objectstack/* to 17.0.0-rc.0 - #2950
Merged
Conversation
Move spec/client/formula/lint from ^16.x to ^17.0.0-rc.0. Two groups of v17 changes reach this repo, pulling in opposite directions: the spec pruned surface objectui re-exported, and adopted surface objectui carried locally. Pruned — dead Theme config (objectstack#3494). ThemeSchema dropped `spacing`, `breakpoints`, `logo`, `density`, `wcagContrast`, `rtl`, `touchTarget` and `keyboardNavigation`: authorable but never enforced, so authoring them was already a silent no-op. @object-ui/types re-exported those sub-schemas *by reference* (#2231), so they could not survive the prune without becoming hand-written mirrors — the second de-facto contract AGENTS.md #0.1 forbids. Dropped: the `Spacing`/`Breakpoints`/`DensityMode`/`WcagContrastLevel`/ `ThemeLogo` types, the deprecated `SpacingScale` alias, the matching schemas and `*SchemaType` helpers, and `Theme.spacing`/`.breakpoints`/`.logo`. `mergeThemes` no longer merges the three dropped keys. `generateThemeVars` is untouched — it never emitted them, which is why the audit called them dead. The one real consumer was ThemeProvider setting the favicon from `theme.logo.favicon`; that path is gone, since v17 strips the key at parse and it can never arrive again. The live favicon is unaffected: it comes from operator branding (`getFaviconUrl()`) in the console's index.html, main.tsx, and on route change. List density is also untouched — `useDensityMode` and `rowHeightToDensityMode` use @object-ui/core's own local `DensityMode`. Adopted — ListColumn (objectui#2231). `ListColumnSchema` used to extend the spec with two fields, each tagged "promote upstream rather than grow this extension"; v17 did exactly that. `summary` is now the spec's union([ColumnSummarySchema, ColumnSummaryConfigSchema]) and `prefix` is the spec's ColumnPrefixSchema, so the extension collapses to a plain re-export. `prefix.type` now defaults to 'text' on parse instead of staying undefined. Node 22 is the floor. Every @objectstack package declares engines.node >=22 (objectstack#3825; Node 20 hit EOL 2026-04-30), while this repo claimed >=20 and ran CI on Node 20.x — promising and validating a runtime its own core dependency does not support. engines.node is now >=22, CI runs Node 22.x, and the CI/deployment docs follow. The parity test keeps its teeth: the deleted ThemeLogo assertions are replaced by a guard that the pruned keys stay pruned and that objectui does not re-add local mirrors, and the ListColumn summary check now asserts the shared aggregation vocabulary behaviorally (the spec builds that arm through lazySchema, whose Proxy defeats the old identity check). Verified: pnpm type-check 76/76 green; pnpm test 672/672 files, 7956 tests, 0 failures. Co-Authored-By: Claude <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jul 30, 2026
Closed
os-zhuang added a commit
that referenced
this pull request
Jul 30, 2026
…corrections (#2975) The audit was run against 16.0.0-rc.0; objectui has since moved to 17.0.0-rc.0 (#2950). Re-extracted every enum: of the 30 named `ui/` exports, **zero changed values**. `DensityModeSchema`/`WcagContrastLevelSchema` were removed (resolving a Tier 4 row upstream) and `ChartAggregateFunctionSchema` added. Three corrections, one of them reversing an attribution: 1. `before`/`after` were listed as objectui-local dialect. They are canonical `VIEW_FILTER_OPERATORS` members. The real defect is that the spec's view vocabulary and its AST vocabulary disagree on 8 of 19 members — six masked only by an adapter alias table that happened to be complete for them. 2. "Cheap while spec 16 is still RC" was wrong twice: there is no version window, and RC status is not what makes narrowing risky. Narrowing is loud for new authoring and silent for stored data, and `saveMeta` persists verbatim so the schema's own normalization never reaches the row. 3. The Tier 1/Tier 2 split missed a third outcome — a filter not applied at all, returning a superset. Ranks with Tier 1. Also records that the "objectui resolves two spec versions" finding was a stale-checkout artifact, not a defect, so nobody re-derives it. Refs #2901, objectstack#3948 Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> 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.
spec/client/formula/lintmove from^16.xto^17.0.0-rc.0.Two groups of v17 changes reach this repo, and they pull in opposite directions: the spec pruned surface objectui re-exported, and adopted surface objectui had been carrying locally.
Pruned — dead Theme config (objectstack#3494)
ThemeSchemadroppedspacing,breakpoints,logo,density,wcagContrast,rtl,touchTargetandkeyboardNavigation— authorable but never enforced, so authoring them was already a silent no-op.@object-ui/typesre-exported those sub-schemas by reference (#2231), so they could not survive the prune without becoming hand-written mirrors — exactly the second de-facto contract AGENTS.md #0.1 forbids. Removed from the public surface:Spacing,Breakpoints,DensityMode,WcagContrastLevel,ThemeLogo, and the deprecatedSpacingScalealiasSpacingSchema,SpacingScaleSchema,BreakpointsSchema,ThemeLogoSchema, plus theSpacingSchemaType/BreakpointsSchemaTypehelpersspacing,breakpoints,logomergeThemesno longer merges the three dropped keys.generateThemeVarsis unaffected — it never emitted them, which is why the liveness audit called them dead.The one real consumer
ThemeProviderset the favicon fromtheme.logo.favicon. That path is removed: v17 strips the key at parse, so it could never arrive again. The live favicon is unaffected — it comes from operator branding (getFaviconUrl()), applied in the console'sindex.html,main.tsx, and on route change.List density is also untouched:
useDensityMode/rowHeightToDensityModeuse@object-ui/core's own localDensityMode, which never came from the spec.Adopted — ListColumn (objectui#2231)
ListColumnSchemaused to.extend()the spec with two fields, each carrying a note to promote it upstream rather than grow the extension. v17 did exactly that, so the extension collapsed into a plain by-reference re-export:summary→ the spec'sunion([ColumnSummarySchema, ColumnSummaryConfigSchema]), the same enum ∪{ type, field }formuseColumnSummaryreadsprefix→ the spec'sColumnPrefixSchemaOne behavior change rides along:
prefix.typenow defaults to'text'on parse instead of stayingundefined, so the cell renderer always gets a value.Node 22 is now the floor
Every
@objectstackpackage declaresengines.node: ">=22.0.0"(objectstack#3825; Node 20 reached EOL 2026-04-30). This repo claimed>=20and ran CI on Node 20.x — promising and validating a runtime its own core dependency does not support.engines.nodeis now>=22, CI runs Node 22.x across all 12 workflows, and the CI/deployment docs say so.Tests keep their teeth
Rather than just deleting assertions, coverage was redirected:
ThemeLogoSchemablock is replaced by a guard that the pruned keys stay pruned and that objectui does not re-add local mirrors of them.summarycheck now asserts the shared aggregation vocabulary behaviorally — the spec builds that arm throughlazySchema, whose Proxy resolves.shape.typeto the inner enum and defeats the old identity check.prefixtest pins the compound-cell form and the new'text'default.Versioning
Stays major 17: per AGENTS.md the objectui major tracks
@objectstack's major, which is also 17, and that convention deliberately outranks semver purity — so the removals ship as a minor rather than desyncing the two.Verification
pnpm type-check— 76/76 green (all 39 packages incl. console, data-objectstack, plugin-charts)pnpm test— 672/672 files, 7956 tests, 0 failures on a clean runpnpm linton types/core/react — 0 errorsAlso swept the v17 wire-level changes that a type-check cannot catch (
ChartInteractionzoom/clickAction, SharingRulegroup→team, sharingfull, ApiMethod enum, i18n route shapes): no objectui usage. Thetranslationobjects.convergence (objectstack#3778) needs no change —transformSpecTranslationsalready reads that shape.🤖 Generated with Claude Code