octwin-cli 0.7.0 → 0.7.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
@@ -5,6 +5,19 @@ Format: [Keep a Changelog](https://keepachangelog.com/) — newest first, bucket
5
5
  **Added · Changed · Deprecated · Removed · Fixed · Security**. The platform-wide view lives in the
6
6
  repo root [`CHANGELOG.md`](../../CHANGELOG.md); this file is the CLI-only cut that ships with the package.
7
7
 
8
+ ## [0.7.1] - 2026-08-19
9
+
10
+ ### Fixed
11
+ - **`work decide` now says when an action moves nothing.** `to_stage` is optional — an action may
12
+ record a decision without a transition — but both outputs communicated that by omission: `--dry-run`
13
+ left `to_stage: null` sitting among twenty other keys, and a real apply printed a bare
14
+ `✓ Applied '<action>'`. An author read both, shipped `request_more_info` with no `to_stage`, and
15
+ lost the `awaiting_customer` their whole customer-reply capture branched on — their words: *"Nothing
16
+ about this failed loudly; it just quietly never did the one thing the whole feature depends on."*
17
+ The preview now states `→ does NOT change the status (this action only records a decision)` and the
18
+ apply says `status unchanged (the action declares no to_stage)`. The console's decision panel got the
19
+ same sentence in the same change.
20
+
8
21
  ## [0.7.0] - 2026-08-18
9
22
 
10
23
  ### Added
package/dist/index.js CHANGED
@@ -1959,11 +1959,11 @@ async function cmdRecordsWrite(flags) {
1959
1959
  if (json?.has_xrm === false)
1960
1960
  die('this pack declares no XRM entities');
1961
1961
  const rec = json?.record ?? {};
1962
- // 200 = the dedupe key matched an existing row; 201 = genuinely new. Saying
1963
- // "created" for a match would misreport what the pack's `dedupe_by` did.
1962
+ // 200 = the entity's identity matched an existing row; 201 = genuinely new.
1963
+ // Saying "created" for a match would misreport what the save actually did.
1964
1964
  console.log(status === 201
1965
1965
  ? `✓ Created #${rec.record_number ?? '?'} ${rec.id ?? ''}`
1966
- : `✓ Matched an EXISTING record (the entity's dedupe key hit) — #${rec.record_number ?? '?'} ${rec.id ?? ''}`);
1966
+ : `✓ Matched an EXISTING record (its unique constraint identified it) — #${rec.record_number ?? '?'} ${rec.id ?? ''}`);
1967
1967
  if (rec.id)
1968
1968
  readBack(rec.id);
1969
1969
  return;
@@ -2747,10 +2747,17 @@ async function cmdWorkWrite(flags) {
2747
2747
  }
2748
2748
  if (dryRun) {
2749
2749
  console.log('Preview (nothing was committed):');
2750
+ // Stated in words BEFORE the dump. `to_stage: null` is already in the JSON below, but a null
2751
+ // among twenty keys is not an answer anyone reads — a pack author previewed exactly this,
2752
+ // shipped an action with no `to_stage`, and lost the `awaiting_customer` their whole
2753
+ // reply-capture branched on. Same reason the console preview now says it too.
2754
+ console.log(json?.to_stage
2755
+ ? ` → moves the record to '${json.to_stage}'.`
2756
+ : ' → does NOT change the status (this action only records a decision).');
2750
2757
  console.log(JSON.stringify(json, null, 2));
2751
2758
  return;
2752
2759
  }
2753
- console.log(`✓ Applied '${action}'${json?.to_stage ? ` — record is now '${json.to_stage}'` : ''}.`);
2760
+ console.log(`✓ Applied '${action}'${json?.to_stage ? ` — record is now '${json.to_stage}'` : ' — status unchanged (the action declares no to_stage)'}.`);
2754
2761
  // `relayed`/`notified` are the customer-facing half; silence here usually means
2755
2762
  // the action had no message template, which is easy to mistake for a failure.
2756
2763
  const reached = json?.relayed || json?.notified;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "octwin-cli",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Octwin external-pack developer CLI (by CEQUENS) — scaffold, validate, deploy, and check pure-YAML packs on your tenant.",
5
5
  "type": "module",
6
6
  "bin": {