@neocompose/cli 0.77.1 → 0.78.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 +12 -0
- package/dist/neo.mjs +1893 -464
- package/dist/test-worker.mjs +692 -163
- 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-and-construction.md +31 -1
- package/skills/neocompose-cli/references/values-identities-and-references.md +5 -0
package/package.json
CHANGED
|
@@ -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.
|
|
132
|
+
<!-- reviewed-through-cli: 0.78.0 -->
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -91,7 +91,7 @@ Use context-aware typed annotations:
|
|
|
91
91
|
- `@visibility(.Hidden)` only on a class; absence means visible.
|
|
92
92
|
- Stateful settings use contextual enum cases, such as
|
|
93
93
|
`@settings(format: .Plain)` and `@settings(kind: .Unordered)`.
|
|
94
|
-
- `@settings(...)` before a `List` element or `Dictionary` value type
|
|
94
|
+
- `@settings(...)` before a `List` or `Set` element or `Dictionary` value type
|
|
95
95
|
configures the collection's entries: `List<@settings(format: .Plain) string>`,
|
|
96
96
|
`Dictionary<string, @settings(min: 0) int>`. Only the member that declares
|
|
97
97
|
the collection spells them; overrides share its entries.
|
|
@@ -271,6 +271,36 @@ A `Reference<T>` member satisfies an interface `T Foo { get; }` or
|
|
|
271
271
|
|
|
272
272
|
Constructor and function parameters use `Set<T>` for several selections.
|
|
273
273
|
|
|
274
|
+
### Set members
|
|
275
|
+
|
|
276
|
+
`Set<T>` is an insertion-ordered collection that can't hold duplicates. The
|
|
277
|
+
element picks the storage:
|
|
278
|
+
|
|
279
|
+
- An enum `Set<Trait>` is a multi-select Enum.
|
|
280
|
+
- `Set<Reference<T>>` is a multi-select lookup.
|
|
281
|
+
- `Set<NeoDialogueReference>` is a multi-select dialogue lookup.
|
|
282
|
+
- Any other element makes an owned Set whose entries are rows, like a List.
|
|
283
|
+
|
|
284
|
+
An owned Set holds `bool`, `int`, `float`, `decimal`,
|
|
285
|
+
`@settings(format: .Plain) string`, vectors, `Color`, sprites, audio clips,
|
|
286
|
+
or a class. Elements can't be nullable, collections, variants, delegates,
|
|
287
|
+
actions, or interfaces. A class entry is unique by row, a value entry by its
|
|
288
|
+
value. `@index` and `@column` work as on a List; `kind:` is an error, since a
|
|
289
|
+
Set is always insertion-ordered.
|
|
290
|
+
|
|
291
|
+
```neo
|
|
292
|
+
@index(member: Slug, kind: .Unique)
|
|
293
|
+
public Set<Quest> ActiveQuests = [];
|
|
294
|
+
public Set<int> LuckyNumbers = [3, 7];
|
|
295
|
+
public Set<Trait> Traits = [.Brave];
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
`selection:` is an error everywhere: `Set<T>` selects many and `T` selects
|
|
299
|
+
one. The language server's quick fix rewrites `@settings(selection: .Multi)`
|
|
300
|
+
to a `Set<…>` type. A default literal that repeats a value fails `push`, and a
|
|
301
|
+
`List<Trait>` stays an ordered List of enum values. Queries over a Set, such
|
|
302
|
+
as `Where` and `OrderBy`, return a Set; `ToSet()` turns a List into one.
|
|
303
|
+
|
|
274
304
|
Declare a multicast event as `NeoAction<…>`. Its value is an ordered listener
|
|
275
305
|
set, so give it a bracketed list of method groups — never a lambda, and never
|
|
276
306
|
a bare method group — and never mark it `required`: the rest state is the
|
|
@@ -312,6 +312,11 @@ different. The name must end with the binary's extension, because pull
|
|
|
312
312
|
rebuilds the file's path from it. With no template annotation, the CLI persists the complete built-in
|
|
313
313
|
Unity defaults for the file kind.
|
|
314
314
|
|
|
315
|
+
Template-backed Unity settings may contain sparse nested override values and leaf
|
|
316
|
+
paths such as `platformSettings.standalone.maxTextureSize` or
|
|
317
|
+
`spriteSettings.pivot.x`. Preserve these paths during synchronization so untouched
|
|
318
|
+
settings continue inheriting from the template.
|
|
319
|
+
|
|
315
320
|
A top-level `NeoImage` or `NeoAudioClip` declaration in any definition file
|
|
316
321
|
can stand in for an inline entry. The registry lists it by name
|
|
317
322
|
(`NeoAudioClip SwordHit = SWORD_HIT;`), and the declaration carries the `@id`,
|