@neocompose/cli 0.53.0 → 0.53.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.53.1] - 2026-09-18
4
+
5
+ - A lookup member assigned in a constructor's initializer block (`new NPCScheduleEvent(...) { Shop = root.Assets.Shops.Index.Slug["shop.test"]! }`) stores the selected row's id. It used to store a copy of the selected row's content, which `neo pull` then rewrote as `Shop = null`.
6
+
3
7
  ## [0.53.0] - 2026-09-18
4
8
 
5
9
  - Push preparation is far faster on large projects (Neowyn's pending push dry run: 395 s and failing on 0.52.5, 40 s here): pulled documents are read once per push, default-value materialization and ownership walks reuse per-document indexes, and the status walk no longer re-normalizes every seed root.
package/dist/neo.mjs CHANGED
@@ -76851,8 +76851,8 @@ function applyConstructorFields(args) {
76851
76851
  storageKeyDeclarations,
76852
76852
  ctx
76853
76853
  } = args;
76854
- for (const { validated, value } of args.supplied) {
76855
- if (value === null) {
76854
+ for (const { validated, value: supplied } of args.supplied) {
76855
+ if (supplied === null) {
76856
76856
  if (args.nullMeansOmit) continue;
76857
76857
  applyExplicitNullConstructorField({
76858
76858
  validated,
@@ -76867,6 +76867,7 @@ function applyConstructorFields(args) {
76867
76867
  continue;
76868
76868
  }
76869
76869
  const { schemaKey, member } = validated;
76870
+ const value = isMemberLookupBase(member) ? encodeLookupInitializerSelection(member, supplied, createdValues, ctx) : supplied;
76870
76871
  const trackedValueId = findKnownRowIdByValueReference(value, ctx);
76871
76872
  if (trackedValueId !== null && isMemberClassBase(member)) {
76872
76873
  const source = evalValueById(
@@ -90449,9 +90450,24 @@ function addPackedChildEdges(source, record6, add) {
90449
90450
  childId: position.valueId
90450
90451
  })
90451
90452
  });
90453
+ if (packedEntryOwnsSparseRows(position.entry)) {
90454
+ add({
90455
+ edgeKind: "containment-child",
90456
+ targetKey: position.valueId,
90457
+ targetAddressing: "record",
90458
+ payloadJson: canonicalJsonStringify({
90459
+ relation: "packed-parent",
90460
+ path: position.path
90461
+ })
90462
+ });
90463
+ }
90452
90464
  addStampBindingEdges(position.entry.genericBindings, add);
90453
90465
  }
90454
90466
  }
90467
+ function packedEntryOwnsSparseRows(entry) {
90468
+ if (collectDirectBodyChildIds(entry.value).length > 0) return true;
90469
+ return isLiteralValueContent(entry) && collectDirectBodyChildIds(entry.constructorArgs).length > 0;
90470
+ }
90455
90471
  function projectSnapshotDerivedPathTargetKey(args) {
90456
90472
  return canonicalJsonStringify({ recordId: args.recordId, path: args.path });
90457
90473
  }
@@ -138377,7 +138393,7 @@ var init_registry2 = __esm({
138377
138393
  "schema-contract/registry.mjs"() {
138378
138394
  "use strict";
138379
138395
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
138380
- cliVersion: "0.53.0",
138396
+ cliVersion: "0.53.1",
138381
138397
  projectFileUploadBatchSize: 32,
138382
138398
  documentRecords: {
138383
138399
  member: {
@@ -146250,7 +146266,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
146250
146266
  async function main() {
146251
146267
  const args = parseArgs(process.argv.slice(2));
146252
146268
  if (args.command === "--version") {
146253
- console.log("0.53.0");
146269
+ console.log("0.53.1");
146254
146270
  return;
146255
146271
  }
146256
146272
  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.53.0",
3
+ "version": "0.53.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.53.0 -->
12
+ <!-- reviewed-through-cli: 0.53.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.53.0 -->
100
+ <!-- reviewed-through-cli: 0.53.1 -->
101
101
  ```
102
102
 
103
103
  The quoted version above is checked too, so this instruction cannot go stale