@neocompose/cli 0.89.10 → 0.89.12
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 +30 -0
- package/dist/neo-runtime.mjs +4017 -2496
- package/dist/test-worker.mjs +4239 -4069
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +1 -1
- package/skills/neocompose-cli/references/declarations/constructors.md +18 -0
- package/skills/neocompose-cli/references/declarations/declarations.md +3 -0
- package/skills/neocompose-cli/references/declarations/initializers.md +2 -0
- package/skills/neocompose-cli/references/neoscript/collections.md +2 -0
- package/skills/neocompose-cli/references/neoscript/delegates-and-listeners.md +6 -1
- package/skills/neocompose-cli/references/neoscript/types-and-narrowing.md +5 -0
- package/skills/neocompose-cli/references/sync/conflicts-and-recovery.md +5 -0
- package/skills/neocompose-cli/references/world/variants.md +4 -0
package/package.json
CHANGED
|
@@ -143,7 +143,7 @@ The marker near the top of `SKILL.md` must exactly match the package version,
|
|
|
143
143
|
and this quoted copy is checked too:
|
|
144
144
|
|
|
145
145
|
```html
|
|
146
|
-
<!-- reviewed-through-cli: 0.89.
|
|
146
|
+
<!-- reviewed-through-cli: 0.89.12 -->
|
|
147
147
|
```
|
|
148
148
|
|
|
149
149
|
Keep this skill on current behavior. Upgrade steps, rollout prerequisites,
|
|
@@ -31,6 +31,13 @@ Foo value = new(bar: "BAR", isFun: true) { IsFun = false };
|
|
|
31
31
|
- A header constructor disables implicit parameterless `new` and forbids
|
|
32
32
|
other constructor overloads. Its derived identity takes no `@id`.
|
|
33
33
|
|
|
34
|
+
## Editor support
|
|
35
|
+
|
|
36
|
+
Constructor completion, hover, and signature help use the concrete type arguments:
|
|
37
|
+
`Box<string>` offers a `string` argument for a parameter declared as `T`.
|
|
38
|
+
Target-typed constructions inside callbacks use the callback's return type for
|
|
39
|
+
parameter hints. Duplicate named arguments are diagnosed in local initializers.
|
|
40
|
+
|
|
34
41
|
## Variant parameters
|
|
35
42
|
|
|
36
43
|
Constructors accept `NeoVariant<T>` and `NeoLookupVariant<T, TValue>` selections,
|
|
@@ -188,3 +195,14 @@ AudioSettings AUDIO_SETTINGS = new() {
|
|
|
188
195
|
Main = new AudioMixerGroupSettingsFolder("Main", "Master", "MasterVolume", []),
|
|
189
196
|
};
|
|
190
197
|
```
|
|
198
|
+
|
|
199
|
+
## Reconciliation during push and export
|
|
200
|
+
|
|
201
|
+
Constructor comparisons wait for newly authored values they read, including
|
|
202
|
+
unordered collection entries and variant factories. Equal constructor arguments
|
|
203
|
+
retain the existing instance, its stored random values, and authored field edits.
|
|
204
|
+
Changed arguments rebuild the instance after its dependencies settle. A pending
|
|
205
|
+
dependency alone does not trigger reconstruction.
|
|
206
|
+
|
|
207
|
+
A concrete generic instance keeps its type arguments when stored through a base
|
|
208
|
+
class slot, for example `Rule value = new TypedRule<int>(1);`.
|
|
@@ -43,6 +43,9 @@ Generic bindings and their nested collection descriptors follow the owning
|
|
|
43
43
|
declaration's identity. Deleting and recreating an idless declaration creates
|
|
44
44
|
fresh bindings; retaining its pulled IDs preserves them.
|
|
45
45
|
|
|
46
|
+
Editor rename follows an interface member through its compatible implementations
|
|
47
|
+
and overrides. Unrelated members and overloads keep their names.
|
|
48
|
+
|
|
46
49
|
## Modifiers
|
|
47
50
|
|
|
48
51
|
`public`, `protected`, `private`, `static`, `virtual`, `abstract`, `sealed`,
|
|
@@ -36,6 +36,8 @@ indentation, using the project's configured spaces or tabs.
|
|
|
36
36
|
The editor checks computed defaults with the same expression resolver as push.
|
|
37
37
|
Unknown names, missing members, invalid type arguments, and expression type
|
|
38
38
|
errors appear at the offending initializer expression, including nested defaults.
|
|
39
|
+
This includes simple member reads such as `value.Name`: nullable receivers and
|
|
40
|
+
private or protected access receive the same checks as executable bodies.
|
|
39
41
|
|
|
40
42
|
A default that isn't a closed literal stores as a computed initializer and
|
|
41
43
|
replays for omitted members in push, web, and SDK. A stored override stays
|
|
@@ -149,3 +149,5 @@ computed properties and callable signatures for cursors; store `List<T>` data
|
|
|
149
149
|
explicitly. Stored enumerable interface members accept authored class rows.
|
|
150
150
|
Runtime sequences are shown as unenumerated and are not expanded for previews.
|
|
151
151
|
`ToSet()` rejects enumerable/cursor interface elements.
|
|
152
|
+
|
|
153
|
+
`Clone()` also copies owned class values inside tuples. References inside the copied graph keep their targets.
|
|
@@ -11,7 +11,12 @@ List<Item> ready = this.Items.Where((item) => item.Count > 0);
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
- Lambdas may be returned, stored, or assigned to typed locals. They capture
|
|
14
|
-
surrounding locals and parameters by value when created.
|
|
14
|
+
surrounding locals and parameters by value when created. A non-null check
|
|
15
|
+
on a local remains valid inside its capture, even if the outer local is later
|
|
16
|
+
reassigned. This does not freeze mutable fields on captured objects.
|
|
17
|
+
A captured value can share a class name; member access uses the value.
|
|
18
|
+
- Editor completion uses the delegate parameter type inside tuple values and
|
|
19
|
+
named constructor arguments, including overloaded constructors.
|
|
15
20
|
- `(x) => x * 2` equals `(x) => { return x * 2; }`. In a void delegate the
|
|
16
21
|
expression must call or assign. Parenthesize a dictionary-literal body:
|
|
17
22
|
`() => ({ "a": 1 })`.
|
|
@@ -86,6 +86,11 @@ public static T? FirstOf<T extends Item = Item>(List<T> items) => items.FirstOrD
|
|
|
86
86
|
types. Nullable elements matched against `T?` contribute their non-null
|
|
87
87
|
type. Null literals, target-typed `new()`, and empty collections supply no
|
|
88
88
|
evidence, but do not discard evidence from sibling tuple elements.
|
|
89
|
+
- Generic functions can construct `Box<T>` using their own type parameters,
|
|
90
|
+
including static functions without a class receiver. Explicit and inferred
|
|
91
|
+
call arguments close the construction in both the CLI and SDK.
|
|
92
|
+
- Go to Definition on a type parameter in a local type annotation opens its
|
|
93
|
+
class or function declaration.
|
|
89
94
|
- Function type parameters take no `@id`. Overrides declare the same count,
|
|
90
95
|
constraints, and defaults but may rename them.
|
|
91
96
|
|
|
@@ -20,6 +20,11 @@ compilation on purpose.
|
|
|
20
20
|
display text. Empty and comment-only files stay files.
|
|
21
21
|
- Against a server-side deletion, keeping the record restores it as a create
|
|
22
22
|
guarded by an absent-record check; removing it accepts the deletion.
|
|
23
|
+
- If a server deletion leaves an edited declaration without an owner, pull
|
|
24
|
+
uses its authored file for the local conflict side. This preserves its values
|
|
25
|
+
and IDs, including after a local file move. Shared members retain every
|
|
26
|
+
authored class declaration, including several classes in one file. Review
|
|
27
|
+
the marked hunks before choosing a whole side.
|
|
23
28
|
- Pull warns when a conflicted record's local base strands newly downloaded
|
|
24
29
|
descendant rows. Resolve it with `--mine` or `--theirs` before pushing.
|
|
25
30
|
- Compiled initializer IR and other server-derived metadata never cause a
|
|
@@ -64,6 +64,10 @@ frame. For editing an existing clip, see [frame overrides](animation.md).
|
|
|
64
64
|
as instance overrides, and `ToVariant(Base)` removes the applied layer.
|
|
65
65
|
- On an object nested inside another instance's construction, `ToVariant`
|
|
66
66
|
applies in place and records nothing.
|
|
67
|
+
- Child overrides also answer omitted fields on children with their own
|
|
68
|
+
constructor recipes. The child keeps its identity and unanswered defaults.
|
|
69
|
+
Later instance writes remain pins until an answering variant transition clears
|
|
70
|
+
them. Structured partials change only the named components.
|
|
67
71
|
- Selections compare equal when class, variant, and bound lookup row match.
|
|
68
72
|
An unset optional selection differs from `Base`.
|
|
69
73
|
|