@neocompose/cli 0.47.1 → 0.48.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/CHANGELOG.md +12 -0
- package/README.md +44 -3
- package/dist/neo.mjs +5880 -5061
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +37 -9
- package/skills/neocompose-cli/references/cli-development.md +1 -1
- package/skills/neocompose-cli/references/values-identities-and-references.md +7 -0
package/package.json
CHANGED
|
@@ -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.
|
|
12
|
+
<!-- reviewed-through-cli: 0.48.1 -->
|
|
13
13
|
|
|
14
14
|
# Neo Compose CLI
|
|
15
15
|
|
|
@@ -102,9 +102,9 @@ neo/
|
|
|
102
102
|
neo.json
|
|
103
103
|
Project.neo
|
|
104
104
|
Root.neo
|
|
105
|
-
Classes/
|
|
106
|
-
Interfaces/
|
|
107
|
-
Enums/
|
|
105
|
+
Classes/{System/, ...}
|
|
106
|
+
Interfaces/{System/, ...}
|
|
107
|
+
Enums/{System/, ...}
|
|
108
108
|
Relations.neo
|
|
109
109
|
Templates/
|
|
110
110
|
Localization.neo
|
|
@@ -122,9 +122,12 @@ Production `.neo`/`.neoflow` files and supported managed binaries are tracked.
|
|
|
122
122
|
Colocated `.spec.neo` files are test-only and never enter status, source hashes,
|
|
123
123
|
pull/reset, or push.
|
|
124
124
|
Normal pull preserves declaration placement and spelling by stable ID when it
|
|
125
|
-
can. Force/reset regenerates canonical text while retaining the declaration
|
|
126
|
-
|
|
127
|
-
use the
|
|
125
|
+
can. Force/reset regenerates canonical text while retaining the current declaration
|
|
126
|
+
paths and extracted initializer bindings, including moves made since the last
|
|
127
|
+
sync. New server declarations use the default layout. System declarations
|
|
128
|
+
default to a `System` subfolder under their category, including classes, enums,
|
|
129
|
+
interfaces, templates, localization statuses, and priority/dialogue groups.
|
|
130
|
+
Ownership comes from the reserved system identity, not the declaration name.
|
|
128
131
|
|
|
129
132
|
## Load the focused contract you need
|
|
130
133
|
|
|
@@ -165,7 +168,7 @@ Do not invent lowercase persistence-kind declarations such as `project`,
|
|
|
165
168
|
`values`, `files`, or `relations`. Named arguments and contextual enum literals
|
|
166
169
|
come from generated contracts; do not invent raw fields or property bags.
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
Persisted reusable values are static members on ordinary project classes:
|
|
169
172
|
|
|
170
173
|
```neo
|
|
171
174
|
@id("assets-class-id")
|
|
@@ -182,6 +185,29 @@ class Assets {
|
|
|
182
185
|
The member ID anchors the stored binding. A computed static getter is an alias
|
|
183
186
|
and creates no stored binding or value row.
|
|
184
187
|
|
|
188
|
+
Local project initializers may live in any `.neo` file and need no imports:
|
|
189
|
+
|
|
190
|
+
```neo
|
|
191
|
+
List<NeoSortingLayer> SORTING_LAYERS = [
|
|
192
|
+
@id("existing-layer-id")
|
|
193
|
+
new NeoSortingLayer() { Name = "Default" }
|
|
194
|
+
];
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Use `SortingLayers = SORTING_LAYERS` in Root or another stored initializer.
|
|
198
|
+
The consuming member owns the value identity; do not add an ID at the use.
|
|
199
|
+
Preserve existing nested IDs when extracting, and omit IDs on new rows.
|
|
200
|
+
An aggregate has one owning assignment. Use `Reference(SORTING_LAYERS)` only
|
|
201
|
+
where the receiving member permits that reference type. For independent
|
|
202
|
+
copies, use the editor's duplicate action or copy the initializer without IDs.
|
|
203
|
+
Scalars may have several owners. If those values diverge in web, pull keeps
|
|
204
|
+
the different server values by inlining the differing uses. Initializer
|
|
205
|
+
aliases are local source organization, not runtime globals or server records.
|
|
206
|
+
Use their names as complete value initializers; executable expressions such as
|
|
207
|
+
`BASE + 1` cannot access these local declarations.
|
|
208
|
+
The shared editor offers extract-to-file on a selected complete initializer,
|
|
209
|
+
inline on its sole use, and duplicate at a use. Move the created file freely.
|
|
210
|
+
|
|
185
211
|
Declare managed files in typed registries:
|
|
186
212
|
|
|
187
213
|
```neo
|
|
@@ -199,7 +225,9 @@ AudioClipRegistry AudioClips = new() {
|
|
|
199
225
|
```
|
|
200
226
|
|
|
201
227
|
Use `Images.Sword.Slice(0)` for a sprite and `AudioClips.SwordHit` for audio.
|
|
202
|
-
|
|
228
|
+
Registry declarations and their image/audio paths may be in any project folder
|
|
229
|
+
outside ignored/private directories. Update the registry path when moving a
|
|
230
|
+
binary file. Renaming the registry symbol or replacing bytes
|
|
203
231
|
retains the file ID.
|
|
204
232
|
Omitting `@settings(template: ...)` uses the complete built-in Unity import
|
|
205
233
|
defaults for that file kind.
|
|
@@ -88,7 +88,7 @@ wrappers.
|
|
|
88
88
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
89
89
|
|
|
90
90
|
```html
|
|
91
|
-
<!-- reviewed-through-cli: 0.
|
|
91
|
+
<!-- reviewed-through-cli: 0.48.1 -->
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -121,6 +121,13 @@ membership rules as member defaults.
|
|
|
121
121
|
|
|
122
122
|
## Defaults and localization
|
|
123
123
|
|
|
124
|
+
A class member with an empty construction default emits `= new Type()` even
|
|
125
|
+
when its value row is virtual. Edit that declaration with `new() { ... }` to
|
|
126
|
+
change the shared default, or assign the member inside an instance initializer
|
|
127
|
+
to override only that instance. Leaving the emitted construction unchanged
|
|
128
|
+
creates no redundant value rows. A nullable member with no default remains bare;
|
|
129
|
+
an explicit null default emits `= null`.
|
|
130
|
+
|
|
124
131
|
Omitted members are virtual projections of the instance's recorded constructor
|
|
125
132
|
or variant. Later edits to that source update every omitted member. Writing a
|
|
126
133
|
member creates a sparse override with its deterministic projected ID; removing
|