@kudzujs/core 0.10.2 → 0.11.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,54 @@ 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.0 Project Owned Fetch Lifecycle
10
+
11
+ Measured 2026-08-22 on macOS arm64 with Node 25.6.1 and Chrome
12
+ 151.0.7922.172. `RUNS=21 npm run benchmark:project-navigation` uses fresh Chrome
13
+ profiles, waits for the initial project fetch and persisted workspace update,
14
+ then measures list-to-detail completion including route-effect cancellation.
15
+
16
+ The two-route session uses 15 unique JavaScript files totaling 54,770 raw /
17
+ 20,763 aggregate gzip bytes. Navigation samples are
18
+ `[1.1, 0.8, 0.7, 0.8, 0.7, 0.8, 0.8, 0.7, 0.7, 0.9, 0.9, 0.9, 0.7, 0.8, 0.7, 1.3, 0.8, 0.8, 0.6, 0.9, 0.9]`
19
+ ms, with a 0.8 ms median and 0.6/1.3 ms minimum/maximum.
20
+
21
+ Compared with the `0.10.3` release, the authored fetch effect, loading/error
22
+ conditions, and refetch state add 1,208 raw / 440 aggregate gzip session bytes.
23
+ `/help` remains 0 B JavaScript. The measured interval is unchanged, but the new
24
+ fetch-completion prerequisite makes this an acceptance-safe no-regression check,
25
+ not a latency improvement claim. No compiler or browser-runtime source changed.
26
+
27
+ ## 0.10.3 Project Persistence Recipe
28
+
29
+ Measured 2026-08-22 on macOS arm64 with Node 25.6.1 and Chrome
30
+ 151.0.7922.172. `RUNS=21 npm run benchmark:project-navigation` uses fresh Chrome
31
+ profiles and exact extensionless application routes. Every accepted sample
32
+ updates workspace state, verifies layout identity and persisted state, then
33
+ measures list-to-detail completion.
34
+
35
+ The 0.10.2 release baseline and 0.10.3 candidate were measured with the same
36
+ 21-profile timing protocol and host; the candidate additionally verifies its
37
+ persistence write before timing:
38
+
39
+ | Revision | Session JS raw/gzip | Navigation median | Min/max |
40
+ |---|---:|---:|---:|
41
+ | `0.10.2` | 46,418 / 17,045 B | 1.9 ms | 1.3 / 5.5 ms |
42
+ | `0.10.3` candidate | 53,562 / 20,323 B | 1.5 ms | 1.3 / 5.6 ms |
43
+
44
+ Baseline samples:
45
+ `[1.3, 1.8, 1.6, 1.9, 1.3, 1.3, 1.9, 5.1, 1.7, 1.4, 1.9, 5.0, 4.7, 1.9, 1.7, 5.5, 2.2, 1.7, 1.5, 2.0, 5.2]`.
46
+
47
+ Candidate samples:
48
+ `[2.6, 1.5, 1.8, 1.3, 1.5, 1.4, 1.7, 1.3, 1.5, 1.5, 1.9, 1.7, 1.6, 5.6, 1.5, 1.6, 1.5, 1.5, 1.5, 1.5, 1.6]`.
49
+
50
+ The +7,144 raw / +3,278 aggregate gzip bytes are the measured cost of two
51
+ authored layout effects, their route-owned entries, and one native clear
52
+ handler. The median changes from 1.9 to 1.5 ms with overlapping ranges, so no
53
+ latency improvement or regression is claimed. No compiler or browser-runtime
54
+ source changed. `/help` remains 0 B JavaScript, so unused routes pay no
55
+ persistence cost.
56
+
9
57
  ## 0.10.2 Project Shared-Layout Navigation
10
58
 
11
59
  Measured 2026-08-22 on macOS arm64 with Node 25.6.1 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.10.x`: the compiler API and supported TSX surface may change.
15
+ > Experimental `0.11.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.10.2 - Shared-layout navigation.** The tracked project application now preserves workspace state across explicit list/detail navigation while route drafts reset, direct loads start fresh, and static routes remain outside the runtime group. Read the [release notes](./RELEASES.md#0102---shared-layout-navigation), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.10.2), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.11.0 - Owned fetch lifecycle.** The tracked project application now owns loading, accessible HTTP errors, explicit refetch, stale completion rejection, cancellation, and route-release behavior without a query runtime. Read the [release notes](./RELEASES.md#0110---owned-fetch-lifecycle), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.11.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,99 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.11.0 - Owned Fetch Lifecycle
4
+
5
+ Kudzu 0.11.0 proves browser-only server data as application-owned state, one
6
+ native fetch effect, and exact route lifetime rather than a query framework.
7
+
8
+ ### Changed in 0.11.0
9
+
10
+ - Added accessible loading, success, and HTTP error states to the maintained
11
+ project application.
12
+ - Added explicit refetch and recovery through one primitive request dependency.
13
+ - Proved that a delayed prior continuation cannot overwrite newer keyed data.
14
+ - Added authored `AbortController` cleanup for dependency replacement and route
15
+ removal, with late route work denied state authority.
16
+ - Updated `create-kudzu@0.1.108` to generate projects on
17
+ `@kudzujs/core@^0.11.0`.
18
+
19
+ ### Output Evidence
20
+
21
+ - The application fixture emits 19 files, 67,886 raw / 24,077 aggregate gzip
22
+ bytes, and deploy digest
23
+ `9c06d2a5d47b4ea2ae54cebbc0448bf161907691ee37a02a5dae0e7c37779ae4`.
24
+ - The list/detail session uses 15 unique JavaScript files totaling 54,770 raw /
25
+ 20,763 aggregate gzip bytes; `/help` remains 0 B JavaScript.
26
+ - Twenty-one fresh Chrome profiles record a 0.8 ms navigation median and
27
+ 0.6/1.3 ms range after fetch completion and persisted workspace setup.
28
+ - No semantic primitive, compiler pass, production compiler line, runtime
29
+ concept, cache, Provider, retry scheduler, or query runtime was added.
30
+
31
+ ### Validation
32
+
33
+ - Required Chrome proves loading, stale completion rejection, accessible HTTP
34
+ failure, recovery, cancellation, and route-removal authority loss.
35
+ - The full suite, package smoke, registry metadata, and fresh installation are
36
+ release gates.
37
+
38
+ ### Limits
39
+
40
+ Shared request deduplication, invalidation, optimistic mutation, retries,
41
+ polling, and retained caches remain later evidence packets.
42
+
43
+ ### Upgrade
44
+
45
+ ```sh
46
+ npm install @kudzujs/core@^0.11.0
47
+ ```
48
+
49
+ ## 0.10.3 - Application-Owned Persistence
50
+
51
+ Kudzu 0.10.3 proves guarded browser persistence as application code composed
52
+ from ordinary state, effects, and native Web Storage.
53
+
54
+ ### Changed in 0.10.3
55
+
56
+ - Added a versioned workspace restore recipe with deterministic static fallback
57
+ and exact value/schema/version validation.
58
+ - Added a readiness guard so dependency persistence cannot overwrite storage
59
+ before mount restoration completes.
60
+ - Added application-owned logout clearing and visible state reset in one native
61
+ handler.
62
+ - Added required-Chrome cases for valid, absent, malformed, wrong-schema, and
63
+ wrong-version records, persistence writes, and logout removal.
64
+ - Updated `create-kudzu@0.1.107` to generate projects on
65
+ `@kudzujs/core@^0.10.3`.
66
+
67
+ ### Output Evidence
68
+
69
+ - The application fixture emits 19 files, 65,376 raw / 23,471 aggregate gzip
70
+ bytes, and deploy digest
71
+ `bb58826876bdf090a85d2c1f8a1edcbbc9abd35d5335eb3d1e7fb1fafe6bed72`.
72
+ - The list/detail session uses 15 unique JavaScript files totaling 53,562 raw /
73
+ 20,323 aggregate gzip bytes; `/help` remains 0 B JavaScript.
74
+ - Matched 21-profile navigation medians are 1.9 ms for 0.10.2 and 1.5 ms for
75
+ 0.10.3 with overlapping ranges, so no latency change is claimed.
76
+ - No semantic primitive, compiler pass, production compiler line, runtime
77
+ concept, persistence API, store, or storage runtime was added.
78
+
79
+ ### Validation
80
+
81
+ - Required Chrome proves restore, fallback, write, clear, conditional/keyed
82
+ release and fresh remount, route draft reset, and fresh direct documents.
83
+ - The full suite, package smoke, registry metadata, and fresh installation are
84
+ release gates.
85
+
86
+ ### Limits
87
+
88
+ Schema migration chains, expiry, encryption, cross-tab storage events, and
89
+ server synchronization remain application concerns or later evidence packets.
90
+
91
+ ### Upgrade
92
+
93
+ ```sh
94
+ npm install @kudzujs/core@^0.10.3
95
+ ```
96
+
3
97
  ## 0.10.2 - Shared-layout navigation
4
98
 
5
99
  Kudzu 0.10.2 extends the tracked project-management application with explicit
@@ -224,6 +224,11 @@ The list/detail session uses 10 unique JavaScript files totaling 46,418 raw /
224
224
  17,045 aggregate gzip bytes. Seven fresh Chrome profiles record list-to-detail
225
225
  completion at `[2.3, 6.5, 1.4, 1.3, 5.1, 1.3, 4.0]` ms, median 2.3 ms.
226
226
 
227
+ Release commit `76a45c4`, tag `v0.10.2`, both CI jobs, the GitHub release,
228
+ `@kudzujs/core@0.10.2`, `create-kudzu@0.1.106`, registry metadata, and a fresh
229
+ registry-backed scaffold install/check passed on 2026-08-22. Publish workflow
230
+ `32566976581` completed every version, package, publication, and registry gate.
231
+
227
232
  ### `0.10.3`: Persistence Recipe And State Release
228
233
 
229
234
  - **Purpose:** prove URL, storage, and server-backed persistence without adding a
@@ -236,6 +241,40 @@ completion at `[2.3, 6.5, 1.4, 1.3, 5.1, 1.3, 4.0]` ms, median 2.3 ms.
236
241
  - **Done condition:** deterministic static fallback and browser recovery pass
237
242
  with no storage runtime in unused routes.
238
243
 
244
+ **Completion evidence:** the greenfield application layout now owns one guarded
245
+ `localStorage` recipe composed entirely from ordinary state and two existing
246
+ effects. Static HTML starts with `Primary`; a mount effect accepts only version
247
+ 1 records whose workspace is `Primary` or `Secondary`, while absent, malformed,
248
+ wrong-schema, and wrong-version records fall back safely. A readiness state
249
+ prevents the dependency effect from overwriting storage before restore.
250
+ Workspace changes write the versioned record, and logout disables persistence,
251
+ removes the record, and resets visible state in one synchronous handler.
252
+
253
+ Required Chrome proves valid restore, every fallback, post-commit persistence,
254
+ logout removal, conditional and keyed release/fresh remount, route draft
255
+ release/fresh revisit, and a fresh direct document. `/help` remains outside the
256
+ navigation group with complete HTML and 0 B JavaScript. The fixture emits 19
257
+ files, 65,376 raw / 23,471 aggregate gzip bytes, with deploy SHA-256
258
+ `bb58826876bdf090a85d2c1f8a1edcbbc9abd35d5335eb3d1e7fb1fafe6bed72`.
259
+ The two-route session uses 15 unique JavaScript files totaling 53,562 raw /
260
+ 20,323 aggregate gzip bytes.
261
+
262
+ This packet adds zero semantic primitives, ModuleIR kinds, compiler passes,
263
+ production compiler lines, runtime concepts, normalization rules, adapter
264
+ rules, public APIs, stores, or persistence runtimes. One existing positive
265
+ application fixture gains valid, absent, malformed, wrong-schema, wrong-version,
266
+ write, and clear browser cases. A matched 21-profile measurement records the
267
+ authored capability cost: the 0.10.2 list/detail median of 1.9 ms and 46,418 raw /
268
+ 17,045 gzip session JavaScript becomes 1.5 ms and 53,562 / 20,323 bytes. The
269
+ timing ranges overlap with no material loss; the 7,144 raw / 3,278 gzip byte
270
+ increase is the explicit cost of route-owned effect/native entries, not a
271
+ compiler or shared-runtime change.
272
+
273
+ Release commit `4420ccc`, tag `v0.10.3`, both CI jobs, the GitHub release,
274
+ `@kudzujs/core@0.10.3`, `create-kudzu@0.1.107`, registry metadata, and a fresh
275
+ registry-backed scaffold install/check passed on 2026-08-22. Publish workflow
276
+ `32568752477` completed every version, package, publication, and registry gate.
277
+
239
278
  ## `0.11.x`: Async And Server Data
240
279
 
241
280
  ### `0.11.0`: Owned Fetch Lifecycle
@@ -248,6 +287,36 @@ completion at `[2.3, 6.5, 1.4, 1.3, 5.1, 1.3, 4.0]` ms, median 2.3 ms.
248
287
  - **Stop condition:** a query cache is added to implement one request.
249
288
  - **Done condition:** the project list journey passes and `/help` stays zero-JS.
250
289
 
290
+ **Completion evidence:** the project list now composes one route-owned native
291
+ `fetch` effect with ordinary request, status, error, project, and summary state.
292
+ The deterministic server drives initial loading, a fast explicit refetch, an
293
+ HTTP 500 alert, and recovery. A delayed prior continuation attempts its writes
294
+ after dependency replacement and cannot replace the newer keyed project data.
295
+ The effect owns an `AbortController`; dependency replacement and route removal
296
+ invoke authored abort cleanup, and late route work cannot mutate the detail
297
+ route or recreated list ownership. Existing project filtering, nested keyed
298
+ identity, row state, shared layout state, persistence, and logout journeys still
299
+ pass. `/help` remains complete HTML with 0 B JavaScript.
300
+
301
+ This packet adds zero semantic primitives, ModuleIR kinds, compiler passes,
302
+ production compiler lines, runtime concepts, normalization rules, adapter
303
+ rules, public APIs, caches, Providers, retry schedulers, or query runtimes. One
304
+ existing positive application fixture gains loading, success, stale completion,
305
+ HTTP failure, recovery, cancellation, and route-release cases. The fixture
306
+ still emits 19 files and now totals 67,886 raw / 24,077 aggregate gzip bytes,
307
+ with deploy SHA-256
308
+ `9c06d2a5d47b4ea2ae54cebbc0448bf161907691ee37a02a5dae0e7c37779ae4`.
309
+ The project route uses 52,130 raw / 19,502 aggregate gzip JavaScript bytes; the
310
+ two-route session uses 54,770 / 20,763 bytes, an authored capability increase of
311
+ 1,208 raw / 440 gzip bytes over `0.10.3`. Twenty-one fresh Chrome profiles record
312
+ 0.8 ms median list-to-detail completion with a 0.6/1.3 ms range. The changed
313
+ fetch-completion prerequisite permits no latency improvement claim; no material
314
+ regression is present.
315
+
316
+ Clean-worktree `npm run check`, 273/273 standard tests, the required project
317
+ Chrome journey, the focused required-Chrome retry for the one full-suite browser
318
+ timeout, and packed-package smoke pass on 2026-08-22.
319
+
251
320
  ### `0.11.1`: List And Detail Data Consistency Evidence
252
321
 
253
322
  - **Purpose:** expose the first real multi-consumer coordination limit.
@@ -882,5 +951,7 @@ release transaction where possible or document and publish a forward-fix patch.
882
951
  |---|---|---|---|
883
952
  | `0.10.0` | Released | Preserve the published application baseline and release evidence. | None |
884
953
  | `0.10.1` | Released | Preserve the published state-scale evidence and explicit object-field limit. | None |
885
- | `0.10.2` | Active | Add the shared workspace and route-owned draft journey to the greenfield application. | None |
886
- | `0.10.3` onward | Blocked | Wait for the preceding patch acceptance and release record. | Ordered dependency |
954
+ | `0.10.2` | Released | Preserve the published shared-layout navigation and exact route-release evidence. | None |
955
+ | `0.10.3` | Released | Preserve the published guarded persistence recipe and zero-runtime exclusion. | None |
956
+ | `0.11.0` | Active | Add the owned loading/error/data/refetch and stale-response journey. | None |
957
+ | `0.11.1` onward | Blocked | Wait for the preceding patch acceptance and release record. | Ordered dependency |
@@ -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.106` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.10.2`.
69
+ `create-kudzu@0.1.108` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.11.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.10.2",
3
+ "version": "0.11.0",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",