@neocompose/cli 0.65.1 → 0.67.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,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.67.0] - 2026-10-04
4
+
5
+ - `float` is a 32-bit float everywhere, as in C#. Float literals, defaults, constructor arguments, and stored values round to the nearest 32-bit float, and pull prints the shortest decimal that reads back as that float, so `0.7` stays `0.7`. Previously push stored the 64-bit double, and Unity read a value that its own `float` could not hold.
6
+ - Float arithmetic rounds to 32 bits after every step, as do `Math.Sqrt`, `ToFloat`, vector constructors, and native function results declared `float`. `int` division truncates toward zero, so `7 / 2` is `3`. Previously it returned `3.5`.
7
+ - Unity codegen types NeoScript `float` members, parameters, and returns as C# `float` instead of `double`.
8
+ - Native functions with `List` or `Dictionary` parameters receive the collection. Previously generated code cast the script value straight to the C# collection type and threw `InvalidCastException`.
9
+ - Compiler revision 17 recompiles every stored body. The rollout also rounds every 64-bit float already stored in values, members, and constructors, including retained history.
10
+ - Push rejects a float, vector component, color channel, float bound, or float parameter default that is not a 32-bit float. Older CLIs that send 64-bit doubles fail validation instead of storing them.
11
+
12
+ ## [0.66.0] - 2026-10-03
13
+
14
+ - Add the 18 script runtime lifecycle interfaces from P98, such as `INeoOnLoad`, `INeoUnityUpdate`, and `INeoUnityOnTriggerEnter2D`. Every project gets them as protected system records, and pull writes them under `Interfaces/System/` with `@system(kind: .ScriptRuntime)`.
15
+ - Reserve the lifecycle member names, such as `OnLoad` and `Update`. A member with one must be the public, immediate instance method implementing its interface, or it reports `reserved-lifecycle-member`. This tightens valid source: a project with an unrelated member by one of these names must rename it. Push enforces the same rule on records authored in the web editor.
16
+ - Report `lifecycle-hook-without-object` as a warning when a class reaches an `INeoUnity*` interface without extending `NeoObjectBase`. Push still succeeds.
17
+ - A lifecycle hook cannot be `@effect`. It reports `invalid-effect`.
18
+
3
19
  ## [0.65.1] - 2026-10-03
4
20
 
5
21
  - Pull and push reconciliation emit a stored `new NeoAnimationSegmentFrame<NeoCollider?>(value: null)`. A null constructor argument typed by a class's generic parameter now checks nullability against the row's type argument. Previously, a pushed segment holding a null frame committed, but source reconciliation failed with "Required constructor argument stores null".