@neocompose/cli 0.61.5 → 0.62.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.61.5",
3
+ "version": "0.62.0",
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.0 -->
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.0 -->
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
 
@@ -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.