@neocompose/cli 0.54.0 → 0.54.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 CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.54.1] - 2026-09-22
4
+
5
+ - Variants with the same name in different folders, such as `Oak/Day1` and `Ash/Day1`, keep their own nested rows on push. Adding overrides to one of them no longer fails with "claims identity …, which another value created by this push already owns."
6
+
3
7
  ## [0.54.0] - 2026-09-22
4
8
 
5
9
  - `NeoSortingGroup` has a `SortPoint`: where the group sorts along the transparency sort axis, as a cell offset from the object's origin-cell corner. It defaults to `(0.5, 0)`, the bottom center of the origin cell. Generated Unity classes implement `INeoSortingGroup.SortPoint`, which requires Neo Compose SDK 0.40.0.
package/dist/neo.mjs CHANGED
@@ -9164,15 +9164,15 @@ var init_strict_resolver = __esm({
9164
9164
  symbol
9165
9165
  };
9166
9166
  }
9167
- const variantPath = this.resolveVariantPath(receiverAst, name, scope, pos);
9168
- if (variantPath !== null) {
9167
+ const variantPath2 = this.resolveVariantPath(receiverAst, name, scope, pos);
9168
+ if (variantPath2 !== null) {
9169
9169
  if (optional2) {
9170
9170
  throw new CompileError(
9171
9171
  "Optional chaining is not valid on a variant path.",
9172
9172
  pos
9173
9173
  );
9174
9174
  }
9175
- return variantPath;
9175
+ return variantPath2;
9176
9176
  }
9177
9177
  if (receiverAst.kind === "ident" && !scope.lookup(receiverAst.name)) {
9178
9178
  if (receiverAst.name === "SpriteInfo" && name === "Empty") {
@@ -29523,13 +29523,13 @@ function activeNamedArgument(text, position) {
29523
29523
  return /([A-Za-z_][A-Za-z0-9_]*)\s*:\s*\.[A-Za-z0-9_]*$/.exec(prefix)?.[1] ?? null;
29524
29524
  }
29525
29525
  function projectHover(analysis, document, position) {
29526
- const variantPath = projectVariantPathSymbolAt(analysis, document, position);
29527
- if (variantPath) {
29526
+ const variantPath2 = projectVariantPathSymbolAt(analysis, document, position);
29527
+ if (variantPath2) {
29528
29528
  return {
29529
- range: variantPath.token.range,
29529
+ range: variantPath2.token.range,
29530
29530
  markdown: projectVariantHoverMarkdown(
29531
- variantPath.entry,
29532
- variantPath.entry.declaration.type.name === NEO_VARIANT_FOLDER_TYPE_NAME
29531
+ variantPath2.entry,
29532
+ variantPath2.entry.declaration.type.name === NEO_VARIANT_FOLDER_TYPE_NAME
29533
29533
  )
29534
29534
  };
29535
29535
  }
@@ -29629,12 +29629,12 @@ Construct with \`new(${parameters})\` \u2014 this class declares a required cons
29629
29629
  ${lines.join("\n\n")}`;
29630
29630
  }
29631
29631
  function projectDefinition(analysis, document, position) {
29632
- const variantPath = projectVariantPathSymbolAt(analysis, document, position);
29633
- if (variantPath) {
29632
+ const variantPath2 = projectVariantPathSymbolAt(analysis, document, position);
29633
+ if (variantPath2) {
29634
29634
  return [
29635
29635
  {
29636
- uri: variantPath.entry.uri,
29637
- range: variantPath.entry.declaration.nameRange
29636
+ uri: variantPath2.entry.uri,
29637
+ range: variantPath2.entry.declaration.nameRange
29638
29638
  }
29639
29639
  ];
29640
29640
  }
@@ -111856,6 +111856,9 @@ function variantValueBindingsV4(manifest, analysis) {
111856
111856
  const classNames = new Map(
111857
111857
  manifest.classes.map((entry) => [entry.id, entry.name])
111858
111858
  );
111859
+ const folderPaths = new Map(
111860
+ manifest.variantFolders.map((folder) => [folder.id, folder.path])
111861
+ );
111859
111862
  return variantGlobals(analysis).flatMap((global) => {
111860
111863
  const variant2 = variantsById.get(
111861
111864
  variantRecordId(global, NEO_VARIANT_TYPE_NAME)
@@ -111877,11 +111880,31 @@ function variantValueBindingsV4(manifest, analysis) {
111877
111880
  valueId: variant2.valueId,
111878
111881
  initializer: global.initializer,
111879
111882
  source: global.source,
111880
- label: `${requiredClassName2(classNames, variant2.classId)}.${NEO_VARIANT_SCOPE_NAME}.${variant2.name}`
111883
+ label: variantLabel(
111884
+ requiredClassName2(classNames, variant2.classId),
111885
+ variant2,
111886
+ folderPaths
111887
+ )
111881
111888
  }
111882
111889
  ];
111883
111890
  });
111884
111891
  }
111892
+ function variantLabel(className, variant2, folderPaths) {
111893
+ if (variant2.folderId === null) {
111894
+ return variantPath(className, null, variant2.name);
111895
+ }
111896
+ const folderPath3 = folderPaths.get(variant2.folderId);
111897
+ if (folderPath3 === void 0) {
111898
+ throw new Error(
111899
+ `Variant ${variant2.name} sits in folder ${JSON.stringify(variant2.folderId)}, which this push does not declare.`
111900
+ );
111901
+ }
111902
+ return variantPath(className, folderPath3, variant2.name);
111903
+ }
111904
+ function variantPath(className, folderPath3, name) {
111905
+ const scope = folderPath3 === null || folderPath3 === "" ? `${className}.${NEO_VARIANT_SCOPE_NAME}` : `${className}.${NEO_VARIANT_SCOPE_NAME}.${folderPath3.split(NEO_VARIANT_FOLDER_PATH_SEPARATOR).join(".")}`;
111906
+ return `${scope}.${name}`;
111907
+ }
111885
111908
  function requiredClassName2(classNames, classId) {
111886
111909
  const name = classNames.get(classId);
111887
111910
  if (name === void 0) {
@@ -112013,8 +112036,7 @@ function buildVariantPathIndexV4(classIdsByName, analysis) {
112013
112036
  annotationsForFolderLookup(global.annotations)
112014
112037
  );
112015
112038
  const path = symbol === null ? null : foldersBySymbol.get(folderSymbolKey(className, symbol)) ?? null;
112016
- const scope = path === null || path === "" ? `${className}.${NEO_VARIANT_SCOPE_NAME}` : `${className}.${NEO_VARIANT_SCOPE_NAME}.${path.split(NEO_VARIANT_FOLDER_PATH_SEPARATOR).join(".")}`;
112017
- index.set(`${scope}.${global.name}`, {
112039
+ index.set(variantPath(className, path, global.name), {
112018
112040
  classId,
112019
112041
  variantId: variantRecordId(global, global.type.name),
112020
112042
  valueClassId: global.type.name === NEO_LOOKUP_VARIANT_TYPE_NAME ? classIdsByName.get(valueClassName(global)) ?? null : null
@@ -138844,7 +138866,7 @@ var init_registry2 = __esm({
138844
138866
  "schema-contract/registry.mjs"() {
138845
138867
  "use strict";
138846
138868
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
138847
- cliVersion: "0.54.0",
138869
+ cliVersion: "0.54.1",
138848
138870
  projectFileUploadBatchSize: 32,
138849
138871
  documentRecords: {
138850
138872
  member: {
@@ -146665,7 +146687,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
146665
146687
  async function main() {
146666
146688
  const args = parseArgs(process.argv.slice(2));
146667
146689
  if (args.command === "--version") {
146668
- console.log("0.54.0");
146690
+ console.log("0.54.1");
146669
146691
  return;
146670
146692
  }
146671
146693
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.54.0",
3
+ "version": "0.54.1",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -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.54.0 -->
12
+ <!-- reviewed-through-cli: 0.54.1 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -97,7 +97,7 @@ wrappers.
97
97
  The marker near the top of `SKILL.md` must exactly match the package version:
98
98
 
99
99
  ```html
100
- <!-- reviewed-through-cli: 0.54.0 -->
100
+ <!-- reviewed-through-cli: 0.54.1 -->
101
101
  ```
102
102
 
103
103
  The quoted version above is checked too, so this instruction cannot go stale