jsonisch 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +33 -14
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.1](https://github.com/andrew310/jsonisch/compare/v0.1.0...v0.1.1) (2026-09-08)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** match plain vX.Y.Z tags — the changelog scanned all history ([#25](https://github.com/andrew310/jsonisch/issues/25)) ([207b2ef](https://github.com/andrew310/jsonisch/commit/207b2efd238c23cf9223ea72ae46de995d565d9e))
9
+
10
+
11
+ ### Documentation
12
+
13
+ * best-of-three names three real lineages ([#18](https://github.com/andrew310/jsonisch/issues/18)) ([fc6894e](https://github.com/andrew310/jsonisch/commit/fc6894e9149ee0e8fd02869a3c8bc67dfddc7d07))
14
+ * lineage section states what we actually studied ([#19](https://github.com/andrew310/jsonisch/issues/19)) ([3e70c2c](https://github.com/andrew310/jsonisch/commit/3e70c2c6c249fc599bc7ab61f09e79f5537e5a82))
15
+ * logo in the README ([#17](https://github.com/andrew310/jsonisch/issues/17)) ([0191401](https://github.com/andrew310/jsonisch/commit/0191401ca22c7410f9ec08061955540f63d0a406))
16
+ * the agent angle — a schema an LLM just wrote is a form ([#22](https://github.com/andrew310/jsonisch/issues/22)) ([dd7c1d4](https://github.com/andrew310/jsonisch/commit/dd7c1d450500f8493f110493038519ea4a6a7dbb))
17
+
3
18
  ## 0.1.0
4
19
 
5
20
  First public release. Extracted from the RWA platform with history intact.
package/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/andrew310/jsonisch/main/assets/logo.jpg" width="220" alt="jsonisch — a database record between braces" />
3
+ </p>
4
+
1
5
  # jsonisch
2
6
 
3
7
  > Schemas as values. A form library for apps where JSON-Schemas are **runtime
@@ -28,9 +32,10 @@ Most form libraries assume the shape of your form is known at build time —
28
32
  a Zod schema in a module, types inferred from it, a hand-written component
29
33
  per field. That assumption breaks the moment your app lets users customize
30
34
  their forms: now the schema is a **value**, fetched from a database at
31
- request time, different per tenant, edited without a deploy. There is no
32
- compile-time type to infer against, and nobody is hand-writing a component
33
- per field for a form that didn't exist yesterday.
35
+ request time, different per tenant, edited without a deploy or written
36
+ by an LLM a second ago. There is no compile-time type to infer against,
37
+ and nobody is hand-writing a component per field for a form that didn't
38
+ exist yesterday.
34
39
 
35
40
  `jsonisch` starts from that world. It takes a JSON-Schema value, walks it
36
41
  once, and gives you a fully reactive, validated form with the fields already
@@ -51,6 +56,13 @@ wired:
51
56
 
52
57
  You bring the components; it brings everything else.
53
58
 
59
+ That last part matters more in the age of agents. The cheapest thing a
60
+ model can produce is a JSON value — and a JSON-Schema value is a complete
61
+ form definition. An agent that needs structured input from a human can
62
+ emit a schema and have a validated, fully wired form on screen in the
63
+ same request: no codegen, no deploy, and the schema it wrote is the same
64
+ contract that validates what the human sends back.
65
+
54
66
  ---
55
67
 
56
68
  ## Quickstart
@@ -156,22 +168,29 @@ formulas use to address the root record) and wires the dependency graph.
156
168
 
157
169
  ---
158
170
 
159
- ## Where jsonisch sits — a deliberate "best of three"
171
+ ## Where jsonisch sits
160
172
 
161
- `jsonisch` is a synthesis of three lineages, picking one idea from each:
173
+ Two libraries are real lineage we read their source and took ideas from
174
+ each deliberately:
162
175
 
163
- - **From TanStack Form** — the **framework-agnostic core + thin adapters**
176
+ - **TanStack Form** — the **framework-agnostic core + thin adapters**
164
177
  layout, and the **`createFormHook({ widgets })` composition/registry**
165
178
  pattern: register your design-system widgets once, get a typed
166
179
  `useAppForm` with them baked in.
167
- - **From Formisch** — **signals** as the reactivity engine (its own, no
168
- external signal lib), so a keystroke re-renders only the fields that
169
- depend on it, and derived fields recompute automatically.
170
- - **New here** — the schema kind is **JSON-Schema**, not Zod/Valibot/Yup.
171
- Validation runs through an injected AJV-shaped validator. Derived values
172
- are computed signals over the formulas already declared in the schema, so
173
- they're excluded from dirty-tracking and the submit payload *by
174
- construction*.
180
+ - **Formisch** — the **signal** reactivity model jsonisch's store is built
181
+ on (its own tiny signal implementation, no external lib): a keystroke
182
+ re-renders only the fields that depend on it.
183
+
184
+ One more deserves naming: **react-jsonschema-form** has been rendering
185
+ forms from JSON-Schema since long before us. jsonisch is not derived from
186
+ it — candidly, we didn't study it the resemblance comes from sharing a
187
+ premise, not code. What's visibly different from here: jsonisch is
188
+ signal-reactive, ships no components of its own (your design system,
189
+ dispatched by control kind), injects validation instead of bundling it,
190
+ and evaluates schema-declared formulas as computed signals — **derived
191
+ values**, excluded from dirty-tracking and the submit payload *by
192
+ construction*. A careful comparison would make a good doc; we haven't
193
+ written it.
175
194
 
176
195
  The re-render question — "when I type one character into a 60-field form,
177
196
  what re-renders?" — has a two-decade history that signals largely closed,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsonisch",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Schema in, reactive form out. Derive forms from JSON Schema.",
5
5
  "license": "MIT",
6
6
  "author": "Andrew Brown <andrewbrown600@gmail.com>",