@neocompose/cli 0.61.5 → 0.62.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.61.5",
3
+ "version": "0.62.1",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@ description: >-
9
9
  `@neocompose/cli` or `node cli/bin/neo.mjs` in the neo-compose repository.
10
10
  ---
11
11
 
12
- <!-- reviewed-through-cli: 0.61.5 -->
12
+ <!-- reviewed-through-cli: 0.62.1 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -110,7 +110,7 @@ wrappers.
110
110
  The marker near the top of `SKILL.md` must exactly match the package version:
111
111
 
112
112
  ```html
113
- <!-- reviewed-through-cli: 0.61.5 -->
113
+ <!-- reviewed-through-cli: 0.62.1 -->
114
114
  ```
115
115
 
116
116
  The quoted version above is checked too, so this instruction cannot go stale
@@ -59,6 +59,12 @@ Use ordinary `public`, `protected`, `private`, `static`, `virtual`, `abstract`,
59
59
  `sealed`, and `override` semantics. A sealed class is an instantiable leaf:
60
60
  it may extend another class but cannot be extended, cannot also be abstract,
61
61
  and can only be sealed while it has no subclasses. Interfaces are non-generic.
62
+ A read-only override may narrow a class or interface contract to an assignable
63
+ class or derived interface, including a non-null value for a nullable contract.
64
+ Generated Unity C# keeps the inherited property type for Mono compatibility;
65
+ NeoScript sees the narrowed type. Stored implementations of an abstract getter
66
+ remain get-only in generated C#.
67
+
62
68
  Do not put `@id` on inferred list/dictionary type entries or on derived
63
69
  structural descriptors.
64
70
 
@@ -381,3 +387,8 @@ class PlacedItem<
381
387
  ```
382
388
 
383
389
  Executable object initializer blocks can set immutable stored members on the newly constructed instance, including nested `new` expressions. Ordinary assignments after construction remain subject to storage restrictions. `readonly` declarations still change only through class defaults.
390
+
391
+ Populated unordered member defaults, such as `@settings(kind: .Unordered)` with
392
+ `List<Entry> Entries = [new Entry()]`, are constructed by an initializer for
393
+ each instance. A declaration has no container value row to own unordered entries.
394
+ Nested unordered lists already have container rows and retain their stored values.
@@ -23,7 +23,7 @@ create `Scripts/<Class>/<Member>.neo` sidecars.
23
23
 
24
24
  Declare a setter's value type explicitly with the canonical form
25
25
  `set(int value) { ... }`. Project analysis, candidate materialization, and
26
- focused script commands all use the same accessor extraction.
26
+ focused script commands all use the same accessor extraction. A property can have at most one getter and one setter. Concrete setters need a body (an empty body is a valid no-op); typed setters must use the property type and the parameter name `value`. Abstract and interface properties declare bodyless accessor contracts.
27
27
 
28
28
  A body whose whole point is one expression may be written as an expression
29
29
  body, `=> expr;`. It is pure sugar for the block form — same compiled
@@ -423,3 +423,5 @@ intent; do not assume an action body is writable merely because it compiled.
423
423
  locally, like push. If another commit lands while it runs, the run is refused:
424
424
  run it again. `neo loc` writes work the same way: a write refused because
425
425
  another commit landed is run again.
426
+
427
+ VS Code rename follows override families and class constructors, resolves contextual enum options such as `.Success`, and keeps local-variable renames scoped to their declaration. Assigned IDs are not required for these refactorings.
@@ -131,7 +131,9 @@ assignability, collection membership, multiplicity, and group constraints.
131
131
 
132
132
  `collectionValue` references follow the same post-push resolution and
133
133
  membership rules as member defaults. Name the collection itself, for example
134
- `Reference(root.Assets.Quests.Daily)`. A path may traverse construction defaults
134
+ `root.Assets.Quests.Daily` or `Reference(root.Assets.Quests.Daily)`. Invalid
135
+ reference-valued settings are errors; they never silently remove the binding.
136
+ A path may traverse construction defaults
135
137
  and declarations created in the same push. Preparation materializes the target
136
138
  collection and its required ancestor rows together, preserving the virtual
137
139
  identities. No preliminary push or manual value ID is needed.