@neocompose/cli 0.24.9 → 0.25.1

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 CHANGED
@@ -1,5 +1,76 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.25.1] - 2026-08-09
4
+
5
+ ### Changed
6
+
7
+ - Stop `First`, `FirstOrDefault`, and collection `Contains` scans as soon as their result is known. Terminal scans now resolve and charge only visited entries, preserve list/dictionary order and value-reference identity, and avoid intermediate entry arrays (P55).
8
+
9
+ ### Fixed
10
+
11
+ - Seed the owned rows for a field a newly declared member adds to a
12
+ row-backed class default, instead of refusing the push with "no existing
13
+ owned value row". Adding an entry to a row-backed _list_ default has always
14
+ minted its rows; a class field now takes the same path, so replacing a class
15
+ member (`Name = "Blue"` → `Kind = .Blue` across every default that sets it)
16
+ pushes without editing each default in the web editor first. An `@id` on the
17
+ new field is honoured when it names an existing row and, when it does not,
18
+ held to the same UUID v4 identity rule list entries follow.
19
+ - Carry only the new rows and the ancestors that reach them in a member value
20
+ seed. Naming every row the pass touched made the seed depend on which
21
+ constructions the materialization cache preserved that run — so a push and
22
+ its own trusted re-lowering disagreed — and handed back rows stripped of the
23
+ `constructorArgs` a seed row cannot carry, which then failed to project back
24
+ to source. Pushing a new row anywhere under `root.Assets` previously failed
25
+ with "Authored value row … is missing memberId".
26
+ - Drop a stored class body key whose member the push deletes, instead of
27
+ carrying it into a schema that no longer has it while the same push
28
+ tombstones the row it names.
29
+ - Treat a member value seed as pushable work on its own. Adding a row to an
30
+ unordered list moves no stored record — membership is the new row's
31
+ `containerId` — so `neo status` and `neo push` reported a clean working copy
32
+ and silently dropped it. `neo status` now reports pending seeds too.
33
+ - Accept a stored row that spells "no class" as an explicit `null`, and adopt
34
+ the declared storage partition for an unstamped row reached through its
35
+ owning slot, in constructed static value graph validation. Rows materialized
36
+ before their partition was stamped (object-tree `Enabled`, P41 §4.3) sit in
37
+ main under a partitioned parent and failed a push over data it never wrote. A
38
+ row already stamped for a different partition is still rejected.
39
+
40
+ ## [0.25.0] - 2026-08-07
41
+
42
+ ### Added
43
+
44
+ - Add the `NeoAction<P1, …>` member kind (P62): multicast void members whose
45
+ listener set is ordinary durable data. Authored defaults use a listener-list
46
+ literal of method groups (`public NeoAction<int> OnDamaged = [PlayHitFlash];`),
47
+ `+=`/`-=` in NeoScript are set-semantic member-value writes deduplicated by
48
+ `(memberId, valueId)` identity, and invocation fans out sequentially through
49
+ the existing delegate member-target dispatch (empty set is a no-op; a
50
+ throwing listener fails fast with a `{action}[{row}] listener {index}` frame).
51
+ - Lower and emit NSAction members round-trip in project source, including the
52
+ manifest `action` record kind with an `arguments` key and arity ≤ 16.
53
+ - Compiled bodies containing the new `callAction` pointer or the
54
+ `addActionListener`/`removeActionListener` instructions claim compiler
55
+ revision 8; every stored body at revision ≤ 7 stays valid with no recompile.
56
+
57
+ ### Changed
58
+
59
+ - The NeoScript evaluator's schema-resolution cache (compiled bodies, schema
60
+ walks, callable signatures) now survives across top-level evaluations and is
61
+ invalidated by document edits, instead of being rebuilt cold per call —
62
+ repeated `neo test`/`neo script` evaluations and NSAction fan-out drop from
63
+ ~45 us to ~26 us per invocation, ~4 us per additional listener.
64
+ - Unity export schema version is now 17: exports carry NSAction members and
65
+ generated C# surfaces them as cached `NeoAction<P1, …>` registry properties
66
+ with `[NeoMemberMethod]`-stamped listener targets. Older exports are
67
+ rejected with instructions to regenerate.
68
+ - A lambda literal is a compile error at every action listener position
69
+ (authored default, constructor argument, `+=`), and an action member is
70
+ never nullable, never a value, and never a return type; diagnostics point at
71
+ extracting an `NSFunction` member or subscribing through the member
72
+ reference.
73
+
3
74
  ## [0.24.9] - 2026-08-08
4
75
 
5
76
  ### Fixed