From 2ffe0ebe2534d8698e813f6630e6b74450fc27c0 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Tue, 13 Oct 2026 00:23:53 -0500 Subject: [PATCH] Prepare v0.21.1 release --- CHANGELOG.md | 25 ++++++++++++++++++++-- apps/web/content/docs/changelog.mdx | 22 +++++++++++++++++++ apps/web/tests/fixtures/docs-baseline.json | 6 +++--- packages/codegen/package.json | 2 +- packages/core/package.json | 2 +- packages/devtools-react/package.json | 2 +- packages/devtools-solid/package.json | 2 +- packages/devtools-svelte/package.json | 2 +- packages/devtools-vue/package.json | 2 +- packages/devtools/package.json | 2 +- packages/directives/package.json | 2 +- packages/image/package.json | 2 +- packages/ink/package.json | 2 +- packages/jotai/package.json | 2 +- packages/mcp/package.json | 2 +- packages/next/package.json | 2 +- packages/react-email/package.json | 2 +- packages/react-native/package.json | 2 +- packages/react-pdf/package.json | 2 +- packages/react-three-fiber/package.json | 2 +- packages/react/package.json | 2 +- packages/redux/package.json | 2 +- packages/remotion/package.json | 2 +- packages/shadcn-svelte/package.json | 2 +- packages/shadcn/package.json | 2 +- packages/solid/package.json | 2 +- packages/svelte/package.json | 2 +- packages/tanstack-start/package.json | 2 +- packages/vue/package.json | 2 +- packages/xstate/package.json | 2 +- packages/yaml/package.json | 2 +- packages/zustand/package.json | 2 +- 32 files changed, 77 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f78ed4c..a3203c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,31 @@ # Changelog -## 0.21.0 +## 0.21.1 +### Bug Fixes + +- **Dotted form values:** Preserve literal emails, URLs, and version strings in form value lookups instead of treating them as missing state paths (#353) +- **Numeric validation:** Reject partially numeric strings such as `"123abc"`, empty strings, and whitespace-only strings instead of accepting them as numbers (#389) +- **Schema type inference:** Infer `s.any()` fields as `any`, matching `z.any()`, so validated specs remain assignable to `Spec` without casts (#390) + +### Documentation + +- Migrated the **docs site** to Geistdocs while preserving public URLs, page content, and anchors (#340) +- Updated **native WebMCP discovery and search** with the Geistdocs MCP adapter (#363) + +### Contributors + +- @ctate +- @Railly +- @fix2015 +- @kevin9327 +- @tmchow + + +## 0.21.0 + ### New Features - **TanStack Start renderer:** Added `@json-render/tanstack-start` for JSON-defined applications with file-based routes, reusable layouts, SSR loaders, head metadata, prerender paths, client navigation, and route fallbacks (#334) @@ -19,7 +41,6 @@ - @ctate - @Railly - ## 0.20.0 diff --git a/apps/web/content/docs/changelog.mdx b/apps/web/content/docs/changelog.mdx index dc65b3fa..f93d3fa8 100644 --- a/apps/web/content/docs/changelog.mdx +++ b/apps/web/content/docs/changelog.mdx @@ -4,6 +4,28 @@ title: "Changelog" Notable changes and updates to json-render. +## v0.21.1 + +October 13, 2026 + +### Fixed: Dotted Form Values + +Form value lookups now preserve literal emails, URLs, and version strings instead of treating them as missing state paths. + +### Fixed: Numeric Validation + +The `numeric` validator now rejects partially numeric strings such as `"123abc"`, empty strings, and whitespace-only strings instead of accepting them as numbers. + +### Fixed: Schema Type Inference + +`s.any()` fields now infer as `any`, matching `z.any()`, so validated specs remain assignable to `Spec` without casts. + +### Improved: Documentation + +Migrated the docs site to Geistdocs while preserving public URLs, page content, and anchors. Updated native WebMCP discovery and search with the Geistdocs MCP adapter. + +--- + ## v0.21.0 September 18, 2026 diff --git a/apps/web/tests/fixtures/docs-baseline.json b/apps/web/tests/fixtures/docs-baseline.json index 40dc5ceb..1829adcf 100644 --- a/apps/web/tests/fixtures/docs-baseline.json +++ b/apps/web/tests/fixtures/docs-baseline.json @@ -2139,9 +2139,9 @@ "title": "Changelog", "metadataTitle": "Changelog | json-render", "prefix": "import { pageMetadata } from \"@/lib/page-metadata\"\nexport const metadata = pageMetadata(\"docs/changelog\")\n\n# Changelog\n", - "sourceSha256": "645da4f33e85ac7bcb1642100bb0bde339dd2976c29f8501317f296c308e645e", - "bodySha256": "54a0b41153dd3afd0a0c69ef4c19575978615420eaf15075952b5c317b6a6b1c", - "markdownSha256": "73fa2d642e3235a7841b196625b948db486473c24c41deec1dbba07583706e2b", + "sourceSha256": "ad86126e05152567880b659abff2b27d88cc7b696d27b8c6640dda13c38dc9c3", + "bodySha256": "586921975f057696b57045a41fbdeba5d4f469a48592ea604f0262d65be3b74b", + "markdownSha256": "3836699e187adc31520d62b168b1f921b7f9df4272798ebc28d90bc76272b063", "headings": [ { "title": "v0.21.0", diff --git a/packages/codegen/package.json b/packages/codegen/package.json index 192a36f5..73d1e18f 100644 --- a/packages/codegen/package.json +++ b/packages/codegen/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/codegen", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Utilities for generating code from json-render UI trees", "keywords": [ diff --git a/packages/core/package.json b/packages/core/package.json index c542a3bb..0dd10d84 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/core", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "JSON becomes real things. Define your catalog, register your components, let AI generate.", "keywords": [ diff --git a/packages/devtools-react/package.json b/packages/devtools-react/package.json index 3cb0ff2a..6bce8ea2 100644 --- a/packages/devtools-react/package.json +++ b/packages/devtools-react/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/devtools-react", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React adapter for @json-render/devtools. Drop-in component.", "keywords": [ diff --git a/packages/devtools-solid/package.json b/packages/devtools-solid/package.json index ab20f0b6..1ba13a9d 100644 --- a/packages/devtools-solid/package.json +++ b/packages/devtools-solid/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/devtools-solid", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "SolidJS adapter for @json-render/devtools. Drop-in component.", "keywords": [ diff --git a/packages/devtools-svelte/package.json b/packages/devtools-svelte/package.json index bc8cd8d4..26497858 100644 --- a/packages/devtools-svelte/package.json +++ b/packages/devtools-svelte/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/devtools-svelte", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Svelte adapter for @json-render/devtools. Drop-in component.", "keywords": [ diff --git a/packages/devtools-vue/package.json b/packages/devtools-vue/package.json index 7c90c7ef..1d1096be 100644 --- a/packages/devtools-vue/package.json +++ b/packages/devtools-vue/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/devtools-vue", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Vue adapter for @json-render/devtools. Drop-in component.", "keywords": [ diff --git a/packages/devtools/package.json b/packages/devtools/package.json index 17df81f6..5b0c5c83 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/devtools", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Framework-agnostic devtools core for json-render: event store, panel UI, picker, stream taps.", "keywords": [ diff --git a/packages/directives/package.json b/packages/directives/package.json index 0e7a4fcd..905fd1ca 100644 --- a/packages/directives/package.json +++ b/packages/directives/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/directives", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Pre-built directives for @json-render/core — $format, $math, $concat, $count, $truncate, $pluralize, $join, and $t (i18n).", "keywords": [ diff --git a/packages/image/package.json b/packages/image/package.json index c033b9a4..fbef4968 100644 --- a/packages/image/package.json +++ b/packages/image/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/image", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Image renderer for @json-render/core. JSON becomes SVG and PNG images via Satori.", "keywords": [ diff --git a/packages/ink/package.json b/packages/ink/package.json index 7e3e703e..75c632f6 100644 --- a/packages/ink/package.json +++ b/packages/ink/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/ink", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Ink terminal renderer for @json-render/core. JSON becomes terminal UIs.", "keywords": [ diff --git a/packages/jotai/package.json b/packages/jotai/package.json index 87c11bfd..b1f11581 100644 --- a/packages/jotai/package.json +++ b/packages/jotai/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/jotai", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Jotai adapter for json-render StateStore", "keywords": [ diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 31ce7318..92591cd2 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/mcp", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "MCP Apps integration for @json-render/core. Serve json-render UIs as interactive MCP Apps in Claude, ChatGPT, Cursor, and VS Code.", "keywords": [ diff --git a/packages/next/package.json b/packages/next/package.json index 31300976..ec459856 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/next", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Next.js renderer for @json-render/core. JSON becomes full Next.js applications with routes, layouts, metadata, and SSR.", "keywords": [ diff --git a/packages/react-email/package.json b/packages/react-email/package.json index 557c3aae..824313b4 100644 --- a/packages/react-email/package.json +++ b/packages/react-email/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/react-email", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React Email renderer for @json-render/core. JSON becomes HTML emails.", "keywords": [ diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 526e4ecc..ca3424f2 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/react-native", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React Native renderer for @json-render/core. JSON becomes React Native components.", "keywords": [ diff --git a/packages/react-pdf/package.json b/packages/react-pdf/package.json index f97eeb3b..27186d02 100644 --- a/packages/react-pdf/package.json +++ b/packages/react-pdf/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/react-pdf", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React PDF renderer for @json-render/core. JSON becomes PDF documents.", "keywords": [ diff --git a/packages/react-three-fiber/package.json b/packages/react-three-fiber/package.json index 2363846d..c70c6874 100644 --- a/packages/react-three-fiber/package.json +++ b/packages/react-three-fiber/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/react-three-fiber", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React Three Fiber renderer for @json-render/core. JSON becomes 3D scenes.", "keywords": [ diff --git a/packages/react/package.json b/packages/react/package.json index a1bb0860..70eb8fd7 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/react", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "React renderer for @json-render/core. JSON becomes React components.", "keywords": [ diff --git a/packages/redux/package.json b/packages/redux/package.json index 758ce0ea..0f22bb9f 100644 --- a/packages/redux/package.json +++ b/packages/redux/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/redux", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Redux adapter for json-render StateStore", "keywords": [ diff --git a/packages/remotion/package.json b/packages/remotion/package.json index 5cf92440..9d9af21f 100644 --- a/packages/remotion/package.json +++ b/packages/remotion/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/remotion", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Remotion renderer for @json-render/core. JSON becomes video compositions.", "keywords": [ diff --git a/packages/shadcn-svelte/package.json b/packages/shadcn-svelte/package.json index 6086e7ad..b9ab93c1 100644 --- a/packages/shadcn-svelte/package.json +++ b/packages/shadcn-svelte/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/shadcn-svelte", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "shadcn-svelte component library for @json-render/svelte. JSON becomes beautiful Tailwind-styled Svelte components.", "keywords": [ diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 21221e62..f5074dee 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/shadcn", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "shadcn/ui component library for @json-render/core. JSON becomes beautiful Tailwind-styled React components.", "keywords": [ diff --git a/packages/solid/package.json b/packages/solid/package.json index dfc2a11c..136f31b4 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/solid", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "SolidJS renderer for @json-render/core. JSON becomes Solid components.", "keywords": [ diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 9da28373..1b18d2a6 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/svelte", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Svelte 5 renderer for @json-render/core. JSON becomes Svelte components.", "keywords": [ diff --git a/packages/tanstack-start/package.json b/packages/tanstack-start/package.json index 37e97fff..c2eb5e4c 100644 --- a/packages/tanstack-start/package.json +++ b/packages/tanstack-start/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/tanstack-start", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "TanStack Start renderer for @json-render/core. JSON becomes full TanStack Start applications with routes, layouts, head metadata, and SSR.", "keywords": [ diff --git a/packages/vue/package.json b/packages/vue/package.json index 57e84e37..8a14782b 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/vue", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Vue renderer for @json-render/core. JSON becomes Vue components.", "keywords": [ diff --git a/packages/xstate/package.json b/packages/xstate/package.json index 21e048fb..96938cf4 100644 --- a/packages/xstate/package.json +++ b/packages/xstate/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/xstate", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "XState Store adapter for json-render StateStore", "keywords": [ diff --git a/packages/yaml/package.json b/packages/yaml/package.json index 59bfc96a..5f44fc7e 100644 --- a/packages/yaml/package.json +++ b/packages/yaml/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/yaml", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "YAML wire format for @json-render/core. Progressive rendering and surgical edits via streaming YAML.", "keywords": [ diff --git a/packages/zustand/package.json b/packages/zustand/package.json index 2ea602f2..27ee78e0 100644 --- a/packages/zustand/package.json +++ b/packages/zustand/package.json @@ -1,6 +1,6 @@ { "name": "@json-render/zustand", - "version": "0.21.0", + "version": "0.21.1", "license": "Apache-2.0", "description": "Zustand adapter for json-render StateStore", "keywords": [