@neocompose/cli 0.12.0 → 0.14.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/dist/neo.mjs +11393 -10404
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,77 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.14.0] - 2026-07-28
4
+
5
+ ### Added
6
+
7
+ - Stamp authored provenance on every row a materialized default produces.
8
+ Writing `new EyePart { Name = "RightEye" }` as a row in `EyesPart.Children`
9
+ copies `EyePart`'s default graph, and until now the copy had no link home:
10
+ a clip declared on `EyePart` addresses `EyePart`'s own class-default rows,
11
+ which no copy of them named, so it resolved on no nested instance at all.
12
+ Each copied row now carries the class-default row it came from, forwarding
13
+ that row's own stamp so a part three levels deep still points at the
14
+ original rather than an intermediate copy. Clips on nested class rows
15
+ resolve, at any depth, and the Unity exporter chains the stamp through a
16
+ placement unchanged. `neo pull` output is byte-identical either way.
17
+
18
+ ### Fixed
19
+
20
+ - Push two sibling bare `new()` rows of a class whose default is row-backed.
21
+ Re-lowering a declared initializer adopted the `@id` written on it as the
22
+ copy's identity — which is the class-default row's id — so
23
+ `[new EyePart(), new EyePart()]` minted one id twice and failed with
24
+ `Value construction reuses identity`, and even a single such row was
25
+ rejected by the server as an existing value. That id is now the copy's
26
+ provenance instead of its identity.
27
+ - Keep `genericBindings` and `bindingMembers` on an authored seed row across
28
+ the push transport. The schema commit route rebuilt each seed from a field
29
+ whitelist that omitted both, so an authored `NeoAnimationChildOverride` row
30
+ lost its concrete generic environment between the CLI and the server's own
31
+ re-lowering, and the push failed as a trusted-lowering mismatch.
32
+
33
+ ### Removed
34
+
35
+ - The nested-clip-owner advisory added in 0.12.0, along with the `warnings`
36
+ array `neo push --json`, `neo status --json` and `neo diff --json` carried
37
+ it in. It described a defect that provenance now fixes, so leaving it would
38
+ warn on correct code.
39
+
40
+ ## [0.13.0] - 2026-07-28
41
+
42
+ ### Added
43
+
44
+ - Author a single field of a structured leaf member inside an animation
45
+ override graph. P42 gives `SpriteInfo`, `Vector2`, `Vector2Int`, `Vector3`,
46
+ `Vector3Int` and `Color` a named field surface — `FileId`/`SliceIndex`,
47
+ `x`/`y`/`z`, `r`/`g`/`b`/`a` — and a frame's `Overrides` can now name one of
48
+ them: `Sprite = new { SliceIndex = 2 }` animates the slice while the sheet
49
+ stays whatever the played instance holds, and `Position = new { y = 0.5 }`
50
+ leaves `x` and `z` alone. The explicit `new Partial<SpriteInfo> { ... }` form
51
+ is accepted alongside the inferred `new { ... }`, matching how a class
52
+ override already reads, and an empty `new { }` still means no change.
53
+ - Accept a bare `Images.<Name>` in a `FileId` field position. It is the one
54
+ place a sprite file is named without a slice; as a whole sprite value it is
55
+ still rejected in favour of `Images.<Name>.Slice(index)`.
56
+
57
+ ### Changed
58
+
59
+ - Reject a non-integer component of a `Vector2Int` or `Vector3Int` in source,
60
+ naming the member and the field. `new(0.5, 0.5)` used to lower unchecked and
61
+ fail later at commit against a server guard, which reported the record rather
62
+ than the line that wrote it.
63
+ - Reject `new { ... }` for a structured leaf outside an animation override
64
+ graph — a member declaration default, or a top-level value binding — instead
65
+ of accepting a partial value in a position that can never be composed with
66
+ anything.
67
+
68
+ ### Fixed
69
+
70
+ - Stop emitting the literal text `null` for a sprite value that carries no
71
+ `fileId`. Now that a sprite field can be overridden on its own, a `neo pull`
72
+ of such a value wrote source that the next `neo push` read as a deletion of
73
+ the override.
74
+
3
75
  ## [0.12.0] - 2026-07-28
4
76
 
5
77
  ### Added