@neocompose/cli 0.52.1 → 0.52.2
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.52.2] - 2026-09-17
|
|
4
|
+
|
|
5
|
+
- Preserve inherited defaults when a sparse readonly override changes other member metadata.
|
|
6
|
+
- Read packed values with stale compiler output during reset and retain unchanged server-derived bodies without reporting spurious updates.
|
|
7
|
+
|
|
3
8
|
## [0.52.1] - 2026-09-17
|
|
4
9
|
|
|
5
10
|
- Retire the completed pre-0.52 tile schema and source upgrade. Existing workspaces must already use the current tile schema; ordinary `neo pull` continues to refresh compiler-only changes while preserving local edits and custom paths.
|
package/dist/neo.mjs
CHANGED
|
@@ -26424,7 +26424,7 @@ function validateClassMemberModifiers(ref, environment, diagnostics) {
|
|
|
26424
26424
|
`Read-only field '${member.name}' cannot be static.`
|
|
26425
26425
|
);
|
|
26426
26426
|
}
|
|
26427
|
-
if (member.initializer === void 0 && !modifiers.has("abstract")) {
|
|
26427
|
+
if (member.initializer === void 0 && !modifiers.has("abstract") && !modifiers.has("override")) {
|
|
26428
26428
|
diagnose(
|
|
26429
26429
|
diagnostics,
|
|
26430
26430
|
ref.uri,
|
|
@@ -42044,7 +42044,7 @@ function assertMemberInvariants(member, path) {
|
|
|
42044
42044
|
);
|
|
42045
42045
|
if (member.storage !== "immutable" && (member.storage !== null || member.overrideOf === null))
|
|
42046
42046
|
fail2("storage", "must be immutable when isReadOnly is true.");
|
|
42047
|
-
if (member.defaultValue === null && !abstract)
|
|
42047
|
+
if (member.defaultValue === null && !abstract && member.overrideOf === null)
|
|
42048
42048
|
fail2("defaultValue", "is required when isReadOnly is true.");
|
|
42049
42049
|
}
|
|
42050
42050
|
if (member.kind === "string" && member.isReadOnly && member.searchKey)
|
|
@@ -113183,12 +113183,13 @@ function storedValueRowsByIdV4(records2) {
|
|
|
113183
113183
|
logical.set(valueId, row);
|
|
113184
113184
|
continue;
|
|
113185
113185
|
}
|
|
113186
|
-
|
|
113186
|
+
const authoredRow = stripClientDerivedBodies("value", row);
|
|
113187
|
+
if (!isMemberValue(authoredRow)) {
|
|
113187
113188
|
throw new PackedValueEncodingError(
|
|
113188
113189
|
`Stored value row "${valueId}" packs a child but is not a well-formed value row, so its packed payload cannot be expanded.`
|
|
113189
113190
|
);
|
|
113190
113191
|
}
|
|
113191
|
-
const decoded = decodePackedValueRow(
|
|
113192
|
+
const decoded = decodePackedValueRow(authoredRow);
|
|
113192
113193
|
logical.set(valueId, { ...decoded.row });
|
|
113193
113194
|
for (const child of decoded.children) {
|
|
113194
113195
|
logical.set(child.id, { ...child });
|
|
@@ -113379,6 +113380,7 @@ var init_stored_value_placements = __esm({
|
|
|
113379
113380
|
init_constructors2();
|
|
113380
113381
|
init_constructor_parameter_settlement();
|
|
113381
113382
|
init_members();
|
|
113383
|
+
init_neo_script_derived_bodies();
|
|
113382
113384
|
init_projection();
|
|
113383
113385
|
}
|
|
113384
113386
|
});
|
|
@@ -113832,12 +113834,13 @@ function logicalValueBaseRecordsV4(records2) {
|
|
|
113832
113834
|
if (record6.recordKind !== "value") continue;
|
|
113833
113835
|
if (!isObjectRecord2(record6.data)) continue;
|
|
113834
113836
|
if (!rowCarriesPackedValueContent(record6.data)) continue;
|
|
113835
|
-
|
|
113837
|
+
const authoredData = stripClientDerivedBodies("value", record6.data);
|
|
113838
|
+
if (!isMemberValue(authoredData)) {
|
|
113836
113839
|
throw new PackedValueEncodingError(
|
|
113837
113840
|
`Workspace base row "${key}" packs a child but is not a well-formed value row, so its packed payload cannot be expanded.`
|
|
113838
113841
|
);
|
|
113839
113842
|
}
|
|
113840
|
-
const decoded = decodePackedValueRow(
|
|
113843
|
+
const decoded = decodePackedValueRow(authoredData);
|
|
113841
113844
|
expanded ??= { ...records2 };
|
|
113842
113845
|
expanded[key] = { ...record6, data: decoded.row };
|
|
113843
113846
|
for (const child of decoded.children) {
|
|
@@ -113886,7 +113889,16 @@ function foldCandidateValueRowsV4(args) {
|
|
|
113886
113889
|
`Packed fold produced a physical row for "${row.id}", which is not a candidate value row of this push.`
|
|
113887
113890
|
);
|
|
113888
113891
|
}
|
|
113889
|
-
|
|
113892
|
+
const folded = storedContentApplied(candidate, row);
|
|
113893
|
+
const physical = args.physicalBase?.[`value:${row.id}`]?.data;
|
|
113894
|
+
const authoredPhysical = stripClientDerivedBodies("value", physical);
|
|
113895
|
+
bodyByValueId.set(
|
|
113896
|
+
row.id,
|
|
113897
|
+
isObjectRecord2(physical) && isObjectRecord2(authoredPhysical) && canonicallyEqual(
|
|
113898
|
+
stripClientDerivedBodies("value", folded),
|
|
113899
|
+
authoredPhysical
|
|
113900
|
+
) ? physical : folded
|
|
113901
|
+
);
|
|
113890
113902
|
}
|
|
113891
113903
|
return { bodyByValueId, foldedValueIds };
|
|
113892
113904
|
}
|
|
@@ -113927,6 +113939,7 @@ var init_packed_value_parity = __esm({
|
|
|
113927
113939
|
init_core();
|
|
113928
113940
|
init_members();
|
|
113929
113941
|
init_packed_value_write_fold();
|
|
113942
|
+
init_neo_script_derived_bodies();
|
|
113930
113943
|
init_projection();
|
|
113931
113944
|
EMPTY_FOLD = {
|
|
113932
113945
|
bodyByValueId: /* @__PURE__ */ new Map(),
|
|
@@ -116122,6 +116135,7 @@ function applyPackedValueFoldV4(args) {
|
|
|
116122
116135
|
const fold = foldCandidateValueRowsV4({
|
|
116123
116136
|
candidates,
|
|
116124
116137
|
base: args.loweringRecords,
|
|
116138
|
+
physicalBase: args.workspace.state.records,
|
|
116125
116139
|
touchedValueIds,
|
|
116126
116140
|
projectId: args.workspace.config.projectId,
|
|
116127
116141
|
schema: args.schema
|
|
@@ -137282,7 +137296,7 @@ var init_registry2 = __esm({
|
|
|
137282
137296
|
"schema-contract/registry.mjs"() {
|
|
137283
137297
|
"use strict";
|
|
137284
137298
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
137285
|
-
cliVersion: "0.52.
|
|
137299
|
+
cliVersion: "0.52.2",
|
|
137286
137300
|
projectFileUploadBatchSize: 32,
|
|
137287
137301
|
documentRecords: {
|
|
137288
137302
|
member: {
|
|
@@ -145153,7 +145167,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
145153
145167
|
async function main() {
|
|
145154
145168
|
const args = parseArgs(process.argv.slice(2));
|
|
145155
145169
|
if (args.command === "--version") {
|
|
145156
|
-
console.log("0.52.
|
|
145170
|
+
console.log("0.52.2");
|
|
145157
145171
|
return;
|
|
145158
145172
|
}
|
|
145159
145173
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -90,7 +90,7 @@ wrappers.
|
|
|
90
90
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
91
91
|
|
|
92
92
|
```html
|
|
93
|
-
<!-- reviewed-through-cli: 0.52.
|
|
93
|
+
<!-- reviewed-through-cli: 0.52.2 -->
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
The quoted version above is checked too, so this instruction cannot go stale
|