@kudzujs/core 0.12.4 → 0.13.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/PERFORMANCE.md CHANGED
@@ -6,6 +6,61 @@ Reproducibility classes: `npm run benchmark`, `npm run benchmark:keyed`, `npm ru
6
6
 
7
7
  The maintained 2026-08-13 comparison used Node 24.14.0 and an Intel Core i5-9500 Linux x64 host, one warm-up, and seven alternating fresh-process samples against clean `v0.8.44`. A narrow fast path skips Kudzu semantic transformation for 450 plain `.ts` modules whose runtime edges are exclusively resolvable relative TypeScript imports or exports; all other modules retain the existing transformer. Compile median fell from 2,323.9 ms to 1,413.2 ms (39.2%) and clean-build median from 3,325.3 ms to 2,382.4 ms (28.4%); every paired sample improved. Compile peak-RSS median fell from 571.2 MiB to 552.6 MiB, while build peak RSS was 570.9 MiB versus 568.8 MiB. Compiler scratch fell from 7,328,390 to 1,971,061 bytes. Both targets emitted the same 50 static HTML files, 10,980 bytes, and deploy SHA-256 `e107d78a7f55bc8a1af0ea6e53efeffa19b3d44d21c892484d103fa346e7ba7b`. This is a source-scale compiler comparison, not a cross-framework result.
8
8
 
9
+ ## 0.13.1 Nested Form Metadata
10
+
11
+ Measured 2026-08-25 on Linux x64 with Node 24.14.0 and Chrome
12
+ 142.0.7444.175. Required Chrome proves conditional assignee fields, dynamic
13
+ checklist rows, explicit dirty/touched display, stable-key reorder, removal,
14
+ native reset, exact retained/released DOM identity, and the preserved keyboard
15
+ constraint and server retry journey.
16
+
17
+ The application emits 44 files totaling 138,064 raw / 47,964 aggregate gzip
18
+ bytes with deploy SHA-256
19
+ `f0d96cfd5dee2cf3fa67f4ebe25d8b32cbb1bf66e72ed5ca1c29bd06fdcc0a33`.
20
+ The two-route session remains 17 JavaScript files and totals 65,404 raw / 23,899
21
+ aggregate gzip bytes, 3,286 raw / 803 gzip bytes above `0.13.0`. `/help`
22
+ remains 0 B JavaScript. The added bytes are route-specific authored handlers,
23
+ bindings, conditionals, and keyed-list descriptors; there is no shared form
24
+ runtime.
25
+
26
+ Navigation samples are `[3.5, 3.3, 4.4, 3.3, 3.2, 4.7, 3.3]` ms, with a 3.3
27
+ ms median and 3.2/4.7 ms minimum/maximum. The range overlaps `0.13.0`, and the
28
+ destination now contains dynamic nested form behavior, so no same-content
29
+ runtime regression or improvement claim is made.
30
+
31
+ Core semantic LOC remains 5,682 with no semantic primitive, IR kind, compiler
32
+ pass, production compiler/runtime line, normalization rule, adapter, runtime
33
+ concept, public API, registration function, proxy metadata graph, schema
34
+ adapter, or form runtime.
35
+
36
+ ## 0.13.0 Production Form And Server Validation
37
+
38
+ Measured 2026-08-24 on Linux x64 with Node 24.14.0 and Chrome
39
+ 142.0.7444.175. Required Chrome uses real Enter key input to prove native empty
40
+ and minimum-length constraints, then executes delayed field-error, form-error,
41
+ and successful issue-creation responses. Pending state, focused and ARIA-linked
42
+ field feedback, alert/status roles, exact requests, retry, and retained valid
43
+ input all pass.
44
+
45
+ The application emits 44 files totaling 127,343 raw / 46,261 aggregate gzip
46
+ bytes with deploy SHA-256
47
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
48
+ The two-route session uses 17 JavaScript files totaling 62,118 raw / 23,096
49
+ aggregate gzip bytes. Compared with `0.12.4`, the authored form, three primitive
50
+ states, one ref, and one route-specific handler add 992 raw / 433 aggregate gzip
51
+ session bytes and one browser file. `/help` remains 0 B JavaScript.
52
+
53
+ Navigation samples are `[3.8, 5.6, 4.3, 2.6, 2.9, 3.6, 3.1]` ms, with a 3.6 ms
54
+ median and 2.6/5.6 ms minimum/maximum. The range does not overlap the `0.12.4`
55
+ 1.5/2.4 ms range. This is a changed-content application measurement: the
56
+ destination now parses and mounts the complete issue form and route handler.
57
+ Production compiler/runtime source is unchanged, so no same-content runtime
58
+ regression or improvement claim is made.
59
+
60
+ Core semantic LOC remains 5,682 with no semantic primitive, IR kind, compiler
61
+ pass, production compiler/runtime line, runtime concept, public API, form
62
+ registry, metadata proxy, schema adapter, or form runtime.
63
+
9
64
  ## 0.12.4 Nested Layout Evidence Decision
10
65
 
11
66
  Verified 2026-08-24 on Linux x64 with Node 24.14.0 and Chrome
package/README.md CHANGED
@@ -12,9 +12,9 @@ Kudzu compiles ordinary React-shaped TypeScript and TSX into complete static HTM
12
12
 
13
13
  *Watch: React-shaped TSX to static HTML and route-specific ESM in 22 seconds.*
14
14
 
15
- > Experimental `0.12.x`: the compiler API and supported TSX surface may change.
15
+ > Experimental `0.13.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.12.4 - Nested layout evidence decision.** Six executable route sets fit the existing single-layout model, so Kudzu adds no speculative owner chain or browser runtime. Read the [release notes](./RELEASES.md#0124---nested-layout-evidence-decision), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.12.4), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.13.1 - Nested form metadata.** Conditional fields, dynamic keyed checklist rows, explicit dirty/touched state, reset, and exact DOM identity compose without a field registry or form runtime. Read the [release notes](./RELEASES.md#0131---nested-form-metadata), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.13.1), or follow the [architecture packet](./docs/next-architecture/README.md).
18
18
 
19
19
  - [Documentation](https://kudzujs.cloud/docs)
20
20
  - [Installation guide](https://kudzujs.cloud/docs#install)
package/RELEASES.md CHANGED
@@ -1,5 +1,103 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.13.1 - Nested Form Metadata
4
+
5
+ Kudzu 0.13.1 composes conditional fields, dynamic keyed rows, dirty/touched
6
+ display, and reset from ordinary application state without a form registry.
7
+
8
+ ### Changed in 0.13.1
9
+
10
+ - Added conditional assignee fields backed by one ordinary object state.
11
+ - Added dynamic checklist rows with immutable add, reorder, remove, input, and
12
+ touched updates over one ordinary array state.
13
+ - Preserved exact keyed DOM identity through reorder and reset while releasing
14
+ removed and reset-added rows.
15
+ - Kept native constraints, field/form server errors, retained values, and retry
16
+ behavior from `0.13.0`.
17
+ - Updated `create-kudzu@0.1.119` to generate projects on
18
+ `@kudzujs/core@^0.13.1`.
19
+
20
+ ### Output Evidence
21
+
22
+ - The application emits 44 files totaling 138,064 raw / 47,964 aggregate gzip
23
+ bytes with deploy digest
24
+ `f0d96cfd5dee2cf3fa67f4ebe25d8b32cbb1bf66e72ed5ca1c29bd06fdcc0a33`.
25
+ - The maintained two-route session remains 17 JavaScript files and totals
26
+ 65,404 raw / 23,899 aggregate gzip bytes; `/help` remains 0 B JavaScript.
27
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
28
+ line, normalization rule, adapter, public API, registration function, proxy
29
+ metadata graph, schema adapter, or form runtime was added.
30
+
31
+ ### Validation
32
+
33
+ - Required Chrome proves dirty/touched output, conditional ownership, stable-key
34
+ reorder, removal release, native reset, and exact retained/released identity.
35
+ - The existing keyboard validation and delayed `422`, `503`, and `201` journey
36
+ passes while nested assignee and checklist values survive failures.
37
+ - Seven fresh Chrome profiles record a 3.3 ms list-to-detail median with a
38
+ 3.2-4.7 ms range. The range overlaps `0.13.0`, so no latency change is claimed.
39
+
40
+ ### Limits
41
+
42
+ Dynamic field names, schema-driven registration, generic watchers, and proxy
43
+ dirty/touched graphs remain unsupported. Add framework metadata only after
44
+ independent real forms prove the same otherwise-inexpressible graph.
45
+
46
+ ### Upgrade
47
+
48
+ ```sh
49
+ npm install @kudzujs/core@^0.13.1
50
+ ```
51
+
52
+ ## 0.13.0 - Production Form And Server Validation
53
+
54
+ Kudzu 0.13.0 compiles an accessible issue-creation form from ordinary TSX
55
+ without adding a form runtime, field registry, or metadata proxy.
56
+
57
+ ### Changed in 0.13.0
58
+
59
+ - Added a native issue form with `required` and `minLength` constraints,
60
+ keyboard submission, `FormData`, and application-owned pending state.
61
+ - Preserved field-level and form-level server errors, focused and ARIA-linked
62
+ field feedback, valid input across failures, and retry without re-entry.
63
+ - Reused existing state, ref, conditional, binding, and async handler semantics;
64
+ production compiler and runtime source remain unchanged.
65
+ - Updated `create-kudzu@0.1.118` to generate projects on
66
+ `@kudzujs/core@^0.13.0`.
67
+
68
+ ### Output Evidence
69
+
70
+ - The application emits 44 files totaling 127,343 raw / 46,261 aggregate gzip
71
+ bytes with deploy digest
72
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
73
+ - The maintained two-route session uses 17 JavaScript files totaling 62,118 raw
74
+ / 23,096 aggregate gzip bytes; `/help` remains 0 B JavaScript.
75
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
76
+ line, runtime concept, public API, form registry, schema adapter, or form
77
+ runtime was added.
78
+
79
+ ### Validation
80
+
81
+ - Required Chrome sends real Enter key input and proves native empty and
82
+ minimum-length constraints make zero requests.
83
+ - Deterministic delayed `422`, `503`, and `201` responses prove pending state,
84
+ exact request counts, field and form feedback, retained input, and retry.
85
+ - Seven fresh Chrome profiles record a 3.6 ms list-to-detail median with a
86
+ 2.6-5.6 ms range. This measures the changed destination form and handler, not
87
+ a same-content compiler/runtime regression.
88
+
89
+ ### Limits
90
+
91
+ Nested fields, field arrays, dirty/touched metadata, dynamic schemas, and form
92
+ registries remain unsupported. The `0.13.1` packet must first prove which of
93
+ those behaviors cannot be expressed with native controls and ordinary state.
94
+
95
+ ### Upgrade
96
+
97
+ ```sh
98
+ npm install @kudzujs/core@^0.13.0
99
+ ```
100
+
3
101
  ## 0.12.4 - Nested Layout Evidence Decision
4
102
 
5
103
  Kudzu 0.12.4 reviews executable route ownership evidence and keeps the existing
@@ -710,6 +710,37 @@ with no generated-output change.
710
710
  - **Done condition:** complete accessible create/edit behavior passes without a
711
711
  form runtime.
712
712
 
713
+ **Completion evidence:** the maintained Alpha project detail now authors one
714
+ ordinary uncontrolled issue form with native `required` and `minLength`
715
+ constraints, `FormData`, three route-owned primitive states, one object ref, and
716
+ one async submit handler. Required Chrome sends real Enter key events through
717
+ the browser input domain and proves empty and short titles make zero requests.
718
+ For valid input, the deterministic server returns a delayed `422` field error,
719
+ then a `503` form error, then a `201` success. The journey verifies pending
720
+ disable/label state, title focus, `aria-invalid` and `aria-describedby` linkage,
721
+ alert/status roles, exact attempt/create counts, retry without re-entry, and
722
+ retention of the valid title and description through every response.
723
+
724
+ The existing native-form, state, ref, conditional, binding, and handler
725
+ semantics cover the complete packet. Production compiler and runtime source do
726
+ not change. The application route grows from 20 to 70 authored lines and emits
727
+ one additional route handler file; no form package, registration API, proxy
728
+ metadata graph, schema adapter, semantic primitive, IR kind, compiler pass,
729
+ runtime concept, public API, or browser runtime file is added. `/help` remains
730
+ complete HTML with 0 B JavaScript.
731
+
732
+ The project application emits 44 files totaling 127,343 raw / 46,261 aggregate
733
+ gzip bytes with deploy SHA-256
734
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
735
+ The two-route session uses 17 JavaScript files totaling 62,118 raw / 23,096
736
+ aggregate gzip bytes, 992 raw / 433 gzip bytes above `0.12.4`; the detail route
737
+ itself adds the same 992 raw bytes and 440 gzip bytes. Seven fresh Linux x64
738
+ Chrome 142 profiles record list-to-detail samples of
739
+ `[3.8, 5.6, 4.3, 2.6, 2.9, 3.6, 3.1]` ms, a 3.6 ms median and 2.6/5.6 ms range.
740
+ The range does not overlap `0.12.4`; this is the measured cost of adding the
741
+ form DOM and route-specific handler to the destination application route, not a
742
+ same-content compiler/runtime comparison or a latency improvement claim.
743
+
713
744
  ### `0.13.1`: Nested Fields, Field Arrays, Dirty, And Touched
714
745
 
715
746
  - **Purpose:** determine which form metadata needs framework support.
@@ -721,6 +752,39 @@ with no generated-output change.
721
752
  - **Done condition:** application composition is accepted or the smallest
722
753
  repeated metadata semantic is isolated.
723
754
 
755
+ **Completion evidence:** the maintained Alpha issue form now owns nested
756
+ assignee metadata as one ordinary object state and a dynamic checklist as one
757
+ ordinary array state with stable string keys. Native `input`, `blur`, `change`,
758
+ and `reset` events drive explicit dirty/touched display, conditional assignee
759
+ fields, immutable checklist add/reorder/remove operations, and reset to the
760
+ authored baseline. Required Chrome proves retained checklist keys preserve exact
761
+ DOM identity through reorder and reset, removed and reset-added keys disconnect,
762
+ conditional ownership releases the assignee controls, and native reset clears
763
+ uncontrolled title/body values plus application-owned metadata. The existing
764
+ keyboard constraints and delayed `422`, `503`, and `201` server journey continue
765
+ to pass while nested assignee/checklist values survive field and form failures.
766
+
767
+ The first failing fixture was the `0.13.1` project-application contract against
768
+ the released `0.13.0` Alpha form. Native controls and existing object/array
769
+ state, condition, keyed-list, binding, and handler semantics close it without a
770
+ normalization rule, adapter, semantic primitive, IR kind, compiler pass,
771
+ production compiler/runtime line, runtime concept, public API, registration
772
+ function, proxy metadata graph, schema adapter, or form runtime. The
773
+ machine-readable decision is `closed-by-application-composition`; dynamic field
774
+ names, schema-driven registration, generic watchers, and proxy dirty/touched
775
+ graphs remain unsupported until independent real forms prove a repeated gap.
776
+
777
+ The application emits 44 files totaling 138,064 raw / 47,964 aggregate gzip
778
+ bytes with deploy SHA-256
779
+ `f0d96cfd5dee2cf3fa67f4ebe25d8b32cbb1bf66e72ed5ca1c29bd06fdcc0a33`.
780
+ The maintained two-route session remains 17 JavaScript files and grows by 3,286
781
+ raw / 803 aggregate gzip bytes to 65,404 / 23,899 bytes. This is authored
782
+ route-specific form behavior, not a shared form runtime; `/help` remains 0 B
783
+ JavaScript. Seven fresh Linux x64 Chrome 142 profiles record list-to-detail
784
+ samples of `[3.5, 3.3, 4.4, 3.3, 3.2, 4.7, 3.3]` ms, a 3.3 ms median and
785
+ 3.2/4.7 ms range. The range overlaps `0.13.0` and the destination content
786
+ changed, so no latency regression or improvement is claimed.
787
+
724
788
  ### `0.13.2`: Multistep Draft And Autosave
725
789
 
726
790
  - **Purpose:** prove draft persistence across steps and failures.
@@ -1238,5 +1302,7 @@ release transaction where possible or document and publish a forward-fix patch.
1238
1302
  | `0.12.2` | Released | Preserve the published authentication and permission evidence. | None |
1239
1303
  | `0.12.3` | Released | Preserve the published route failure, focused retry, native fallback, and precommit retention evidence. | None |
1240
1304
  | `0.12.4` | Released | Preserve the published single-layout decision and zero-owner-chain evidence. | None |
1241
- | `0.13.0` | Active | Complete the production form and server-validation packet. | None |
1242
- | `0.13.1` onward | Blocked | Complete the `0.13.0` release transaction first. | Ordered patch boundary |
1305
+ | `0.13.0` | Released | Preserve native constraints, server feedback, focused field errors, retained input, and retry evidence. | None |
1306
+ | `0.13.1` | Released | Preserve application-owned nested metadata, keyed row identity, release, and reset evidence. | None |
1307
+ | `0.13.2` | Active | Complete the multistep draft and autosave packet. | None |
1308
+ | `0.13.3` onward | Blocked | Complete the `0.13.2` release transaction first. | Ordered patch boundary |
@@ -66,7 +66,7 @@ Keep each patch behavior-preserving and independently reviewable. If a boundary
66
66
 
67
67
  ## Generator Versions
68
68
 
69
- `create-kudzu@0.1.117` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.12.4`.
69
+ `create-kudzu@0.1.119` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.13.1`.
70
70
 
71
71
  ## Release Boundary
72
72
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kudzujs/core",
3
- "version": "0.12.4",
3
+ "version": "0.13.1",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",