@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
|
|
9168
|
-
if (
|
|
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
|
|
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
|
|
29527
|
-
if (
|
|
29526
|
+
const variantPath2 = projectVariantPathSymbolAt(analysis, document, position);
|
|
29527
|
+
if (variantPath2) {
|
|
29528
29528
|
return {
|
|
29529
|
-
range:
|
|
29529
|
+
range: variantPath2.token.range,
|
|
29530
29530
|
markdown: projectVariantHoverMarkdown(
|
|
29531
|
-
|
|
29532
|
-
|
|
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
|
|
29633
|
-
if (
|
|
29632
|
+
const variantPath2 = projectVariantPathSymbolAt(analysis, document, position);
|
|
29633
|
+
if (variantPath2) {
|
|
29634
29634
|
return [
|
|
29635
29635
|
{
|
|
29636
|
-
uri:
|
|
29637
|
-
range:
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
@@ -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.
|
|
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
|