feat(types)!: adopt @objectstack/spec 15; drop value-erased spec/ui …Schema re-exports (#2561)#2589
Merged
Merged
Conversation
…chema re-exports (#2561) Decision (a) from #2561: the ~84 zod-validator names (DndConfigSchema, SpecFormViewSchema, ThemeModeSchema, ...) sat inside 'export type' blocks, so importing any of them as a value from @object-ui/types silently yielded undefined at runtime. They are removed from the public surface instead of converted to value re-exports; consumers needing the runtime validators import @objectstack/spec/ui directly. Inferred types unchanged; genuine value re-exports (defineStack, ObjectStackSchema, SpecReportSchema, ...) keep working. Guardrail test pins the contract both at runtime and via source scan. Bump @objectstack/spec ^14.6.0 -> ^15.0.1 across all 14 workspace package.json files. The floor is 15.0.1: ADR-0089 D3a's .strict().transform() pipes crashed z.toJSONSchema over spec's lazySchema proxies, breaking Studio's spec-derived Page/View inspector schemas (fixed upstream in framework#3021). New view-schema.test.ts pins the previously-untested View inspector derivation. Closes #2561 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
❌ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
…es the framework#3021 fix) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
❌ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
…reexports # Conflicts: # packages/plugin-view/package.json # pnpm-lock.yaml
…fix release) framework#3021's z.toJSONSchema/lazySchema-proxy fix shipped in @objectstack/spec 15.1.1, not 15.1.0. Raise the floor across the workspace to ^15.1.1 so the Studio Page/View inspector derivation is guaranteed the fix, and refresh the lockfile to 15.1.1. Align the changeset and types README narrative. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Cijq425rfCKbyvFthNWTD
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
os-zhuang
marked this pull request as ready for review
July 17, 2026 10:14
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.
Implements both halves of #2561 as one coherent types-package PR.
1.
/uire-export shape — decision (a)Evidence gathered before deciding: zero consumers of the ~84
…Schemanames anywhere in this repo (packages/apps/content, value- or type-level), no sibling-repo package depends on@object-ui/types, and since the names sat insideexport typeblocks they were value-erased — any import would have receivedundefinedat runtime, so no working consumer can exist. Went with (a): the schema names are dropped from the public surface; the inferred types (DndConfig,SpecFormView, …) are unchanged and the genuine value re-exports (defineStack,ObjectStackSchema,SpecReportSchema, …) keep working.BreakpointColumnMapSchema/BreakpointOrderMapSchemaare dropped without a type replacement (spec exports no companion inferred type).theme.ts'sThemeModeSchemawas the same class of bug and is dropped too.Guardrail:
packages/types/src/__tests__/spec-ui-schema-reexports.test.tspins the contract three ways — the dropped names are not runtime-exported, the genuine value exports stay defined, and a source scan fails if any spec/ui zod value ever reappears inside anexport typeblock.2. Spec pin
^14.6→^15.1.1All 14 workspace
package.jsons + lockfile. The issue predicted the bump was low-risk modulo strict-mode fixture fallout — validation found something better: ADR-0089 D3a's.strict().transform(…)pipes crashz.toJSONSchemaover spec's lazySchema proxies (Cannot set properties of undefined (setting 'ref')), which broke Studio's spec-derived Page inspector schema (caught bypage-schema.test.ts) and silently degraded the View inspector (no test existed). Root cause + fix upstream: objectstack-ai/objectstack#3021, which shipped in@objectstack/spec@15.1.1(15.1.0 predates it). Hence the 15.1.1 floor.New
view-schema.test.tspins the previously-untested View-inspector derivation.Verification
@object-ui/typestsc --noEmitclean under spec 15.1.1; guardrail test + full types suite 86 passed.@objectstack/spec@15.1.1(not a dist overlay).Status
@objectstack/spec@15.1.1published^15.1.1across all 14 package.jsons,mainmerged in, full suite re-run green → ready for reviewCloses #2561. Refs #2545, objectstack-ai/objectstack#2998.
🤖 Generated with Claude Code