@neocompose/cli 0.71.0 → 0.71.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,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.71.1] - 2026-10-07
|
|
4
|
+
|
|
5
|
+
- Stop refreshing untouched NeoScript bodies solely because optional source maps are absent. Authored edits, dependency changes, and `neo push --force-recompile` still compile the affected bodies.
|
|
6
|
+
- Keep Unity exports clean when only diagnostic locations differ from the pulled head, including line shifts caused by push inserting `@id` annotations. A clean export removes the local-build and local-save restriction without another push.
|
|
7
|
+
|
|
3
8
|
## [0.71.0] - 2026-10-06
|
|
4
9
|
|
|
5
10
|
- Bump `neo test --reporter=json` to schema 2 for optional frame locations and coordinate spaces.
|
package/dist/neo.mjs
CHANGED
|
@@ -45759,7 +45759,7 @@ var init_registry = __esm({
|
|
|
45759
45759
|
"../packages/manifest/schema-contract/registry.mjs"() {
|
|
45760
45760
|
"use strict";
|
|
45761
45761
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
45762
|
-
cliVersion: "0.71.
|
|
45762
|
+
cliVersion: "0.71.1",
|
|
45763
45763
|
projectFileUploadBatchSize: 32,
|
|
45764
45764
|
documentRecords: {
|
|
45765
45765
|
member: {
|
|
@@ -90647,6 +90647,11 @@ var init_virtual_instance_values = __esm({
|
|
|
90647
90647
|
});
|
|
90648
90648
|
|
|
90649
90649
|
// ../src/models/neoscript/neoscript-source-catalog.ts
|
|
90650
|
+
function neoScriptSourceLocationsChanged(previous, next) {
|
|
90651
|
+
return ["getter", "setter", "action"].some(
|
|
90652
|
+
(key) => previous[key] !== void 0 && !canonicallyEqual2(previous[key], next[key])
|
|
90653
|
+
);
|
|
90654
|
+
}
|
|
90650
90655
|
function record5(value) {
|
|
90651
90656
|
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
90652
90657
|
}
|
|
@@ -90679,6 +90684,7 @@ function remapNeoScriptRecord(current, sources2) {
|
|
|
90679
90684
|
var init_neoscript_source_catalog = __esm({
|
|
90680
90685
|
"../src/models/neoscript/neoscript-source-catalog.ts"() {
|
|
90681
90686
|
"use strict";
|
|
90687
|
+
init_canonical_json();
|
|
90682
90688
|
init_compiler();
|
|
90683
90689
|
}
|
|
90684
90690
|
});
|
|
@@ -105501,7 +105507,7 @@ function* prepareServerOwnedSchemaCommitPasses(args) {
|
|
|
105501
105507
|
}
|
|
105502
105508
|
let hasSourceLocationChange = false;
|
|
105503
105509
|
for (const [key, source] of args.scriptSources ?? []) {
|
|
105504
|
-
if (
|
|
105510
|
+
if (neoScriptSourceLocationsChanged(scriptSources.get(key) ?? {}, source))
|
|
105505
105511
|
hasSourceLocationChange = true;
|
|
105506
105512
|
scriptSources.set(key, source);
|
|
105507
105513
|
}
|
|
@@ -105721,7 +105727,7 @@ function* prepareServerOwnedSchemaCommitPasses(args) {
|
|
|
105721
105727
|
const source = scriptSources.get(key);
|
|
105722
105728
|
const base = baseScriptRecords.get(key);
|
|
105723
105729
|
if (targets.has(record7.id) || !source || !base) continue;
|
|
105724
|
-
if (!sourceOnlyKeys.has(key) &&
|
|
105730
|
+
if (!sourceOnlyKeys.has(key) && !neoScriptSourceLocationsChanged(neoScriptRecordSources(base), source))
|
|
105725
105731
|
continue;
|
|
105726
105732
|
const moved = remapNeoScriptRecord(base, source);
|
|
105727
105733
|
targets.add(record7.id);
|
|
@@ -168463,7 +168469,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
|
|
|
168463
168469
|
binaryChanges: status.binaryChanges ?? []
|
|
168464
168470
|
});
|
|
168465
168471
|
const hasSourceBodies = (status.sourceSnapshot?.analysis.compiledBodies.length ?? 0) > 0;
|
|
168466
|
-
if (status.changes.length === 0 && status.authoredValueSeeds.size === 0 && !hasSourceBodies) {
|
|
168472
|
+
if (status.changes.length === 0 && status.authoredValueSeeds.size === 0 && (!hasSourceBodies || purpose === "export" /* Export */)) {
|
|
168467
168473
|
return status;
|
|
168468
168474
|
}
|
|
168469
168475
|
const initConversions = status.initConversions ?? [];
|
|
@@ -170701,7 +170707,10 @@ function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options
|
|
|
170701
170707
|
const movedMemberIds = new Set(
|
|
170702
170708
|
schema.members.filter((member) => {
|
|
170703
170709
|
const source = context.scriptSources.get(`member:${member.id}`);
|
|
170704
|
-
return source &&
|
|
170710
|
+
return source && neoScriptSourceLocationsChanged(
|
|
170711
|
+
neoScriptRecordSources(member),
|
|
170712
|
+
source
|
|
170713
|
+
);
|
|
170705
170714
|
}).map((member) => String(member.id))
|
|
170706
170715
|
);
|
|
170707
170716
|
const compiledMembers = schema.members.map((member) => {
|
|
@@ -184920,7 +184929,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
184920
184929
|
async function main() {
|
|
184921
184930
|
const args = parseArgs(process.argv.slice(2));
|
|
184922
184931
|
if (args.command === "--version") {
|
|
184923
|
-
console.log("0.71.
|
|
184932
|
+
console.log("0.71.1");
|
|
184924
184933
|
return;
|
|
184925
184934
|
}
|
|
184926
184935
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -95,7 +95,10 @@ bases. A modified CLI can therefore write bad rows to a project its user may
|
|
|
95
95
|
already write; keep preparation in shared `src/database` code rather than
|
|
96
96
|
forking it in the CLI. The server still verifies a push's uploaded
|
|
97
97
|
project-file bytes, and web editor commits use the shared client preparation protocol.
|
|
98
|
-
Unrelated source files are not uploaded or recompiled on every push.
|
|
98
|
+
Unrelated source files are not uploaded or recompiled on every push.
|
|
99
|
+
Optional source maps missing from valid stored bodies do not request a backfill.
|
|
100
|
+
Existing map changes still refresh locations on push; authored edits, dependency
|
|
101
|
+
changes, and explicit forced recompilation retain their normal compile scope. A CLI lowering mismatch on a normal push is exposed by the next
|
|
99
102
|
canonical pull; `neo push --dry-run` remains the complete source-to-record
|
|
100
103
|
rehearsal.
|
|
101
104
|
|
|
@@ -115,7 +118,7 @@ wrappers.
|
|
|
115
118
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
116
119
|
|
|
117
120
|
```html
|
|
118
|
-
<!-- reviewed-through-cli: 0.71.
|
|
121
|
+
<!-- reviewed-through-cli: 0.71.1 -->
|
|
119
122
|
```
|
|
120
123
|
|
|
121
124
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -301,7 +301,9 @@ changed, skips codegen when only values changed since the last export into
|
|
|
301
301
|
that Unity project, and writes `Library/NeoCompose/export.json` last for
|
|
302
302
|
Unity to ingest.
|
|
303
303
|
|
|
304
|
-
- A clean working copy exports the
|
|
304
|
+
- A clean working copy exports the pulled head. Diagnostic location differences
|
|
305
|
+
alone, including line shifts after push inserts ids, do not make it local.
|
|
306
|
+
Local edits, `Files/` bytes
|
|
305
307
|
included, make the export local: `project.json` gets
|
|
306
308
|
`metadata.localExport`, Unity fails player builds and keeps saves under
|
|
307
309
|
`NeoCompose/LocalExport`, and a push or a clean export ends it.
|