@kudzujs/core 0.13.2 → 0.14.0

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.14.0 Project Table CRUD And Identity
10
+
11
+ Measured 2026-08-26 on Linux x64 with Node 24.14.0 and Chrome
12
+ 142.0.7444.175. Required Chrome proves native table insert, update, delete,
13
+ reorder, sort, filter, selection, keyboard focus, row-local edit state, and
14
+ retained keyed DOM identity.
15
+
16
+ The application emits 44 files totaling 159,258 raw / 51,627 aggregate gzip
17
+ bytes with deploy SHA-256
18
+ `ebb3358e7a03612459e723ae765c39d105498db9d293415b924f1066cddf4793`.
19
+ The two-route session remains 17 JavaScript files and totals 73,304 raw / 25,930
20
+ aggregate gzip bytes, 2,273 raw / 626 gzip bytes above `0.13.3`. `/help`
21
+ remains 0 B JavaScript. The added bytes are route-specific authored table
22
+ handlers, bindings, selectors, and keyed row state; there is no data-grid
23
+ runtime.
24
+
25
+ Table update samples are `[0.7, 0.8, 1.0, 0.7, 1.1, 0.7, 0.8]` ms, with a 0.8
26
+ ms median and 0.7/1.1 ms minimum/maximum. Navigation samples are
27
+ `[3.9, 3.9, 5.5, 4.2, 6.1, 3.5, 3.4]` ms, with a 3.9 ms median and 3.4/6.1 ms
28
+ minimum/maximum. Table update is a new measurement, so no same-content latency
29
+ delta is claimed.
30
+
31
+ Core semantic LOC remains 5,682 with zero new semantic primitives, IR kinds,
32
+ compiler passes, production compiler/runtime lines, normalization rules,
33
+ adapters, runtime concepts, public APIs, or data-grid runtimes. Infinite loading,
34
+ windowing, and the 10,000-row strategy remain later measured decisions.
35
+
36
+ ## 0.13.3 File Upload Boundary
37
+
38
+ Measured 2026-08-25 on Linux x64 with Node 24.14.0 and Chrome
39
+ 142.0.7444.175. Required Chrome proves plain-text type and 1 KiB size
40
+ validation before any request, native file reading, `FormData`/fetch upload,
41
+ user cancellation, delayed failure and retry, route-departure abort, and
42
+ successful keyed attachment mutation.
43
+
44
+ The application emits 44 files totaling 150,023 raw / 50,240 aggregate gzip
45
+ bytes with deploy SHA-256
46
+ `a16fd5dbc08086aa6a7c0ec0aba3a38fbe2a63b96005a81e8747a7f4e45e214e`.
47
+ The two-route session remains 17 JavaScript files and totals 71,031 raw / 25,304
48
+ aggregate gzip bytes, 2,367 raw / 557 gzip bytes above `0.13.2`. `/help`
49
+ remains 0 B JavaScript. The added bytes are route-specific authored file
50
+ validation, multipart upload, effect cleanup, and keyed attachment behavior;
51
+ there is no upload runtime.
52
+
53
+ Navigation samples are `[3.7, 5.0, 3.5, 3.7, 3.8, 3.8, 4.0]` ms, with a 3.8
54
+ ms median and 3.5/5.0 ms minimum/maximum. This changes the destination, so no
55
+ same-content runtime regression or improvement claim is made.
56
+
57
+ Core semantic LOC remains 5,682 with zero new semantic primitives, IR kinds,
58
+ compiler passes, production compiler/runtime lines, normalization rules,
59
+ adapters, runtime concepts, public APIs, upload schedulers, or transfer
60
+ runtimes. Fetch does not expose upload progress, so the application states that
61
+ boundary instead of fabricating progress. Chunking, resume, background sync,
62
+ and files above the authored 1 KiB in-memory text limit remain unsupported.
63
+
9
64
  ## 0.13.2 Multistep Draft And Autosave
10
65
 
11
66
  Measured 2026-08-25 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.13.x`: the compiler API and supported TSX surface may change.
15
+ > Experimental `0.14.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.13.2 - Multistep draft and autosave.** Native step validation, debounced versioned saves, stale-write rejection, navigation and reload restoration, conflict retention, and reset compose without a wizard or autosave runtime. Read the [release notes](./RELEASES.md#0132---multistep-draft-and-autosave), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.13.2), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.14.0 - Project table CRUD and identity.** Native table structure, ordinary state, collection selectors, and keyed ownership compose complete project CRUD with retained row identity and no data-grid runtime. Read the [release notes](./RELEASES.md#0140---project-table-crud-and-identity), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.14.0), 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,105 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.14.0 - Project Table CRUD And Identity
4
+
5
+ Kudzu 0.14.0 composes a complete native project table from ordinary state,
6
+ collection selectors, and keyed ownership without a data-grid runtime.
7
+
8
+ ### Changed in 0.14.0
9
+
10
+ - Replaced the project article list with valid native table structure.
11
+ - Added project insertion, inline name editing, save, and deletion.
12
+ - Added reorder, immutable name sorting, active filtering, and row selection.
13
+ - Preserved keyed row and draft-input identity through reorder and sort.
14
+ - Recreated removed rows with fresh local state after filter restoration.
15
+ - Kept editor controls mounted with native `hidden` and verified keyboard focus.
16
+ - Updated `create-kudzu@0.1.122` to generate projects on
17
+ `@kudzujs/core@^0.14.0`.
18
+
19
+ ### Output Evidence
20
+
21
+ - The application emits 44 files totaling 159,258 raw / 51,627 aggregate gzip
22
+ bytes with deploy digest
23
+ `ebb3358e7a03612459e723ae765c39d105498db9d293415b924f1066cddf4793`.
24
+ - The maintained two-route session remains 17 JavaScript files and totals
25
+ 73,304 raw / 25,930 aggregate gzip bytes; `/help` remains 0 B JavaScript.
26
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
27
+ line, runtime concept, public API, or data-grid runtime was added.
28
+
29
+ ### Validation
30
+
31
+ - Required Chrome proves insert, update, delete, reorder, sort, filter,
32
+ selection, keyboard access, row-local edit state, and retained DOM identity.
33
+ - The complete suite passes 273 tests.
34
+ - Seven fresh Chrome profiles record a 0.8 ms table-update median with a
35
+ 0.7-1.1 ms range and a 3.9 ms navigation median with a 3.4-6.1 ms range.
36
+
37
+ ### Limits
38
+
39
+ This is an ordinary bounded table, not virtualization. Infinite loading,
40
+ windowing, dynamic row measurement, and 10,000-row strategy selection remain
41
+ separate evidence packets.
42
+
43
+ ### Upgrade
44
+
45
+ ```sh
46
+ npm install @kudzujs/core@^0.14.0
47
+ ```
48
+
49
+ ## 0.13.3 - File Upload Boundary
50
+
51
+ Kudzu 0.13.3 composes a bounded file-upload lifecycle from native controls,
52
+ ordinary state, owned effects, and keyed rows without an upload runtime.
53
+
54
+ ### Changed in 0.13.3
55
+
56
+ - Added one native plain-text file input with type and 1 KiB size validation
57
+ before any request.
58
+ - Added application-owned `FormData` and fetch upload with an owned
59
+ `AbortController`.
60
+ - Added explicit user cancellation, delayed transport failure, and retry without
61
+ requiring file reselection.
62
+ - Aborted in-flight upload work when enhanced navigation releases the route.
63
+ - Added successful keyed attachment mutation and an explicit statement that
64
+ fetch does not expose upload progress.
65
+ - Updated `create-kudzu@0.1.121` to generate projects on
66
+ `@kudzujs/core@^0.13.3`.
67
+
68
+ ### Output Evidence
69
+
70
+ - The application emits 44 files totaling 150,023 raw / 50,240 aggregate gzip
71
+ bytes with deploy digest
72
+ `a16fd5dbc08086aa6a7c0ec0aba3a38fbe2a63b96005a81e8747a7f4e45e214e`.
73
+ - The maintained two-route session remains 17 JavaScript files and totals
74
+ 71,031 raw / 25,304 aggregate gzip bytes; `/help` remains 0 B JavaScript.
75
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
76
+ line, normalization rule, adapter, runtime concept, public API, upload
77
+ scheduler, or transfer runtime was added.
78
+
79
+ ### Validation
80
+
81
+ - Required Chrome proves pre-request validation, user cancellation, delayed
82
+ `503` feedback, retry, successful attachment mutation, and route-departure
83
+ cancellation.
84
+ - The complete suite passes 273 tests, including the preserved draft, nested
85
+ form, authentication, routing, and server retry journeys.
86
+ - Seven fresh Chrome profiles record a 3.8 ms list-to-detail median with a
87
+ 3.5-5.0 ms range. The destination changed, so no same-content latency change
88
+ is claimed.
89
+
90
+ ### Limits
91
+
92
+ Fetch upload progress is unavailable and no fake progress is rendered. Chunking,
93
+ resume, background sync, binary formats, concurrent files, and files above the
94
+ authored 1 KiB in-memory text limit remain unsupported until a real application
95
+ requires a different transport.
96
+
97
+ ### Upgrade
98
+
99
+ ```sh
100
+ npm install @kudzujs/core@^0.13.3
101
+ ```
102
+
3
103
  ## 0.13.2 - Multistep Draft And Autosave
4
104
 
5
105
  Kudzu 0.13.2 composes a persistent two-step draft and debounced server save
@@ -834,6 +834,38 @@ no same-content latency regression or improvement is claimed.
834
834
  - **Done condition:** the supported transport and unsupported progress/resume
835
835
  boundary are explicit and tested.
836
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
+
837
869
  ## `0.14.x`: Lists, Tables, And Virtualization
838
870
 
839
871
  ### `0.14.0`: Project Table CRUD And Identity
@@ -845,6 +877,35 @@ no same-content latency regression or improvement is claimed.
845
877
  - **Stop condition:** a data-grid runtime is introduced for ordinary tables.
846
878
  - **Done condition:** complete CRUD behavior passes with measured update latency.
847
879
 
880
+ Evidence complete. The first failing fixture was the
881
+ `0.14.0` project-application contract against the previous article list. It now
882
+ uses a native table, ordinary array/object state, the existing pure collection
883
+ selector, three existing keyed row-state slots, and native button/input keyboard
884
+ behavior for insert, update, delete, reverse, sort, filter, selection, and edit.
885
+ The browser journey proves retained row and draft-input identity through reorder
886
+ and sort, fresh identity/state after filter removal and restoration, and focused
887
+ keyboard reachability. Native `hidden` keeps the editor mounted rather than
888
+ introducing a conditional callback-scope adapter or data-grid runtime.
889
+
890
+ This slice adds zero semantic primitives, zero compiler passes, zero core LOC,
891
+ and zero runtime concepts. It changes one real fixture, its contract, the
892
+ machine-readable capability record, and the existing project benchmark. The
893
+ application remains 44 files and changes from the `0.13.3` baseline by +9,235
894
+ raw / +1,387 aggregate gzip bytes to 159,258 / 51,627 bytes, with deploy SHA-256
895
+ `ebb3358e7a03612459e723ae765c39d105498db9d293415b924f1066cddf4793`.
896
+ The maintained two-route session remains 17 JavaScript files and grows by 2,273
897
+ raw / 626 aggregate gzip bytes to 73,304 / 25,930 bytes; `/help` remains 0 B
898
+ JavaScript.
899
+
900
+ Seven fresh Linux x64 Chrome 142 profiles record table Save-click-to-committed-
901
+ DOM samples of `[0.7, 0.8, 1.0, 0.7, 1.1, 0.7, 0.8]` ms, a 0.8 ms median and
902
+ 0.7/1.1 ms range. This is the first equivalent table-update measurement, so no
903
+ same-content latency delta is claimed. The same runs record list-to-detail
904
+ samples of `[3.9, 3.9, 5.5, 4.2, 6.1, 3.5, 3.4]` ms, a 3.9 ms median and
905
+ 3.4/6.1 ms range. No compiler/runtime production logic changed; `0.14.0`
906
+ publishes the accepted application-capability packet and `create-kudzu@0.1.122`
907
+ generates projects on `@kudzujs/core@^0.14.0`.
908
+
848
909
  ### `0.14.1`: Nested And Object-State Collections
849
910
 
850
911
  - **Purpose:** prove project/group/issue/checklist nesting from ordinary object
@@ -1332,5 +1393,7 @@ release transaction where possible or document and publish a forward-fix patch.
1332
1393
  | `0.13.0` | Released | Preserve native constraints, server feedback, focused field errors, retained input, and retry evidence. | None |
1333
1394
  | `0.13.1` | Released | Preserve application-owned nested metadata, keyed row identity, release, and reset evidence. | None |
1334
1395
  | `0.13.2` | Released | Preserve multistep validation, versioned persistence, stale-save rejection, conflict retention, and reset evidence. | None |
1335
- | `0.13.3` | Active | Complete the file upload boundary packet. | None |
1336
- | `0.14.0` onward | Blocked | Complete the `0.13.3` release transaction first. | Ordered patch boundary |
1396
+ | `0.13.3` | Released | Preserve the published upload validation, cancellation, retry, route cleanup, and attachment mutation evidence. | None |
1397
+ | `0.14.0` | Released | Preserve native table CRUD, retained identity, keyboard access, and measured update evidence. | None |
1398
+ | `0.14.1` | Active | Add the first failing nested/object-state collection fixture. | None |
1399
+ | `0.14.2` onward | Blocked | Complete or explicitly close `0.14.1` 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.120` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.13.2`.
69
+ `create-kudzu@0.1.122` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.14.0`.
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.13.2",
3
+ "version": "0.14.0",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",