@neocompose/cli 0.81.1 → 0.81.3

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.81.1",
3
+ "version": "0.81.3",
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.81.1 -->
12
+ <!-- reviewed-through-cli: 0.81.3 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -129,7 +129,7 @@ wrappers.
129
129
  The marker near the top of `SKILL.md` must exactly match the package version:
130
130
 
131
131
  ```html
132
- <!-- reviewed-through-cli: 0.81.1 -->
132
+ <!-- reviewed-through-cli: 0.81.3 -->
133
133
  ```
134
134
 
135
135
  The quoted version above is checked too, so this instruction cannot go stale
@@ -222,7 +222,10 @@ the class's own parameter, such as `public Bag<T> B = new Bag<T>();`. Such an
222
222
  initializer with fields or entries, like `new Bag<T> { N = 3 }`, runs per
223
223
  instance, since each instance closes `T` differently. A type
224
224
  argument that wraps the parameter, such as `new Bag<List<T>>()`, is rejected.
225
- Type arguments must satisfy `extends` constraints in bodies too.
225
+ Type arguments must satisfy `extends` constraints in bodies too. A written
226
+ type argument list names every parameter, so `item is Tool<Asset>` is rejected
227
+ when `Tool` declares two. A bare generic name, such as `item is Tool`, stays
228
+ allowed.
226
229
  A type argument may be a delegate, such as `Box<NeoDelegate<int, int>>`, but
227
230
  not a `NeoAction`, which is never a value.
228
231
 
@@ -244,6 +247,9 @@ initializer as its default. Omitted fields remain virtual and resolve through
244
247
  the instance's recorded constructor or variant. They track later source-default
245
248
  edits until that field is explicitly overridden; resetting an override makes it
246
249
  virtual again.
250
+ Editing an inline child preserves the outer construction's call-site values for
251
+ its other fields. The child keeps that construction while its variant selection
252
+ matches; selecting a different variant gives it an independent recipe.
247
253
 
248
254
  Declare a lookup member as `Reference<T>`. `public Reference<Config> Config`
249
255
  selects one row and reads as `Config`. `public Set<Reference<Config>> Configs`
@@ -575,6 +581,12 @@ selection. Constructor arguments and member initializers must select compatible
575
581
  targets too. An `NPC` lookup cannot select from `List<Quest>`, even when its
576
582
  initializer is typed `NPC`; status reports the conflicting collection annotation.
577
583
 
584
+ Generic constructions can nest the same generic class, including through
585
+ collections, such as `Box<Box<int>>` or `Box<List<Box<int>>>`. Each `new` uses
586
+ its own type arguments during first push and stored replay. Editing a nested
587
+ constructor argument rebuilds its projected fields in place, including fields
588
+ stored inside a packed parent; push followed by pull leaves a clean checkout.
589
+
578
590
  Schema export retains a constructed default's generic arguments, including
579
591
  nested collection references. For example, a `NeoAnimationClip<ArmPart>`
580
592
  default constructs `new NeoAnimationClip<ArmPart>` and its frames reference