@neocompose/cli 0.77.1 → 0.79.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 CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.79.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fcc30a9: Placing a class, list, set, or dictionary value that something else already owns is now refused. Only a `Reference` member may share it. This covers a static (`static Item S = Holder.Shared;`), a static's field (`Pattern = Shared.Held.Pattern`), collection entries and dictionary values (`[Holder.Shared]`, `{ "a": Holder.Shared }`), object fields, member defaults, a local already placed elsewhere, and a constructor parameter stored in an ordinary field (`new Wrapped(Holder.Shared)` with `public Box Inner = inner;`). `neo status`, push, and `neo test` report the refusal at the authored position, including the argument that passed the value. Call `Clone()` to own a copy, or use `Reference`. Value kinds still copy. Pull no longer writes a static's name in place of an owned value. The server refuses a push that attaches a row another static or parent owns.
8
+ - fcc30a9: `NeoCellPattern` is an ordinary stored class (P109). `Center`, `FourNeighbors`, `EightNeighbors` and `Empty` are stored static values, so `Reference<NeoCellPattern>` can point at them, and `Box`, `Rect`, `Ring`, `Cross` and `Line` run as NeoScript. Unity export generates the class like any other and no longer rejects pattern references. The system schema migration rewrites stored compiled bodies that read the old preset getters so they read the stored values; authored code is unchanged. Unity projects need SDK 0.69.0.
9
+
10
+ An owned field can no longer default to a preset, as in `public NeoCellPattern Pattern = NeoCellPattern.EightNeighbors;`. `neo status` and `neo push` report it at the default. Write `.Clone()` to own a copy, or declare `Reference<NeoCellPattern>` to share the preset.
11
+
12
+ Add `NeoObject.GetTiles(pattern, offset)`, which returns the tile at each occupied cell of the pattern in pattern order. `GetObjects`, `GetTile` and `GetTiles` take an optional `offset` that shifts the whole pattern without constructing a translated one. Calls without an offset behave as before.
13
+
14
+ Fix the generated C# `NeoObject.GetTile`, which threw for authored (asset-owned) tiles.
15
+
16
+ - 632df4e: Read project snapshot and incremental sync payloads through their JSON envelope so Unicode dictionary keys round-trip without blocking project updates. Update the CLI alongside the server because incremental read responses now carry dataJson.
17
+
18
+ ### Patch Changes
19
+
20
+ - 65c1226: Delete remote instance value rows when a locally deleted member is pushed after pulling concurrent changes, preventing orphaned rows in storage and Unity exports.
21
+ - b7ffb3d: Traverse class value ownership when sibling slots are null, so enum-keyed dictionary cascades reach their stored entries. Include surviving member and value updates in enum deletion responses when cascading removes class fields.
22
+ - c5aebfc: Allow newly created statics to be used inside other static value graphs in the same push, regardless of declaration order. Value kinds copy their values, and a `Reference` names the target object.
23
+
24
+ When editing a virtual default under a static or variant in the app, infer the placement scope from its stored parent instead of incorrectly asserting an authored root.
25
+
26
+ - d527836: The runtime drops its execution budget API. `executionBudgetLimits`, `sharedExecutionBudget`, the budget factory, and `NeoScriptResourceLimitError` are gone, and loops, `List.Repeat`, strings, and collections no longer stop at count limits. `wallClockDeadlineMs` still stops runaway scripts with `NeoScriptWallClockTimeoutError`, so `neo test` timeouts are unchanged.
27
+ - fcc30a9: Binding a collection to a list default whose entries come from a constructor, such as `[NeoCellPattern.Box(1), NeoCellPattern.Cross(2)]`, now pushes. Each entry is stored as its initializer, so no entry points at a temporary argument row anymore. Writing into a value built by a constructor now also stores the rows its constructor arguments use. A header-constructor argument such as `new Holder(root.Assets.Pattern)` keeps the rows it shares with a field the push drops as unchanged, so `Holders.Value.Pattern.Count` reads the real pattern.
28
+
29
+ ## 0.78.0
30
+
31
+ ### Minor Changes
32
+
33
+ - 79bedea: Add `Set<T>` members: an insertion-ordered collection of unique values or class rows, with Set-typed queries and `ToSet()`. `Set<Enum>`, `Set<Reference<T>>`, and `Set<NeoDialogueReference>` are the multi-select spellings. `selection:` is now an error, and the language server offers a quick fix that rewrites the type to `Set<…>`. Unity projects need SDK 0.68.0.
34
+
35
+ `Reference<NeoAudioClip>(id: "…")`, which pull writes for an audio file no registry symbol names, now compiles and pushes as that file.
36
+
37
+ ### Patch Changes
38
+
39
+ - 1b6ec78: Accept nested Unity texture override paths so per-file platform and sprite settings retain template inheritance when saved from the web editor.
40
+
3
41
  ## 0.77.1
4
42
 
5
43
  ### Patch Changes