@neocompose/cli 0.82.1 → 0.82.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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.82.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 9e3a8d3: Fix post-push exports of class defaults that spell a field's declared default, such as animation FPS. Keep those fields sparse on subsequent analysis and preserve existing child-row ownership when adding a real default override.
8
+
3
9
  ## 0.82.1
4
10
 
5
11
  ### Patch Changes
package/dist/neo.mjs CHANGED
@@ -55955,7 +55955,7 @@ var init_registry = __esm({
55955
55955
  "../packages/manifest/schema-contract/registry.mjs"() {
55956
55956
  "use strict";
55957
55957
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
55958
- cliVersion: "0.82.1",
55958
+ cliVersion: "0.82.2",
55959
55959
  projectFileUploadBatchSize: 32,
55960
55960
  documentRecords: {
55961
55961
  member: {
@@ -121102,6 +121102,7 @@ function* prepareServerOwnedSchemaCommitPasses(args) {
121102
121102
  );
121103
121103
  const pendingConstructedGraphValidations = materializeAuthoredValueSeeds({
121104
121104
  document: seedPostDocument,
121105
+ previousMembers: args.document.members,
121105
121106
  prepared,
121106
121107
  authoredValueSeeds: args.authoredValueSeeds ?? [],
121107
121108
  contentHashHeads: args.contentHashHeads,
@@ -122029,6 +122030,11 @@ function materializeAuthoredValueSeeds(args) {
122029
122030
  if (seedByMemberId.size !== args.authoredValueSeeds.length) {
122030
122031
  throw new Error("Schema commit contains duplicate member value seeds.");
122031
122032
  }
122033
+ const previousSeedMembers = /* @__PURE__ */ new Map();
122034
+ for (const member of args.previousMembers) {
122035
+ if (seedByMemberId.has(member.id))
122036
+ previousSeedMembers.set(member.id, member);
122037
+ }
122032
122038
  const evaluationDocument = withProspectiveAuthoredSeedValues(
122033
122039
  args.document,
122034
122040
  args.authoredValueSeeds
@@ -122047,6 +122053,7 @@ function materializeAuthoredValueSeeds(args) {
122047
122053
  consumedSeedMemberIds.add(member.id);
122048
122054
  materializeInstanceDefaultSeed({
122049
122055
  document: evaluationDocument,
122056
+ previousMember: previousSeedMembers.get(member.id),
122050
122057
  documentIndex,
122051
122058
  prepared: args.prepared,
122052
122059
  pendingGraphValidations,
@@ -122201,6 +122208,7 @@ function materializeAuthoredValueSeeds(args) {
122201
122208
  if (member !== void 0 && isStaticMember(member) !== true && !isProjectRootMember(args.document.project, member.id)) {
122202
122209
  materializeInstanceDefaultSeed({
122203
122210
  document: evaluationDocument,
122211
+ previousMember: previousSeedMembers.get(member.id),
122204
122212
  documentIndex,
122205
122213
  prepared: args.prepared,
122206
122214
  pendingGraphValidations,
@@ -122535,19 +122543,42 @@ function materializeInstanceDefaultSeed(args) {
122535
122543
  ...args.member,
122536
122544
  defaultValue: seedValueContent(args.seed)
122537
122545
  };
122546
+ const heldChildren = args.documentIndex.heldChildIdsByParentId;
122547
+ const previousHeld = heldChildren.get(args.seed.valueId);
122548
+ const declarationDefault = !isProjectRootMember(
122549
+ args.document.project,
122550
+ args.member.id
122551
+ );
122552
+ if (declarationDefault) {
122553
+ heldChildren.set(
122554
+ args.seed.valueId,
122555
+ storedChildIds(
122556
+ args.previousMember && !isStaticMember(args.previousMember) ? args.previousMember.defaultValue?.value : void 0
122557
+ )
122558
+ );
122559
+ }
122560
+ let materialized;
122561
+ try {
122562
+ materialized = materializeAuthoredStaticSeed({
122563
+ document: args.document,
122564
+ documentIndex: args.documentIndex,
122565
+ member: materializationMember,
122566
+ seed: { ...args.seed, values: args.seed.values },
122567
+ allowExistingRows: args.memberChange === null || args.memberChange.change.operation === "update"
122568
+ });
122569
+ } finally {
122570
+ if (declarationDefault) {
122571
+ if (previousHeld === void 0) heldChildren.delete(args.seed.valueId);
122572
+ else heldChildren.set(args.seed.valueId, previousHeld);
122573
+ }
122574
+ }
122538
122575
  const {
122539
122576
  createdValues,
122540
122577
  localizedTexts,
122541
122578
  storageKeyDeclarations,
122542
122579
  rootValue,
122543
122580
  existingValueIds
122544
- } = materializeAuthoredStaticSeed({
122545
- document: args.document,
122546
- documentIndex: args.documentIndex,
122547
- member: materializationMember,
122548
- seed: { ...args.seed, values: args.seed.values },
122549
- allowExistingRows: args.memberChange === null || args.memberChange.change.operation === "update"
122550
- });
122581
+ } = materialized;
122551
122582
  stampCreatedValuesMapKey(createdValues, null);
122552
122583
  applyDeclaredStorageKeyOverrides({
122553
122584
  createdValues,
@@ -137476,18 +137507,32 @@ function lowerRowBackedDefault(context, member, backed, baseData3, binding) {
137476
137507
  environment
137477
137508
  ))
137478
137509
  continue;
137479
- body[assignment.name] = lowerSeedChild(
137510
+ const rows = /* @__PURE__ */ new Map();
137511
+ const localizedTexts = /* @__PURE__ */ new Map();
137512
+ const childId = lowerSeedChild(
137480
137513
  context,
137481
137514
  childValueMember,
137482
137515
  assignment.value,
137483
137516
  binding,
137484
137517
  `${binding.label}.${assignment.name}`,
137485
- /* @__PURE__ */ new Map(),
137486
- /* @__PURE__ */ new Map(),
137518
+ rows,
137519
+ localizedTexts,
137487
137520
  void 0,
137488
137521
  environment,
137489
137522
  childSlice
137490
137523
  );
137524
+ if (member.partial !== true && !(assignment.value.kind === "ident" && context.localValues.has(assignment.value.name)) && freshChildReplaysDeclaredDefault({
137525
+ context,
137526
+ childMember,
137527
+ childId,
137528
+ rows,
137529
+ localizedTexts,
137530
+ environment
137531
+ })) {
137532
+ deleteSeedRow(context, rows, childId);
137533
+ continue;
137534
+ }
137535
+ body[assignment.name] = childId;
137491
137536
  }
137492
137537
  return {
137493
137538
  value: body,
@@ -205758,7 +205803,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
205758
205803
  async function main() {
205759
205804
  const args = parseArgs(process.argv.slice(2));
205760
205805
  if (args.command === "--version") {
205761
- console.log("0.82.1");
205806
+ console.log("0.82.2");
205762
205807
  return;
205763
205808
  }
205764
205809
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
@@ -61885,7 +61885,7 @@ var INITIALIZER_KEY_PLACEHOLDER = new RegExp(
61885
61885
 
61886
61886
  // ../packages/manifest/schema-contract/registry.mjs
61887
61887
  var PROJECT_SCHEMA_CONTRACT = Object.freeze({
61888
- cliVersion: "0.82.1",
61888
+ cliVersion: "0.82.2",
61889
61889
  projectFileUploadBatchSize: 32,
61890
61890
  documentRecords: {
61891
61891
  member: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.82.1",
3
+ "version": "0.82.2",
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.82.1 -->
12
+ <!-- reviewed-through-cli: 0.82.2 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -129,7 +129,7 @@ wrappers.
129
129
  The marker near the top of `SKILL.md` must exactly match the package version:
130
130
 
131
131
  ```html
132
- <!-- reviewed-through-cli: 0.82.1 -->
132
+ <!-- reviewed-through-cli: 0.82.2 -->
133
133
  ```
134
134
 
135
135
  The quoted version above is checked too, so this instruction cannot go stale
@@ -265,6 +265,10 @@ that instance. Leaving the emitted construction unchanged creates no redundant
265
265
  value rows. A nullable member with no default remains bare; an explicit null
266
266
  default emits `= null`.
267
267
 
268
+ Spelling an unchanged child default, such as `FPS = 8`, stays a no-op after
269
+ push even when sibling fields own stored rows. Adding a different child default
270
+ preserves those siblings' row identities; it does not transfer their ownership.
271
+
268
272
  Omitted members are virtual projections of the instance's recorded constructor
269
273
  or variant. Later edits to that source update every omitted member. Writing a
270
274
  member creates a sparse override with its deterministic projected ID; removing