@kudzujs/core 0.13.1 → 0.13.3
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,62 @@ 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.3 File Upload Boundary
|
|
10
|
+
|
|
11
|
+
Measured 2026-08-25 on Linux x64 with Node 24.14.0 and Chrome
|
|
12
|
+
142.0.7444.175. Required Chrome proves plain-text type and 1 KiB size
|
|
13
|
+
validation before any request, native file reading, `FormData`/fetch upload,
|
|
14
|
+
user cancellation, delayed failure and retry, route-departure abort, and
|
|
15
|
+
successful keyed attachment mutation.
|
|
16
|
+
|
|
17
|
+
The application emits 44 files totaling 150,023 raw / 50,240 aggregate gzip
|
|
18
|
+
bytes with deploy SHA-256
|
|
19
|
+
`a16fd5dbc08086aa6a7c0ec0aba3a38fbe2a63b96005a81e8747a7f4e45e214e`.
|
|
20
|
+
The two-route session remains 17 JavaScript files and totals 71,031 raw / 25,304
|
|
21
|
+
aggregate gzip bytes, 2,367 raw / 557 gzip bytes above `0.13.2`. `/help`
|
|
22
|
+
remains 0 B JavaScript. The added bytes are route-specific authored file
|
|
23
|
+
validation, multipart upload, effect cleanup, and keyed attachment behavior;
|
|
24
|
+
there is no upload runtime.
|
|
25
|
+
|
|
26
|
+
Navigation samples are `[3.7, 5.0, 3.5, 3.7, 3.8, 3.8, 4.0]` ms, with a 3.8
|
|
27
|
+
ms median and 3.5/5.0 ms minimum/maximum. This changes the destination, so no
|
|
28
|
+
same-content runtime regression or improvement claim is made.
|
|
29
|
+
|
|
30
|
+
Core semantic LOC remains 5,682 with zero new semantic primitives, IR kinds,
|
|
31
|
+
compiler passes, production compiler/runtime lines, normalization rules,
|
|
32
|
+
adapters, runtime concepts, public APIs, upload schedulers, or transfer
|
|
33
|
+
runtimes. Fetch does not expose upload progress, so the application states that
|
|
34
|
+
boundary instead of fabricating progress. Chunking, resume, background sync,
|
|
35
|
+
and files above the authored 1 KiB in-memory text limit remain unsupported.
|
|
36
|
+
|
|
37
|
+
## 0.13.2 Multistep Draft And Autosave
|
|
38
|
+
|
|
39
|
+
Measured 2026-08-25 on Linux x64 with Node 24.14.0 and Chrome
|
|
40
|
+
142.0.7444.175. Required Chrome proves native step validation, debounced save,
|
|
41
|
+
server rejection of an older in-flight version, ignored stale completion,
|
|
42
|
+
enhanced-navigation and reload restoration, retained input on conflict, and
|
|
43
|
+
reset with timer and storage cleanup.
|
|
44
|
+
|
|
45
|
+
The application emits 44 files totaling 144,633 raw / 49,217 aggregate gzip
|
|
46
|
+
bytes with deploy SHA-256
|
|
47
|
+
`06a35341c5e70bfec48c46ad767ac351326b39ba701f5c1f1d03992a65ec8b9e`.
|
|
48
|
+
The two-route session remains 17 JavaScript files and totals 68,664 raw / 24,747
|
|
49
|
+
aggregate gzip bytes, 3,260 raw / 848 gzip bytes above `0.13.1`. `/help`
|
|
50
|
+
remains 0 B JavaScript. The added bytes are route-specific authored state,
|
|
51
|
+
conditions, handlers, and effects; there is no wizard or autosave runtime.
|
|
52
|
+
|
|
53
|
+
Navigation samples are `[10.7, 7.4, 3.7, 7.9, 6.1, 4.0, 5.4]` ms, with a 6.1
|
|
54
|
+
ms median and 3.7/10.7 ms minimum/maximum. This changes the destination and the
|
|
55
|
+
range is noisy, so no same-content runtime regression or improvement claim is
|
|
56
|
+
made.
|
|
57
|
+
|
|
58
|
+
Core semantic LOC remains 5,682 with zero new semantic primitives, IR kinds,
|
|
59
|
+
compiler passes, production compiler/runtime lines, normalization rules,
|
|
60
|
+
adapters, runtime concepts, public APIs, wizard schedulers, or autosave
|
|
61
|
+
schedulers. One real application fixture closes the packet through existing
|
|
62
|
+
state, conditional ownership, dependency-effect cleanup, owned fetch, and
|
|
63
|
+
versioned storage semantics.
|
|
64
|
+
|
|
9
65
|
## 0.13.1 Nested Form Metadata
|
|
10
66
|
|
|
11
67
|
Measured 2026-08-25 on Linux x64 with Node 24.14.0 and Chrome
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Kudzu compiles ordinary React-shaped TypeScript and TSX into complete static HTM
|
|
|
14
14
|
|
|
15
15
|
> Experimental `0.13.x`: the compiler API and supported TSX surface may change.
|
|
16
16
|
|
|
17
|
-
**Latest release: 0.13.
|
|
17
|
+
**Latest release: 0.13.3 - File upload boundary.** Native file validation, multipart upload, cancellation, failure and retry, route cleanup, and keyed attachment mutation compose without an upload runtime. Read the [release notes](./RELEASES.md#0133---file-upload-boundary), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.13.3), 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,113 @@
|
|
|
1
1
|
# Kudzu Releases
|
|
2
2
|
|
|
3
|
+
## 0.13.3 - File Upload Boundary
|
|
4
|
+
|
|
5
|
+
Kudzu 0.13.3 composes a bounded file-upload lifecycle from native controls,
|
|
6
|
+
ordinary state, owned effects, and keyed rows without an upload runtime.
|
|
7
|
+
|
|
8
|
+
### Changed in 0.13.3
|
|
9
|
+
|
|
10
|
+
- Added one native plain-text file input with type and 1 KiB size validation
|
|
11
|
+
before any request.
|
|
12
|
+
- Added application-owned `FormData` and fetch upload with an owned
|
|
13
|
+
`AbortController`.
|
|
14
|
+
- Added explicit user cancellation, delayed transport failure, and retry without
|
|
15
|
+
requiring file reselection.
|
|
16
|
+
- Aborted in-flight upload work when enhanced navigation releases the route.
|
|
17
|
+
- Added successful keyed attachment mutation and an explicit statement that
|
|
18
|
+
fetch does not expose upload progress.
|
|
19
|
+
- Updated `create-kudzu@0.1.121` to generate projects on
|
|
20
|
+
`@kudzujs/core@^0.13.3`.
|
|
21
|
+
|
|
22
|
+
### Output Evidence
|
|
23
|
+
|
|
24
|
+
- The application emits 44 files totaling 150,023 raw / 50,240 aggregate gzip
|
|
25
|
+
bytes with deploy digest
|
|
26
|
+
`a16fd5dbc08086aa6a7c0ec0aba3a38fbe2a63b96005a81e8747a7f4e45e214e`.
|
|
27
|
+
- The maintained two-route session remains 17 JavaScript files and totals
|
|
28
|
+
71,031 raw / 25,304 aggregate gzip bytes; `/help` remains 0 B JavaScript.
|
|
29
|
+
- No semantic primitive, IR kind, compiler pass, production compiler/runtime
|
|
30
|
+
line, normalization rule, adapter, runtime concept, public API, upload
|
|
31
|
+
scheduler, or transfer runtime was added.
|
|
32
|
+
|
|
33
|
+
### Validation
|
|
34
|
+
|
|
35
|
+
- Required Chrome proves pre-request validation, user cancellation, delayed
|
|
36
|
+
`503` feedback, retry, successful attachment mutation, and route-departure
|
|
37
|
+
cancellation.
|
|
38
|
+
- The complete suite passes 273 tests, including the preserved draft, nested
|
|
39
|
+
form, authentication, routing, and server retry journeys.
|
|
40
|
+
- Seven fresh Chrome profiles record a 3.8 ms list-to-detail median with a
|
|
41
|
+
3.5-5.0 ms range. The destination changed, so no same-content latency change
|
|
42
|
+
is claimed.
|
|
43
|
+
|
|
44
|
+
### Limits
|
|
45
|
+
|
|
46
|
+
Fetch upload progress is unavailable and no fake progress is rendered. Chunking,
|
|
47
|
+
resume, background sync, binary formats, concurrent files, and files above the
|
|
48
|
+
authored 1 KiB in-memory text limit remain unsupported until a real application
|
|
49
|
+
requires a different transport.
|
|
50
|
+
|
|
51
|
+
### Upgrade
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
npm install @kudzujs/core@^0.13.3
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 0.13.2 - Multistep Draft And Autosave
|
|
58
|
+
|
|
59
|
+
Kudzu 0.13.2 composes a persistent two-step draft and debounced server save
|
|
60
|
+
from ordinary route state and owned effects without a wizard or autosave runtime.
|
|
61
|
+
|
|
62
|
+
### Changed in 0.13.2
|
|
63
|
+
|
|
64
|
+
- Added native first-step validation and conditional step navigation over
|
|
65
|
+
parent-owned draft values.
|
|
66
|
+
- Added guarded versioned local-storage restore and immediate draft persistence
|
|
67
|
+
across enhanced navigation and document reload.
|
|
68
|
+
- Added a direct dependency effect with timeout cleanup for debounced owned
|
|
69
|
+
server writes.
|
|
70
|
+
- Rejected stale server versions and ignored late stale completions while
|
|
71
|
+
retaining the current draft through conflict and transport failures.
|
|
72
|
+
- Added reset of step, values, status, version, storage, and pending debounce.
|
|
73
|
+
- Updated `create-kudzu@0.1.120` to generate projects on
|
|
74
|
+
`@kudzujs/core@^0.13.2`.
|
|
75
|
+
|
|
76
|
+
### Output Evidence
|
|
77
|
+
|
|
78
|
+
- The application emits 44 files totaling 144,633 raw / 49,217 aggregate gzip
|
|
79
|
+
bytes with deploy digest
|
|
80
|
+
`06a35341c5e70bfec48c46ad767ac351326b39ba701f5c1f1d03992a65ec8b9e`.
|
|
81
|
+
- The maintained two-route session remains 17 JavaScript files and totals
|
|
82
|
+
68,664 raw / 24,747 aggregate gzip bytes; `/help` remains 0 B JavaScript.
|
|
83
|
+
- No semantic primitive, IR kind, compiler pass, production compiler/runtime
|
|
84
|
+
line, normalization rule, adapter, runtime concept, public API, wizard
|
|
85
|
+
scheduler, or autosave scheduler was added.
|
|
86
|
+
|
|
87
|
+
### Validation
|
|
88
|
+
|
|
89
|
+
- Required Chrome proves native validation, debounced save, server rejection of
|
|
90
|
+
an older in-flight version, ignored stale completion, navigation and reload
|
|
91
|
+
restoration, retained conflict input, and reset cleanup.
|
|
92
|
+
- The complete serial suite passes 273 tests, including the preserved nested
|
|
93
|
+
issue-form and server retry journey.
|
|
94
|
+
- Seven fresh Chrome profiles record a 6.1 ms list-to-detail median with a
|
|
95
|
+
3.7-10.7 ms range. The destination changed and the range is noisy, so no
|
|
96
|
+
same-content latency change is claimed.
|
|
97
|
+
|
|
98
|
+
### Limits
|
|
99
|
+
|
|
100
|
+
Draft persistence remains application-owned and versioned per form. Dynamic
|
|
101
|
+
step schemas, cross-document coordination, background sync, retry scheduling,
|
|
102
|
+
and a general autosave scheduler remain unsupported until independent real
|
|
103
|
+
applications prove a shared framework boundary.
|
|
104
|
+
|
|
105
|
+
### Upgrade
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
npm install @kudzujs/core@^0.13.2
|
|
109
|
+
```
|
|
110
|
+
|
|
3
111
|
## 0.13.1 - Nested Form Metadata
|
|
4
112
|
|
|
5
113
|
Kudzu 0.13.1 composes conditional fields, dynamic keyed rows, dirty/touched
|
|
@@ -795,6 +795,33 @@ changed, so no latency regression or improvement is claimed.
|
|
|
795
795
|
- **Stop condition:** a wizard or autosave scheduler is added for one form.
|
|
796
796
|
- **Done condition:** no data loss occurs across navigation, reload, or failure.
|
|
797
797
|
|
|
798
|
+
Development evidence is complete. The Alpha application now owns a two-step
|
|
799
|
+
project setup draft with native first-step constraints, parent-owned values,
|
|
800
|
+
versioned local storage, one mount restore effect, and one dependency effect
|
|
801
|
+
whose direct timeout cleanup debounces an owned server write. Required Chrome
|
|
802
|
+
proves step navigation, validation, two overlapping versions, server rejection
|
|
803
|
+
of the older save, ignored stale completion, enhanced-navigation restoration,
|
|
804
|
+
reload restoration, retained conflict input, and reset of state, storage, and
|
|
805
|
+
pending work.
|
|
806
|
+
|
|
807
|
+
The first failing fixture was the `0.13.2` project-application contract against
|
|
808
|
+
the released `0.13.1` Alpha route. Existing ordinary state, conditional
|
|
809
|
+
ownership, dependency invalidation, effect cleanup, owned fetch, late-write
|
|
810
|
+
rejection, and guarded versioned storage close it without a semantic primitive,
|
|
811
|
+
IR kind, compiler pass, production compiler/runtime line, normalization rule,
|
|
812
|
+
adapter, runtime concept, public API, wizard scheduler, or autosave scheduler.
|
|
813
|
+
The machine-readable decision is `closed-by-application-composition`.
|
|
814
|
+
|
|
815
|
+
The application emits 44 files totaling 144,633 raw / 49,217 aggregate gzip
|
|
816
|
+
bytes with deploy SHA-256
|
|
817
|
+
`06a35341c5e70bfec48c46ad767ac351326b39ba701f5c1f1d03992a65ec8b9e`.
|
|
818
|
+
The maintained two-route session remains 17 JavaScript files and grows by 3,260
|
|
819
|
+
raw / 848 aggregate gzip bytes to 68,664 / 24,747 bytes; `/help` remains 0 B
|
|
820
|
+
JavaScript. Seven fresh Linux x64 Chrome 142 profiles record list-to-detail
|
|
821
|
+
samples of `[10.7, 7.4, 3.7, 7.9, 6.1, 4.0, 5.4]` ms, a 6.1 ms median and
|
|
822
|
+
3.7/10.7 ms range. The destination content changed and the range is noisy, so
|
|
823
|
+
no same-content latency regression or improvement is claimed.
|
|
824
|
+
|
|
798
825
|
### `0.13.3`: File Upload Boundary
|
|
799
826
|
|
|
800
827
|
- **Purpose:** move beyond local file reading to a real upload lifecycle.
|
|
@@ -807,6 +834,38 @@ changed, so no latency regression or improvement is claimed.
|
|
|
807
834
|
- **Done condition:** the supported transport and unsupported progress/resume
|
|
808
835
|
boundary are explicit and tested.
|
|
809
836
|
|
|
837
|
+
Development evidence is complete. The Alpha application accepts one plain-text
|
|
838
|
+
attachment up to 1 KiB, rejects invalid type and size before any request, reads
|
|
839
|
+
the selected file into bounded route state, and reconstructs it as a `Blob` in
|
|
840
|
+
one dependency effect that owns `FormData`, fetch, and `AbortController`.
|
|
841
|
+
Required Chrome proves explicit user cancellation, delayed `503` feedback,
|
|
842
|
+
retry without reselection, successful keyed attachment mutation, and exact
|
|
843
|
+
abort when enhanced navigation releases the route.
|
|
844
|
+
|
|
845
|
+
The first failing fixture was the `0.13.3` project-application contract against
|
|
846
|
+
the released `0.13.2` Alpha route. Existing native file handlers, ordinary
|
|
847
|
+
state, dependency invalidation, effect cleanup, owned fetch, route release, and
|
|
848
|
+
keyed list identity close it without a semantic primitive, IR kind, compiler
|
|
849
|
+
pass, production compiler/runtime line, normalization rule, adapter, runtime
|
|
850
|
+
concept, public API, upload scheduler, or transfer runtime. The machine-readable
|
|
851
|
+
decision is `closed-by-application-composition`.
|
|
852
|
+
|
|
853
|
+
Fetch does not expose upload progress, so the application renders that boundary
|
|
854
|
+
explicitly and does not emit a fake progress element. Chunking, resume,
|
|
855
|
+
background sync, binary formats, multiple concurrent files, and files above the
|
|
856
|
+
authored 1 KiB in-memory text limit remain unsupported. Add a different
|
|
857
|
+
transport only when a real application requires one of those capabilities.
|
|
858
|
+
|
|
859
|
+
The application emits 44 files totaling 150,023 raw / 50,240 aggregate gzip
|
|
860
|
+
bytes with deploy SHA-256
|
|
861
|
+
`a16fd5dbc08086aa6a7c0ec0aba3a38fbe2a63b96005a81e8747a7f4e45e214e`.
|
|
862
|
+
The maintained two-route session remains 17 JavaScript files and grows by 2,367
|
|
863
|
+
raw / 557 aggregate gzip bytes to 71,031 / 25,304 bytes; `/help` remains 0 B
|
|
864
|
+
JavaScript. Seven fresh Linux x64 Chrome 142 profiles record list-to-detail
|
|
865
|
+
samples of `[3.7, 5.0, 3.5, 3.7, 3.8, 3.8, 4.0]` ms, a 3.8 ms median and
|
|
866
|
+
3.5/5.0 ms range. The destination content changed, so no same-content latency
|
|
867
|
+
regression or improvement is claimed.
|
|
868
|
+
|
|
810
869
|
## `0.14.x`: Lists, Tables, And Virtualization
|
|
811
870
|
|
|
812
871
|
### `0.14.0`: Project Table CRUD And Identity
|
|
@@ -1304,5 +1363,7 @@ release transaction where possible or document and publish a forward-fix patch.
|
|
|
1304
1363
|
| `0.12.4` | Released | Preserve the published single-layout decision and zero-owner-chain evidence. | None |
|
|
1305
1364
|
| `0.13.0` | Released | Preserve native constraints, server feedback, focused field errors, retained input, and retry evidence. | None |
|
|
1306
1365
|
| `0.13.1` | Released | Preserve application-owned nested metadata, keyed row identity, release, and reset evidence. | None |
|
|
1307
|
-
| `0.13.2` |
|
|
1308
|
-
| `0.13.3`
|
|
1366
|
+
| `0.13.2` | Released | Preserve multistep validation, versioned persistence, stale-save rejection, conflict retention, and reset evidence. | None |
|
|
1367
|
+
| `0.13.3` | Released | Preserve the published upload validation, cancellation, retry, route cleanup, and attachment mutation evidence. | None |
|
|
1368
|
+
| `0.14.0` | Active | Add the first failing project-table CRUD and retained-identity fixture. | None |
|
|
1369
|
+
| `0.14.1` onward | Blocked | Complete or explicitly close `0.14.0` 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.
|
|
69
|
+
`create-kudzu@0.1.121` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.13.3`.
|
|
70
70
|
|
|
71
71
|
## Release Boundary
|
|
72
72
|
|