@neocompose/cli 0.68.3 → 0.69.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.
@@ -22401,6 +22401,8 @@ function resolveBaseConstructorRecord(record3, ctx) {
22401
22401
  );
22402
22402
  if (resolution.kind === "resolved") return resolution.overload;
22403
22403
  if (resolution.kind === "noMatch" && baseArguments.length === 0) {
22404
+ if (owningClass.requiredConstructorId === record3.id && evaluatorSchemaIndex(ctx).class(baseClassId)?.requiredConstructorId == null)
22405
+ return null;
22404
22406
  throw new NSGetterRuntimeError(
22405
22407
  `Constructor '${record3.id}' on '${owningClass.name}' must call ': base(...)': its base class declares constructors but none parameterless.`
22406
22408
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.68.3",
3
+ "version": "0.69.0",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -41,6 +41,7 @@
41
41
  "valibot": "^1.4.2"
42
42
  },
43
43
  "devDependencies": {
44
+ "@formatjs/icu-messageformat-parser": "^3.5.21",
44
45
  "@neocompose/manifest": "file:../packages/manifest",
45
46
  "@neocompose/neoscript-language": "file:../packages/neoscript-language",
46
47
  "esbuild": "^0.28.1",
@@ -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.68.3 -->
12
+ <!-- reviewed-through-cli: 0.69.0 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -110,7 +110,7 @@ wrappers.
110
110
  The marker near the top of `SKILL.md` must exactly match the package version:
111
111
 
112
112
  ```html
113
- <!-- reviewed-through-cli: 0.68.3 -->
113
+ <!-- reviewed-through-cli: 0.69.0 -->
114
114
  ```
115
115
 
116
116
  The quoted version above is checked too, so this instruction cannot go stale
@@ -290,13 +290,26 @@ honor both variables.
290
290
  Pass explicit project/version IDs and flags in automation. Prefer `--json` for
291
291
  machine-readable output and do not depend on interactive pickers or confirms.
292
292
 
293
- ## Unity code export
294
-
295
- `neo export unity --out <UnityAssetsDir>` writes separate C# files under
296
- `Scripts/Neo/Generated/`, named after the generated C# types, plus project and localization JSON. It compares
297
- contents before writing C#, preserves unchanged `.meta` files, removes obsolete
298
- outputs listed in `NeoGeneratedFiles.json`, and removes the former
299
- `NeoGeneratedTypes.cs`. Stable identities in the manifest preserve `.meta` GUIDs when types are renamed. Keep the manifest with the generated files.
293
+ ## Unity export
294
+
295
+ `neo export` builds the Unity export from the last pull, offline, and writes it
296
+ into the directories the Unity project's `NeoComposeConfig` asset names:
297
+ `project.json` with a partition index, `Partitions/*.json` holding value rows
298
+ by storage partition, localization files, and generated C# under
299
+ `<generatedTypesDirectory>/Generated/`. It writes only files whose bytes
300
+ changed, skips codegen when only values changed since the last export into
301
+ that Unity project, and writes `Library/NeoCompose/export.json` last for
302
+ Unity to ingest. Local edits are not exported: push and pull them first.
303
+
304
+ - The Unity project comes from `unityConfigPath`. Without it, an interactive
305
+ export offers to link the one config asset naming this project; scripts get
306
+ an error with the line to add.
307
+ - `--unity-project <dir>` exports into another Unity project without linking
308
+ it. Agent rigs use it.
309
+ - An error diagnostic, or a project file whose bytes differ from the pulled
310
+ file, stops the export before anything is written.
311
+ - `NeoGeneratedFiles.json` keeps `.meta` GUIDs across type renames. Keep it
312
+ with the generated files.
300
313
 
301
314
  ## Push timing diagnostics
302
315
 
@@ -385,6 +385,14 @@ class Child(string name) : Base {
385
385
  }
386
386
  ```
387
387
 
388
+ A header base clause with no arguments, such as `: Base()` or `: Base`,
389
+ runs a zero-argument or fully defaulted base constructor when available.
390
+ Otherwise, if the base has only declared constructors, it uses the member
391
+ initializers and base block without running a base constructor. The base block
392
+ must settle any remaining required members. A required base constructor cannot
393
+ be skipped. A declared constructor's `: base()` must call a base constructor
394
+ when the base declares one.
395
+
388
396
  Bind generic base arguments explicitly when needed. Reject a subclass that
389
397
  omits required base arguments or leaves any inherited required member
390
398
  unsettled.