Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
# Changelog

## 0.21.0
## 0.21.1

<!-- release:start -->

### 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
<!-- release:end -->

## 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)
Expand All @@ -19,7 +41,6 @@

- @ctate
- @Railly
<!-- release:end -->

## 0.20.0

Expand Down
22 changes: 22 additions & 0 deletions apps/web/content/docs/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions apps/web/tests/fixtures/docs-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/codegen/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools-react/package.json
Original file line number Diff line number Diff line change
@@ -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 <JsonRenderDevtools /> component.",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools-solid/package.json
Original file line number Diff line number Diff line change
@@ -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 <JsonRenderDevtools /> component.",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools-svelte/package.json
Original file line number Diff line number Diff line change
@@ -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 <JsonRenderDevtools /> component.",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools-vue/package.json
Original file line number Diff line number Diff line change
@@ -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 <JsonRenderDevtools /> component.",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/directives/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/image/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/ink/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/jotai/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/next/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/react-email/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/react-pdf/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/react-three-fiber/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/redux/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/remotion/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/shadcn-svelte/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/shadcn/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/solid/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/tanstack-start/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/vue/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/xstate/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/yaml/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion packages/zustand/package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
Loading