@kudzujs/core 0.11.2 → 0.11.4

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,47 @@ 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.11.4 Project Pagination And Polling Policy
10
+
11
+ Measured 2026-08-23 on macOS arm64 with Node 25.6.1 and Chrome
12
+ 151.0.7922.172. `RUNS=21 npm run benchmark:project-navigation` retains the same
13
+ fetch-complete list-to-detail interval. Required Chrome separately proves URL
14
+ page/filter push and back synchronization, explicit refresh, hidden-page polling
15
+ suppression, one visible refresh, exact cleanup, and results bounded to two rows.
16
+
17
+ The two-route session uses 16 unique JavaScript files totaling 58,970 raw /
18
+ 22,124 aggregate gzip bytes. Navigation samples are
19
+ `[1.3, 1.6, 1.3, 1.3, 1.3, 1.3, 1.2, 1.2, 1.2, 1.4, 1.3, 1.3, 1.3, 1.4, 1.3, 1.3, 1.3, 1.3, 1.2, 1.5, 1.4]`
20
+ ms, with a 1.3 ms median and 1.2/1.6 ms minimum/maximum.
21
+
22
+ Compared with `0.11.3`, the authored query controls, query-backed fetch
23
+ dependencies, polling state/effect, and native timer/listener cleanup add 2,652
24
+ raw / 913 aggregate gzip session bytes. The prior 0.8 ms median and 0.7/1.0 ms
25
+ range do not overlap, so the measured 0.5 ms median increase is disclosed. No
26
+ compiler or browser-runtime source changed, and `/help` remains 0 B JavaScript.
27
+
28
+ ## 0.11.3 Project Optimistic Mutation
29
+
30
+ Measured 2026-08-22 on macOS arm64 with Node 25.6.1 and Chrome
31
+ 151.0.7922.172. `RUNS=21 npm run benchmark:project-navigation` retains the same
32
+ fetch-complete list-to-detail interval; the required application journey
33
+ separately executes optimistic failure, rollback, retry, and success.
34
+
35
+ The two-route session uses 15 unique JavaScript files totaling 56,318 raw /
36
+ 21,211 aggregate gzip bytes. Navigation samples are
37
+ `[0.7, 0.7, 0.8, 0.8, 0.9, 0.7, 0.8, 0.8, 0.8, 0.8, 0.7, 0.8, 0.9, 0.7, 0.8, 0.9, 0.8, 0.9, 1.0, 0.9, 0.7]`
38
+ ms, with a 0.8 ms median and 0.7/1.0 ms minimum/maximum.
39
+
40
+ Compared with `0.11.2`, the authored mutation status/error state, conditional
41
+ UI, and async handler add 582 raw / 3 aggregate gzip session bytes. The prior
42
+ 0.9 ms median and 0.7/1.2 ms range overlap, so no latency change is claimed. No
43
+ compiler or browser-runtime source changed, and `/help` remains 0 B JavaScript.
44
+
45
+ A clean homepage verification rerun on the same environment recorded
46
+ `[0.9, 0.7, 0.8, 0.9, 0.9, 0.7, 0.8, 0.9, 0.7, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.8, 0.8, 0.9, 0.8, 0.9]`
47
+ ms, with a 0.9 ms median and 0.7/0.9 ms range. It reproduces the release result's
48
+ overlapping range and does not change the no-regression conclusion.
49
+
9
50
  ## 0.11.1 Project List/Detail Consistency
10
51
 
11
52
  Measured 2026-08-22 on macOS arm64 with Node 25.6.1 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.11.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.11.2 - Request coordination evidence.** Three unrelated server-data fixtures confirm that one explicit owner, ordinary state, and owned effects remain sufficient; no request registry, cache, or query runtime was added. Read the [release notes](./RELEASES.md#0112---request-coordination-evidence), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.11.2), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.11.4 - Pagination, refresh, and polling policy.** URL-owned page/filter state, exact refresh, bounded results, back/forward, and visibility-aware polling now compose from existing query signals and owned effects without a scheduler or cache. Read the [release notes](./RELEASES.md#0114---pagination-refresh-and-polling-policy), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.11.4), 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,97 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.11.4 - Pagination, Refresh, And Polling Policy
4
+
5
+ Kudzu 0.11.4 completes the `0.11.x` server-data train with bounded URL-owned
6
+ pagination and application-owned refresh policy.
7
+
8
+ ### Changed in 0.11.4
9
+
10
+ - Synchronized project page/filter values with URL query signals and browser
11
+ back navigation.
12
+ - Proved explicit refresh and exact list request counts without a query cache.
13
+ - Added optional visibility-aware polling with interval/listener cleanup.
14
+ - Bounded every server response to two retained rows.
15
+ - Updated `create-kudzu@0.1.112` to generate projects on
16
+ `@kudzujs/core@^0.11.4`.
17
+
18
+ ### Output Evidence
19
+
20
+ - The application emits 20 files, 77,263 raw / 26,156 aggregate gzip bytes, and
21
+ deploy digest
22
+ `a3864a5155d658e86378fce80de94e082ef0894c5db5f5793d91b4de7f359b46`.
23
+ - The list/detail session uses 16 JavaScript files totaling 58,970 raw / 22,124
24
+ aggregate gzip bytes; `/help` remains 0 B JavaScript.
25
+ - Twenty-one fresh Chrome profiles record a 1.3 ms navigation median and
26
+ 1.2/1.6 ms range.
27
+ - No semantic primitive, compiler pass, production compiler line, runtime
28
+ concept, cache, retained result store, or scheduler was added.
29
+
30
+ ### Validation
31
+
32
+ - Required Chrome proves query push/back, bounded results, exact requests,
33
+ refresh, hidden polling suppression, visible refresh, and cleanup.
34
+ - The full suite, package smoke, registry metadata, and fresh installation are
35
+ release gates.
36
+
37
+ ### Limits
38
+
39
+ Polling remains authored route policy. Kudzu does not ship a universal
40
+ scheduler, request registry, invalidation graph, or retained query cache.
41
+
42
+ ### Upgrade
43
+
44
+ ```sh
45
+ npm install @kudzujs/core@^0.11.4
46
+ ```
47
+
48
+ ## 0.11.3 - Optimistic Mutation And Rollback
49
+
50
+ Kudzu 0.11.3 proves optimistic server mutation with ordinary shared state and
51
+ one owned async handler rather than a transaction runtime.
52
+
53
+ ### Changed in 0.11.3
54
+
55
+ - Added immediate optimistic project name/revision updates visible from list and
56
+ detail routes.
57
+ - Disabled duplicate submission after the synchronous-turn optimistic commit.
58
+ - Restored the exact prior state after an HTTP 500 and exposed an accessible
59
+ error.
60
+ - Proved retry success, retained keyed row identity, enhanced navigation, and
61
+ server restoration after document reload.
62
+ - Updated `create-kudzu@0.1.111` to generate projects on
63
+ `@kudzujs/core@^0.11.3`.
64
+
65
+ ### Output Evidence
66
+
67
+ - The application emits 19 files, 73,202 raw / 25,057 aggregate gzip bytes, and
68
+ deploy digest
69
+ `40c68fef4eeba5ea4c1a92e9a8003b74e6a45b7a10671ee2f3e4952010117b26`.
70
+ - The list/detail session uses 15 unique JavaScript files totaling 56,318 raw /
71
+ 21,211 aggregate gzip bytes; `/help` remains 0 B JavaScript.
72
+ - Twenty-one fresh Chrome profiles record a 0.8 ms navigation median and
73
+ 0.7/1.0 ms range.
74
+ - No semantic primitive, compiler pass, production compiler line, runtime
75
+ concept, transaction primitive, cache, or scheduler was added.
76
+
77
+ ### Validation
78
+
79
+ - Required Chrome proves optimistic state, one accepted attempt after failure,
80
+ exact rollback, retry, identity, navigation, and reload.
81
+ - The full suite, package smoke, registry metadata, and fresh installation are
82
+ release gates.
83
+
84
+ ### Limits
85
+
86
+ The authored handler owns one mutation and snapshot. Generic transactions and
87
+ same-turn programmatic reentrancy are not application semantics.
88
+
89
+ ### Upgrade
90
+
91
+ ```sh
92
+ npm install @kudzujs/core@^0.11.3
93
+ ```
94
+
3
95
  ## 0.11.2 - Request Coordination Evidence
4
96
 
5
97
  Kudzu 0.11.2 reviews three unrelated server-data fixtures and closes shared
@@ -409,6 +409,13 @@ application retains its 20-file, 69,501 raw / 24,649 aggregate gzip deploy and
409
409
  not applicable because no cache exists; cleanup remains existing effect and
410
410
  route/layout owner release.
411
411
 
412
+ Clean-worktree `npm run check`, 273/273 required-Chrome tests, and packed-package
413
+ smoke passed on 2026-08-22. Release commit `0ae4d5d`, tag `v0.11.2`, CI
414
+ `32575316981`, the GitHub release, `@kudzujs/core@0.11.2`,
415
+ `create-kudzu@0.1.110`, registry metadata, and a fresh registry-backed scaffold
416
+ install/check passed. Publish workflow `32575541567` completed every version,
417
+ package, publication, and registry gate.
418
+
412
419
  ### `0.11.3`: Mutation, Optimistic Update, And Rollback
413
420
 
414
421
  - **Purpose:** complete issue create/edit/delete behavior under failure.
@@ -422,6 +429,37 @@ route/layout owner release.
422
429
  - **Done condition:** data integrity survives success, failure, navigation, and
423
430
  retry.
424
431
 
432
+ **Completion evidence:** one layout-owned async rename handler snapshots the
433
+ current project name/revision, writes an immediate optimistic value, disables its
434
+ button after the synchronous-turn commit, and sends one native POST. The
435
+ deterministic server rejects the first attempt. The handler restores the exact
436
+ snapshot, exposes `HTTP 500` through an accessible alert, and leaves the retained
437
+ keyed row identity unchanged. A retry from detail writes the optimistic value,
438
+ clears the alert, commits the confirmed revision, survives list/detail
439
+ navigation, and restores from server truth after full document reload. Counts
440
+ record two attempts, one accepted mutation, and no mutation-triggered GET.
441
+
442
+ Existing immediate setters, native async handlers, shared layout signals, and
443
+ owner authority are sufficient. This packet adds zero semantic primitives,
444
+ ModuleIR kinds, compiler passes, production compiler lines, runtime concepts,
445
+ normalization rules, adapter rules, public APIs, transaction primitives, caches,
446
+ or schedulers. One positive application fixture gains optimistic success,
447
+ failure, rollback, disabled duplicate submission, navigation, retry, and reload
448
+ cases. It emits 19 files totaling 73,202 raw / 25,057 aggregate gzip bytes with
449
+ deploy SHA-256
450
+ `40c68fef4eeba5ea4c1a92e9a8003b74e6a45b7a10671ee2f3e4952010117b26`.
451
+ The two-route session uses 15 JavaScript files totaling 56,318 raw / 21,211
452
+ aggregate gzip bytes, an authored application increase of 582 raw / 3 gzip bytes
453
+ over `0.11.2`. Twenty-one fresh Chrome profiles record a 0.8 ms median with a
454
+ 0.7/1.0 ms range; no latency change is claimed.
455
+
456
+ Clean-worktree `npm run check`, 273/273 required-Chrome tests, and packed-package
457
+ smoke passed on 2026-08-22. Release commit `ba6f97a`, tag `v0.11.3`, CI
458
+ `32576861865`, the GitHub release, `@kudzujs/core@0.11.3`,
459
+ `create-kudzu@0.1.111`, registry metadata, and a fresh registry-backed scaffold
460
+ install/check passed. Publish workflow `32577090955` completed every version,
461
+ package, publication, and registry gate.
462
+
425
463
  ### `0.11.4`: Pagination, Refresh, And Polling Policy
426
464
 
427
465
  - **Purpose:** complete bounded server-data loading before infinite data work.
@@ -434,6 +472,34 @@ route/layout owner release.
434
472
  - **Done condition:** the exact owner and network behavior are measured and
435
473
  documented.
436
474
 
475
+ **Completion evidence:** the project list reads page and filter from two
476
+ existing React Router query signals and restarts its existing abortable fetch
477
+ effect when either changes. Static updater handlers push page 2/all and page
478
+ 1/active URLs. Two browser back operations restore the prior URL, signal values,
479
+ and bounded server results. An explicit refresh increments the same route-owned
480
+ request signal. Optional polling owns one native interval and one
481
+ `visibilitychange` listener; hidden events perform no work, one visible event
482
+ performs one refresh, and disabling polling clears both owners before a later
483
+ event. The deterministic journey records 11 total list requests across initial
484
+ stale replacement, HTTP recovery, page/filter history, refresh, polling, and
485
+ route remount. Every response retains at most two rows.
486
+
487
+ Existing query signals, primitive state, dependency effects, abort invalidation,
488
+ native timers/listeners, and route cleanup are sufficient. This packet adds zero
489
+ semantic primitives, ModuleIR kinds, compiler passes, production compiler lines,
490
+ runtime concepts, normalization rules, adapter rules, public APIs, caches,
491
+ schedulers, or retained result stores. One positive application fixture gains
492
+ page/filter URL ownership, history, refresh, visibility-aware polling, exact
493
+ cleanup, request counts, and bounded-result cases. It emits 20 files totaling
494
+ 77,263 raw / 26,156 aggregate gzip bytes with deploy SHA-256
495
+ `a3864a5155d658e86378fce80de94e082ef0894c5db5f5793d91b4de7f359b46`.
496
+ The two-route session uses 16 JavaScript files totaling 58,970 raw / 22,124
497
+ aggregate gzip bytes, an authored application increase of 2,652 raw / 913 gzip
498
+ bytes over `0.11.3`. Twenty-one fresh Chrome profiles record a 1.3 ms median
499
+ with a 1.2/1.6 ms range. The prior range does not overlap, so the 0.5 ms median
500
+ increase is disclosed rather than presented as a no-regression result. `/help`
501
+ remains 0 B JavaScript.
502
+
437
503
  ## `0.12.x`: Routing And Application Lifetime
438
504
 
439
505
  ### `0.12.0`: Project Route Shell And Runtime Parameters
@@ -1021,5 +1087,7 @@ release transaction where possible or document and publish a forward-fix patch.
1021
1087
  | `0.10.3` | Released | Preserve the published guarded persistence recipe and zero-runtime exclusion. | None |
1022
1088
  | `0.11.0` | Released | Preserve the published owned-fetch lifecycle and zero-query-runtime exclusion. | None |
1023
1089
  | `0.11.1` | Released | Preserve the published single-owner consistency and exact request-count evidence. | None |
1024
- | `0.11.2` | Active | Review two independent fixtures for the same missing coordination contract before adding semantics. | None |
1025
- | `0.11.3` onward | Blocked | Wait for the preceding patch acceptance and release record. | Ordered dependency |
1090
+ | `0.11.2` | Released | Preserve the published no-new-primitive architecture decision and zero-byte result. | None |
1091
+ | `0.11.3` | Released | Preserve the published optimistic rollback, duplicate prevention, navigation, and retry evidence. | None |
1092
+ | `0.11.4` | Active | Prove bounded page/filter synchronization, history, refresh, optional polling cleanup, and exact request behavior. | None |
1093
+ | `0.12.0` onward | Blocked | Wait for explicit approval after the patch-only release sequence. | User-directed minor-version 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.110` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.11.2`.
69
+ `create-kudzu@0.1.112` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.11.4`.
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.11.2",
3
+ "version": "0.11.4",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",