@neocompose/cli 0.24.3 → 0.24.5

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,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.24.5] - 2026-08-07
4
+
5
+ ### Fixed
6
+
7
+ - Accept initializer-backed member value seeds in durable transaction staging,
8
+ matching the schema commit wire contract used by 0.24.4, and report the
9
+ specific invalid seed field when a staged payload is malformed.
10
+
11
+ ## [0.24.4] - 2026-08-07
12
+
13
+ ### Fixed
14
+
15
+ - Preserve every operand and its grouping when compiling chained NeoScript
16
+ `&&` and `||` expressions. The previous lowering overwrote the left
17
+ expression's connective, so `a || b || c` evaluated as `a || c`.
18
+ - Short-circuit logical expressions in the local evaluator instead of eagerly
19
+ evaluating an unused right-hand operand.
20
+
3
21
  ## [0.24.3] - 2026-08-07
4
22
 
5
23
  ### Fixed
package/dist/neo.mjs CHANGED
@@ -7323,7 +7323,7 @@ var NEOSCRIPT_COMPILER_REVISION;
7323
7323
  var init_strict_ir = __esm({
7324
7324
  "../packages/neoscript-language/src/strict-ir.ts"() {
7325
7325
  "use strict";
7326
- NEOSCRIPT_COMPILER_REVISION = 7;
7326
+ NEOSCRIPT_COMPILER_REVISION = 8;
7327
7327
  }
7328
7328
  });
7329
7329
 
@@ -8157,6 +8157,9 @@ function pointerToBooleanExpression(pointer) {
8157
8157
  if (pointer.type === "operation" /* Operation */ && pointer.operation.type === "boolean" /* Boolean */) {
8158
8158
  return pointer.operation.expression;
8159
8159
  }
8160
+ return pointerToBooleanOperandExpression(pointer);
8161
+ }
8162
+ function pointerToBooleanOperandExpression(pointer) {
8160
8163
  return {
8161
8164
  condition: {
8162
8165
  type: "equalTo" /* EqualTo */,
@@ -12701,7 +12704,7 @@ var init_strict_resolver = __esm({
12701
12704
  operation: {
12702
12705
  type: "boolean" /* Boolean */,
12703
12706
  expression: {
12704
- ...pointerToBooleanExpression(l.pointer),
12707
+ ...pointerToBooleanOperandExpression(l.pointer),
12705
12708
  connective: {
12706
12709
  type: expression.op === "&&" ? "&&" /* And */ : "||" /* Or */,
12707
12710
  to: pointerToBooleanExpression(r.pointer)
@@ -60276,12 +60279,11 @@ function stringifyForInterp(v) {
60276
60279
  function evalBooleanExpression(expression, scope, ctx) {
60277
60280
  const head = evalCondition(expression.condition, scope, ctx);
60278
60281
  if (!expression.connective) return head;
60279
- const tail = evalBooleanExpression(expression.connective.to, scope, ctx);
60280
60282
  switch (expression.connective.type) {
60281
60283
  case "&&" /* and */:
60282
- return head && tail;
60284
+ return head ? evalBooleanExpression(expression.connective.to, scope, ctx) : false;
60283
60285
  case "||" /* or */:
60284
- return head || tail;
60286
+ return head ? true : evalBooleanExpression(expression.connective.to, scope, ctx);
60285
60287
  }
60286
60288
  }
60287
60289
  function evalCondition(condition, scope, ctx) {
@@ -101546,7 +101548,7 @@ var init_registry2 = __esm({
101546
101548
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
101547
101549
  formatVersion: 3,
101548
101550
  contractVersion: "3.9",
101549
- cliVersion: "0.24.3",
101551
+ cliVersion: "0.24.5",
101550
101552
  projectFileUploadBatchSize: 32,
101551
101553
  documentRecords: {
101552
101554
  member: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.24.3",
3
+ "version": "0.24.5",
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.24.3 -->
12
+ <!-- reviewed-through-cli: 0.24.5 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -82,7 +82,7 @@ wrappers.
82
82
  The marker near the top of `SKILL.md` must exactly match the package version:
83
83
 
84
84
  ```html
85
- <!-- reviewed-through-cli: 0.24.3 -->
85
+ <!-- reviewed-through-cli: 0.24.5 -->
86
86
  ```
87
87
 
88
88
  The quoted version above is checked too, so this instruction cannot go stale
@@ -7,6 +7,7 @@ runtime ownership, evaluation, and migrations.
7
7
 
8
8
  - Inline bodies and snippets
9
9
  - Nullability and ownership
10
+ - Logical operators
10
11
  - Loops and transfer
11
12
  - Switch
12
13
  - Try/catch
@@ -53,6 +54,13 @@ Save, Session, Setter, or otherwise writable. A constructor writes only its
53
54
  `this` instance. A writable structured-leaf field still inherits the receiver's
54
55
  effective storage restrictions.
55
56
 
57
+ ## Logical operators
58
+
59
+ Use `&&` and `||` with C# precedence: `&&` binds tighter than `||`, and
60
+ parentheses preserve explicit grouping. Both operators short-circuit, so the
61
+ right operand is evaluated only when it can change the result. Chained
62
+ expressions retain every operand; `a || b || c` never skips `b`.
63
+
56
64
  ## Loops and transfer
57
65
 
58
66
  Use C#-shaped loops: