@ape-egg/vibe 1.9.9 → 2.0.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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/runtime/iterate.js +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.0] - 2026-06-06
|
|
4
|
+
|
|
5
|
+
Version rolled to 2.0.0. **Still Beta — no behavior changes since 1.9.9.** The major bump consolidates the 1.9.x line (runtime reactive core, components, optional compiler, `$.unsafe` raw-HTML, plus the recent reactivity-correctness, iteration teardown-leak, and scoped-state performance fixes); it does not signal a stability promotion or any breaking change.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
3
9
|
## [1.9.9] - 2026-06-06
|
|
4
10
|
|
|
5
11
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vibe
|
|
2
2
|
|
|
3
|
-
**Version
|
|
3
|
+
**Version 2.0.0 (Beta)** — A runtime-first reactive framework with optional compilation.
|
|
4
4
|
|
|
5
5
|
No virtual DOM. No build step required. Just modern JavaScript. When you need production optimizations, add the optional Rust-based compiler.
|
|
6
6
|
|
package/package.json
CHANGED
package/runtime/iterate.js
CHANGED
|
@@ -388,6 +388,15 @@ const refreshIterationComponentProps = (clonedNodes, scopedState) => {
|
|
|
388
388
|
for (const { id, expr } of el._vibeIterPropExprs) {
|
|
389
389
|
try {
|
|
390
390
|
const value = evalInScope(expr, scopedState, el);
|
|
391
|
+
// Don't clobber a slot with undefined — mirrors the mount-time guard in
|
|
392
|
+
// resolveIterationComponentProps. forEachIterWrapper reaches every
|
|
393
|
+
// [data-vibe-iter-prop] descendant, including components owned by a
|
|
394
|
+
// DEEPER iteration (e.g. a cell component inside a nested each). Their
|
|
395
|
+
// prop expressions reference the inner each's alias, which isn't in this
|
|
396
|
+
// (outer) row's scope, so they evaluate to undefined here. Skipping keeps
|
|
397
|
+
// the value the inner iteration's own update already set with the correct
|
|
398
|
+
// scope, instead of wiping it to undefined and leaving raw @[...] bindings.
|
|
399
|
+
if (value === undefined) continue;
|
|
391
400
|
if (registry[id] !== value) {
|
|
392
401
|
registry[id] = value;
|
|
393
402
|
changed.add(id);
|