@neocompose/cli 0.47.1 → 0.48.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 +8 -0
- package/README.md +44 -3
- package/dist/neo.mjs +5868 -5057
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +37 -9
- package/skills/neocompose-cli/references/cli-development.md +1 -1
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.0 -->
|
|
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.0 -->
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
The quoted version above is checked too, so this instruction cannot go stale
|