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.
- package/CHANGELOG.md +15 -0
- package/README.md +33 -14
- 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
|
|
32
|
-
compile-time type to infer against,
|
|
33
|
-
per field for a form that didn't
|
|
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
|
|
171
|
+
## Where jsonisch sits
|
|
160
172
|
|
|
161
|
-
|
|
173
|
+
Two libraries are real lineage — we read their source and took ideas from
|
|
174
|
+
each deliberately:
|
|
162
175
|
|
|
163
|
-
- **
|
|
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
|
-
- **
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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,
|