@kudzujs/core 0.10.0 → 0.10.2

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
@@ -1,11 +1,50 @@
1
1
  # Performance Records
2
2
 
3
- Reproducibility classes: `npm run benchmark`, `npm run benchmark:keyed`, `npm run benchmark:native`, `npm run benchmark:module-cache`, 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.
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
5
  `npm run benchmark:source-scale` generates its fixture outside the repository so 50,000 lines of synthetic source are not tracked. The default topology is 50 pages plus 450 route-owned imported modules. Generation is excluded from timing; fresh-process samples separately report source reads, reachable-graph discovery, source compilation, clean production build, compiler-result and deploy digests, output files/bytes, cache counters, and peak RSS. `ROUTES`, `MODULES_PER_ROUTE`, `FILLER_LINES`, `WARMUPS`, and `RUNS` may reduce or expand the fixture without changing the default acceptance floor. `TARGET_ROOT` measures another checkout; `BASELINE_ROOT` alternates that checkout with the current tree and requires identical deploy output.
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.10.2 Project Shared-Layout Navigation
10
+
11
+ Measured 2026-08-22 on macOS arm64 with Node 25.6.1 and Chrome
12
+ 151.0.7922.172. `npm run benchmark:project-navigation` builds the tracked
13
+ project application, updates the layout-owned workspace state, and measures
14
+ list-to-detail completion across seven fresh Chrome profiles. Every accepted
15
+ sample verifies retained layout identity and the shared workspace value before
16
+ reporting timing.
17
+
18
+ The two-route session uses 10 unique JavaScript files totaling 46,418 raw /
19
+ 17,045 aggregate gzip bytes. Navigation samples are
20
+ `[2.3, 6.5, 1.4, 1.3, 5.1, 1.3, 4.0]` ms, with a 2.3 ms median and 1.3/6.5 ms
21
+ minimum/maximum. Both routes use the existing shared runtime family;
22
+ `workspace` has layout lifetime while summary, collection, filter, conditional,
23
+ saved-filter, row, and detail-draft states retain route lifetime. No compiler or
24
+ browser runtime source changed, so no revision-to-revision performance claim is
25
+ made.
26
+
27
+ ## 0.10.1 Project State Scale
28
+
29
+ Measured 2026-08-22 on macOS arm64 with Node 25.6.1 and Chrome
30
+ 151.0.7922.172. `npm run benchmark:project-state` generates 1/8/32-state pages,
31
+ requires a clean `v0.10.0` checkout through `BASELINE_ROOT`, and verifies that
32
+ baseline and candidate deploy output is byte-identical before timing seven fresh
33
+ headless Chrome processes per scale. The shared deploy contains 10 files,
34
+ 18,780 bytes, and digest
35
+ `3f83712254d95f1cf59c5034f363ea906406efa1bd9539f3bb8b9a0d54a3fdc5`.
36
+
37
+ | States / derived dependency edges | JavaScript raw / gzip | Commit runs (ms) | Median |
38
+ |---:|---:|---|---:|
39
+ | 1 / 0 | 768 / 441 B | 0.4, 0.4, 0.4, 0.5, 0.6, 0.6, 0.6 | 0.5 ms |
40
+ | 8 / 8 | 10,935 / 4,789 B | 0.6, 0.7, 0.6, 0.6, 0.7, 0.6, 0.6 | 0.6 ms |
41
+ | 32 / 32 | 11,341 / 4,841 B | 0.8, 0.8, 1.0, 0.9, 0.8, 1.0, 1.0 | 0.9 ms |
42
+
43
+ The 1-state command-only page needs only the existing command runtime. The
44
+ larger pages reuse the existing binding, serialization, style, and command
45
+ runtime modules. No normalized-state runtime, new runtime family, or generic
46
+ rerender path is added.
47
+
9
48
  ## 0.9 Shared State And Actions
10
49
 
11
50
  Measured 2026-08-19 on Linux x64 with Node 24.14.0 and Chrome 142.0.7444.175. Baseline `abe87ceafbf70ed8eb2618976e2d1e18c378126f` and the candidate built identical final Context/Zustand cart source.
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.10.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.10.0 - Application capability baseline.** A tracked greenfield project application now fixes the state, browser, output, and static zero-JavaScript contract used by the capability release train. Read the [release notes](./RELEASES.md#0100---application-capability-baseline), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.10.0), or follow the [architecture packet](./docs/next-architecture/README.md).
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).
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,104 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.10.2 - Shared-layout navigation
4
+
5
+ Kudzu 0.10.2 extends the tracked project-management application with explicit
6
+ list/detail navigation, layout-owned workspace state, and route-owned drafts
7
+ using the existing navigation and shared-state semantics.
8
+
9
+ ### Changed in 0.10.2
10
+
11
+ - Added one Context-backed application layout that lowers through existing
12
+ `SharedStateIR` and persists workspace selection across list/detail routes.
13
+ - Added an exact Alpha detail route whose draft state releases on navigation and
14
+ initializes fresh on revisit and direct document load.
15
+ - Added a maintained seven-profile list-to-detail navigation benchmark with
16
+ session JavaScript and lifetime metadata.
17
+ - Kept `/help` and `/login` outside the navigation group; `/help` remains a
18
+ complete zero-JavaScript native-navigation target.
19
+ - Updated `create-kudzu@0.1.106` to generate projects on
20
+ `@kudzujs/core@^0.10.2`.
21
+
22
+ ### Output Evidence
23
+
24
+ - The application fixture emits 14 files, 57,293 raw / 19,985 aggregate gzip
25
+ bytes, and deploy digest
26
+ `1c867ee7119f7eb23b935c4506c2a46639acb75c13f0916b29c255421b0d123d`.
27
+ - The list/detail session uses 10 unique JavaScript files totaling 46,418 raw /
28
+ 17,045 aggregate gzip bytes; `/help` remains 0 B JavaScript.
29
+ - Seven fresh Chrome profiles record list-to-detail completion at a 2.3 ms
30
+ median, with 1.3/6.5 ms minimum/maximum.
31
+ - No semantic primitive, compiler pass, production compiler line, runtime
32
+ concept, store, or SPA router was added.
33
+
34
+ ### Validation
35
+
36
+ - Required Chrome proves layout identity and workspace persistence in both
37
+ directions, route DOM release, fresh draft state, and direct-load reset.
38
+ - The full suite, required-Chrome application journey, package smoke, registry
39
+ metadata, and fresh installation are release gates.
40
+
41
+ ### Limits
42
+
43
+ Navigation remains explicit and group-scoped with complete-document fallback.
44
+ This release does not add a universal SPA router, persistence, authentication,
45
+ server data, or cross-group shared state.
46
+
47
+ ### Upgrade
48
+
49
+ ```sh
50
+ npm install @kudzujs/core@^0.10.2
51
+ ```
52
+
53
+ ## 0.10.1 - Application state scale
54
+
55
+ Kudzu 0.10.1 extends the tracked project-management journey across ordinary
56
+ primitive, object, array, derived, conditional, nested keyed, and row-local
57
+ state while retaining static-first output and existing browser capabilities.
58
+
59
+ ### Changed in 0.10.1
60
+
61
+ - Added deterministic workspace summary replacement, project filtering, saved
62
+ filters, nested issue updates, conditional summary ownership, and keyed row
63
+ state release/remount to the greenfield application contract.
64
+ - Added a maintained 1/8/32-state Chrome commit benchmark with exact `v0.10.0`
65
+ deploy comparison and runtime metadata.
66
+ - Kept direct object-field nested-list replacement outside the accepted boundary
67
+ after the isolated experiment failed browser replacement.
68
+ - Updated `create-kudzu@0.1.105` to generate projects on
69
+ `@kudzujs/core@^0.10.1`.
70
+
71
+ ### Output Evidence
72
+
73
+ - The application fixture emits 12 files, 47,546 raw / 16,285 aggregate gzip
74
+ bytes, and deploy digest
75
+ `d50c9ff6dccba338559dd9e9141c4607ec62da30385658e617a86f7af3f52e0f`.
76
+ - `/app/projects` emits 39,178 raw / 14,143 aggregate gzip JavaScript bytes;
77
+ `/help` remains 0 B JavaScript.
78
+ - The generated scale deploy is byte-identical to `v0.10.0`; 1/8/32-state
79
+ commit medians are 0.5/0.6/0.9 ms across seven fresh Chrome processes.
80
+ - No semantic primitive, compiler pass, browser runtime concept, normalized
81
+ state, or generic rerender path was added.
82
+
83
+ ### Validation
84
+
85
+ - Required Chrome verifies derived updates, nested keyed identity, conditional
86
+ release/remount, keyed row state reset, and zero unrelated DOM mutations.
87
+ - `npm run check`, the complete test suite, required-Chrome application test,
88
+ package smoke, registry metadata, and fresh installation are release gates.
89
+
90
+ ### Limits
91
+
92
+ This release does not support direct object-field nested-list replacement,
93
+ arbitrary object mutation, normalized state, shared layout state, persistence,
94
+ authentication, or server data.
95
+
96
+ ### Upgrade
97
+
98
+ ```sh
99
+ npm install @kudzujs/core@^0.10.1
100
+ ```
101
+
3
102
  ## 0.10.0 - Application capability baseline
4
103
 
5
104
  Kudzu 0.10.0 begins the application capability release train with a durable
@@ -163,6 +163,32 @@ is made because compiler and runtime sources are unchanged.
163
163
  - **Done condition:** the recorded scale remains within the material regression
164
164
  threshold and nearby unsupported dynamic paths fail at authored locations.
165
165
 
166
+ **Completion evidence:** the project journey composes five ordinary route
167
+ states: one object, two arrays, and two primitives. Six existing reactive
168
+ bindings, one conditional owner, three keyed lists, one nested issue list, and
169
+ one keyed row-local state cover summary replacement, filtering, derived issue
170
+ counts, saved-filter append, conditional release/remount, keyed identity, and
171
+ row-state release/reset. An unrelated control records zero DOM mutations. The
172
+ route adds no semantic primitive, pass, browser runtime concept, normalized
173
+ state, or generic rerender path; the only supported source adjustment is the
174
+ application's use of a separate project array state at the existing keyed-list
175
+ boundary. Direct object-field nested-list replacement remains outside this
176
+ packet after its isolated experiment failed browser replacement, while the
177
+ existing dynamic object-property diagnostic remains source-located.
178
+
179
+ The application deploy contains 12 files, 47,546 raw / 16,285 aggregate gzip
180
+ bytes, with SHA-256
181
+ `d50c9ff6dccba338559dd9e9141c4607ec62da30385658e617a86f7af3f52e0f`.
182
+ `/app/projects` uses 39,178 raw / 14,143 aggregate gzip JavaScript bytes;
183
+ `/help` remains 0 B. The generated 1/8/32-state scale benchmark emits identical
184
+ deploy output under `v0.10.0` and the candidate. Seven fresh Chrome processes
185
+ record commit medians of 0.5/0.6/0.9 ms as the derived binding dependency edges
186
+ increase from 0 to 8 to 32. Runtime JavaScript is 768/10,935/11,341 raw bytes
187
+ and 441/4,789/4,841 aggregate gzip bytes. No material regression is present.
188
+ Release commit `f04041b`, tag `v0.10.1`, both CI jobs, the GitHub release,
189
+ `@kudzujs/core@0.10.1`, `create-kudzu@0.1.105`, registry metadata, and a fresh
190
+ scaffold install/check are verified.
191
+
166
192
  ### `0.10.2`: Shared Layout And Cross-Route State
167
193
 
168
194
  - **Purpose:** keep workspace/session state across an explicit application
@@ -177,6 +203,27 @@ is made because compiler and runtime sources are unchanged.
177
203
  - **Done condition:** state lifetime and disposal are exact in browser tests and
178
204
  static routes receive no shared-state runtime.
179
205
 
206
+ **Completion evidence:** the greenfield application adds one exact Alpha detail
207
+ route and one explicit navigation group around list/detail routes. A relative
208
+ Context hook lowers through the existing `SharedStateIR`: both routes own the
209
+ same `workspace` layout state while list state and the detail `draft` remain
210
+ route-owned. Required Chrome proves retained layout DOM identity, workspace
211
+ persistence in both directions, detail DOM release, fresh draft state on
212
+ re-entry, and initial layout/draft values in a fresh document. `/help` remains
213
+ outside the group, retains its native anchor path, and emits complete HTML with
214
+ 0 B JavaScript.
215
+
216
+ This packet adds no semantic primitive, ModuleIR kind, compiler pass, production
217
+ compiler LOC, runtime concept, normalization rule, adapter rule, store, or SPA
218
+ router. It adds one application layout/context module, one route, one config,
219
+ and one positive browser journey; existing navigation-group diagnostics retain
220
+ the nearby rejected configuration boundary. The fixture emits 14 files, 57,293
221
+ raw / 19,985 aggregate gzip bytes, with deploy SHA-256
222
+ `1c867ee7119f7eb23b935c4506c2a46639acb75c13f0916b29c255421b0d123d`.
223
+ The list/detail session uses 10 unique JavaScript files totaling 46,418 raw /
224
+ 17,045 aggregate gzip bytes. Seven fresh Chrome profiles record list-to-detail
225
+ completion at `[2.3, 6.5, 1.4, 1.3, 5.1, 1.3, 4.0]` ms, median 2.3 ms.
226
+
180
227
  ### `0.10.3`: Persistence Recipe And State Release
181
228
 
182
229
  - **Purpose:** prove URL, storage, and server-backed persistence without adding a
@@ -833,6 +880,7 @@ release transaction where possible or document and publish a forward-fix patch.
833
880
 
834
881
  | Patch | Status | Next exact action | Blocker |
835
882
  |---|---|---|---|
836
- | `0.10.0` | Release candidate | Complete commit, push, tag, GitHub release, npm publication, registry, and fresh-install verification. | Release transaction |
837
- | `0.10.1` | Blocked | Extend the greenfield fixture with local, object, array, and derived state scale evidence after 0.10.0 publication. | 0.10.0 release |
838
- | `0.10.2` onward | Blocked | Wait for the preceding patch acceptance and release record. | Ordered dependency |
883
+ | `0.10.0` | Released | Preserve the published application baseline and release evidence. | None |
884
+ | `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 |
@@ -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.104` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.10.0`.
69
+ `create-kudzu@0.1.106` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.10.2`.
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.0",
3
+ "version": "0.10.2",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -60,6 +60,8 @@
60
60
  "benchmark:commerce": "node test/commerce-build-performance.mjs",
61
61
  "benchmark:module-cache": "node test/module-cache-performance.mjs",
62
62
  "benchmark:native": "node test/native-performance.mjs",
63
+ "benchmark:project-navigation": "node test/project-navigation-performance.mjs",
64
+ "benchmark:project-state": "node test/project-state-performance.mjs",
63
65
  "benchmark:source-scale": "node test/source-scale-performance.mjs",
64
66
  "prepublishOnly": "npm run check && npm test",
65
67
  "deploy": "wrangler deploy",