@vertz/ui-server 0.2.47 → 0.2.52
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/CHANGELOG.md +715 -0
- package/dist/bun-dev-server.d.ts +35 -0
- package/dist/bun-dev-server.js +104 -2
- package/dist/bun-plugin/state-inspector.d.ts +59 -0
- package/dist/bun-plugin/state-inspector.js +270 -0
- package/dist/dom-shim/index.d.ts +7 -0
- package/dist/dom-shim/index.js +1 -1
- package/dist/index.d.ts +24 -0
- package/dist/index.js +24 -8
- package/dist/node-handler.d.ts +22 -0
- package/dist/node-handler.js +3 -3
- package/dist/shared/{chunk-szvdd1qq.js → chunk-bp1ez7v4.js} +46 -2
- package/dist/shared/{chunk-tm5aeq94.js → chunk-c22cgv96.js} +39 -5
- package/dist/shared/{chunk-ck3n699k.js → chunk-nstzxw4e.js} +34 -7
- package/dist/shared/{chunk-kzycr5v0.js → chunk-x8r5mh0q.js} +31 -10
- package/dist/ssr/index.d.ts +22 -0
- package/dist/ssr/index.js +3 -3
- package/package.json +9 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
# @vertz/ui-server
|
|
2
|
+
|
|
3
|
+
## 0.2.52
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @vertz/core@0.2.52
|
|
9
|
+
- @vertz/ui@0.2.52
|
|
10
|
+
|
|
11
|
+
## 0.2.51
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies []:
|
|
16
|
+
- @vertz/core@0.2.51
|
|
17
|
+
- @vertz/ui@0.2.51
|
|
18
|
+
|
|
19
|
+
## 0.2.50
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies []:
|
|
24
|
+
- @vertz/core@0.2.50
|
|
25
|
+
- @vertz/ui@0.2.50
|
|
26
|
+
|
|
27
|
+
## 0.2.49
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Updated dependencies []:
|
|
32
|
+
- @vertz/core@0.2.49
|
|
33
|
+
- @vertz/ui@0.2.49
|
|
34
|
+
|
|
35
|
+
## 0.2.48
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- Updated dependencies [[`46397c6`](https://github.com/vertz-dev/vertz/commit/46397c67af30f5441cebdca616f3a1627111312d), [`36b0f20`](https://github.com/vertz-dev/vertz/commit/36b0f2007822bc5c580d04a30d4ef1ecbee2146b)]:
|
|
40
|
+
- @vertz/ui@0.2.48
|
|
41
|
+
- @vertz/core@0.2.48
|
|
42
|
+
|
|
43
|
+
## 0.2.47
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- Updated dependencies []:
|
|
48
|
+
- @vertz/core@0.2.47
|
|
49
|
+
- @vertz/ui@0.2.47
|
|
50
|
+
|
|
51
|
+
## 0.2.46
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- [#2239](https://github.com/vertz-dev/vertz/pull/2239) [`d029bfc`](https://github.com/vertz-dev/vertz/commit/d029bfcef05d9226f6740b5854827904144dc7ba) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - feat(server): allow customizing or removing the `/api/` route prefix (#2131)
|
|
56
|
+
|
|
57
|
+
- `createServer({ apiPrefix: '/v1' })` changes all generated routes from `/api/*` to `/v1/*`
|
|
58
|
+
- API-only apps can use `apiPrefix: ''` to mount routes at the root
|
|
59
|
+
- Full-stack apps require a non-empty prefix (enforced at dev server and Cloudflare handler)
|
|
60
|
+
- Auth cookie paths (`Path=`) automatically follow the resolved prefix
|
|
61
|
+
- Cloudflare handler reads `app.apiPrefix` at runtime when not explicitly configured
|
|
62
|
+
- `basePath` option in `@vertz/cloudflare` renamed to `apiPrefix` for consistency
|
|
63
|
+
|
|
64
|
+
- Updated dependencies [[`d029bfc`](https://github.com/vertz-dev/vertz/commit/d029bfcef05d9226f6740b5854827904144dc7ba)]:
|
|
65
|
+
- @vertz/core@0.2.46
|
|
66
|
+
- @vertz/ui@0.2.46
|
|
67
|
+
|
|
68
|
+
## 0.2.45
|
|
69
|
+
|
|
70
|
+
### Patch Changes
|
|
71
|
+
|
|
72
|
+
- [#2201](https://github.com/vertz-dev/vertz/pull/2201) [`57c5b6f`](https://github.com/vertz-dev/vertz/commit/57c5b6ffe2f79fa374384567ad2e48897dbd5482) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - fix: collect import-time CSS from native compiler without requiring module.getInjectedCSS export
|
|
73
|
+
|
|
74
|
+
- Updated dependencies []:
|
|
75
|
+
- @vertz/core@0.2.45
|
|
76
|
+
- @vertz/ui@0.2.45
|
|
77
|
+
|
|
78
|
+
## 0.2.44
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- Updated dependencies []:
|
|
83
|
+
- @vertz/core@0.2.44
|
|
84
|
+
- @vertz/ui@0.2.44
|
|
85
|
+
|
|
86
|
+
## 0.2.43
|
|
87
|
+
|
|
88
|
+
### Patch Changes
|
|
89
|
+
|
|
90
|
+
- [#2192](https://github.com/vertz-dev/vertz/pull/2192) [`d9380cc`](https://github.com/vertz-dev/vertz/commit/d9380cc4b09a98f83df1213b4c380f2984a53579) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Remove legacy two-pass SSR (`ssrRenderToString`, `ssrDiscoverQueries`) in favor of single-pass SSR (`ssrRenderSinglePass`) and AOT SSR (`ssrRenderAot`). The `ssrStreamNavQueries` function now uses a shared `runQueryDiscovery()` helper instead of the old two-pass discovery pipeline. Renamed `ssr-render.ts` to `ssr-shared.ts` (shared types and utilities only).
|
|
91
|
+
|
|
92
|
+
- Updated dependencies []:
|
|
93
|
+
- @vertz/core@0.2.43
|
|
94
|
+
- @vertz/ui@0.2.43
|
|
95
|
+
|
|
96
|
+
## 0.2.42
|
|
97
|
+
|
|
98
|
+
### Patch Changes
|
|
99
|
+
|
|
100
|
+
- [#2100](https://github.com/vertz-dev/vertz/pull/2100) [`aca62b0`](https://github.com/vertz-dev/vertz/commit/aca62b09d42330cd81a106b65082b3e17fba7c91) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix AOT resolveValueInline to handle property-specific raw value resolution (position offsets, aspect ratios, grid-cols, tracking, transition aliases, border side widths)
|
|
101
|
+
|
|
102
|
+
- [#2149](https://github.com/vertz-dev/vertz/pull/2149) [`1eeec6c`](https://github.com/vertz-dev/vertz/commit/1eeec6c95c0ced4d869995dbdce205c3bde92a25) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix Input component focus loss with value+onInput binding: handle IDL properties (value, checked) via Reflect.set in \_\_spread, preserve getter descriptors in withStyles, and emit reactive source parameter from compiler
|
|
103
|
+
|
|
104
|
+
- [#2182](https://github.com/vertz-dev/vertz/pull/2182) [`6e3fb13`](https://github.com/vertz-dev/vertz/commit/6e3fb1346d6a0bf5ca2d4a5bb9d5680a85e9ead1) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Remove @vertz/ui-compiler package — all compilation now uses the native Rust compiler exclusively via @vertz/ui-server
|
|
105
|
+
|
|
106
|
+
- Updated dependencies [[`caaee34`](https://github.com/vertz-dev/vertz/commit/caaee3414f28d055b3065dc2d4ef67c9e3856ab9), [`1eeec6c`](https://github.com/vertz-dev/vertz/commit/1eeec6c95c0ced4d869995dbdce205c3bde92a25)]:
|
|
107
|
+
- @vertz/ui@0.2.42
|
|
108
|
+
- @vertz/core@0.2.42
|
|
109
|
+
|
|
110
|
+
## 0.2.41
|
|
111
|
+
|
|
112
|
+
### Patch Changes
|
|
113
|
+
|
|
114
|
+
- [#2027](https://github.com/vertz-dev/vertz/pull/2027) [`7f837fc`](https://github.com/vertz-dev/vertz/commit/7f837fc10a0acd4ad77bfc4bcaf733700c8a4f8b) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add `googleFont()` API for automatic Google Fonts fetching.
|
|
115
|
+
|
|
116
|
+
- `googleFont(family, options)` returns a `FontDescriptor` with `__google` metadata
|
|
117
|
+
- Dev server resolves Google Font descriptors at startup and on HMR, downloading `.woff2` files to `.vertz/fonts/` cache
|
|
118
|
+
- Subset-aware parsing selects the correct `.woff2` file (latin by default) instead of the first alphabetical subset
|
|
119
|
+
- Font metrics extraction handles absolute and root-relative paths from the resolver
|
|
120
|
+
- New exports from `@vertz/ui/css`: `googleFont`, `GoogleFontOptions`, `GoogleFontMeta`
|
|
121
|
+
|
|
122
|
+
- Updated dependencies [[`7f837fc`](https://github.com/vertz-dev/vertz/commit/7f837fc10a0acd4ad77bfc4bcaf733700c8a4f8b)]:
|
|
123
|
+
- @vertz/ui@0.2.41
|
|
124
|
+
- @vertz/core@0.2.41
|
|
125
|
+
- @vertz/ui-compiler@0.2.41
|
|
126
|
+
|
|
127
|
+
## 0.2.40
|
|
128
|
+
|
|
129
|
+
### Patch Changes
|
|
130
|
+
|
|
131
|
+
- [#1980](https://github.com/vertz-dev/vertz/pull/1980) [`bee011e`](https://github.com/vertz-dev/vertz/commit/bee011e47661b31152ad3dfc589fd45eda2f3e44) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - fix(ui-server, ui-compiler, ui, theme-shadcn): AOT SSR pipeline composes App layout shell, portable holes, barrel extraction, CSS inlining, and lazy theme CSS
|
|
132
|
+
|
|
133
|
+
Five AOT SSR fixes:
|
|
134
|
+
|
|
135
|
+
1. **App layout composition (#1977)**: The AOT pipeline now wraps page content in the root App layout (header, nav, footer). The build pipeline detects the App component by its RouterView hole, includes it in the AOT manifest, and the runtime pipeline renders the App shell around each page. Gracefully degrades if app render fails.
|
|
136
|
+
|
|
137
|
+
2. **Portable hole references (#1981)**: The AOT compiler now emits `ctx.holes.ComponentName()` for imported components instead of `__ssr_ComponentName()`. The `__ssr_` prefix is a Bun-internal convention that breaks on non-Bun bundlers (esbuild/workerd). Local components in the same file still use direct `__ssr_*` calls for efficiency.
|
|
138
|
+
|
|
139
|
+
3. **Side-effect-free barrel (#1982)**: The AOT barrel generation now extracts only the `__ssr_*` function declarations from compiled code, excluding original imports and module-level side effects (createRouter, themeGlobals, etc.). This eliminates ~16MB bundle bloat when bundled with esbuild for workerd.
|
|
140
|
+
|
|
141
|
+
4. **CSS class name inlining (#1985)**: The AOT compiler now inlines `css()` class names as literal strings in `__ssr_*` functions. Previously, the barrel extraction stripped module-level `const s = css({...})` declarations but functions still referenced `s.root` etc., causing ReferenceError. Now the compiler computes deterministic class names at compile time (same DJB2 hash as the CSS extractor) and replaces references inline.
|
|
142
|
+
|
|
143
|
+
5. **Lazy theme CSS compilation (#1979)**: SSR responses no longer include ~74KB of unused theme component CSS. `configureTheme()` previously compiled all ~40 component styles eagerly via `buildComponents()`. Now each component has its own lazy getter (`lazyComp`/`lazyPrim`) — styles are compiled only when a component is first accessed at render time. `registerTheme()` stores the theme object without accessing `.components`, preserving the per-component lazy getters. As a defense-in-depth fallback, when the per-request `cssTracker` is empty, `collectCSS()` filters the global CSS set by matching class selectors against the rendered HTML.
|
|
144
|
+
|
|
145
|
+
6. **Tree-shake unused theme CSS from SSR (#1988)**: `filterCSSByHTML()` now correctly handles standalone `@keyframes` at-rules. Previously, `@keyframes` blocks bypassed the class-selector filter (they don't start with `.`) and were always included — adding ~10KB of dead animation CSS per page. The filter now uses two-pass logic: first pass partitions CSS into class-based rules (filtered by HTML usage), global rules (always kept), and standalone `@keyframes` (deferred); second pass keeps `@keyframes` only if a surviving CSS rule references the animation name.
|
|
146
|
+
|
|
147
|
+
7. **AOT CSS extraction for non-Bun bundlers (#1989)**: CSS from `css()` calls is now extracted at AOT compile time and embedded in `aot-manifest.json`. Previously, AOT `__ssr_*` functions used inlined class names (#1985) but the actual CSS rules depended on runtime `css()` side effects. On esbuild/workerd, these side effects are tree-shaken (the `css()` return value is unused) or land in a different module instance's `injectedCSS` Set. Now `compileForSSRAot()` runs `CSSAnalyzer` + `CSSTransformer.extractCSS()` to capture CSS rules at build time. The manifest CSS is used as the primary source in `collectCSSFromModule()`, with `getInjectedCSS()` as a filtered supplement for `variants()`/`keyframes()` CSS that can't be statically extracted.
|
|
148
|
+
|
|
149
|
+
8. **Per-route CSS at build time with zero runtime overhead (#1988, #1989)**: CSS filtering moved entirely to build time. `attachPerRouteCss()` scans `__ssr_*` function code for `_[0-9a-f]{8}` class references and embeds only matching CSS rules per route in the manifest. At runtime, `mergeRouteCss()` does a cheap O(n) array concat. The CSS result is cached per route pattern after the first request, eliminating all per-request Set/Array/join allocations that caused GC-induced tail latency spikes under concurrent load.
|
|
150
|
+
|
|
151
|
+
- Updated dependencies [[`bee011e`](https://github.com/vertz-dev/vertz/commit/bee011e47661b31152ad3dfc589fd45eda2f3e44), [`f523a42`](https://github.com/vertz-dev/vertz/commit/f523a4282996d72c17be9f2a674a34a244455cba)]:
|
|
152
|
+
- @vertz/ui-compiler@0.2.40
|
|
153
|
+
- @vertz/ui@0.2.40
|
|
154
|
+
- @vertz/core@0.2.40
|
|
155
|
+
|
|
156
|
+
## 0.2.39
|
|
157
|
+
|
|
158
|
+
### Patch Changes
|
|
159
|
+
|
|
160
|
+
- Updated dependencies [[`7bf733f`](https://github.com/vertz-dev/vertz/commit/7bf733fec92424d08a08dafe3b4c4a5984f084b0), [`a948ef1`](https://github.com/vertz-dev/vertz/commit/a948ef160c244fb2e42cd53e7190b8bf6a96f9db)]:
|
|
161
|
+
- @vertz/ui@0.2.39
|
|
162
|
+
- @vertz/core@0.2.39
|
|
163
|
+
- @vertz/ui-compiler@0.2.39
|
|
164
|
+
|
|
165
|
+
## 0.2.38
|
|
166
|
+
|
|
167
|
+
### Patch Changes
|
|
168
|
+
|
|
169
|
+
- [#1938](https://github.com/vertz-dev/vertz/pull/1938) [`93aa341`](https://github.com/vertz-dev/vertz/commit/93aa34166ad4934ec5c7e45fd7d7327e0843d174) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix AOT compiler crash on `.map()` callbacks with closure variables (#1936). The compiler now falls back to runtime evaluation when a map callback defines local variables before its return statement. Also adds graceful fallback from AOT to single-pass SSR when the render function throws at runtime.
|
|
170
|
+
|
|
171
|
+
- Updated dependencies [[`93aa341`](https://github.com/vertz-dev/vertz/commit/93aa34166ad4934ec5c7e45fd7d7327e0843d174), [`20344c0`](https://github.com/vertz-dev/vertz/commit/20344c0a7df8260ce98034bd0e2de73ef11ecfcd)]:
|
|
172
|
+
- @vertz/ui-compiler@0.2.38
|
|
173
|
+
- @vertz/ui@0.2.38
|
|
174
|
+
- @vertz/core@0.2.38
|
|
175
|
+
|
|
176
|
+
## 0.2.37
|
|
177
|
+
|
|
178
|
+
### Patch Changes
|
|
179
|
+
|
|
180
|
+
- Updated dependencies [[`12231be`](https://github.com/vertz-dev/vertz/commit/12231be46d322526be6d8b6752911d88f025e4d0)]:
|
|
181
|
+
- @vertz/ui@0.2.37
|
|
182
|
+
- @vertz/core@0.2.37
|
|
183
|
+
- @vertz/ui-compiler@0.2.37
|
|
184
|
+
|
|
185
|
+
## 0.2.36
|
|
186
|
+
|
|
187
|
+
### Patch Changes
|
|
188
|
+
|
|
189
|
+
- [#1895](https://github.com/vertz-dev/vertz/pull/1895) [`0e655d6`](https://github.com/vertz-dev/vertz/commit/0e655d60183badb73103feffbc70c34f6b442e6c) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add `aotDataResolver` option to `createSSRHandler` and `ssrRenderAot` for custom data sources in AOT rendering
|
|
190
|
+
|
|
191
|
+
- [#1900](https://github.com/vertz-dev/vertz/pull/1900) [`ae4859c`](https://github.com/vertz-dev/vertz/commit/ae4859c5b836b083fd563189521ccc6c4be5ffe8) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Surface plugin syntax errors as build errors in the dev server overlay instead of showing misleading "must export App" message
|
|
192
|
+
|
|
193
|
+
- Updated dependencies [[`94a3244`](https://github.com/vertz-dev/vertz/commit/94a32446298cc6d8b76849abec315e980d5a4341), [`9281153`](https://github.com/vertz-dev/vertz/commit/9281153c407654e4cf26c5c41af3274128301e3e)]:
|
|
194
|
+
- @vertz/ui@0.2.36
|
|
195
|
+
- @vertz/core@0.2.36
|
|
196
|
+
- @vertz/ui-compiler@0.2.36
|
|
197
|
+
|
|
198
|
+
## 0.2.35
|
|
199
|
+
|
|
200
|
+
### Patch Changes
|
|
201
|
+
|
|
202
|
+
- [#1882](https://github.com/vertz-dev/vertz/pull/1882) [`bb784d0`](https://github.com/vertz-dev/vertz/commit/bb784d052fe4abf27f5f499923de0a1f20a06c1b) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix AOT route extraction to handle dynamic imports, function calls, and bare identifiers alongside existing JSX patterns. Fix AOT bundle failures caused by missing helper imports and query variable scope leaks. Fix AOT route matcher to use exact matching instead of prefix matching, preventing `/` from matching all URLs. Externalize relative imports in AOT bundle step to prevent resolution failures in .aot-tmp. Improve AOT bundle error logging with detailed messages and stack traces.
|
|
203
|
+
|
|
204
|
+
- Updated dependencies [[`bb784d0`](https://github.com/vertz-dev/vertz/commit/bb784d052fe4abf27f5f499923de0a1f20a06c1b), [`5a80932`](https://github.com/vertz-dev/vertz/commit/5a8093299d96eefd00f0208af61eeb37aef28014)]:
|
|
205
|
+
- @vertz/ui-compiler@0.2.35
|
|
206
|
+
- @vertz/ui@0.2.35
|
|
207
|
+
- @vertz/core@0.2.35
|
|
208
|
+
|
|
209
|
+
## 0.2.34
|
|
210
|
+
|
|
211
|
+
### Patch Changes
|
|
212
|
+
|
|
213
|
+
- Updated dependencies [[`8076db5`](https://github.com/vertz-dev/vertz/commit/8076db590be9a593321d6de4cad6590d41e3c83c), [`3399191`](https://github.com/vertz-dev/vertz/commit/339919192bd95b5d212abf7f6d3746101c8d5422)]:
|
|
214
|
+
- @vertz/ui-compiler@0.2.34
|
|
215
|
+
- @vertz/ui@0.2.34
|
|
216
|
+
- @vertz/core@0.2.34
|
|
217
|
+
|
|
218
|
+
## 0.2.33
|
|
219
|
+
|
|
220
|
+
### Patch Changes
|
|
221
|
+
|
|
222
|
+
- Updated dependencies [[`37fb6dc`](https://github.com/vertz-dev/vertz/commit/37fb6dcb125c561ec0113a1ee9314426fa50255e)]:
|
|
223
|
+
- @vertz/ui-compiler@0.2.33
|
|
224
|
+
- @vertz/core@0.2.33
|
|
225
|
+
- @vertz/ui@0.2.33
|
|
226
|
+
|
|
227
|
+
## 0.2.32
|
|
228
|
+
|
|
229
|
+
### Patch Changes
|
|
230
|
+
|
|
231
|
+
- [#1854](https://github.com/vertz-dev/vertz/pull/1854) [`ce47098`](https://github.com/vertz-dev/vertz/commit/ce47098edb664d7a005dbdca881efbe63fb4dda2) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Wire AOT SSR pipeline end-to-end: compiler generates standalone `(data, ctx)` render functions for query-using components, build emits `aot-routes.js` + `aot-manifest.json`, and `createSSRHandler()` uses AOT render with data prefetch when manifest is available. Falls back to single-pass SSR for routes without AOT entries.
|
|
232
|
+
|
|
233
|
+
- Updated dependencies [[`ce47098`](https://github.com/vertz-dev/vertz/commit/ce47098edb664d7a005dbdca881efbe63fb4dda2), [`ca59e8b`](https://github.com/vertz-dev/vertz/commit/ca59e8b824806cc222521677abbdcbb753347969)]:
|
|
234
|
+
- @vertz/ui-compiler@0.2.32
|
|
235
|
+
- @vertz/ui@0.2.32
|
|
236
|
+
- @vertz/core@0.2.32
|
|
237
|
+
|
|
238
|
+
## 0.2.31
|
|
239
|
+
|
|
240
|
+
### Patch Changes
|
|
241
|
+
|
|
242
|
+
- [#1846](https://github.com/vertz-dev/vertz/pull/1846) [`86b1b76`](https://github.com/vertz-dev/vertz/commit/86b1b763b3b7598be442c04afe94acae0b5603c2) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add native Node HTTP adapter (`createNodeHandler`) that writes SSR output directly to `ServerResponse`, eliminating web Request/Response conversion overhead on Node.js. Import from `@vertz/ui-server/node`.
|
|
243
|
+
|
|
244
|
+
- Updated dependencies []:
|
|
245
|
+
- @vertz/core@0.2.31
|
|
246
|
+
- @vertz/ui@0.2.31
|
|
247
|
+
- @vertz/ui-compiler@0.2.31
|
|
248
|
+
|
|
249
|
+
## 0.2.30
|
|
250
|
+
|
|
251
|
+
### Patch Changes
|
|
252
|
+
|
|
253
|
+
- Updated dependencies [[`3bf1c88`](https://github.com/vertz-dev/vertz/commit/3bf1c882c258ba9989feac2b27d00809af1d6415), [`e75e501`](https://github.com/vertz-dev/vertz/commit/e75e5014917608b33fca1668e275948e16a0d773), [`0ba086d`](https://github.com/vertz-dev/vertz/commit/0ba086d9bca13cac9e0a27a1cbd199c8b5ca6a07), [`1d36182`](https://github.com/vertz-dev/vertz/commit/1d36182b0678378d50d9a063d6471a9114712b6a)]:
|
|
254
|
+
- @vertz/ui-compiler@0.2.30
|
|
255
|
+
- @vertz/core@0.2.30
|
|
256
|
+
- @vertz/ui@0.2.30
|
|
257
|
+
|
|
258
|
+
## 0.2.29
|
|
259
|
+
|
|
260
|
+
### Patch Changes
|
|
261
|
+
|
|
262
|
+
- Updated dependencies [[`7771170`](https://github.com/vertz-dev/vertz/commit/777117093d783aaeecc905ec65c4c85363746494)]:
|
|
263
|
+
- @vertz/ui@0.2.29
|
|
264
|
+
- @vertz/ui-compiler@0.2.29
|
|
265
|
+
- @vertz/core@0.2.29
|
|
266
|
+
|
|
267
|
+
## 0.2.28
|
|
268
|
+
|
|
269
|
+
### Patch Changes
|
|
270
|
+
|
|
271
|
+
- Updated dependencies [[`a5ac6e1`](https://github.com/vertz-dev/vertz/commit/a5ac6e19f5642e3981c0bb96ae8de8bf574c60dc)]:
|
|
272
|
+
- @vertz/ui-compiler@0.2.28
|
|
273
|
+
- @vertz/core@0.2.28
|
|
274
|
+
- @vertz/ui@0.2.28
|
|
275
|
+
|
|
276
|
+
## 0.2.27
|
|
277
|
+
|
|
278
|
+
### Patch Changes
|
|
279
|
+
|
|
280
|
+
- [#1770](https://github.com/vertz-dev/vertz/pull/1770) [`c40f504`](https://github.com/vertz-dev/vertz/commit/c40f5048e8ec551318f8daf4b98349c590c11553) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - fix(ui-server): populate entitlements in toPrefetchSession from access set
|
|
281
|
+
|
|
282
|
+
- Updated dependencies []:
|
|
283
|
+
- @vertz/core@0.2.27
|
|
284
|
+
- @vertz/ui@0.2.27
|
|
285
|
+
- @vertz/ui-compiler@0.2.27
|
|
286
|
+
|
|
287
|
+
## 0.2.26
|
|
288
|
+
|
|
289
|
+
### Patch Changes
|
|
290
|
+
|
|
291
|
+
- Updated dependencies [[`8552f21`](https://github.com/vertz-dev/vertz/commit/8552f217350e2acb0caac26ac215a49736b07e55)]:
|
|
292
|
+
- @vertz/ui@0.2.26
|
|
293
|
+
- @vertz/core@0.2.26
|
|
294
|
+
- @vertz/ui-compiler@0.2.26
|
|
295
|
+
|
|
296
|
+
## 0.2.25
|
|
297
|
+
|
|
298
|
+
### Patch Changes
|
|
299
|
+
|
|
300
|
+
- Updated dependencies [[`04673a3`](https://github.com/vertz-dev/vertz/commit/04673a32a4849db08d80bb39caf801295fec9832), [`841c9ae`](https://github.com/vertz-dev/vertz/commit/841c9ae69b559d25ed443d3c5fa8e21b2fd174bf)]:
|
|
301
|
+
- @vertz/ui@0.2.25
|
|
302
|
+
- @vertz/ui-compiler@0.2.25
|
|
303
|
+
- @vertz/core@0.2.25
|
|
304
|
+
|
|
305
|
+
## 0.2.24
|
|
306
|
+
|
|
307
|
+
### Patch Changes
|
|
308
|
+
|
|
309
|
+
- [#1695](https://github.com/vertz-dev/vertz/pull/1695) [`de3cb15`](https://github.com/vertz-dev/vertz/commit/de3cb15e9ecad1a4cec60cc21b6a9236fd4e6324) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix auto field selection not tracking field accesses in child components. Previously, when query data was passed to child components via props, the child's field accesses were silently missed, causing the query to under-fetch (only fields accessed directly in the parent were included in `select`).
|
|
310
|
+
|
|
311
|
+
**What changed:**
|
|
312
|
+
|
|
313
|
+
- Cross-file field resolution now falls back to fetching all fields (opaque) when a child component's field accesses can't be determined, instead of silently under-fetching
|
|
314
|
+
- Barrel file re-exports (`export { Foo } from './bar'`) are now followed to find the actual component definition
|
|
315
|
+
- Renamed re-exports (`export { Internal as Public }`) are handled correctly
|
|
316
|
+
- The plugin pre-pass now scans `.ts` files (not just `.tsx`) to capture barrel file re-exports
|
|
317
|
+
- HMR updates now process `.ts` file changes for field selection manifest updates
|
|
318
|
+
|
|
319
|
+
- Updated dependencies [[`a73dd79`](https://github.com/vertz-dev/vertz/commit/a73dd792de1876513914b89ef896fc88243b4cc8), [`d58a100`](https://github.com/vertz-dev/vertz/commit/d58a100f18762189be4319b58a4b86f8a774ac95), [`0e33400`](https://github.com/vertz-dev/vertz/commit/0e33400d96a9f778f3b936124d7544804f731db9), [`e24615a`](https://github.com/vertz-dev/vertz/commit/e24615a8619ae84b993c18dbdca2671ca254f9bb), [`adea2f1`](https://github.com/vertz-dev/vertz/commit/adea2f15f306d09ecebc56fc1f3841ff4b14b2ba)]:
|
|
320
|
+
- @vertz/ui@0.2.24
|
|
321
|
+
- @vertz/ui-compiler@0.2.24
|
|
322
|
+
- @vertz/core@0.2.24
|
|
323
|
+
|
|
324
|
+
## 0.2.23
|
|
325
|
+
|
|
326
|
+
### Patch Changes
|
|
327
|
+
|
|
328
|
+
- [#1588](https://github.com/vertz-dev/vertz/pull/1588) [`7c146e6`](https://github.com/vertz-dev/vertz/commit/7c146e695b642affeb39134beb0e1eb6475f20a8) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix reactive form element properties (`value`, `checked`, `selected`) to use DOM property assignment instead of `setAttribute`. This fixes `<select value={signal}>`, `<input value={signal}>`, `<input checked={signal}>`, and `<option selected={signal}>` not updating the displayed state reactively.
|
|
329
|
+
|
|
330
|
+
- Updated dependencies [[`eb1e2d6`](https://github.com/vertz-dev/vertz/commit/eb1e2d6df1923c2fd7525c58281bb1b13e52750a), [`10f6309`](https://github.com/vertz-dev/vertz/commit/10f6309790bff69c7a1a0ab92e50f78f34b129c3), [`1709f6d`](https://github.com/vertz-dev/vertz/commit/1709f6d933f04600d1b959b51660f2f8f33805d8), [`1e26cca`](https://github.com/vertz-dev/vertz/commit/1e26cca7eca00291633a2fa6257fc80a1f409b60), [`83c3a67`](https://github.com/vertz-dev/vertz/commit/83c3a67ca7de53a7c79fb650250b33b0ed05329f), [`82055ae`](https://github.com/vertz-dev/vertz/commit/82055aefc19e4c3a115152f2e7157389486e792e), [`e085298`](https://github.com/vertz-dev/vertz/commit/e085298955cdc027e1db6117c83912b9fc0cb0b0), [`4ff38bb`](https://github.com/vertz-dev/vertz/commit/4ff38bbdb34204b6de388a09152a174b7e16406c), [`a21f762`](https://github.com/vertz-dev/vertz/commit/a21f76239e5c4b112c7be9a4ebea8327c3d2230b), [`7c146e6`](https://github.com/vertz-dev/vertz/commit/7c146e695b642affeb39134beb0e1eb6475f20a8)]:
|
|
331
|
+
- @vertz/ui-compiler@0.2.23
|
|
332
|
+
- @vertz/ui@0.2.23
|
|
333
|
+
- @vertz/core@0.2.23
|
|
334
|
+
|
|
335
|
+
## 0.2.22
|
|
336
|
+
|
|
337
|
+
### Patch Changes
|
|
338
|
+
|
|
339
|
+
- Updated dependencies [[`8ed55f6`](https://github.com/vertz-dev/vertz/commit/8ed55f6fc8aa691758606fe044a8b1d74b7bb9bc), [`5d64812`](https://github.com/vertz-dev/vertz/commit/5d6481233006f67c21375f3879fda600c86c0cdd), [`cd8b41b`](https://github.com/vertz-dev/vertz/commit/cd8b41bb9900f364cd562be9ae64b9644096881a), [`180ac91`](https://github.com/vertz-dev/vertz/commit/180ac91f4fbc562581136dd8256f67fcc724fa69), [`6d32565`](https://github.com/vertz-dev/vertz/commit/6d32565c2818f9235d02af14a616279f018d0ff5), [`2e99e39`](https://github.com/vertz-dev/vertz/commit/2e99e3943830d2e2e0b2b44a1b32d8641e63dbe3), [`1c4916b`](https://github.com/vertz-dev/vertz/commit/1c4916b04eaaef0ee2e27eda1b73c36ae24e665e)]:
|
|
340
|
+
- @vertz/ui@0.2.22
|
|
341
|
+
- @vertz/ui-compiler@0.2.22
|
|
342
|
+
- @vertz/core@0.2.22
|
|
343
|
+
|
|
344
|
+
## 0.2.21
|
|
345
|
+
|
|
346
|
+
### Patch Changes
|
|
347
|
+
|
|
348
|
+
- [#1345](https://github.com/vertz-dev/vertz/pull/1345) [`0704bbb`](https://github.com/vertz-dev/vertz/commit/0704bbbc5561e2e2a6a6e0fd0a5f6af343f5f178) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Adopt `className` as the standard JSX prop for CSS classes, matching React convention. The `class` prop remains as a deprecated alias. All components, examples, and docs updated.
|
|
349
|
+
|
|
350
|
+
- [#1325](https://github.com/vertz-dev/vertz/pull/1325) [`30737c7`](https://github.com/vertz-dev/vertz/commit/30737c73fcf844878b6b781f3b786fac39e6a7b5) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add `dataset` property to SSR DOM shim elements, fixing crashes when components access `el.dataset.*` during SSR
|
|
351
|
+
|
|
352
|
+
- [#1314](https://github.com/vertz-dev/vertz/pull/1314) [`5eda52e`](https://github.com/vertz-dev/vertz/commit/5eda52e2a74966eb94dcca5af00cb1f1dd8c2fd7) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add automatic restart for stale module graph errors (Phase 3). When a stale-graph error is detected, the server and client now auto-trigger a restart without user interaction. Includes restart loop prevention (max 3 auto-restarts within 10s window) with fallback to the manual "Restart Server" button.
|
|
353
|
+
|
|
354
|
+
- [#1310](https://github.com/vertz-dev/vertz/pull/1310) [`0f7b4bc`](https://github.com/vertz-dev/vertz/commit/0f7b4bc228d6ebf294ab9b7a63087324f003cf86) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add stale module graph detection and dev server restart mechanism. When Bun's HMR retains stale import bindings after exports are removed or renamed, the error overlay now shows a "Restart Server" button that triggers a soft server restart, clearing the module graph and recovering automatically.
|
|
355
|
+
|
|
356
|
+
- [#1365](https://github.com/vertz-dev/vertz/pull/1365) [`6be7ce8`](https://github.com/vertz-dev/vertz/commit/6be7ce859300258b926fa7a608e2656952fea0c1) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix duplicate route components during production hydration with lazy (code-split) routes. RouterView and Outlet now re-enter hydration when lazy routes resolve, claiming SSR nodes instead of recreating DOM. Add route-aware chunk preloading via route-chunk manifest.
|
|
357
|
+
|
|
358
|
+
- [#1396](https://github.com/vertz-dev/vertz/pull/1396) [`2ae15d1`](https://github.com/vertz-dev/vertz/commit/2ae15d116fc58c59a430472a98198377ccde1e4e) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - feat(ui,ui-server,cli): add generateParams for dynamic route SSG
|
|
359
|
+
|
|
360
|
+
Routes can now define `generateParams` to pre-render dynamic routes at build time. The build pipeline expands these into concrete paths and pre-renders each one to static HTML files.
|
|
361
|
+
|
|
362
|
+
- [#1346](https://github.com/vertz-dev/vertz/pull/1346) [`b5fbc7d`](https://github.com/vertz-dev/vertz/commit/b5fbc7d884b06c8a0cb0c48d22dae5fe2684a4cc) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Support React-style `style` objects with camelCase properties. `style={{ backgroundColor: 'red' }}` now converts to a CSS string at all levels: JSX runtime, compiler-generated code, reactive `__attr()` bindings, and SSR. Includes auto-px for dimensional numeric values, unitless property detection, and vendor prefix handling.
|
|
363
|
+
|
|
364
|
+
- Updated dependencies [[`a16511c`](https://github.com/vertz-dev/vertz/commit/a16511cd78256fe86d0d69393dd923353d6f445a), [`796ef1a`](https://github.com/vertz-dev/vertz/commit/796ef1a9826f401c6d0b08f424d53609debda029), [`a5b9cbe`](https://github.com/vertz-dev/vertz/commit/a5b9cbe68202345ab09002f7e42c2a5be0c917bf), [`520444e`](https://github.com/vertz-dev/vertz/commit/520444e3bdbbf3140b75ed3754870166544b5f88), [`0704bbb`](https://github.com/vertz-dev/vertz/commit/0704bbbc5561e2e2a6a6e0fd0a5f6af343f5f178), [`fa3d23c`](https://github.com/vertz-dev/vertz/commit/fa3d23ca2e92a4b734c4908ab274d8e75e45cbc0), [`823e301`](https://github.com/vertz-dev/vertz/commit/823e3016dcb4487a7cdf9af61aea940566ffb21c), [`86d33bd`](https://github.com/vertz-dev/vertz/commit/86d33bd56934d62441b031fb72dd86687f0d0845), [`4390036`](https://github.com/vertz-dev/vertz/commit/4390036144176fab7aa869ddcde621eece6f904c), [`a7e37c3`](https://github.com/vertz-dev/vertz/commit/a7e37c3dd29ac75183a085d34b0621d339f8402a), [`6be7ce8`](https://github.com/vertz-dev/vertz/commit/6be7ce859300258b926fa7a608e2656952fea0c1), [`301c401`](https://github.com/vertz-dev/vertz/commit/301c40192ddec0a306bba997a7f9e4ce4253aa95), [`c9d6c7e`](https://github.com/vertz-dev/vertz/commit/c9d6c7ef368efdc905b4e96302798b2db65522aa), [`cac4e45`](https://github.com/vertz-dev/vertz/commit/cac4e452bd12b726c077ce2f48605bbc410a680f), [`9ccbe74`](https://github.com/vertz-dev/vertz/commit/9ccbe743c3c4eee109b69c9e3aff5df5f64c572e), [`e9cfc6a`](https://github.com/vertz-dev/vertz/commit/e9cfc6ad9b4b5dd5c518bea3c1982082d7e96e10), [`427e519`](https://github.com/vertz-dev/vertz/commit/427e5194a7f783c2accc246409bf146dcfa2f1b7), [`2ae15d1`](https://github.com/vertz-dev/vertz/commit/2ae15d116fc58c59a430472a98198377ccde1e4e), [`b5fbc7d`](https://github.com/vertz-dev/vertz/commit/b5fbc7d884b06c8a0cb0c48d22dae5fe2684a4cc), [`f356523`](https://github.com/vertz-dev/vertz/commit/f356523f7054b1b72d7936e3a7e13147904087dc), [`f9eccd5`](https://github.com/vertz-dev/vertz/commit/f9eccd56b2ecc4467b36b8e78bb3a072141ef93c), [`4079d6b`](https://github.com/vertz-dev/vertz/commit/4079d6b7567479f5f59648e81773f098c7696d02)]:
|
|
365
|
+
- @vertz/ui@0.2.21
|
|
366
|
+
- @vertz/ui-compiler@0.2.21
|
|
367
|
+
- @vertz/core@0.2.21
|
|
368
|
+
|
|
369
|
+
## 0.2.20
|
|
370
|
+
|
|
371
|
+
### Patch Changes
|
|
372
|
+
|
|
373
|
+
- [#1281](https://github.com/vertz-dev/vertz/pull/1281) [`9a0a313`](https://github.com/vertz-dev/vertz/commit/9a0a3131656bb22a8cdfb351013c3a7a69cdd553) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add favicon to scaffold template and auto-detect it in the dev server
|
|
374
|
+
|
|
375
|
+
- Updated dependencies []:
|
|
376
|
+
- @vertz/core@0.2.20
|
|
377
|
+
- @vertz/ui@0.2.20
|
|
378
|
+
- @vertz/ui-compiler@0.2.20
|
|
379
|
+
|
|
380
|
+
## 0.2.19
|
|
381
|
+
|
|
382
|
+
### Patch Changes
|
|
383
|
+
|
|
384
|
+
- Updated dependencies []:
|
|
385
|
+
- @vertz/core@0.2.19
|
|
386
|
+
- @vertz/ui@0.2.19
|
|
387
|
+
- @vertz/ui-compiler@0.2.19
|
|
388
|
+
|
|
389
|
+
## 0.2.18
|
|
390
|
+
|
|
391
|
+
### Patch Changes
|
|
392
|
+
|
|
393
|
+
- Updated dependencies [[`b4cb6b6`](https://github.com/vertz-dev/vertz/commit/b4cb6b6826583c05efcdfd0af0e046a49f6eed91), [`c2355f9`](https://github.com/vertz-dev/vertz/commit/c2355f9d3e13feac615b00d48406e4626e92869b), [`e5ac67e`](https://github.com/vertz-dev/vertz/commit/e5ac67e24a05e0342a8c470ef741d7729ebeaf58)]:
|
|
394
|
+
- @vertz/ui@0.2.18
|
|
395
|
+
- @vertz/core@0.2.18
|
|
396
|
+
- @vertz/ui-compiler@0.2.18
|
|
397
|
+
|
|
398
|
+
## 0.2.17
|
|
399
|
+
|
|
400
|
+
### Patch Changes
|
|
401
|
+
|
|
402
|
+
- Updated dependencies [[`f284697`](https://github.com/vertz-dev/vertz/commit/f284697218e3ebcc7a196e8a6633c822e206646e), [`6d6a85c`](https://github.com/vertz-dev/vertz/commit/6d6a85c0fd9f354a8d077e2eb1afdcf065344b95)]:
|
|
403
|
+
- @vertz/ui@0.2.17
|
|
404
|
+
- @vertz/core@0.2.17
|
|
405
|
+
- @vertz/ui-compiler@0.2.17
|
|
406
|
+
|
|
407
|
+
## 0.2.16
|
|
408
|
+
|
|
409
|
+
### Patch Changes
|
|
410
|
+
|
|
411
|
+
- [#1108](https://github.com/vertz-dev/vertz/pull/1108) [`97e9fc9`](https://github.com/vertz-dev/vertz/commit/97e9fc9a80548e2be111542513802269162f4136) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add LRU eviction to MemoryCache with configurable maxSize (default 1000) to prevent unbounded cache growth in query().
|
|
412
|
+
|
|
413
|
+
- [#1195](https://github.com/vertz-dev/vertz/pull/1195) [`af0b64c`](https://github.com/vertz-dev/vertz/commit/af0b64c62480606cd9bb7ec9a25d7a4f0903d9cf) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add runtime image optimization for dynamic images at the edge. The `<Image>` component now rewrites absolute HTTP(S) URLs through `/_vertz/image` when `configureImageOptimizer()` is called. The Cloudflare handler supports an `imageOptimizer` config option using `cf.image` for edge transformation. Dev server includes a passthrough proxy for development.
|
|
414
|
+
|
|
415
|
+
- [#1173](https://github.com/vertz-dev/vertz/pull/1173) [`caf4647`](https://github.com/vertz-dev/vertz/commit/caf464741b53fdd65be1c558cf2330172f6d2feb) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add optional onMiss telemetry callback to FieldSelectionTracker for compiler miss detection, and recordFieldMiss method to DiagnosticsCollector for surfacing misses via /\_\_vertz_diagnostics endpoint
|
|
416
|
+
|
|
417
|
+
- [#1170](https://github.com/vertz-dev/vertz/pull/1170) [`6c33552`](https://github.com/vertz-dev/vertz/commit/6c3355265cd072d2c5b3d41c3c60e76d75c6e21c) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add automatic font fallback metric overrides for zero-CLS font loading. The framework now extracts font metrics from .woff2 files at server startup and generates adjusted fallback @font-face blocks with ascent-override, descent-override, line-gap-override, and size-adjust. This eliminates layout shift when custom fonts load with font-display: swap.
|
|
418
|
+
|
|
419
|
+
- [#1168](https://github.com/vertz-dev/vertz/pull/1168) [`d0e9dc5`](https://github.com/vertz-dev/vertz/commit/d0e9dc5065fea630cd046ef55f279fe9fb400086) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - feat(ui): Image component with build-time optimization
|
|
420
|
+
|
|
421
|
+
Add `<Image>` component to `@vertz/ui` that renders an `<img>` element with sensible defaults (lazy loading, async decoding). At build time, the Bun plugin detects static `<Image>` usage and replaces it with optimized `<picture>` markup containing WebP 1x/2x variants and an original-format fallback.
|
|
422
|
+
|
|
423
|
+
- Runtime `<Image>` component with priority prop, pass-through attributes
|
|
424
|
+
- AST-based transform using ts-morph for reliable detection
|
|
425
|
+
- Sharp-based image processor with content-hash caching
|
|
426
|
+
- `/__vertz_img/` route for serving optimized images with path traversal protection
|
|
427
|
+
- HTML attribute escaping to prevent XSS in generated markup
|
|
428
|
+
|
|
429
|
+
- [#1109](https://github.com/vertz-dev/vertz/pull/1109) [`e1938b0`](https://github.com/vertz-dev/vertz/commit/e1938b0f86129396d22f5db57792cfa805387e62) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add incremental HMR manifest updates — regenerate changed file's reactivity manifest on save before SSR re-import, with change detection to skip unnecessary cache invalidation
|
|
430
|
+
|
|
431
|
+
- [#1193](https://github.com/vertz-dev/vertz/pull/1193) [`02bac2a`](https://github.com/vertz-dev/vertz/commit/02bac2af689750d500f0846d700e89528a02627d) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add automatic route code splitting: `defineRoutes()` component factories are rewritten to lazy `import()` calls at build time, enabling per-page code splitting without manual dynamic imports.
|
|
432
|
+
|
|
433
|
+
- [#1131](https://github.com/vertz-dev/vertz/pull/1131) [`ab3f364`](https://github.com/vertz-dev/vertz/commit/ab3f36478018245cc9473217a9a3bf7b04c6a5cb) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Export EntitySchemaManifest, EntitySchemaManifestEntry, and EntitySchemaRelation types from @vertz/codegen. Update @vertz/ui-server to import from the canonical source instead of maintaining duplicate definitions.
|
|
434
|
+
|
|
435
|
+
- [#1176](https://github.com/vertz-dev/vertz/pull/1176) [`0f6d90a`](https://github.com/vertz-dev/vertz/commit/0f6d90adf785c52ff1e70187e3479941b2db896c) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - SSR delivery optimizations: consolidate CSS into max 3 style tags, add structured PreloadItem data for HTTP Link headers, support modulepreload injection and Cache-Control headers in SSR handler.
|
|
436
|
+
|
|
437
|
+
- [#1220](https://github.com/vertz-dev/vertz/pull/1220) [`d8257a5`](https://github.com/vertz-dev/vertz/commit/d8257a5665704fa0f2c2e6646f3b5ab8c39c5cdc) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add `isBrowser()` SSR detection utility and migrate all `typeof window/document` guards. Remove `addEventListener`/`removeEventListener` no-op stubs from the SSR DOM shim — browser-only code no longer runs during SSR.
|
|
438
|
+
|
|
439
|
+
- [#1216](https://github.com/vertz-dev/vertz/pull/1216) [`c1c0638`](https://github.com/vertz-dev/vertz/commit/c1c06383b8ad50c833b64aa5009fe7b494bb559b) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - SSR session injection to eliminate auth loading flash. JWT session data is now injected as `window.__VERTZ_SESSION__` during SSR, so `AuthProvider` hydrates with session data immediately instead of showing a loading state. Zero-config: the CLI auto-wires the session resolver when auth is configured.
|
|
440
|
+
|
|
441
|
+
- Updated dependencies [[`97e9fc9`](https://github.com/vertz-dev/vertz/commit/97e9fc9a80548e2be111542513802269162f4136), [`d2f6baf`](https://github.com/vertz-dev/vertz/commit/d2f6baf560db958f56257879d5d69da200ed519d), [`24b81a2`](https://github.com/vertz-dev/vertz/commit/24b81a26f0064863c1e50cdd17c0fe0fc022f6ea), [`af0b64c`](https://github.com/vertz-dev/vertz/commit/af0b64c62480606cd9bb7ec9a25d7a4f0903d9cf), [`caf4647`](https://github.com/vertz-dev/vertz/commit/caf464741b53fdd65be1c558cf2330172f6d2feb), [`b061fc4`](https://github.com/vertz-dev/vertz/commit/b061fc4d04e851ae1ec6addd9342cec7b1a698f8), [`d44234d`](https://github.com/vertz-dev/vertz/commit/d44234de726d5dfa786103b3e5a311754753f08e), [`6c33552`](https://github.com/vertz-dev/vertz/commit/6c3355265cd072d2c5b3d41c3c60e76d75c6e21c), [`d0e9dc5`](https://github.com/vertz-dev/vertz/commit/d0e9dc5065fea630cd046ef55f279fe9fb400086), [`9f6f292`](https://github.com/vertz-dev/vertz/commit/9f6f292137d89064c1d86c2231e1f416fa1abd61), [`02bac2a`](https://github.com/vertz-dev/vertz/commit/02bac2af689750d500f0846d700e89528a02627d), [`0f6d90a`](https://github.com/vertz-dev/vertz/commit/0f6d90adf785c52ff1e70187e3479941b2db896c), [`d8257a5`](https://github.com/vertz-dev/vertz/commit/d8257a5665704fa0f2c2e6646f3b5ab8c39c5cdc)]:
|
|
442
|
+
- @vertz/ui@0.2.16
|
|
443
|
+
- @vertz/ui-compiler@0.2.16
|
|
444
|
+
- @vertz/core@0.2.16
|
|
445
|
+
|
|
446
|
+
## 0.2.15
|
|
447
|
+
|
|
448
|
+
### Patch Changes
|
|
449
|
+
|
|
450
|
+
- Updated dependencies [[`4a2d5b5`](https://github.com/vertz-dev/vertz/commit/4a2d5b504791ee772396248789b9ad65bd078abf), [`d0f0941`](https://github.com/vertz-dev/vertz/commit/d0f09419950bd0d6d9229a11fa9bf07f632fb85d)]:
|
|
451
|
+
- @vertz/ui@0.2.15
|
|
452
|
+
- @vertz/core@0.2.15
|
|
453
|
+
- @vertz/ui-compiler@0.2.15
|
|
454
|
+
|
|
455
|
+
## 0.2.14
|
|
456
|
+
|
|
457
|
+
### Patch Changes
|
|
458
|
+
|
|
459
|
+
- Updated dependencies []:
|
|
460
|
+
- @vertz/core@0.2.14
|
|
461
|
+
- @vertz/ui@0.2.14
|
|
462
|
+
- @vertz/ui-compiler@0.2.14
|
|
463
|
+
|
|
464
|
+
## 0.2.13
|
|
465
|
+
|
|
466
|
+
### Patch Changes
|
|
467
|
+
|
|
468
|
+
- [#1046](https://github.com/vertz-dev/vertz/pull/1046) [`337e1b3`](https://github.com/vertz-dev/vertz/commit/337e1b3dfca6768575e57cf54069beb4f37366b7) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Access Set Bootstrap + Client-Side can(): server computes global entitlement snapshots (computeAccessSet), embeds in JWT acl claim with 2KB overflow strategy, exposes GET /api/auth/access-set with ETag/304 support. Client-side can() function returns reactive AccessCheck signals, AccessGate blocks UI while loading, createAccessProvider hydrates from SSR-injected **VERTZ_ACCESS_SET**. computeEntityAccess() enables per-entity access metadata for can(entitlement, entity). Compiler recognizes can() as signal-api via reactivity manifest.
|
|
469
|
+
|
|
470
|
+
- [#950](https://github.com/vertz-dev/vertz/pull/950) [`a5ceec8`](https://github.com/vertz-dev/vertz/commit/a5ceec812613d92f7261407e86b1a39993687a7a) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Automatic optimistic updates for entity mutations.
|
|
471
|
+
|
|
472
|
+
EntityStore gains an optimistic layer stack (applyLayer/commitLayer/rollbackLayer) that overlays in-flight mutation patches on top of server-truth base data. MutationDescriptor in @vertz/fetch orchestrates the apply→fetch→commit/rollback lifecycle. The query() source switcher reads entity-backed data from EntityStore, so optimistic patches propagate reactively to all consuming queries. Generated createClient auto-wires the handler — zero boilerplate for `await api.todos.update(id, { completed: true })` to optimistically update all queries immediately.
|
|
473
|
+
|
|
474
|
+
- [#1052](https://github.com/vertz-dev/vertz/pull/1052) [`4eac71c`](https://github.com/vertz-dev/vertz/commit/4eac71c98369d12a0cd7a3cbbeda60ea7cc5bd05) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Add client-side auth session management (AuthProvider, useAuth, AuthGate)
|
|
475
|
+
|
|
476
|
+
- AuthProvider wraps app with auth context, manages JWT session lifecycle
|
|
477
|
+
- useAuth() returns reactive state + SdkMethods (signIn, signUp, signOut, mfaChallenge, forgotPassword, resetPassword)
|
|
478
|
+
- SdkMethods work with form() for automatic validation and submission
|
|
479
|
+
- Proactive token refresh scheduling (10s before expiry, tab visibility, online/offline handling)
|
|
480
|
+
- AuthGate gates rendering on auth state resolution (shows fallback during loading)
|
|
481
|
+
- SSR hydration via window.**VERTZ_SESSION** (no initial fetch needed)
|
|
482
|
+
- AccessContext integration: AuthProvider auto-manages access set when accessControl=true
|
|
483
|
+
- Server: signin/signup/refresh responses now include expiresAt timestamp
|
|
484
|
+
|
|
485
|
+
- Updated dependencies [[`337e1b3`](https://github.com/vertz-dev/vertz/commit/337e1b3dfca6768575e57cf54069beb4f37366b7), [`a5ceec8`](https://github.com/vertz-dev/vertz/commit/a5ceec812613d92f7261407e86b1a39993687a7a), [`3a79c2f`](https://github.com/vertz-dev/vertz/commit/3a79c2fad5bfbaed61f252cf2b908592e12a82bd), [`a9211ca`](https://github.com/vertz-dev/vertz/commit/a9211ca751305f541987b93d493d349838cf4822), [`a82b2ec`](https://github.com/vertz-dev/vertz/commit/a82b2ec1ccc94f278916796783c33d81ffead211), [`1011e51`](https://github.com/vertz-dev/vertz/commit/1011e51fbfe528e35930e3dd5c32b76568b0684a), [`de34f8d`](https://github.com/vertz-dev/vertz/commit/de34f8dc9d3e69b507874f33d80bf7dc4420001d), [`4eac71c`](https://github.com/vertz-dev/vertz/commit/4eac71c98369d12a0cd7a3cbbeda60ea7cc5bd05)]:
|
|
486
|
+
- @vertz/ui@0.2.13
|
|
487
|
+
- @vertz/ui-compiler@0.2.13
|
|
488
|
+
- @vertz/core@0.2.13
|
|
489
|
+
|
|
490
|
+
## 0.2.12
|
|
491
|
+
|
|
492
|
+
### Patch Changes
|
|
493
|
+
|
|
494
|
+
- [#937](https://github.com/vertz-dev/vertz/pull/937) [`c7e3ec2`](https://github.com/vertz-dev/vertz/commit/c7e3ec2e926b0a2cd6d35f58124f3d7f50fc6fb9) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix nested conditional DOM duplication and stable context IDs for HMR.
|
|
495
|
+
|
|
496
|
+
Nested `__conditional` calls (from chained ternaries) returned DocumentFragments that lost children after DOM insertion, causing stale text nodes. `normalizeNode()` now wraps fragments in `<span style="display:contents">` for stable parent references.
|
|
497
|
+
|
|
498
|
+
Framework-internal contexts (`RouterContext`, `OutletContext`, `DialogStackContext`) now have stable IDs so they survive HMR module re-evaluation without breaking `useContext()`.
|
|
499
|
+
|
|
500
|
+
- Updated dependencies [[`c7e3ec2`](https://github.com/vertz-dev/vertz/commit/c7e3ec2e926b0a2cd6d35f58124f3d7f50fc6fb9)]:
|
|
501
|
+
- @vertz/ui@0.2.12
|
|
502
|
+
- @vertz/core@0.2.12
|
|
503
|
+
- @vertz/ui-compiler@0.2.12
|
|
504
|
+
|
|
505
|
+
## 0.2.11
|
|
506
|
+
|
|
507
|
+
### Patch Changes
|
|
508
|
+
|
|
509
|
+
- [#919](https://github.com/vertz-dev/vertz/pull/919) [`b2878cf`](https://github.com/vertz-dev/vertz/commit/b2878cfe2acb3d1155ca5e0da13b2ee91c9aea9a) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix source map line offset in dev server
|
|
510
|
+
|
|
511
|
+
Breakpoints in browser DevTools were landing 2-3 lines below the intended position. The Bun plugin prepends CSS import and Fast Refresh preamble lines before the compiled code, but the source map was not adjusted for these extra lines. Now the source map mappings are offset by the number of prepended lines, so breakpoints land on the correct line.
|
|
512
|
+
|
|
513
|
+
- [#917](https://github.com/vertz-dev/vertz/pull/917) [`5ed4c1a`](https://github.com/vertz-dev/vertz/commit/5ed4c1a4c5c9ea946e97b1636011251c6287eaf4) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix HMR fast-refresh stability: SSR module reload now uses .ts wrapper to preserve plugin processing, compiler unwraps NonNullExpression in reactivity analyzer, and dev server includes diagnostic logging (VERTZ_DEBUG) and health check endpoint (/\_\_vertz_diagnostics).
|
|
514
|
+
|
|
515
|
+
- [#918](https://github.com/vertz-dev/vertz/pull/918) [`1fc9e33`](https://github.com/vertz-dev/vertz/commit/1fc9e33a9aa5283898c8974084f519a3caacbabb) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Remove index.html from the framework
|
|
516
|
+
|
|
517
|
+
UI apps no longer require an `index.html` file in the project root. The production build now generates the HTML shell programmatically with the correct asset references, eliminating the need for:
|
|
518
|
+
|
|
519
|
+
- Manual `index.html` maintenance
|
|
520
|
+
- Fast Refresh runtime stripping during build
|
|
521
|
+
- Dev script tag replacement with hashed entries
|
|
522
|
+
- `./public/` path rewriting
|
|
523
|
+
|
|
524
|
+
The `createIndexHtmlStasher` dev server mechanism (which renamed `index.html` during development to prevent Bun from auto-serving it) has been removed entirely.
|
|
525
|
+
|
|
526
|
+
`UIBuildConfig` gains an optional `title` field (default: `'Vertz App'`) to set the HTML page title.
|
|
527
|
+
|
|
528
|
+
- Updated dependencies [[`275e4c7`](https://github.com/vertz-dev/vertz/commit/275e4c770f55b9e75b44d90f2cb586fff3eaeede), [`5ed4c1a`](https://github.com/vertz-dev/vertz/commit/5ed4c1a4c5c9ea946e97b1636011251c6287eaf4), [`5607c59`](https://github.com/vertz-dev/vertz/commit/5607c598c1c55485222fa2da192d0e0321f8b14a), [`523bbcb`](https://github.com/vertz-dev/vertz/commit/523bbcb12c1866a8334d5dac278cb51b157a5c7b), [`5607c59`](https://github.com/vertz-dev/vertz/commit/5607c598c1c55485222fa2da192d0e0321f8b14a), [`859e3da`](https://github.com/vertz-dev/vertz/commit/859e3dae660629d5d4f1e13c305c9201ee1d738d)]:
|
|
529
|
+
- @vertz/ui-compiler@0.2.11
|
|
530
|
+
- @vertz/ui@0.2.11
|
|
531
|
+
- @vertz/core@0.2.11
|
|
532
|
+
|
|
533
|
+
## 0.2.8
|
|
534
|
+
|
|
535
|
+
### Patch Changes
|
|
536
|
+
|
|
537
|
+
- Updated dependencies []:
|
|
538
|
+
- @vertz/core@0.2.8
|
|
539
|
+
- @vertz/ui@0.2.8
|
|
540
|
+
- @vertz/ui-compiler@0.2.8
|
|
541
|
+
|
|
542
|
+
## 0.2.7
|
|
543
|
+
|
|
544
|
+
### Patch Changes
|
|
545
|
+
|
|
546
|
+
- Updated dependencies []:
|
|
547
|
+
- @vertz/core@0.2.7
|
|
548
|
+
- @vertz/ui@0.2.7
|
|
549
|
+
- @vertz/ui-compiler@0.2.7
|
|
550
|
+
|
|
551
|
+
## 0.2.6
|
|
552
|
+
|
|
553
|
+
### Patch Changes
|
|
554
|
+
|
|
555
|
+
- Updated dependencies []:
|
|
556
|
+
- @vertz/core@0.2.6
|
|
557
|
+
- @vertz/ui@0.2.6
|
|
558
|
+
- @vertz/ui-compiler@0.2.6
|
|
559
|
+
|
|
560
|
+
## 0.2.5
|
|
561
|
+
|
|
562
|
+
### Patch Changes
|
|
563
|
+
|
|
564
|
+
- Updated dependencies []:
|
|
565
|
+
- @vertz/core@0.2.5
|
|
566
|
+
- @vertz/ui@0.2.5
|
|
567
|
+
- @vertz/ui-compiler@0.2.5
|
|
568
|
+
|
|
569
|
+
## 0.2.4
|
|
570
|
+
|
|
571
|
+
### Patch Changes
|
|
572
|
+
|
|
573
|
+
- [#894](https://github.com/vertz-dev/vertz/pull/894) [`a986d07`](https://github.com/vertz-dev/vertz/commit/a986d0788ca0210dfa4f624153d4bda72257a78c) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Fix HMR fast-refresh stability: SSR module reload now uses .ts wrapper to preserve plugin processing, compiler unwraps NonNullExpression in reactivity analyzer, and dev server includes diagnostic logging (VERTZ_DEBUG) and health check endpoint (/\_\_vertz_diagnostics).
|
|
574
|
+
|
|
575
|
+
- Updated dependencies [[`a986d07`](https://github.com/vertz-dev/vertz/commit/a986d0788ca0210dfa4f624153d4bda72257a78c)]:
|
|
576
|
+
- @vertz/ui-compiler@0.2.4
|
|
577
|
+
- @vertz/core@0.2.4
|
|
578
|
+
- @vertz/ui@0.2.2
|
|
579
|
+
|
|
580
|
+
## 0.2.3
|
|
581
|
+
|
|
582
|
+
### Patch Changes
|
|
583
|
+
|
|
584
|
+
- [#880](https://github.com/vertz-dev/vertz/pull/880) [`2e86c55`](https://github.com/vertz-dev/vertz/commit/2e86c55e3c04f3c534bf0dc124d18dcdc5d9eefc) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Preserve DOM state (form values, focus, scroll positions) across fast refresh hot updates. Previously, `replaceChild` created an entirely new DOM tree, losing transient state like input values, cursor position, and scroll offsets. Now captures state by `name`/`id` attributes before replacement and restores it after.
|
|
585
|
+
|
|
586
|
+
- [#878](https://github.com/vertz-dev/vertz/pull/878) [`62dddcb`](https://github.com/vertz-dev/vertz/commit/62dddcbcb4943b12a04bca8466b09ae21901070b) Thanks [@viniciusdacal](https://github.com/viniciusdacal)! - Remove `private: true` so the package is published to npm. Required by `@vertz/cli` at runtime.
|
|
587
|
+
|
|
588
|
+
- Updated dependencies [[`62dddcb`](https://github.com/vertz-dev/vertz/commit/62dddcbcb4943b12a04bca8466b09ae21901070b), [`62dddcb`](https://github.com/vertz-dev/vertz/commit/62dddcbcb4943b12a04bca8466b09ae21901070b), [`b0b6115`](https://github.com/vertz-dev/vertz/commit/b0b6115e0389447ffb951e875b5ce224e4ace51c)]:
|
|
589
|
+
- @vertz/core@0.2.3
|
|
590
|
+
- @vertz/ui-compiler@0.2.3
|
|
591
|
+
- @vertz/ui@0.2.2
|
|
592
|
+
|
|
593
|
+
## 0.2.2
|
|
594
|
+
|
|
595
|
+
### Patch Changes
|
|
596
|
+
|
|
597
|
+
- Updated dependencies [[`b6cb0a0`](https://github.com/vertz-dev/vertz/commit/b6cb0a0e3de68974ce1747063288aef7a199f084)]:
|
|
598
|
+
- @vertz/ui@0.2.2
|
|
599
|
+
- @vertz/ui-compiler@0.2.2
|
|
600
|
+
- @vertz/core@0.2.2
|
|
601
|
+
|
|
602
|
+
## 0.2.0
|
|
603
|
+
|
|
604
|
+
### Minor Changes
|
|
605
|
+
|
|
606
|
+
- [#267](https://github.com/vertz-dev/vertz/pull/267) [`0a33c14`](https://github.com/vertz-dev/vertz/commit/0a33c142a12a54e0da61423701ca338118ab9c98) Thanks [@vertz-dev-core](https://github.com/apps/vertz-dev-core)! - Zero-config SSR: `vertz({ ssr: true })` makes `vite dev` serve SSR'd HTML automatically.
|
|
607
|
+
|
|
608
|
+
**@vertz/ui-server:**
|
|
609
|
+
|
|
610
|
+
- Add `@vertz/ui-server/dom-shim` subpath with SSRElement, installDomShim, toVNode
|
|
611
|
+
- Add `@vertz/ui-server/jsx-runtime` subpath for server-side JSX rendering
|
|
612
|
+
|
|
613
|
+
**@vertz/ui-compiler:**
|
|
614
|
+
|
|
615
|
+
- Add `ssr: boolean | SSROptions` to vertzPlugin options
|
|
616
|
+
- Add `configureServer` hook that intercepts HTML requests and renders SSR'd HTML
|
|
617
|
+
- Auto-generate virtual SSR entry module (`\0vertz:ssr-entry`)
|
|
618
|
+
- Handle JSX runtime alias swap for SSR builds
|
|
619
|
+
|
|
620
|
+
**@vertz/ui:**
|
|
621
|
+
|
|
622
|
+
- Add `@vertz/ui/jsx-runtime` and `@vertz/ui/jsx-dev-runtime` subpath exports
|
|
623
|
+
- Make router SSR-compatible (auto-detect `__SSR_URL__`, skip popstate in SSR)
|
|
624
|
+
|
|
625
|
+
### Patch Changes
|
|
626
|
+
|
|
627
|
+
- [#199](https://github.com/vertz-dev/vertz/pull/199) [`63f074e`](https://github.com/vertz-dev/vertz/commit/63f074eefa96b49eb72724f8ec377a14a1f2c630) Thanks [@vertz-tech-lead](https://github.com/apps/vertz-tech-lead)! - Initial release of @vertz/ui v0.1 — a compiler-driven reactive UI framework.
|
|
628
|
+
|
|
629
|
+
- Reactivity: `signal()`, `computed()`, `effect()`, `batch()`, `untrack()`
|
|
630
|
+
- Compiler: `let` → signal, `const` derived → computed, JSX → DOM helpers, mutation → peek/notify
|
|
631
|
+
- Component model: `ref()`, `onMount()`, `onCleanup()`, `watch()`, `children()`, `createContext()`
|
|
632
|
+
- Error handling: `ErrorBoundary`, `Suspense` with async support
|
|
633
|
+
- CSS-in-JS: `css()` with type-safe properties, `variants()`, `globalCss()`, `s()` shorthand
|
|
634
|
+
- Theming: `defineTheme()`, `ThemeProvider`, CSS variable generation
|
|
635
|
+
- Zero-runtime CSS extraction via compiler plugin
|
|
636
|
+
- Forms: `form()` with schema validation, `formDataToObject()`, SDK method integration
|
|
637
|
+
- Data fetching: `query()` with caching, `MemoryCache`, key derivation
|
|
638
|
+
- SSR: `renderToStream()`, `serializeToHtml()`, `HeadCollector` for streaming HTML
|
|
639
|
+
- Hydration: `hydrate()` with eager/lazy/interaction strategies, component registry
|
|
640
|
+
- Router: `defineRoutes()`, `createRouter()`, `createLink()`, `createOutlet()`, search params
|
|
641
|
+
- Primitives: 15 headless components (Button, Dialog, Select, Menu, Tabs, Accordion, etc.)
|
|
642
|
+
- Testing: `renderTest()`, `findByText()`, `click()`, `type()`, `press()`, `createTestRouter()`
|
|
643
|
+
- Vite plugin: HMR, CSS extraction, codegen watch mode
|
|
644
|
+
- Curated public API: developer-facing exports in main barrel, compiler internals in `@vertz/ui/internals`
|
|
645
|
+
|
|
646
|
+
- Updated dependencies [[`a207936`](https://github.com/vertz-dev/vertz/commit/a2079362c54a8b61ea2368039abcb08681448380), [`b2d43d4`](https://github.com/vertz-dev/vertz/commit/b2d43d4f265e4b1a806b3e96f00721cc38cc07e8), [`c8efe6b`](https://github.com/vertz-dev/vertz/commit/c8efe6b4aef9ea9b9b4e3de414297ce2f829f7bb), [`3407afd`](https://github.com/vertz-dev/vertz/commit/3407afdf543481cd559e550454144d16e6a26e06), [`4f780bb`](https://github.com/vertz-dev/vertz/commit/4f780bba6bee7a493c9a1e0b8463ea2126a7285b), [`0a33c14`](https://github.com/vertz-dev/vertz/commit/0a33c142a12a54e0da61423701ca338118ab9c98), [`c1e38d0`](https://github.com/vertz-dev/vertz/commit/c1e38d010da1bea95ed9246968fabc22e300a6e9), [`0f1c028`](https://github.com/vertz-dev/vertz/commit/0f1c028dd6bb90e37ac71f60e40ba0be774cca11), [`7207c4c`](https://github.com/vertz-dev/vertz/commit/7207c4c44c2fc83f67459cbcba8e6010b4d05145), [`a454791`](https://github.com/vertz-dev/vertz/commit/a454791e0c6866cbad1d0d96bc3c0688282b021b), [`e17ccb2`](https://github.com/vertz-dev/vertz/commit/e17ccb261ecebc1ca7d58b75365869cb29253a3c), [`948f127`](https://github.com/vertz-dev/vertz/commit/948f127bf4b752274800c045d010590f1cc266d8), [`9ee0308`](https://github.com/vertz-dev/vertz/commit/9ee03084f71803b04eef5f05ced2f90b52a9fa8e), [`63f074e`](https://github.com/vertz-dev/vertz/commit/63f074eefa96b49eb72724f8ec377a14a1f2c630)]:
|
|
647
|
+
- @vertz/core@0.2.0
|
|
648
|
+
- @vertz/server@0.2.0
|
|
649
|
+
- @vertz/ui@0.2.0
|
|
650
|
+
|
|
651
|
+
## 0.1.0 (2026-02-13)
|
|
652
|
+
|
|
653
|
+
### Features
|
|
654
|
+
|
|
655
|
+
- **SSR Core:** Initial server-side rendering implementation
|
|
656
|
+
|
|
657
|
+
- `renderToStream()` — Streaming HTML renderer returning `ReadableStream<Uint8Array>`
|
|
658
|
+
- Component-to-HTML serialization with proper escaping
|
|
659
|
+
- Void element handling (no closing tags for `<input>`, `<br>`, etc.)
|
|
660
|
+
- Raw text element handling (`<script>`, `<style>` content not escaped)
|
|
661
|
+
|
|
662
|
+
- **Out-of-Order Streaming:** Suspense boundary support
|
|
663
|
+
|
|
664
|
+
- Slot placeholders (`v-slot-N`) for async content
|
|
665
|
+
- Template chunks (`v-tmpl-N`) streamed when data resolves
|
|
666
|
+
- Client-side replacement scripts with DOM manipulation
|
|
667
|
+
|
|
668
|
+
- **Hydration Markers:** Atomic component hydration
|
|
669
|
+
|
|
670
|
+
- `data-v-id` attributes for component identification
|
|
671
|
+
- `data-v-key` for unique instance tracking
|
|
672
|
+
- Serialized props embedded as `<script type="application/json">`
|
|
673
|
+
- Static components produce zero hydration markers
|
|
674
|
+
|
|
675
|
+
- **Head Management:** `<head>` metadata collection
|
|
676
|
+
|
|
677
|
+
- `HeadCollector` for collecting `<title>`, `<meta>`, `<link>` during render
|
|
678
|
+
- `renderHeadToHtml()` for serializing head entries
|
|
679
|
+
|
|
680
|
+
- **Asset Pipeline:** Script and stylesheet injection
|
|
681
|
+
|
|
682
|
+
- `renderAssetTags()` for generating `<script>` and `<link>` tags
|
|
683
|
+
- Support for `async` and `defer` attributes on scripts
|
|
684
|
+
|
|
685
|
+
- **Critical CSS:** Above-the-fold CSS inlining
|
|
686
|
+
|
|
687
|
+
- `inlineCriticalCss()` with injection prevention
|
|
688
|
+
- Escapes `</style>` sequences to prevent breakout
|
|
689
|
+
|
|
690
|
+
- **CSP Nonce Support:** Content Security Policy compliance
|
|
691
|
+
|
|
692
|
+
- Optional `nonce` parameter on `renderToStream()`
|
|
693
|
+
- All inline scripts include `nonce` attribute when provided
|
|
694
|
+
- Nonce value escaping to prevent attribute injection
|
|
695
|
+
|
|
696
|
+
- **Testing Utilities:** SSR testing helpers
|
|
697
|
+
- `streamToString()` — Convert stream to string for assertions
|
|
698
|
+
- `collectStreamChunks()` — Collect chunks as array for ordering tests
|
|
699
|
+
- `encodeChunk()` — UTF-8 encoding helper
|
|
700
|
+
|
|
701
|
+
### Test Coverage
|
|
702
|
+
|
|
703
|
+
- 66 tests across 10 test files
|
|
704
|
+
- 5 integration tests validating all acceptance criteria (IT-5A-1 through IT-5A-5)
|
|
705
|
+
- CSP nonce security tests
|
|
706
|
+
- Streaming chunk ordering tests
|
|
707
|
+
- Hydration marker tests for interactive vs static components
|
|
708
|
+
- Edge case handling (empty trees, void elements, raw text elements)
|
|
709
|
+
|
|
710
|
+
### Documentation
|
|
711
|
+
|
|
712
|
+
- Comprehensive README with usage examples
|
|
713
|
+
- API reference for all public exports
|
|
714
|
+
- Security guidance for `rawHtml()` usage
|
|
715
|
+
- Examples for Suspense streaming, hydration markers, head management, asset injection, and critical CSS
|