@kudzujs/core 0.14.2 → 0.14.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
@@ -2,6 +2,34 @@
2
2
 
3
3
  Reproducibility classes: `npm run benchmark`, `npm run benchmark:keyed`, `npm run benchmark:native`, `npm run benchmark:module-cache`, `npm run benchmark:project-navigation`, `npm run benchmark:project-state`, and `npm run benchmark:source-scale` are maintained in this repository; `npm run benchmark:commerce` is a maintained paired runner over the public external storefront; older excluded-workspace sections are historical provenance only and are not current framework rankings.
4
4
 
5
+ ## 0.14.3 10,000-Item Browser Decision Intake
6
+
7
+ Measured 2026-08-27 on Linux x64 with Node 24.14.0 and Chrome
8
+ 142.0.7444.175 using `RUNS=7 npm run benchmark:project-list-decision`.
9
+ The tracked fixture rotates three fresh-profile routes, forces garbage collection,
10
+ and records navigation completion, range replacement, DOM counters, JavaScript
11
+ heap, native edit identity, and bounded-row release.
12
+
13
+ | Strategy | Load median | Range median | Rows | DOM nodes median | JS heap median |
14
+ |---|---:|---:|---:|---:|---:|
15
+ | Direct DOM | 806.6 ms | n/a | 10,000 | 90,023 | 535,572 B |
16
+ | Pagination | 165.4 ms | 12.1 ms | 100 | 1,470 | 1,407,412 B |
17
+ | Scroll window | 161.2 ms | 16.5 ms | 100 | 1,471 | 1,507,712 B |
18
+
19
+ Direct load samples are `[767, 790.1, 882.8, 908.8, 753, 826.7, 806.6]`
20
+ ms. Pagination load/range samples are `[253.6, 138.6, 157, 133.7, 181.9,
21
+ 202, 165.4]` / `[10.8, 22.1, 15.8, 13.7, 12.1, 10.5, 11]` ms. Scroll
22
+ window load/range samples are `[156.7, 154.6, 163.4, 161.2, 175.9, 203.5,
23
+ 137.1]` / `[21.3, 16.4, 14.6, 17.1, 15.9, 16.5, 20.4]` ms.
24
+
25
+ The direct route is static and therefore has the lowest JavaScript heap; that
26
+ does not offset its 61.2x DOM-node count and 4.9x load median. Pagination and the
27
+ scroll window have overlapping load ranges, while pagination has the lower range
28
+ median, lower JavaScript heap, no scroll listener, native focus/page semantics,
29
+ and no fixed-row-height policy. Pagination is selected for 10,000-item project
30
+ tables. The window experiment adds no framework primitive and does not authorize
31
+ `0.14.4`; three independent failing fixtures remain required.
32
+
5
33
  ## 0.14.2 Infinite Loading Composition
6
34
 
7
35
  Measured 2026-08-26 on macOS arm64 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.14.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.14.2 - Infinite loading composition.** Native `IntersectionObserver`, owned fetch, ordinary state, and existing keyed lists now compose bounded cursor loading with duplicate suppression, retry, terminal state, retained identity, and exact cleanup. Read the [release notes](./RELEASES.md#0142---infinite-loading-composition), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.14.2), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.14.3 - 10,000-item browser decision.** Measured direct DOM, pagination, and scroll-window alternatives select native pagination for large project tables without adding virtualization or range runtime semantics. Read the [release notes](./RELEASES.md#0143---10000-item-browser-decision), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.14.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,44 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.14.3 - 10,000-Item Browser Decision
4
+
5
+ Kudzu 0.14.3 measures direct DOM, pagination, and scroll-window alternatives
6
+ for one deterministic 10,000-project table and selects native pagination.
7
+
8
+ ### Changed in 0.14.3
9
+
10
+ - Added a tracked three-route large-list decision fixture.
11
+ - Added rotating fresh-Chrome load, range, DOM, heap, and identity measurement.
12
+ - Rejected direct 10,000-row DOM after its 90,023-node result.
13
+ - Rejected fixed-height scroll windowing for the project table because pagination
14
+ is faster to change range, uses less heap, and preserves native page/focus and
15
+ variable-row-height behavior.
16
+ - Added no range primitive, virtualization runtime, compiler pass, or public API.
17
+ - Updated `create-kudzu@0.1.125` to generate projects on
18
+ `@kudzujs/core@^0.14.3`.
19
+
20
+ ### Browser Evidence
21
+
22
+ - Direct DOM loads in 806.6 ms median with 90,023 DOM nodes.
23
+ - Pagination loads in 165.4 ms and changes its 100-row page in 12.1 ms median
24
+ with 1,470 DOM nodes.
25
+ - The scroll window loads in 161.2 ms and changes range in 16.5 ms median with
26
+ 1,471 DOM nodes.
27
+ - Both bounded strategies release an edited off-range row and restore fresh
28
+ native input identity.
29
+
30
+ ### Decision
31
+
32
+ Use pagination for 10,000-item project tables. `0.14.4` virtual range ownership
33
+ remains blocked until three independent real fixtures prove pagination and
34
+ application-owned bounded ranges insufficient.
35
+
36
+ ### Upgrade
37
+
38
+ ```sh
39
+ npm install @kudzujs/core@^0.14.3
40
+ ```
41
+
3
42
  ## 0.14.2 - Infinite Loading Composition
4
43
 
5
44
  Kudzu 0.14.2 composes bounded sentinel-driven loading from ordinary state,
@@ -999,6 +999,25 @@ delta is claimed. `0.14.2` publishes this accepted packet, and
999
999
  - **Done condition:** the selected strategy and thresholds are recorded without
1000
1000
  assuming direct 10,000-row rendering is acceptable.
1001
1001
 
1002
+ Decision evidence is complete. A tracked three-route fixture and
1003
+ `npm run benchmark:project-list-decision` now compare one static 10,000-row
1004
+ table with pagination and a scroll-driven 100-row window over the same
1005
+ deterministic records and native edit controls. Seven rotating fresh Chrome 142
1006
+ profiles show direct DOM
1007
+ at an 806.6 ms load median and 90,023 DOM nodes, versus 165.4/161.2 ms and a
1008
+ 1,470/1,471-node median for pagination and the scroll window. Direct JavaScript
1009
+ heap is lower because its route is static; DOM size and load remain materially
1010
+ worse.
1011
+
1012
+ Pagination is selected. Its 12.1 ms range median is lower than the window's 16.5
1013
+ ms, it uses 100,300 fewer median JavaScript-heap bytes, and it preserves native
1014
+ page, keyboard, focus, and variable-row-height behavior without a scroll listener
1015
+ or measurement policy. Both bounded routes release an edited off-range row and
1016
+ restore fresh native input identity. The experiment adds no semantic primitive,
1017
+ IR kind, compiler pass, production compiler/runtime line, runtime concept, or
1018
+ public API. `0.14.4` remains blocked because this one fixture cannot authorize
1019
+ virtual range ownership.
1020
+
1002
1021
  ### `0.14.4`: Virtual Range Ownership
1003
1022
 
1004
1023
  - **Purpose:** implement bounded DOM only if `0.14.3` and three independent
@@ -1457,5 +1476,6 @@ release transaction where possible or document and publish a forward-fix patch.
1457
1476
  | `0.13.3` | Released | Preserve the published upload validation, cancellation, retry, route cleanup, and attachment mutation evidence. | None |
1458
1477
  | `0.14.0` | Released | Preserve native table CRUD, retained identity, keyboard access, and measured update evidence. | None |
1459
1478
  | `0.14.1` | Released | Preserve immutable object-state replacement, nested keyed identity, latest handlers, and exact row release. | None |
1460
- | `0.14.2` | Release candidate | Complete commit, CI, tag, GitHub release, npm publication, and registry verification. | Release transaction |
1461
- | `0.14.3` onward | Blocked | Complete or explicitly close `0.14.2` first. | Ordered patch boundary |
1479
+ | `0.14.2` | Released | Preserve bounded cursor loading, duplicate suppression, retry/end behavior, retained identity, and route cleanup. | None |
1480
+ | `0.14.3` | Release candidate | Complete commit, CI, tag, GitHub release, npm publication, and registry verification. | Release transaction |
1481
+ | `0.14.4` onward | Blocked | Complete or explicitly close `0.14.3` 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.124` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.14.2`.
69
+ `create-kudzu@0.1.125` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.14.3`.
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.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -61,6 +61,7 @@
61
61
  "benchmark:module-cache": "node test/module-cache-performance.mjs",
62
62
  "benchmark:native": "node test/native-performance.mjs",
63
63
  "benchmark:project-navigation": "node test/project-navigation-performance.mjs",
64
+ "benchmark:project-list-decision": "node test/project-list-decision-performance.mjs",
64
65
  "benchmark:project-state": "node test/project-state-performance.mjs",
65
66
  "benchmark:source-scale": "node test/source-scale-performance.mjs",
66
67
  "prepublishOnly": "npm run check && npm test",